public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Robin H. Johnson" <robbat2@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/genkernel:master commit in: /, defaults/
Date: Tue,  5 Jan 2016 19:39:42 +0000 (UTC)	[thread overview]
Message-ID: <1452022678.19d8a784c9618926a4740c43fcc40ebb1bb5bf8b.robbat2@gentoo> (raw)

commit:     19d8a784c9618926a4740c43fcc40ebb1bb5bf8b
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  5 19:35:01 2016 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Tue Jan  5 19:37:58 2016 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=19d8a784

multipath: find the needed binaries and fail visibly

While making dolvm safer per commit 7316481040, I noticed that multipath
had the same issue: /sbin/dmsetup was called, but the binary was
actually at /bin/dmsetup. Prevent this by detecting the binary location
if possible, and failing gracefully if not found.

Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>

 defaults/initrd.scripts | 28 ++++++++++++++++++++++------
 gen_initramfs.sh        |  4 ++--
 2 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index 94cb0cc..763468a 100644
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -961,12 +961,28 @@ startVolumes() {
 
 	if [ "${USE_MULTIPATH_NORMAL}" = '1' ] 
 	then 
-		good_msg "Scanning for multipath devices" 
-		/sbin/multipath -v 0
-		sleep 2
-		good_msg "Activating multipath devices" 
-		/sbin/dmsetup ls --target multipath --exec "/sbin/kpartx -a -v" 
-		#for MULTIPATH_VOLUMES in /dev/mapper/*; do kpartx -a $MULTIPATH_VOLUMES; done
+		for multipath_path in /sbin/multipath /bin/multipath MISSING ; do
+			[ -x "$multipath_path " ] && break
+		fi
+		for dmsetup_path in /sbin/dmsetup /bin/dmsetup MISSING ; do
+			[ -x "$dmsetup_path " ] && break
+		fi
+		for kpartx_path in /sbin/kpartx /bin/kpartx MISSING ; do
+			[ -x "$kpartx_path " ] && break
+		fi
+		fail=0
+		["${multipath_path}" = "MISSING" ] && fail=1 && bad_msg "domultipath called, but multipath binary missing! Skipping multipath"
+		["${dmsetup_path}" = "MISSING" ] && fail=1 && bad_msg "domultipath called, but dmsetup binary missing! Skipping multipath"
+		["${kpartx_path}" = "MISSING" ] && fail=1 && bad_msg "domultipath called, but kpartx binary missing! Skipping multipath"
+		if [ "$fail" = "0" ]
+		then
+			good_msg "Scanning for multipath devices"
+			$multipath_path  -v 0
+			sleep 2
+			good_msg "Activating multipath devices"
+			$dmsetup_path ls --target multipath --exec "$kpartx_path -a -v"
+			#for MULTIPATH_VOLUMES in /dev/mapper/*; do $kpartx_path -a $MULTIPATH_VOLUMES; done
+		fi
 	fi 
 
 	if [ "${USE_DMRAID_NORMAL}" = '1' ]

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 7dce2cf..4420b0b 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -374,8 +374,8 @@ append_lvm(){
 		# Now move the static binaries into good places.
 		mv ${TEMP}/initramfs-lvm-temp/sbin/lvm.static ${TEMP}/initramfs-lvm-temp/sbin/lvm ||
 			gen_die 'LVM error: Could not move lvm.static to lvm!'
-		# See bug 382555
-		mv ${TEMP}/initramfs-lvm-temp/sbin/dmsetup.static ${TEMP}/initramfs-lvm-temp/bin/dmsetup ||
+		# See bug 382555; use /sbin/dmsetup to match multipath code
+		mv ${TEMP}/initramfs-lvm-temp/sbin/dmsetup.static ${TEMP}/initramfs-lvm-temp/sbin/dmsetup ||
 			gen_die 'LVM error: Could not move dmsetup.static to dmsetup!'
 		# Clean up other stuff we don't need
 		rm -rf ${TEMP}/initramfs-lvm-temp/{lib*,share,man,include,sbin/dmeventd.static}


             reply	other threads:[~2016-01-05 19:39 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-05 19:39 Robin H. Johnson [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-07-23 23:57 [gentoo-commits] proj/genkernel:master commit in: /, defaults/ Thomas Deutschmann
2019-11-26 13:50 Thomas Deutschmann
2019-07-21 16:26 Thomas Deutschmann
2017-09-04  5:36 Robin H. Johnson
2017-01-08  1:57 Robin H. Johnson
2017-01-07 23:50 Robin H. Johnson
2017-01-02 23:25 Robin H. Johnson
2016-05-16  6:55 Robin H. Johnson
2016-01-05 19:39 Robin H. Johnson
2013-06-06  3:36 [gentoo-commits] proj/genkernel:ryao " Richard Yao
2013-06-03 23:49 ` [gentoo-commits] proj/genkernel:master " Richard Yao
2013-04-25  6:22 Fabio Erculiani
2012-10-16  0:03 Robin H. Johnson
2012-10-03 16:24 Sebastian Pipping
2012-08-30 16:20 Fabio Erculiani
2012-08-12 19:04 Sebastian Pipping
2012-07-24 18:01 Robin H. Johnson
2012-07-24 17:29 Robin H. Johnson
2012-07-24  8:29 Robin H. Johnson
2012-07-19 20:12 Richard Yao
2012-07-09 17:51 Sebastian Pipping
2012-07-08 17:05 Sebastian Pipping
2012-05-17 18:34 Sebastian Pipping
2012-03-17  1:27 Sebastian Pipping
2012-03-17  1:27 Sebastian Pipping
2012-03-17  1:27 Sebastian Pipping
2012-03-17  1:27 Sebastian Pipping
2012-02-20  6:58 Robin H. Johnson
2012-02-09  7:42 Robin H. Johnson
2012-02-06  9:35 Robin H. Johnson
2012-02-06  8:19 Robin H. Johnson
2012-01-14 23:22 Sebastian Pipping
2012-01-13 23:19 Sebastian Pipping
2012-01-13 23:19 Sebastian Pipping
2012-01-06  6:37 Robin H. Johnson
2011-11-08 17:21 Sebastian Pipping
2011-10-08 21:22 Fabio Erculiani
2011-09-13  9:54 Fabio Erculiani
2011-09-11  7:40 Fabio Erculiani
2011-08-30 15:34 Sebastian Pipping
2011-07-27 17:38 Sebastian Pipping
2011-05-31 10:58 Sebastian Pipping

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1452022678.19d8a784c9618926a4740c43fcc40ebb1bb5bf8b.robbat2@gentoo \
    --to=robbat2@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox