From: Neil Brown <neilb@suse.de>
To: Arjan van de Ven <arjan@infradead.org>
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu,
Simon Arlott <simon@fire.lp0.eu>,
Daniel Walker <dwalker@mvista.com>,
Rene Herman <rene.herman@keyaccess.nl>
Subject: Re: [patch 3/4] fastboot: make the raid autodetect code wait for all devices to init
Date: Mon, 21 Jul 2008 09:06:36 +1000 [thread overview]
Message-ID: <18563.50428.659101.868745@notabene.brown> (raw)
In-Reply-To: message from Arjan van de Ven on Sunday July 20
(wondering why I wasn't Cc:ed on this...)
On Sunday July 20, arjan@infradead.org wrote:
>
> From: Arjan van de Ven <arjan@linux.intel.com>
> Date: Sun, 20 Jul 2008 13:07:09 -0700
> Subject: [PATCH] fastboot: make the raid autodetect code wait for all devices to init
>
> The raid autodetect code really needs to have all devices probed before
> it can detect raid arrays; not doing so would give rather messy situations
> where arrays would get detected as degraded while they shouldn't be etc.
>
> This is in preparation of removing the "wait for everything to init"
> code that makes everyone pay, not just raid users.
>
> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
> ---
> init/do_mounts_md.c | 7 +++++++
> 1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/init/do_mounts_md.c b/init/do_mounts_md.c
> index 693d246..c0412a9 100644
> --- a/init/do_mounts_md.c
> +++ b/init/do_mounts_md.c
> @@ -267,9 +267,16 @@ __setup("md=", md_setup);
> void __init md_run_setup(void)
> {
> create_dev("/dev/md0", MKDEV(MD_MAJOR, 0));
> +
> if (raid_noautodetect)
> printk(KERN_INFO "md: Skipping autodetection of RAID arrays. (raid=noautodetect)\n");
> else {
> + /*
> + * Since we don't want to detect and use half a raid array, we
> + * need to wait for the known devices to complete their probing
> + */
> + while (driver_probe_done() != 0)
> + msleep(100);
> int fd = sys_open("/dev/md0", 0, 0);
> if (fd >= 0) {
> sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
I must say that I think this is pretty horrible. But then it is a
pretty horrible problem and I don't think there is a clean solution.
If md in a module, this code won't run so there will be no change. If
md is compiled in, this code will silently slow down boot even if
there are no raid arrays to assemble. I think the "silently" is a
problem. I'm not looking forward to "my computer boots slower if I
compile md into the kernel" reports on linux-raid@vger.
What would you think of
if (driver_probe_done() != 0) {
printk("md: Waiting for all devices to be available before autodetect\n"
"md: If you don't boot off raid, use raid=noautodetect\n");
do
msleep(100);
while (driver_probe_done() != 0);
}
??
Also, the "driver_probe_done() != 0" bothers me.
If driver_probe_done is a boolean, it should be
while (! drive_probe_done() ) msleep ....
and if it returns a negative error, then it should be
while ( drive_probe_done() < 0) msleep ....
The != 0 confuses me about the expected return type.
The "real" solution here involves assembling arrays in userspace using
"mdadm --incremental" from udevd, and using write-intent-bitmaps so
that writing to an array before all the component devices are
available can be done without requiring a full resync. There is still
a bit more code needed to make that work really smoothly.
NeilBrown
next prev parent reply other threads:[~2008-07-20 23:06 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20080720151140.4aa7c682@infradead.org>
2008-07-20 22:12 ` [patch 1/4] fastboot: make fastboot a config option Arjan van de Ven
2008-07-30 15:23 ` Randy Dunlap
2008-07-31 10:53 ` Ingo Molnar
2008-07-20 22:13 ` [patch 2/4] fastboot: retry mounting the root fs if we can't find init Arjan van de Ven
2008-07-21 1:35 ` Daniel Walker
2008-07-20 22:13 ` [patch 3/4] fastboot: make the raid autodetect code wait for all devices to init Arjan van de Ven
2008-07-20 23:06 ` Neil Brown [this message]
2008-07-20 23:12 ` david
2008-07-20 23:19 ` Arjan van de Ven
2008-07-20 23:31 ` Arjan van de Ven
2008-07-21 4:30 ` Neil Brown
2008-07-20 21:33 ` Arjan van de Ven
2008-07-20 22:14 ` [patch 4/4] fastboot: remove "wait for all devices before mounting root" delay Arjan van de Ven
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=18563.50428.659101.868745@notabene.brown \
--to=neilb@suse.de \
--cc=arjan@infradead.org \
--cc=dwalker@mvista.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rene.herman@keyaccess.nl \
--cc=simon@fire.lp0.eu \
/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