drbd: move put_ldev from __req_mod() to the endio callback
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
Родитель
6870ca6d46
Коммит
2415308eb9
|
@ -416,7 +416,6 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
|
|||
|
||||
maybe_wakeup_conflicting_requests(req);
|
||||
req_may_be_completed_not_susp(req, m);
|
||||
put_ldev(mdev);
|
||||
break;
|
||||
|
||||
case ABORT_DISK_IO:
|
||||
|
@ -434,7 +433,6 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
|
|||
__drbd_chk_io_error(mdev, false);
|
||||
maybe_wakeup_conflicting_requests(req);
|
||||
req_may_be_completed_not_susp(req, m);
|
||||
put_ldev(mdev);
|
||||
break;
|
||||
|
||||
case READ_AHEAD_COMPLETED_WITH_ERROR:
|
||||
|
@ -442,7 +440,6 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
|
|||
req->rq_state |= RQ_LOCAL_COMPLETED;
|
||||
req->rq_state &= ~RQ_LOCAL_PENDING;
|
||||
req_may_be_completed_not_susp(req, m);
|
||||
put_ldev(mdev);
|
||||
break;
|
||||
|
||||
case READ_COMPLETED_WITH_ERROR:
|
||||
|
@ -454,7 +451,6 @@ int __req_mod(struct drbd_request *req, enum drbd_req_event what,
|
|||
D_ASSERT(!(req->rq_state & RQ_NET_MASK));
|
||||
|
||||
__drbd_chk_io_error(mdev, false);
|
||||
put_ldev(mdev);
|
||||
|
||||
goto_queue_for_net_read:
|
||||
|
||||
|
|
|
@ -238,6 +238,7 @@ void drbd_request_endio(struct bio *bio, int error)
|
|||
spin_lock_irqsave(&mdev->tconn->req_lock, flags);
|
||||
__req_mod(req, what, &m);
|
||||
spin_unlock_irqrestore(&mdev->tconn->req_lock, flags);
|
||||
put_ldev(mdev);
|
||||
|
||||
if (m.bio)
|
||||
complete_master_bio(mdev, &m);
|
||||
|
|
Загрузка…
Ссылка в новой задаче