aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/block/drbd/drbd_req.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c
index d1d17fcd9232..e307890e6afe 100644
--- a/drivers/block/drbd/drbd_req.c
+++ b/drivers/block/drbd/drbd_req.c
@@ -123,7 +123,14 @@ void drbd_req_destroy(struct kref *kref)
123 * (local only or remote failed). 123 * (local only or remote failed).
124 * Other places where we set out-of-sync: 124 * Other places where we set out-of-sync:
125 * READ with local io-error */ 125 * READ with local io-error */
126 if (!(s & RQ_POSTPONED)) { 126
127 /* There is a special case:
128 * we may notice late that IO was suspended,
129 * and postpone, or schedule for retry, a write,
130 * before it even was submitted or sent.
131 * In that case we do not want to touch the bitmap at all.
132 */
133 if ((s & (RQ_POSTPONED|RQ_LOCAL_MASK|RQ_NET_MASK)) != RQ_POSTPONED) {
127 if (!(s & RQ_NET_OK) || !(s & RQ_LOCAL_OK)) 134 if (!(s & RQ_NET_OK) || !(s & RQ_LOCAL_OK))
128 drbd_set_out_of_sync(mdev, req->i.sector, req->i.size); 135 drbd_set_out_of_sync(mdev, req->i.sector, req->i.size);
129 136