drbd: only restart frozen disk io when D_UP_TO_DATE
authorLars Ellenberg <lars.ellenberg@linbit.com>
Mon, 13 Jun 2016 22:26:28 +0000 (00:26 +0200)
committerJens Axboe <axboe@fb.com>
Tue, 14 Jun 2016 03:43:06 +0000 (21:43 -0600)
When re-attaching the local backend device to a C_STANDALONE D_DISKLESS
R_PRIMARY with OND_SUSPEND_IO, we may only resume IO if we recognize the
backend that is being attached as D_UP_TO_DATE.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/drbd/drbd_state.c

index 59c6467..24422e8 100644 (file)
@@ -1675,7 +1675,7 @@ static void after_state_ch(struct drbd_device *device, union drbd_state os,
                        what = RESEND;
 
                if ((os.disk == D_ATTACHING || os.disk == D_NEGOTIATING) &&
-                   conn_lowest_disk(connection) > D_NEGOTIATING)
+                   conn_lowest_disk(connection) == D_UP_TO_DATE)
                        what = RESTART_FROZEN_DISK_IO;
 
                if (resource->susp_nod && what != NOTHING) {