From: NeilBrown <neilb@suse.de>
To: Asdo <asdo@shiftmail.org>
Cc: linux-raid <linux-raid@vger.kernel.org>
Subject: Re: Some md/mdadm bugs
Date: Tue, 7 Feb 2012 09:20:05 +1100 [thread overview]
Message-ID: <20120207092005.7c11171a@notabene.brown> (raw)
In-Reply-To: <4F3008DA.8060402@shiftmail.org>
[-- Attachment #1: Type: text/plain, Size: 3934 bytes --]
On Mon, 06 Feb 2012 18:07:38 +0100 Asdo <asdo@shiftmail.org> wrote:
> On 02/02/12 23:58, Asdo wrote:
> >
> >>> Now it doesn't happen:
> >>> When I reinserted the disk, udev triggered the --incremental, to
> >>> reinsert the device, but mdadm refused to do anything because the old
> >>> slot was still occupied with a failed+detached device. I manually
> >>> removed the device from the raid then I ran --incremental, but mdadm
> >>> still refused to re-add the device to the RAID because the array was
> >>> running. I think that if it is a re-add, and especially if the
> >>> bitmap is
> >>> active, I can't think of a situation in which the user would *not* want
> >>> to do an incremental re-add even if the array is running.
> >> Hmmm.. that doesn't seem right. What version of mdadm are you running?
> >
> > 3.1.4
> >
> >> Maybe a newer one would get this right.
> > I need to try...
> > I think I need that.
>
> Hi Neil,
>
> Still some problems on mdadm 3.2.2 (from Ubuntu Precise) apparently:
>
> Problem #1:
>
> # mdadm -If /dev/sda4
> mdadm: incremental removal requires a kernel device name, not a file:
> /dev/sda4
>
> however this works:
>
> # mdadm -If sda4
> mdadm: set sda4 faulty in md3
> mdadm: hot removed sda4 from md3
>
> Is this by design?
Yes.
> Would your udev rule
> ACTION=="remove", RUN+="/sbin/mdadm -If $name"
> trigger the first or the second kind of invocation?
Yes.
>
>
> Problem #2:
>
> by reinserting sda, it became sdax, and the array is still running like
> this:
>
> md3 : active raid1 sdb4[2]
> 10485688 blocks super 1.0 [2/1] [_U]
> bitmap: 0/160 pages [0KB], 32KB chunk
>
> please note the bitmap is active
True, but there is nothing in it (0 pages). That implies that no bits are
set. I guess that is possible if nothing has been written to the array since
the other device was removed.
>
> so now I'm trying auto hot-add:
>
> # mdadm -I /dev/sdax4
> mdadm: not adding /dev/sdax4 to active array (without --run) /dev/md3
>
> still the old problem I mentioned with 3.1.4.
I need to see -E and -X output on both drives to be able to see what is
happening here. Also the content of /etc/mdadm.conf might be relevant.
If you could supply that info I might be able to explain what is happening.
> Trying more ways: (even with the "--run" which is suggested)
>
> # mdadm --run -I /dev/sdax4
> mdadm: -I would set mdadm mode to "incremental", but it is already set
> to "misc".
>
> # mdadm -I --run /dev/sdax4
> mdadm: failed to add /dev/sdax4 to /dev/md3: Invalid argument.
>
Hmm... I'm able to reproduce something like this.
Following patch seems to fix it, but I need to check the code more
thoroughly to be sure. Note that this will *not* fix the "not adding ... not
active array" problem.
NeilBrown
diff --git a/Incremental.c b/Incremental.c
index 60175af..2be0d05 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -415,19 +415,19 @@ int Incremental(char *devname, int verbose, int runstop,
goto out_unlock;
}
}
- info2.disk.major = major(stb.st_rdev);
- info2.disk.minor = minor(stb.st_rdev);
+ info.disk.major = major(stb.st_rdev);
+ info.disk.minor = minor(stb.st_rdev);
/* add disk needs to know about containers */
if (st->ss->external)
sra->array.level = LEVEL_CONTAINER;
- err = add_disk(mdfd, st, sra, &info2);
+ err = add_disk(mdfd, st, sra, &info);
if (err < 0 && errno == EBUSY) {
/* could be another device present with the same
* disk.number. Find and reject any such
*/
find_reject(mdfd, st, sra, info.disk.number,
info.events, verbose, chosen_name);
- err = add_disk(mdfd, st, sra, &info2);
+ err = add_disk(mdfd, st, sra, &info);
}
if (err < 0) {
fprintf(stderr, Name ": failed to add %s to %s: %s.\n",
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
next prev parent reply other threads:[~2012-02-06 22:20 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-02 19:08 Some md/mdadm bugs Asdo
2012-02-02 21:17 ` NeilBrown
2012-02-02 22:58 ` Asdo
2012-02-06 16:59 ` Joel
2012-02-06 18:47 ` Asdo
2012-02-06 18:50 ` Joel
2012-02-06 17:07 ` Asdo
2012-02-06 18:47 ` Asdo
2012-02-06 22:31 ` NeilBrown
2012-02-07 17:13 ` Asdo
2012-02-09 0:55 ` NeilBrown
2012-02-06 22:20 ` NeilBrown [this message]
2012-02-07 17:47 ` Asdo
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=20120207092005.7c11171a@notabene.brown \
--to=neilb@suse.de \
--cc=asdo@shiftmail.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).