aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGu Zheng <guz.fnst@cn.fujitsu.com>2014-11-23 22:05:25 -0500
committerJens Axboe <axboe@fb.com>2014-11-24 10:05:14 -0500
commit244808543e6e9b46ea1135589877f4d4bd2925c5 (patch)
treeea635e668b4839643a0bb08a897254142ee41219
parentaae4933da9488827d341c31b970b2f62ac45a496 (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.c22
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 */
37static void _drbd_start_io_acct(struct drbd_device *device, struct drbd_request *req) 37static 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 */
52static void _drbd_end_io_acct(struct drbd_device *device, struct drbd_request *req) 44static 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
64static struct drbd_request *drbd_req_new(struct drbd_device *device, 50static struct drbd_request *drbd_req_new(struct drbd_device *device,