diff options
author | Gu Zheng <guz.fnst@cn.fujitsu.com> | 2014-11-23 22:05:25 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-11-24 10:05:14 -0500 |
commit | 244808543e6e9b46ea1135589877f4d4bd2925c5 (patch) | |
tree | ea635e668b4839643a0bb08a897254142ee41219 | |
parent | aae4933da9488827d341c31b970b2f62ac45a496 (diff) |
drbd: use generic io stats accounting functions to simplify io stat accounting
Use generic io stats accounting help functions (generic_{start,end}_io_acct)
to simplify io stat accounting.
Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | drivers/block/drbd/drbd_req.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c index 3b797cd5a407..34f2f0ba409b 100644 --- a/drivers/block/drbd/drbd_req.c +++ b/drivers/block/drbd/drbd_req.c | |||
@@ -36,29 +36,15 @@ static bool drbd_may_do_local_read(struct drbd_device *device, sector_t sector, | |||
36 | /* Update disk stats at start of I/O request */ | 36 | /* Update disk stats at start of I/O request */ |
37 | static void _drbd_start_io_acct(struct drbd_device *device, struct drbd_request *req) | 37 | static void _drbd_start_io_acct(struct drbd_device *device, struct drbd_request *req) |
38 | { | 38 | { |
39 | const int rw = bio_data_dir(req->master_bio); | 39 | generic_start_io_acct(bio_data_dir(req->master_bio), req->i.size >> 9, |
40 | int cpu; | 40 | &device->vdisk->part0); |
41 | cpu = part_stat_lock(); | ||
42 | part_round_stats(cpu, &device->vdisk->part0); | ||
43 | part_stat_inc(cpu, &device->vdisk->part0, ios[rw]); | ||
44 | part_stat_add(cpu, &device->vdisk->part0, sectors[rw], req->i.size >> 9); | ||
45 | (void) cpu; /* The macro invocations above want the cpu argument, I do not like | ||
46 | the compiler warning about cpu only assigned but never used... */ | ||
47 | part_inc_in_flight(&device->vdisk->part0, rw); | ||
48 | part_stat_unlock(); | ||
49 | } | 41 | } |
50 | 42 | ||
51 | /* Update disk stats when completing request upwards */ | 43 | /* Update disk stats when completing request upwards */ |
52 | static void _drbd_end_io_acct(struct drbd_device *device, struct drbd_request *req) | 44 | static void _drbd_end_io_acct(struct drbd_device *device, struct drbd_request *req) |
53 | { | 45 | { |
54 | int rw = bio_data_dir(req->master_bio); | 46 | generic_end_io_acct(bio_data_dir(req->master_bio), |
55 | unsigned long duration = jiffies - req->start_jif; | 47 | &device->vdisk->part0, req->start_jif); |
56 | int cpu; | ||
57 | cpu = part_stat_lock(); | ||
58 | part_stat_add(cpu, &device->vdisk->part0, ticks[rw], duration); | ||
59 | part_round_stats(cpu, &device->vdisk->part0); | ||
60 | part_dec_in_flight(&device->vdisk->part0, rw); | ||
61 | part_stat_unlock(); | ||
62 | } | 48 | } |
63 | 49 | ||
64 | static struct drbd_request *drbd_req_new(struct drbd_device *device, | 50 | static struct drbd_request *drbd_req_new(struct drbd_device *device, |