static void handle_trace_discard(struct thread_data *td, struct blk_io_trace *t, unsigned long long ttime, unsigned long *ios, unsigned int *bs) { struct io_piece *ipo = malloc(sizeof(*ipo)); int fileno; init_ipo(ipo); fileno = trace_add_file(td, t->device); ios[DDIR_TRIM]++; if (t->bytes > bs[DDIR_TRIM]) bs[DDIR_TRIM] = t->bytes; td->o.size += t->bytes; memset(ipo, 0, sizeof(*ipo)); INIT_FLIST_HEAD(&ipo->list); /* * the 512 is wrong here, it should be the hardware sector size... */ ipo->offset = t->sector * 512; ipo->len = t->bytes; ipo->delay = ttime / 1000; ipo->ddir = DDIR_TRIM; ipo->fileno = fileno; dprint(FD_BLKTRACE, "store discard, off=%llu, len=%lu, delay=%lu\n", ipo->offset, ipo->len, ipo->delay); queue_io_piece(td, ipo); }
static void handle_trace_discard(struct thread_data *td, struct blk_io_trace *t, unsigned long long ttime, unsigned long *ios, unsigned int *rw_bs) { struct io_piece *ipo = malloc(sizeof(*ipo)); unsigned int bs; int fileno; init_ipo(ipo); fileno = trace_add_file(td, t->device, &bs); ios[DDIR_TRIM]++; if (t->bytes > rw_bs[DDIR_TRIM]) rw_bs[DDIR_TRIM] = t->bytes; td->o.size += t->bytes; memset(ipo, 0, sizeof(*ipo)); INIT_FLIST_HEAD(&ipo->list); ipo->offset = t->sector * bs; if (td->o.replay_scale) ipo->offset = ipo->offset / td->o.replay_scale; ipo_bytes_align(&td->o, ipo); ipo->len = t->bytes; ipo->delay = ttime / 1000; ipo->ddir = DDIR_TRIM; ipo->fileno = fileno; dprint(FD_BLKTRACE, "store discard, off=%llu, len=%lu, delay=%lu\n", ipo->offset, ipo->len, ipo->delay); queue_io_piece(td, ipo); }
static void handle_trace_fs(struct thread_data *td, struct blk_io_trace *t, unsigned long long ttime, unsigned long *ios, unsigned int *bs) { int rw; trace_add_file(td, t->device); rw = (t->action & BLK_TC_ACT(BLK_TC_WRITE)) != 0; if (t->bytes > bs[rw]) bs[rw] = t->bytes; ios[rw]++; td->o.size += t->bytes; store_ipo(td, t->sector, t->bytes, rw, ttime); }