diff options
Diffstat (limited to 'drivers/block/drbd/drbd_req.c')
-rw-r--r-- | drivers/block/drbd/drbd_req.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c index 3b61d767d9c4..af608b39c4e0 100644 --- a/drivers/block/drbd/drbd_req.c +++ b/drivers/block/drbd/drbd_req.c | |||
@@ -94,7 +94,8 @@ static void _req_is_done(struct drbd_conf *mdev, struct drbd_request *req, const | |||
94 | */ | 94 | */ |
95 | if (s & RQ_LOCAL_MASK) { | 95 | if (s & RQ_LOCAL_MASK) { |
96 | if (get_ldev_if_state(mdev, D_FAILED)) { | 96 | if (get_ldev_if_state(mdev, D_FAILED)) { |
97 | drbd_al_complete_io(mdev, req->sector); | 97 | if (s & RQ_IN_ACT_LOG) |
98 | drbd_al_complete_io(mdev, req->sector); | ||
98 | put_ldev(mdev); | 99 | put_ldev(mdev); |
99 | } else if (__ratelimit(&drbd_ratelimit_state)) { | 100 | } else if (__ratelimit(&drbd_ratelimit_state)) { |
100 | dev_warn(DEV, "Should have called drbd_al_complete_io(, %llu), " | 101 | dev_warn(DEV, "Should have called drbd_al_complete_io(, %llu), " |
@@ -802,8 +803,10 @@ static int drbd_make_request_common(struct drbd_conf *mdev, struct bio *bio) | |||
802 | * resync extent to finish, and, if necessary, pulls in the target | 803 | * resync extent to finish, and, if necessary, pulls in the target |
803 | * extent into the activity log, which involves further disk io because | 804 | * extent into the activity log, which involves further disk io because |
804 | * of transactional on-disk meta data updates. */ | 805 | * of transactional on-disk meta data updates. */ |
805 | if (rw == WRITE && local) | 806 | if (rw == WRITE && local && !test_bit(AL_SUSPENDED, &mdev->flags)) { |
807 | req->rq_state |= RQ_IN_ACT_LOG; | ||
806 | drbd_al_begin_io(mdev, sector); | 808 | drbd_al_begin_io(mdev, sector); |
809 | } | ||
807 | 810 | ||
808 | remote = remote && (mdev->state.pdsk == D_UP_TO_DATE || | 811 | remote = remote && (mdev->state.pdsk == D_UP_TO_DATE || |
809 | (mdev->state.pdsk == D_INCONSISTENT && | 812 | (mdev->state.pdsk == D_INCONSISTENT && |