diff options
author | Stanislav Brabec | 2016-01-26 21:59:55 +0100 |
---|---|---|
committer | Karel Zak | 2016-02-01 11:59:31 +0100 |
commit | d2f8267847ecbe763a3b63af1289bf1179cd8c45 (patch) | |
tree | 49df43b76332adfab01bfbe912ea728dec5d4aed /libmount | |
parent | libmount: add 'force-mountinfo' to features list, improve debug (diff) | |
download | kernel-qcow2-util-linux-d2f8267847ecbe763a3b63af1289bf1179cd8c45.tar.gz kernel-qcow2-util-linux-d2f8267847ecbe763a3b63af1289bf1179cd8c45.tar.xz kernel-qcow2-util-linux-d2f8267847ecbe763a3b63af1289bf1179cd8c45.zip |
libmount: run btrfs subvol checks for "auto" fs type
It is possible to mount btrfs using "auto" keyword in fstab. In such
case, btrfs specific checks are skipped. Run them for "auto" as well.
Looking at the code, it is a safe approach. In case of btrfs, it will do
what is needed, in case of no btrfs, btrfs_get_default_subvol_id() will
fail, and the rest of the code is skipped.
How to reproduce:
See reproducer in 2cd28fc and replace fstab line by
echo "/dev/loop0 $PWD/btrfs_mnt btrfs auto 0 0" >>/etc/fstab
Current behavior of second "mount -a":
mount: /dev/loop0 is already mounted or /root/btrfs_mnt busy
/dev/loop0 is already mounted on /root/btrfs_mnt
Testcases for btrfs and ext4:
truncate -s1G btrfs_test.img
truncate -s1G ext4_test.img
mkdir -p btrfs_mnt
mkdir -p ext4_mnt
/sbin/mkfs.btrfs -f -d single -m single ./btrfs_test.img
/sbin/mkfs.ext4 ./ext4_test.img
losetup /dev/loop0 $PWD/btrfs_test.img
losetup /dev/loop1 $PWD/ext4_test.img
echo "/dev/loop0 $PWD/btrfs_mnt auto defaults 0 0" >>/etc/fstab
echo "/dev/loop1 $PWD/ext4_mnt auto defaults 0 0" >>/etc/fstab
./mount -a
./mount -a
umount btrfs_mnt
umount ext4_mnt
sed -i "/\/dev\/loop[01]/d" /etc/fstab
losetup -d /dev/loop0
losetup -d /dev/loop1
rm btrfs_test.img
rm ext4_test.img
rmdir btrfs_mnt
rmdir ext4_mnt
Signed-off-by: Stanislav Brabec <sbrabec@suse.cz>
Diffstat (limited to 'libmount')
-rw-r--r-- | libmount/src/tab.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libmount/src/tab.c b/libmount/src/tab.c index 3099615aa..e8920cbb3 100644 --- a/libmount/src/tab.c +++ b/libmount/src/tab.c @@ -1319,7 +1319,7 @@ struct libmnt_fs *mnt_table_get_fs_root(struct libmnt_table *tb, /* * btrfs-subvolume mount -- get subvolume name and use it as a root-fs path */ - else if (fstype && !strcmp(fstype, "btrfs")) { + else if (fstype && (!strcmp(fstype, "btrfs") || !strcmp(fstype, "auto"))) { char *vol = NULL, *p; size_t sz, volsz = 0; |