From: Philipp Reisner <philipp.reisner@linbit.com>
To: linux-kernel@vger.kernel.org, Jens Axboe <axboe@kernel.dk>
Cc: drbd-dev@lists.linbit.com
Subject: [PATCH 3/5] drbd: Fix adding of new minors with freshly created meta data
Date: Wed, 31 Jul 2013 11:41:13 +0200 [thread overview]
Message-ID: <1375263675-18410-4-git-send-email-philipp.reisner@linbit.com> (raw)
In-Reply-To: <1375263675-18410-1-git-send-email-philipp.reisner@linbit.com>
Online adding of new minors with freshly created meta data
to an resource with an established connection failed, with a
wrong state transition on one side on one side of the new minor.
Freshly created meta-data has a la_size (last agreed size) of 0.
When we online add such devices, the code wrongly got into
the code path for resyncing new storage that was added while
the disk was detached.
Fixed that by making the GREW from ZERO a special case.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
---
drivers/block/drbd/drbd_int.h | 3 ++-
drivers/block/drbd/drbd_nl.c | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
index 2d7f608..0e06f0c 100644
--- a/drivers/block/drbd/drbd_int.h
+++ b/drivers/block/drbd/drbd_int.h
@@ -1474,7 +1474,8 @@ enum determine_dev_size {
DS_ERROR = -1,
DS_UNCHANGED = 0,
DS_SHRUNK = 1,
- DS_GREW = 2
+ DS_GREW = 2,
+ DS_GREW_FROM_ZERO = 3,
};
extern enum determine_dev_size
drbd_determine_dev_size(struct drbd_conf *, enum dds_flags, struct resize_parms *) __must_hold(local);
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index 8cc1e64..37dad18 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -955,7 +955,7 @@ drbd_determine_dev_size(struct drbd_conf *mdev, enum dds_flags flags, struct res
}
if (size > la_size_sect)
- rv = DS_GREW;
+ rv = la_size_sect ? DS_GREW : DS_GREW_FROM_ZERO;
if (size < la_size_sect)
rv = DS_SHRUNK;
--
1.7.9.5
next prev parent reply other threads:[~2013-07-31 9:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-31 9:41 [PATCH 0/5] RFC: DRBD Fixes Philipp Reisner
2013-07-31 9:41 ` [PATCH 1/5] drbd: fix NULL pointer deref in module init error path Philipp Reisner
2013-07-31 9:41 ` [PATCH 2/5] drbd: Fix an connection drop issue after enabling allow-two-primaries Philipp Reisner
2013-07-31 9:41 ` Philipp Reisner [this message]
2013-07-31 9:41 ` [PATCH 4/5] drbd: fix decoding of bitmap vli rle for device sizes > 64 TB Philipp Reisner
2013-07-31 9:41 ` [PATCH 5/5] drbd: avoid to shrink max_bio_size due to peer re-configuration Philipp Reisner
2013-10-23 8:59 [PATCH 0/5] Some DRBD fixes for the 3.13 merge window Philipp Reisner
2013-10-23 8:59 ` [PATCH 3/5] drbd: Fix adding of new minors with freshly created meta data Philipp Reisner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1375263675-18410-4-git-send-email-philipp.reisner@linbit.com \
--to=philipp.reisner@linbit.com \
--cc=axboe@kernel.dk \
--cc=drbd-dev@lists.linbit.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome