• Heinz Mauelshagen's avatar
    dm raid: add raid level takeover support · ecbfb9f1
    Heinz Mauelshagen authored
    
    
    Add raid level takeover support allowing arbitrary takeovers between
    raid levels supported by md personalities (i.e. raid0, raid1/10 and
    raid4/5/6):
    
     - add rs_config_{backup|restore} function to allow for temporary
       storing ctr requested layout changes and restore them for takeover
       conersion decision after the superblocks got loaded and analyzed
    
     - add members to store layout to 'struct raid_set' (not mandatory
       for takeover but needed for reshape in later patch)
    
     - add rebuild_disks bitfield to 'struct raid_set' and set bits in ctr
       to use in setting up takeover (base to address a 'rebuild' related
       raid_status() table line bug and needed as well for reshape in future
       patch)
    
     - add runtime flags and respective manipulation functions to be able to
       control e.g. wrting of superlocks to the preresume function on
       takeover and (later) reshape
    
     - add functions to detect takeover, check it's valid (mandatory here to
       avoid failing on md_run()), setup for it and use in the ctr; those
       will be likely moved out once reshaping gets added to simplify the
       ctr
    
     - start raid set readonly in ctr and switch to readwrite, optionally
       updating superblocks, in preresume in order to allow suspend to
       quiesce any active table before (which involves superblock updates);
       this ensures the proper sequence of writing the current and any new
       takeover(/reshape) metadata
    Signed-off-by: default avatarHeinz Mauelshagen <heinzm@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    ecbfb9f1