diff options
-rw-r--r-- | drivers/block/drbd/drbd_int.h | 1 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_main.c | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index b2699bb2e530..2c38752ca8d6 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h | |||
@@ -1827,6 +1827,7 @@ static inline void __drbd_chk_io_error_(struct drbd_conf *mdev, int forcedetach, | |||
1827 | if (!forcedetach) { | 1827 | if (!forcedetach) { |
1828 | if (__ratelimit(&drbd_ratelimit_state)) | 1828 | if (__ratelimit(&drbd_ratelimit_state)) |
1829 | dev_err(DEV, "Local IO failed in %s.\n", where); | 1829 | dev_err(DEV, "Local IO failed in %s.\n", where); |
1830 | _drbd_set_state(_NS(mdev, disk, D_INCONSISTENT), CS_HARD, NULL); | ||
1830 | break; | 1831 | break; |
1831 | } | 1832 | } |
1832 | /* NOTE fall through to detach case if forcedetach set */ | 1833 | /* NOTE fall through to detach case if forcedetach set */ |
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 5b525c179f39..fd308864833f 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c | |||
@@ -1565,6 +1565,10 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os, | |||
1565 | put_ldev(mdev); | 1565 | put_ldev(mdev); |
1566 | } | 1566 | } |
1567 | 1567 | ||
1568 | /* Notify peer that I had a local IO error, and did not detached.. */ | ||
1569 | if (os.disk == D_UP_TO_DATE && ns.disk == D_INCONSISTENT) | ||
1570 | drbd_send_state(mdev); | ||
1571 | |||
1568 | /* Disks got bigger while they were detached */ | 1572 | /* Disks got bigger while they were detached */ |
1569 | if (ns.disk > D_NEGOTIATING && ns.pdsk > D_NEGOTIATING && | 1573 | if (ns.disk > D_NEGOTIATING && ns.pdsk > D_NEGOTIATING && |
1570 | test_and_clear_bit(RESYNC_AFTER_NEG, &mdev->flags)) { | 1574 | test_and_clear_bit(RESYNC_AFTER_NEG, &mdev->flags)) { |