summaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_main.c
diff options
context:
space:
mode:
authorLars Ellenberg2011-07-15 23:52:44 +0200
committerPhilipp Reisner2012-11-08 16:58:00 +0100
commit97ddb68790891ed568ab8212189f5173dd600ea4 (patch)
tree172603f7fb027f172e2eff33e93eb858bc000b1f /drivers/block/drbd/drbd_main.c
parentdrbd: Get rid of MR_{READ,WRITE}_SHIFT (diff)
downloadkernel-qcow2-linux-97ddb68790891ed568ab8212189f5173dd600ea4.tar.gz
kernel-qcow2-linux-97ddb68790891ed568ab8212189f5173dd600ea4.tar.xz
kernel-qcow2-linux-97ddb68790891ed568ab8212189f5173dd600ea4.zip
drbd: detach must not try to abort non-local requests
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_main.c')
-rw-r--r--drivers/block/drbd/drbd_main.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index 2090b78231a2..edd0227f4b43 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -501,6 +501,8 @@ void tl_abort_disk_io(struct drbd_conf *mdev)
while (b) {
list_for_each_safe(le, tle, &b->requests) {
req = list_entry(le, struct drbd_request, tl_requests);
+ if (!(req->rq_state & RQ_LOCAL_PENDING))
+ continue;
if (req->w.mdev == mdev)
_req_mod(req, ABORT_DISK_IO);
}
@@ -509,6 +511,8 @@ void tl_abort_disk_io(struct drbd_conf *mdev)
list_for_each_safe(le, tle, &tconn->barrier_acked_requests) {
req = list_entry(le, struct drbd_request, tl_requests);
+ if (!(req->rq_state & RQ_LOCAL_PENDING))
+ continue;
if (req->w.mdev == mdev)
_req_mod(req, ABORT_DISK_IO);
}