]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
rootfs-block/module-setup.sh: find root btrfs subvolumes
authorHarald Hoyer <harald@redhat.com>
Thu, 19 Mar 2015 11:34:20 +0000 (12:34 +0100)
committerHarald Hoyer <harald@redhat.com>
Fri, 20 Mar 2015 13:31:22 +0000 (14:31 +0100)
If root is a btrfs subvolume, find it, if fstab is not used

modules.d/95rootfs-block/module-setup.sh

index 81de1773a28aa0b1c0c2bdf918c36874296e6b18..2b06bac233e4159456093717a734e68a39260057 100755 (executable)
@@ -30,11 +30,19 @@ cmdline_journal() {
 }
 
 cmdline_rootfs() {
-    local dev=/dev/block/$(find_root_block_device)
-    if [ -e $dev ]; then
-        printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
-        printf " rootflags=%s" "$(find_mp_fsopts /)"
-        printf " rootfstype=%s" "$(find_mp_fstype /)"
+    local _dev=/dev/block/$(find_root_block_device)
+    local _fstype _flags _subvol
+    if [ -e $_dev ]; then
+        printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$_dev")")"
+        _fstype="$(find_mp_fstype /)"
+        _flags="$(find_mp_fsopts /)"
+        printf " rootfstype=%s" "$_fstype"
+        if [[ $use_fstab != yes ]] && [[ $_fstype = btrfs ]]; then
+            _subvol=$(findmnt -e -v -n -o FSROOT --target /) \
+               && _subvol=${_subvol#/}
+            _flags="$_flags,${_subvol:+subvol=$_subvol}"
+        fi
+        printf " rootflags=%s" "${_flags#,}"
     fi
 }