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; }
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; }