[Drbd-dev] DRBD8: Resync of device PauseSync state does not resume after an I/O error.

Montrose, Ernest Ernest.Montrose at stratus.com
Mon Feb 26 22:30:29 CET 2007


Hi all,
Looks like what's going on is that on an I/O error during resync (on the
sync source), the io error handler set the new state to 
"Connected" and after_state_ch() is not called but scheduled it seems.
Next time after_state_ch()
is called the conn state is "Connected" for both old and new and the
disk state is Diskless.
We do not cal resume_next_sg() for this combination of state.  Could it
be as simple as this patch?

Index: drbd/drbd_main.c
===================================================================
--- drbd/drbd_main.c    (revision 10812)
+++ drbd/drbd_main.c    (working copy)
@@ -1009,7 +1009,8 @@
        // A resync finished or aborted, wake paused devices...
        if ( (os.conn > Connected && ns.conn <= Connected) ||
            (os.peer_isp && !ns.peer_isp) ||
-            (os.user_isp && !ns.user_isp) ) {
+            (os.user_isp && !ns.user_isp) ||
+        (ns.conn <= Connected && ns.disk == Diskless)) {
                resume_next_sg(mdev);
        }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.linbit.com/pipermail/drbd-dev/attachments/20070226/fe516963/attachment.html


More information about the drbd-dev mailing list