Skip to content

Commit

Permalink
drbd: detach must not try to abort non-local requests
Browse files Browse the repository at this point in the history
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
  • Loading branch information
Lars Ellenberg authored and Philipp Reisner committed Nov 8, 2012
1 parent f497609 commit 97ddb68
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/block/drbd/drbd_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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);
}
Expand Down
2 changes: 2 additions & 0 deletions drivers/block/drbd/drbd_req.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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
Expand Down

0 comments on commit 97ddb68

Please sign in to comment.