diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2014-04-01 17:53:30 -0400 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2014-07-10 12:35:10 -0400 |
commit | e37d2438d8e5e4c1225cf94d45347fa207835447 (patch) | |
tree | bd1756066196e9922c476f75759f4846455c2c63 /drivers/block/drbd/drbd_worker.c | |
parent | a8ba0d606933c34c13ea971491a7e0dfa50208ef (diff) |
drbd: track meta data IO intent, start and submit time
For diagnostic purposes, track intent, start time
and latest submit time of meta data IO.
Move separate members from struct drbd_device
into the embeded struct drbd_md_io.
s/md_io_(page|in_use)/md_io.\1/
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_worker.c')
-rw-r--r-- | drivers/block/drbd/drbd_worker.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index ad57129289b5..3978d9ec6f00 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c | |||
@@ -67,13 +67,10 @@ rwlock_t global_state_lock; | |||
67 | */ | 67 | */ |
68 | void drbd_md_io_complete(struct bio *bio, int error) | 68 | void drbd_md_io_complete(struct bio *bio, int error) |
69 | { | 69 | { |
70 | struct drbd_md_io *md_io; | ||
71 | struct drbd_device *device; | 70 | struct drbd_device *device; |
72 | 71 | ||
73 | md_io = (struct drbd_md_io *)bio->bi_private; | 72 | device = bio->bi_private; |
74 | device = container_of(md_io, struct drbd_device, md_io); | 73 | device->md_io.error = error; |
75 | |||
76 | md_io->error = error; | ||
77 | 74 | ||
78 | /* We grabbed an extra reference in _drbd_md_sync_page_io() to be able | 75 | /* We grabbed an extra reference in _drbd_md_sync_page_io() to be able |
79 | * to timeout on the lower level device, and eventually detach from it. | 76 | * to timeout on the lower level device, and eventually detach from it. |
@@ -87,7 +84,7 @@ void drbd_md_io_complete(struct bio *bio, int error) | |||
87 | * ASSERT(atomic_read(&device->md_io_in_use) == 1) there. | 84 | * ASSERT(atomic_read(&device->md_io_in_use) == 1) there. |
88 | */ | 85 | */ |
89 | drbd_md_put_buffer(device); | 86 | drbd_md_put_buffer(device); |
90 | md_io->done = 1; | 87 | device->md_io.done = 1; |
91 | wake_up(&device->misc_wait); | 88 | wake_up(&device->misc_wait); |
92 | bio_put(bio); | 89 | bio_put(bio); |
93 | if (device->ldev) /* special case: drbd_md_read() during drbd_adm_attach() */ | 90 | if (device->ldev) /* special case: drbd_md_read() during drbd_adm_attach() */ |