From 77123409a193be75028c23ac893b2d145eac968e Mon Sep 17 00:00:00 2001 From: Philipp Reisner Date: Thu, 3 Mar 2011 00:21:30 +0100 Subject: [PATCH] --- yaml --- r: 251271 b: refs/heads/master c: 738a84b25cac5af94936e5a1b15cd9909212383c h: refs/heads/master i: 251269: 39fe1a7f4e325645a2d26b90f2951a4206dd4201 251267: d28a53a5a799e8682129b993421c6023bff052a6 251263: b48118c5c3ed778930d4c4e6ab3f2c33e7bbd565 v: v3 --- [refs] | 2 +- trunk/drivers/block/drbd/drbd_int.h | 1 + trunk/drivers/block/drbd/drbd_main.c | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 362cd7ea2fa5..4b05c30fc37e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 779d530632c98967820d3bbcae15d492fc20301e +refs/heads/master: 738a84b25cac5af94936e5a1b15cd9909212383c diff --git a/trunk/drivers/block/drbd/drbd_int.h b/trunk/drivers/block/drbd/drbd_int.h index b2699bb2e530..2c38752ca8d6 100644 --- a/trunk/drivers/block/drbd/drbd_int.h +++ b/trunk/drivers/block/drbd/drbd_int.h @@ -1827,6 +1827,7 @@ static inline void __drbd_chk_io_error_(struct drbd_conf *mdev, int forcedetach, if (!forcedetach) { if (__ratelimit(&drbd_ratelimit_state)) dev_err(DEV, "Local IO failed in %s.\n", where); + _drbd_set_state(_NS(mdev, disk, D_INCONSISTENT), CS_HARD, NULL); break; } /* NOTE fall through to detach case if forcedetach set */ diff --git a/trunk/drivers/block/drbd/drbd_main.c b/trunk/drivers/block/drbd/drbd_main.c index 5b525c179f39..fd308864833f 100644 --- a/trunk/drivers/block/drbd/drbd_main.c +++ b/trunk/drivers/block/drbd/drbd_main.c @@ -1565,6 +1565,10 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os, put_ldev(mdev); } + /* Notify peer that I had a local IO error, and did not detached.. */ + if (os.disk == D_UP_TO_DATE && ns.disk == D_INCONSISTENT) + drbd_send_state(mdev); + /* Disks got bigger while they were detached */ if (ns.disk > D_NEGOTIATING && ns.pdsk > D_NEGOTIATING && test_and_clear_bit(RESYNC_AFTER_NEG, &mdev->flags)) {