Skip to content
  • Matwey V. Kornilov's avatar
    btrfs: Use default subvolume as filesystem root · 94509b79
    Matwey V. Kornilov authored and Tom Rini's avatar Tom Rini committed
    BTRFS volume consists of a number of subvolumes which can be mounted separately
    from each other. The top-level subvolume always exists even if no subvolumes
    were created manually. A subvolume can be denoted as the default subvolume i.e.
    the subvolume which is mounted by default.
    
    The default "default subvolume" is the top-level one, but this is far from the
    common practices used in the wild. For instance, openSUSE provides an OS
    snapshot/rollback feature based on BTRFS. To achieve this, the actual OS root
    filesystem is located into a separate subvolume which is "default" but not
    "top-level". That means that the /boot/dtb/ directory is also located inside
    this default subvolume instead of top-level one.
    
    However, the existing btrfs u-boot driver always uses the top-level subvolume
    as the filesystem root. This behaviour 1) is inconsistent with
    
        mount /dev/sda1 /target
    
    command, which mount the default subvolume 2) leads to the issues when
    /boot/dtb cannot be found properly (see the reference).
    
    This patch uses the default subvolume as the filesystem root to overcome
    mentioned issues.
    
    Reference: https://bugzilla.suse.com/show_bug.cgi?id=1185656
    
    
    Signed-off-by: default avatarMatwey V. Kornilov <matwey.kornilov@gmail.com>
    Fixes: f06bfcf5
    
     ("fs: btrfs: Crossport open_ctree_fs_info() from btrfs-progs")
    Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
    94509b79