summaryrefslogtreecommitdiffstats
path: root/libmount/src/tab.c
diff options
context:
space:
mode:
authorStanislav Brabec2016-01-26 21:59:55 +0100
committerKarel Zak2016-02-01 11:59:31 +0100
commitd2f8267847ecbe763a3b63af1289bf1179cd8c45 (patch)
tree49df43b76332adfab01bfbe912ea728dec5d4aed /libmount/src/tab.c
parentlibmount: add 'force-mountinfo' to features list, improve debug (diff)
downloadkernel-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/src/tab.c')
-rw-r--r--libmount/src/tab.c2
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;