Messages in this thread | | | Date | Thu, 27 Dec 2007 15:30:50 +0100 | From | "Torsten Kaiser" <> | Subject | Re: 2.6.24-rc6-mm1 |
| |
[author CCed] On Dec 27, 2007 12:42 PM, Torsten Kaiser <just.for.lkml@googlemail.com> wrote: > On Dec 23, 2007 9:39 PM, Andrew Morton <akpm@linux-foundation.org> wrote: > > > > On Sun, 23 Dec 2007 17:27:12 +0100 "Torsten Kaiser" <just.for.lkml@googlemail.com> wrote: > > > > > On Dec 23, 2007 8:30 AM, Andrew Morton <akpm@linux-foundation.org> wrote: > > > > > > > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.24-rc6/2.6.24-rc6-mm1/ > > > [snip] > > > > +md-allow-devices-to-be-shared-between-md-arrays.patch [snip] > OK, I debugged this some more. It looks like two bugs meshed together. > > One new bug: "do_md_run() returned -22" > I can't seem to start my raid anymore. > The following part of md-allow-devices-to-be-shared-between-md-arrays > adds a new check to do_md_run() (drivers/md/md.c) that fails for my system: > @@ -3213,8 +3283,11 @@ static int do_md_run(mddev_t * mddev) > /* > * Analyze all RAID superblock(s) > */ > - if (!mddev->raid_disks) > + if (!mddev->raid_disks) { > + if (!mddev->persistent) > + return -EINVAL; > analyze_sbs(mddev); > + } > > chunk_size = mddev->chunk_size;
This hunk is indeed buggy. analyze_sbs() calls load_super() and validate_super() and only the validate function is setting mddev->persistent, so this new check needs to be after the call analyze_sbs(mddev).
Changing this allows my system to boot correctly, including starting KDE.
Please note, that this is not a fix for the OOPS in delayed_delete, the OOPS just doesn't happen, because the buggy error path is no longer used.
Torsten
| |