[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