Skip to content
  • Paul Gortmaker's avatar
    init: make rootdelay=N consistent with rootwait behaviour · 4dfe694f
    Paul Gortmaker authored
    
    
    Currently rootdelay=N and rootwait behave differently (aside from the
    obvious unbounded wait duration) because they are at different places in
    the init sequence.
    
    The difference manifests itself for md devices because the call to
    md_run_setup() lives between rootdelay and rootwait, so if you try to use
    rootdelay=20 to try and allow a slow RAID0 array to assemble, you get
    this:
    
    [    4.526011] sd 6:0:0:0: [sdc] Attached SCSI removable disk
    [   22.972079] md: Waiting for all devices to be available before autodetect
    
    i.e.  you've achieved nothing other than delaying the probing 20s, when
    what you wanted was a 20s delay _after_ the probing for md devices was
    initiated.
    
    Here we move the rootdelay code to be right beside the rootwait code, so
    that their behaviour is consistent.
    
    It should be noted that in doing so, the actions based on the
    saved_root_name[0] and initrd_load() were previously put on hold by
    rootdelay=N and now currently will not be delayed.  However, I think
    consistent behaviour is more important than matching historical behaviour
    of delaying the above two operations.
    
    Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    4dfe694f