• Qu Wenruo's avatar
    btrfs: enhance unsupported compat RO flags handling · 81d5d614
    Qu Wenruo authored
    Currently there are two corner cases not handling compat RO flags
    correctly:
    
    - Remount
      We can still mount the fs RO with compat RO flags, then remount it RW.
      We should not allow any write into a fs with unsupported RO flags.
    
    - Still try to search block group items
      In fact, behavior/on-disk format change to extent tree should not
      need a full incompat flag.
    
      And since we can ensure fs with unsupported RO flags never got any
      writes (with above case fixed), then we can even skip block group
      items search at mount time.
    
    This patch will enhance the unsupported RO compat flags by:
    
    - Reject read-write remount if there are unsupported RO compat flags
    
    - Go dummy block group items directly for unsupported RO compat flags
      In fact, only changes to chunk/subvolume/root/csum trees should go
      incompat flags.
    
    The latter part should allow future change to extent tree to be compat
    RO flags.
    
    Thus this patch also needs to be backported to all stable trees.
    
    CC: stable@vger.kernel.org # 4.9+
    Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    81d5d614
block-group.c 123 KB