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_int.h | |
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_int.h')
-rw-r--r-- | drivers/block/drbd/drbd_int.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index d85f43c9ef56..3f8281bbea53 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h | |||
@@ -542,6 +542,11 @@ struct drbd_backing_dev { | |||
542 | }; | 542 | }; |
543 | 543 | ||
544 | struct drbd_md_io { | 544 | struct drbd_md_io { |
545 | struct page *page; | ||
546 | unsigned long start_jif; /* last call to drbd_md_get_buffer */ | ||
547 | unsigned long submit_jif; /* last _drbd_md_sync_page_io() submit */ | ||
548 | const char *current_use; | ||
549 | atomic_t in_use; | ||
545 | unsigned int done; | 550 | unsigned int done; |
546 | int error; | 551 | int error; |
547 | }; | 552 | }; |
@@ -795,9 +800,7 @@ struct drbd_device { | |||
795 | atomic_t pp_in_use; /* allocated from page pool */ | 800 | atomic_t pp_in_use; /* allocated from page pool */ |
796 | atomic_t pp_in_use_by_net; /* sendpage()d, still referenced by tcp */ | 801 | atomic_t pp_in_use_by_net; /* sendpage()d, still referenced by tcp */ |
797 | wait_queue_head_t ee_wait; | 802 | wait_queue_head_t ee_wait; |
798 | struct page *md_io_page; /* one page buffer for md_io */ | ||
799 | struct drbd_md_io md_io; | 803 | struct drbd_md_io md_io; |
800 | atomic_t md_io_in_use; /* protects the md_io, md_io_page and md_io_tmpp */ | ||
801 | spinlock_t al_lock; | 804 | spinlock_t al_lock; |
802 | wait_queue_head_t al_wait; | 805 | wait_queue_head_t al_wait; |
803 | struct lru_cache *act_log; /* activity log */ | 806 | struct lru_cache *act_log; /* activity log */ |
@@ -1336,7 +1339,7 @@ extern void resume_next_sg(struct drbd_device *device); | |||
1336 | extern void suspend_other_sg(struct drbd_device *device); | 1339 | extern void suspend_other_sg(struct drbd_device *device); |
1337 | extern int drbd_resync_finished(struct drbd_device *device); | 1340 | extern int drbd_resync_finished(struct drbd_device *device); |
1338 | /* maybe rather drbd_main.c ? */ | 1341 | /* maybe rather drbd_main.c ? */ |
1339 | extern void *drbd_md_get_buffer(struct drbd_device *device); | 1342 | extern void *drbd_md_get_buffer(struct drbd_device *device, const char *intent); |
1340 | extern void drbd_md_put_buffer(struct drbd_device *device); | 1343 | extern void drbd_md_put_buffer(struct drbd_device *device); |
1341 | extern int drbd_md_sync_page_io(struct drbd_device *device, | 1344 | extern int drbd_md_sync_page_io(struct drbd_device *device, |
1342 | struct drbd_backing_dev *bdev, sector_t sector, int rw); | 1345 | struct drbd_backing_dev *bdev, sector_t sector, int rw); |