From: NeilBrown <neilb@suse.de>
To: Andy Smith <andy@strugglers.net>
Cc: linux-raid@vger.kernel.org
Subject: Re: Shrinking number of devices on a RAID-10 (near 2) array
Date: Fri, 29 Aug 2014 16:04:43 +1000 [thread overview]
Message-ID: <20140829160443.3893adaa@notabene.brown> (raw)
In-Reply-To: <20140829044226.GR19874@bitfolk.com>
[-- Attachment #1: Type: text/plain, Size: 2370 bytes --]
On Fri, 29 Aug 2014 04:42:26 +0000 Andy Smith <andy@strugglers.net> wrote:
> Hi Neil,
>
> On Fri, Aug 29, 2014 at 02:35:28PM +1000, NeilBrown wrote:
> > On Fri, 29 Aug 2014 04:26:18 +0000 Andy Smith <andy@strugglers.net> wrote:
> > > Sorry, still no joy:
> > >
> > > # echo 309363696 > /sys/block/md2/md/dev-sda3/size
> > > # cat /sys/block/md2/md/dev-sda3/size
> > > 309363264
> >
> > Try use "/bin/echo" so you get an error message.
> > Also try smaller numbers. Can you write anything larger than what is already
> > there? Increasing by 64 (match the 128 sectors that mdadm wants for
> > new_offset) should be enough.
>
> I can't even increase it by 64 from what it is now:
>
> # /bin/echo 309363328 > /sys/block/md2/md/dev-sda3/size
> # cat /sys/block/md2/md/dev-sda3/size
> 309363264
>
> In fact I can't increase it by 1, and /bin/echo doesn't say why.
>
Hmm.... I've obviously been assuming something that was wrong.
So I did some experiments myself....
If you apply the following patch to mdadm, stop the array, and then assemble
with --update=devicesize, you should then be able to reshape the array to
fewer devices.
This isn't a final solution, I need to think about the whole thing more
carefully. But it will work for you.
Thanks for your patience.
NeilBrown
diff --git a/super1.c b/super1.c
index 727a08a110e0..efa1042ab47a 100644
--- a/super1.c
+++ b/super1.c
@@ -1251,6 +1251,17 @@ static int update_super1(struct supertype *st, struct mdinfo *info,
misc->device_size - __le64_to_cpu(sb->data_offset));
printf("Size is %llu\n", (unsigned long long)
__le64_to_cpu(sb->data_size));
+ } else if (strcmp(update, "devicesize") == 0 &&
+ !(__le32_to_cpu(sb->feature_map)&MD_FEATURE_BITMAP_OFFSET) &&
+ __le64_to_cpu(sb->super_offset) >
+ __le64_to_cpu(sb->data_offset)) {
+ /* set data_size to device size less data_offset */
+ printf("Size was %llu\n", (unsigned long long)
+ __le64_to_cpu(sb->data_size));
+ sb->data_size = __cpu_to_le64(
+ __le64_to_cpu(sb->super_offset) - __le64_to_cpu(sb->data_offset));
+ printf("Size is %llu\n", (unsigned long long)
+ __le64_to_cpu(sb->data_size));
} else if (strcmp(update, "revert-reshape") == 0) {
rv = -2;
if (!(sb->feature_map & __cpu_to_le32(MD_FEATURE_RESHAPE_ACTIVE)))
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
next prev parent reply other threads:[~2014-08-29 6:04 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-23 16:31 Shrinking number of devices on a RAID-10 (near 2) array Andy Smith
2014-08-24 3:09 ` NeilBrown
2014-08-24 6:28 ` Craig Curtin
2014-08-24 6:45 ` NeilBrown
2014-08-24 13:19 ` Andy Smith
2014-08-24 14:39 ` Andy Smith
2014-08-25 10:32 ` Andy Smith
2014-08-25 11:26 ` NeilBrown
2014-08-25 11:34 ` Andy Smith
2014-08-28 9:53 ` Andy Smith
2014-08-29 3:53 ` NeilBrown
2014-08-29 4:02 ` Andy Smith
2014-08-29 4:18 ` NeilBrown
2014-08-29 4:26 ` Andy Smith
2014-08-29 4:35 ` NeilBrown
2014-08-29 4:42 ` Andy Smith
2014-08-29 6:04 ` NeilBrown [this message]
2014-08-29 20:45 ` Andy Smith
2014-08-29 20:47 ` [PATCH 1/1] Grow: Report when grow needs metadata update Andy Smith
2014-09-03 3:28 ` NeilBrown
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=20140829160443.3893adaa@notabene.brown \
--to=neilb@suse.de \
--cc=andy@strugglers.net \
--cc=linux-raid@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.