summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_worker.c
diff options
context:
space:
mode:
authorLars Ellenberg2014-05-05 23:42:24 +0200
committerPhilipp Reisner2014-07-10 18:35:14 +0200
commit21ae5d7f95aa1a64f35b03c91f8714ced3ab61a9 (patch)
tree9e5d90197118d8110c9a65f07f639c5eae000044 /drivers/block/drbd/drbd_worker.c
parentdrbd: improve throttling decisions of background resynchronisation (diff)
downloadkernel-qcow2-linux-21ae5d7f95aa1a64f35b03c91f8714ced3ab61a9.tar.gz
kernel-qcow2-linux-21ae5d7f95aa1a64f35b03c91f8714ced3ab61a9.tar.xz
kernel-qcow2-linux-21ae5d7f95aa1a64f35b03c91f8714ced3ab61a9.zip
drbd: track timing details of peer_requests
To be able to present timing details in debugfs, we need to track preparation/submit times of peer requests. Track peer request flags early, before they are put on the epoch_entry lists. Waiting for activity log transactions may be a major latency factor. We want to be able to present the peer_request state accurately in debugfs, and what it is waiting for. Consistently mark/unmark peer requests with EE_CALL_AL_COMPLETE_IO. Set it only *after* calling drbd_al_begin_io(), clear it as soon as we call drbd_al_complete_io(). 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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index 48975a264985..b908e9b3f63e 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -132,6 +132,7 @@ void drbd_endio_write_sec_final(struct drbd_peer_request *peer_req) __releases(l
i = peer_req->i;
do_al_complete_io = peer_req->flags & EE_CALL_AL_COMPLETE_IO;
block_id = peer_req->block_id;
+ peer_req->flags &= ~EE_CALL_AL_COMPLETE_IO;
spin_lock_irqsave(&device->resource->req_lock, flags);
device->writ_cnt += peer_req->i.size >> 9;