• Neil Brown's avatar
    block: fix booting from partitioned md array · 41b8c853
    Neil Brown authored
    Hi Tejun,
    
     it looks like your commit:
    
       block: don't depend on consecutive minor space
       f331c029
    
     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>
       30f2f0eb
    
     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: default avatarJens Axboe <jens.axboe@oracle.com>
    41b8c853
genhd.c 27.8 KB