]> git.baikalelectronics.ru Git - kernel.git/commit
block: fix booting from partitioned md array
authorNeil Brown <neilb@suse.de>
Wed, 18 Feb 2009 09:33:59 +0000 (10:33 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Wed, 18 Feb 2009 09:33:59 +0000 (10:33 +0100)
commit2da68bc1f86082ba0693411f67b180359245c1f7
tree912541723b38a52c68c46bdb1de567972e239594
parentd2317a8fc3ec2adf080d71533cd46f71e4d88dff
block: fix booting from partitioned md array

Hi Tejun,

 it looks like your commit:

   block: don't depend on consecutive minor space
   33f508c31e2117c1fc108f7d0acdb6d440c9816f

 broke a particular case for booting from partitioned md/raid devices.
 That is the second time this has been broken recently.  The previous
 time was fixed by

   block: do_mounts - accept root=<non-existant partition>
   1d3f1f2791ecfe5a646b5663562d3902d5cfa609

 Because the data isn't available when an md device is first created
 (we add disks and set it up after creation), the initial partition
 scan finds nothing.  It is not until the device is opened that
 another partition scan happens and finds something.

 So at the point where the kernel parameter "root=/dev/md_d0p1" is
 being parsed, md_d0 exists, but md_d0p1 does not.
 However if we let blk_lookup_devt return the correct device number
 even though the device doesn't exist, then the attempt to mount it
 will successfully find the partition.

 I have tried in the past to find a way to get the partition table to
 be read as soon as the array is assembled but that proved impossible
 (at the time).  I don't remember the details, and could possibly
 revisit it.  However it would be really nice if blk_lookup_devt
 could be adjusted to again accept non existant partitions.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/genhd.c