u-boot/fs
Matwey V. Kornilov 94509b79b1 btrfs: Use default subvolume as filesystem root
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: Matwey V. Kornilov <matwey.kornilov@gmail.com>
Fixes: f06bfcf54d ("fs: btrfs: Crossport open_ctree_fs_info() from btrfs-progs")
Reviewed-by: Qu Wenruo <wqu@suse.com>
2021-09-01 10:11:24 -04:00
..
btrfs btrfs: Use default subvolume as filesystem root 2021-09-01 10:11:24 -04:00
cbfs cbfs: Check offset range when reading a file 2021-07-15 18:42:05 -04:00
cramfs common: Drop flash.h from common header 2020-05-18 14:53:28 -04:00
ext4 common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
fat fs: fat: add file attributes to struct fs_dirent 2021-07-12 20:30:48 +02:00
jffs2 JFFS2: fix jffs2 summary datacrc status uninitialized 2021-04-07 10:22:22 -04:00
reiserfs common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
sandbox common: Drop part.h from common header 2020-05-18 17:33:33 -04:00
squashfs fs/squashfs: Fix some hardlinks reading the wrong inode 2021-08-04 15:58:31 -04:00
ubifs common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
yaffs2 common: Drop linux/bug.h from common header 2020-05-18 21:19:23 -04:00
zfs common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
fs_internal.c fs: convert error and debug messages to log 2020-09-06 21:21:41 +02:00
fs.c global: Convert simple_strtoul() with hex to hextoul() 2021-08-02 13:32:14 -04:00
Kconfig fs/squashfs: new filesystem 2020-08-07 22:31:32 -04:00
Makefile fs/squashfs: new filesystem 2020-08-07 22:31:32 -04:00