aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/block/drbd/drbd_int.h1
-rw-r--r--drivers/block/drbd/drbd_main.c4
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)) {