Exemple #1
0
struct io_activity *create_ioa(struct bio *bio)
{
        struct io_activity *ioa = vmalloc(sizeof(struct io_activity));
        if (ioa == NULL) return NULL;

        ioa->rw = bio_data_dir(bio);
        ioa->data_size = bio_size(bio);
        ioa->delta_count = bio_cnt(bio);

        ioa->deltas = vmalloc(ioa->delta_count * sizeof(struct block_delta));
        if (ioa->deltas == NULL) return NULL;

        return ioa;
}
Exemple #2
0
struct io_activity *create_ioa(struct bio *bio)
{
    char *err;
    struct io_activity *ioa = vmalloc(sizeof(struct io_activity));
    _astgo(ioa != NULL, "Error allocating io_activity", err, create_ioa_error);

    ioa->rw = bio_data_dir(bio);
    ioa->data_size = bio_size(bio);
    ioa->delta_count = bio_cnt(bio);

    if (ioa->delta_count != 0) {
        ioa->deltas = vmalloc(ioa->delta_count * sizeof(struct block_delta));
        _astgo(ioa->deltas != NULL, "Error allocating deltas", err, create_ioa_error);
    } else ioa->deltas = NULL;

    return ioa;

create_ioa_error:
    LOG_VAR(err);
    LOG("Error creating ioa from bio with: %lu sector, %d size", bio_sector(bio), bio_size(bio));
    ast_vfree(ioa->deltas);
    ast_vfree(ioa);
    return NULL;
}