commit:     85685d7b73395bddcf58a7550a0220ee9175e3f2
Author:     Alexander Tsoy <alexander <AT> tsoy <DOT> me>
AuthorDate: Tue Aug 17 10:51:21 2021 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Tue Aug 17 17:23:41 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=85685d7b

sys-kernel/dracut: fix usr mount regression

Closes: https://bugs.gentoo.org/807971
Signed-off-by: Alexander Tsoy <alexander <AT> tsoy.me>
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>
Closes: https://github.com/gentoo/gentoo/pull/22009

 .../{dracut-055-r1.ebuild => dracut-055-r2.ebuild} |  1 +
 ...5-fix-usrmount-do-not-empty-_dev-variable.patch | 36 ++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/sys-kernel/dracut/dracut-055-r1.ebuild 
b/sys-kernel/dracut/dracut-055-r2.ebuild
similarity index 98%
rename from sys-kernel/dracut/dracut-055-r1.ebuild
rename to sys-kernel/dracut/dracut-055-r2.ebuild
index e45745cf50f..5d3767efdfc 100644
--- a/sys-kernel/dracut/dracut-055-r1.ebuild
+++ b/sys-kernel/dracut/dracut-055-r2.ebuild
@@ -62,6 +62,7 @@ QA_MULTILIB_PATHS="usr/lib/dracut/.*"
 PATCHES=(
        "${FILESDIR}"/055-fix-crypt-remove-quotes-from-cryptsetupopts.patch
        "${FILESDIR}"/055-fix-base-do-not-quote-initargs-for-switch_root.patch
+       "${FILESDIR}"/055-fix-usrmount-do-not-empty-_dev-variable.patch
        "${FILESDIR}"/gentoo-ldconfig-paths-r1.patch
 )
 

diff --git 
a/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch 
b/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch
new file mode 100644
index 00000000000..e46f8bb25db
--- /dev/null
+++ b/sys-kernel/dracut/files/055-fix-usrmount-do-not-empty-_dev-variable.patch
@@ -0,0 +1,36 @@
+From 4afdcba212793f136aea012b30dd7bdb5b641a5a Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexan...@tsoy.me>
+Date: Mon, 16 Aug 2021 18:54:34 +0300
+Subject: [PATCH] fix(usrmount): do not empty _dev variable
+
+Currently $_dev is always overridden with the value returned by
+label_uuid_to_dev(). This results in an empty value if $_dev is a
+device path. Fix this by calling label_uuid_to_dev() conditionally.
+
+Bug: https://bugs.gentoo.org/807971
+Fixes: d3532978de04c78f53664dad7b37705a49a7ee54
+---
+ modules.d/98usrmount/mount-usr.sh | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/modules.d/98usrmount/mount-usr.sh 
b/modules.d/98usrmount/mount-usr.sh
+index 23ed06aa..c8e1893b 100755
+--- a/modules.d/98usrmount/mount-usr.sh
++++ b/modules.d/98usrmount/mount-usr.sh
+@@ -55,7 +55,12 @@ mount_usr() {
+     while read -r _dev _mp _fs _opts _freq _passno || [ -n "$_dev" ]; do
+         [ "${_dev%%#*}" != "$_dev" ] && continue
+         if [ "$_mp" = "/usr" ]; then
+-            _dev="$(label_uuid_to_dev "$_dev")"
++            case "$_dev" in
++                LABEL=* | UUID=* | PARTUUID=* | PARTLABEL=*)
++                    _dev="$(label_uuid_to_dev "$_dev")"
++                    ;;
++                *) ;;
++            esac
+ 
+             if strstr "$_opts" "subvol=" \
+                 && [ "${root#block:}" -ef "$_dev" ] \
+-- 
+2.31.1
+

Reply via email to