From 7ddc8b5fe6bdbff1ea8ebf77ac954743a8b23bdf Mon Sep 17 00:00:00 2001 From: Lars Ellenberg Date: Fri, 15 Jul 2011 23:52:44 +0200 Subject: [PATCH] --- yaml --- r: 346122 b: refs/heads/master c: 97ddb68790891ed568ab8212189f5173dd600ea4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/block/drbd/drbd_main.c | 4 ++++ trunk/drivers/block/drbd/drbd_req.c | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9d96eea6b96f..77d232e3e5b2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f497609e4c50c6162b51359d560f2454b184e0ec +refs/heads/master: 97ddb68790891ed568ab8212189f5173dd600ea4 diff --git a/trunk/drivers/block/drbd/drbd_main.c b/trunk/drivers/block/drbd/drbd_main.c index 2090b78231a2..edd0227f4b43 100644 --- a/trunk/drivers/block/drbd/drbd_main.c +++ b/trunk/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); } diff --git a/trunk/drivers/block/drbd/drbd_req.c b/trunk/drivers/block/drbd/drbd_req.c index d0f73b3a6796..60fc186d0a3d 100644 --- a/trunk/drivers/block/drbd/drbd_req.c +++ b/trunk/drivers/block/drbd/drbd_req.c @@ -436,6 +436,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what, /* so we can verify the handle in the answer packet * corresponding hlist_del is in _req_may_be_done() */ + D_ASSERT(drbd_interval_empty(&req->i)); drbd_insert_interval(&mdev->read_requests, &req->i); set_bit(UNPLUG_REMOTE, &mdev->flags); @@ -453,6 +454,7 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what, /* from __drbd_make_request only */ /* corresponding hlist_del is in _req_may_be_done() */ + D_ASSERT(drbd_interval_empty(&req->i)); drbd_insert_interval(&mdev->write_requests, &req->i); /* NOTE