• Neil Brown's avatar
    [PATCH] md: Allow md to select between superblock formats · a3a173cd
    Neil Brown authored
    The code to understand a specific superblock format is
    already highly localised in md.  This patch defines a
    user-space interface for selecting which superblock format
    to use, and obeys that selection.
    
    Md currently has a concept of 3 version numbers:
     A major version number
     A minor version number
     A patch version number
    
    There historically seems to be some confusion about whether
    these refer to a version of the superblock layout,
    or a version of the software.
    
    We will now define that:
       the "major_version" defines the superblock handler.
          '0' is the current superblock format.  All new formats
              will need new numbers.
       the "minor_version" can specify minor variations in the
          superblock, such as different location on the device
       the "patch_version" will be used to indicate new extenstions
          to the software.. patch_version=1 will mean multiple superblock
          support.
    
    A superblock version number is selected by specifing major_version
    in SET_ARRAY_INFO ioctl.
    
    This patch:
      Updates Documentation/md.txt with details of new interface.
      Generalises desc_nr handling and makes sure that an array never
      has two devices with the same desc_nr.
      makes sure mddev->major_version is always valid and is 0 by default.
      uses mddev->major_version to select superblock handlers.
      Modifies set_array_info to just record version number if raid_disks==0
      Makes sure max_disks is always set correctly.
      Determines device size when reading superblock, or a hot-add/add-new.
    a3a173cd
md.txt 3.21 KB