This set of patches introduces support for multipath devices for storage. Comments and suggestions are appreciated. Mike
Includes choosing device to install to
ovirt-node-image stuff
fix autoinstall to translate ovirt_init param
Add manual device option
Signed-off-by: Mike Burns <mburns at redhat.com>
---
recipe/common-install.ks | 4 +
recipe/common-post.ks | 11 +++
scripts/ovirt-config-storage | 171 ++++++++++++++++++++++++++++++++++++++----
scripts/ovirt-functions | 6 +-
4 files changed, 174 insertions(+), 18 deletions(-)
diff --git a/recipe/common-install.ks b/recipe/common-install.ks
index f3443b6..5c1e239 100644
--- a/recipe/common-install.ks
+++ b/recipe/common-install.ks
@@ -18,3 +18,7 @@ device scsi_wait_scan
# multipath kmods
device dm-multipath
device dm-round-robin
+device dm-emc
+device dm-rdac
+device dm-hp-sw
+device scsi_dh_rdac
diff --git a/recipe/common-post.ks b/recipe/common-post.ks
index 0f09581..293c341 100644
--- a/recipe/common-post.ks
+++ b/recipe/common-post.ks
@@ -152,6 +152,7 @@ rm -f /etc/cron.daily/logrotate
touch /var/lib/random-seed
mkdir /live
mkdir /boot
+mkdir -p /var/cache/multipathd
sed -i '/^files \/etc*/ s/^/#/' /etc/rwtab
cat > /etc/rwtab.d/ovirt <<EOF
dirs /var/lib/multipath
@@ -162,7 +163,17 @@ files /var/cache/hald
files /var/empty/sshd/etc/localtime
files /var/lib/dbus
files /var/lib/libvirt
+files /var/lib/multipath
+files /var/cache/multipathd
empty /mnt
empty /live
empty /boot
EOF
+
+
+#use all hard-coded defaults for multipath
+cat /dev/mull > /etc/multipath.conf
+
+#lvm.conf should use /dev/mapper and /dev/sdX devices
+# and not /dev/dm-X devices
+sed -i 's/preferred_names = \[ \]/preferred_names = [
"^\/dev\/mapper", "^\/dev\/[hsv]d" ]/g'
/etc/lvm/lvm.conf
diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage
index be22ef6..c3715fb 100755
--- a/scripts/ovirt-config-storage
+++ b/scripts/ovirt-config-storage
@@ -34,6 +34,68 @@ logging_min_size=5
data_min_size=5
swap_min_size=5
+# return sd name for given #:# identifier
+get_sd_name() {
+ local id=$1
+ local device_var=$2
+ for device in $(ls /sys/block)
+ do
+ if [[ $id = $(cat /sys/block/$device/dev) ]]; then
+ eval $device_var=$device
+ return
+ fi
+ done
+ eval $device_var=1
+}
+
+# gets the dependent block devices for multipath devices
+get_multipath_devices() {
+ local mpath_device=mpath-$(basename $1)
+ local deplist_var=$2
+ local deplist=""
+
+ #get dependencies for multipath device
+ local deps=$(dmsetup deps -u $mpath_device \
+ | sed -r 's/\(([0-9]+), ([0-9]+)\)/\1:\2/g' \
+ | sed 's/ /\n/g' | grep [0-9]:[0-9] )
+
+ local device=""
+ for dep in $deps
+ do
+ local device=""
+ get_sd_name $dep device
+ if [[ ! $device = 1 ]]; then
+ if [[ $deplist = "" ]]; then
+ deplist=$device
+ else
+ deplist="$deplist $device"
+ fi
+ fi
+ done
+
+ eval $deplist_var='$deplist'
+}
+
+#get Multipath device for given /dev/sdX device
+#return sdX device if no multipath device
+translate_multipath_device() {
+ #trim so that only sdX is stored, but support passing /dev/sdX
+ local dev=$1
+ local mpath_var=$2
+
+ local basedev=$(basename $dev)
+
+ local mpath_device=$(multipath -ll $dev |grep -n . | \
+ grep "^1:" |awk '{print $1}' | sed
's/^1:/\/dev\/mapper\//g')
+
+ if [ -z "$mpath_device" ]; then
+ mpath_device=$dev
+ fi
+
+ eval $mpath_var=$mpath_device
+}
+
+
get_drive_size()
{
local drive=$1
@@ -53,8 +115,12 @@ get_drive_size()
fi
if [ -z "$udi" ]; then
# If hal didn't find the device, it could be a virtio block device
+ # or a multipath device
# In this case, use sfdisk -s to get the size
- size=$(sfdisk -s $drive)
+ size=$(sfdisk -s $drive 2>/dev/null)
+ if [ -z "$size" ]; then
+ size=0
+ fi
size=$(echo "scale=0; $size * 1024" | bc -l)
else
size=$(hal-get-property --udi "$udi" --key storage.size)
@@ -69,7 +135,7 @@ get_drive_size()
size=$(echo "scale=0; $size / (1024 * 1024)" | bc -l)
echo "$drive ($size MB)"
- echo "Disk Identifier: $(basename "$udi")"
+ test -z "$udi" || echo "Disk Identifier: $(basename
"$udi")"
if [ -n "$space_var" ]; then
eval $space_var=$size
fi
@@ -151,6 +217,29 @@ check_partition_sizes()
return $rc
}
+manual_input()
+{
+ local manual_device
+ local return_var=$1
+ while true; do
+ read -rp "Enter disk device path: " manual_device
+ if [ -z "$device" ]; then
+ return 1
+ fi
+ translate_multipath_device $manual_device manual_device
+ eval $return_var="$manual_device"
+ if [ -n "$manual_device" ]; then
+ if [ -b "$(readlink -f $device)" ]; then
+ return 0
+ fi
+ else
+ echo "Aborting."
+ return 1
+ fi
+
+ done
+}
+
# Find a usable/selected storage device.
# If there are none, give a diagnostic and return nonzero.
# If there is just one, e.g., /dev/sda, treat it as selected (see below).
@@ -161,7 +250,7 @@ check_partition_sizes()
get_dev_name()
{
local udi_list=$(hal-find-by-capability --capability storage)
- local byid_list=$(find /dev/disk/by-id -mindepth 1 -not -name
'*-part*')
+ local byid_list=$(find /dev/disk/by-id -mindepth 1 -not -name
'*-part*' 2>/dev/null)
if test -z "$udi_list" -a -z "$byid_list"; then
warn "ERROR: no usable storage devices detected"
return 1
@@ -193,7 +282,33 @@ get_dev_name()
# FIXME: workaround for detecting virtio block devices
devices="$devices $(ls /dev/vd? 2> /dev/null | xargs)"
- devices=$(echo $devices | tr ' ' '\n' | sort -u | xargs)
+
+ # FIXME: workaround for detecting cciss devices
+ for dev in $(ls /dev/cciss 2>/dev/null); do
+ if [[ ! $dev =~ p[0-9]+\$ ]]; then
+ devices="$devices /dev/cciss/dev"
+ fi
+ done
+
+ # Include mulitpath devices
+ local devs_to_remove
+ for dev in $(dmsetup ls --target=multipath | awk '{print $1}'); do
+ devices="$devices /dev/mapper/$dev"
+ local sd_devs=""
+ get_multipath_devices $dev sd_devs
+ devs_to_remove="${devs_to_remove} ${sd_devs}"
+ done
+
+ # Remove /dev/sd* devices that are part of a multipath device
+ local dev_list
+ for dev in $devices
+ do
+ if [[ ! "$devs_to_remove" =~ "$(basename $dev)" ]];
then
+ dev_list="$dev_list $dev"
+ fi
+ done
+
+ devices=$(echo $dev_list | tr ' ' '\n' | sort -u | xargs)
local num_devices=$(echo "$devices" | wc -w)
# If there's only one device, use it.
@@ -209,9 +324,10 @@ get_dev_name()
get_drive_size $d >&2
done
local choices="$devices Abort"
- select device in $choices
+ select device in $choices "Manual Selection"
do
test "$device" = Abort && return 1
+ test "$device" = "Manual selection" &&
manual_input device
test -z "$device" && continue
echo "$device"
return 0
@@ -375,6 +491,17 @@ wipe_lvm_on_disk()
done
}
+
+reread_partitions()
+{
+ local drive=$1
+ if [[ $drive =~ "^/dev/mapper" ]]; then
+ kpartx -a -p p $drive
+ else
+ blockdev --rereadpt $drive
+ fi
+}
+
perform_partitioning()
{
if [[ -z "$HOSTVGDRIVE" &&
"$OVIRT_ISCSI_ENABLED" != "y" ]]; then
@@ -404,15 +531,20 @@ perform_partitioning()
log "Partitioning drive: $BOOTDRIVE"
log "Wiping old boot sector"
dd if=/dev/zero of=$BOOTDRIVE bs=1024K count=1
- blockdev --rereadpt $BOOTDRIVE
+ reread_partitions $BOOTDRIVE
partprobe -s $BOOTDRIVE
log "Creating boot partition"
parted $BOOTDRIVE -s "mklabel ${LABEL_TYPE}"
parted $BOOTDRIVE -s "mkpartfs primary ext2 0M
${boot_size_si}M"
+ reread_partitions $BOOTDRIVE
+ partboot=$BOOTDRIVE1
+ if [ ! -e $partboot ]; then
+ partboot=${BOOTDRIVE}p1
+ fi
# sleep to ensure filesystems are created before continuing
sleep 10
- mke2fs ${BOOTDRIVE}1 -L Boot
- tune2fs -c 0 -i 0 ${BOOTDRIVE}1
+ mke2fs ${partboot} -L Boot
+ tune2fs -c 0 -i 0 ${partboot}
log "Completed!"
return
fi
@@ -422,7 +554,7 @@ perform_partitioning()
# FIXME: save a backup copy, just in case?
log "Wiping old boot sector"
dd if=/dev/zero of=$ROOTDRIVE bs=1024K count=1
- blockdev --rereadpt $ROOTDRIVE
+ reread_partitions $ROOTDRIVE
partprobe -s $ROOTDRIVE
log "Labeling Drive: $ROOTDRIVE"
parted $ROOTDRIVE -s "mklabel ${LABEL_TYPE}"
@@ -435,12 +567,19 @@ perform_partitioning()
let RootBackup_end=${ROOT_SIZE}*2
parted $ROOTDRIVE -s "mkpart primary ext2 0M ${ROOT_SIZE}M"
parted $ROOTDRIVE -s "mkpart primary ext2 ${ROOT_SIZE}M
${RootBackup_end}M"
+ reread_partitions $ROOTDRIVE
+ partroot=${ROOTDRIVE}1
+ partrootbackup=${ROOTDRIVE}2
+ if [ ! -e $partroot ]; then
+ partroot=${ROOTDRIVE}p1
+ partrootbackup=${ROOTDRIVE}p2
+ fi
# sleep to ensure filesystems are created before continuing
sleep 10
- mke2fs ${ROOTDRIVE}1 -L Root
- mke2fs ${ROOTDRIVE}2 -L RootBackup
- tune2fs -c 0 -i 0 ${ROOTDRIVE}1
- tune2fs -c 0 -i 0 ${ROOTDRIVE}2
+ mke2fs ${partroot} -L Root
+ mke2fs ${partrootbackup} -L RootBackup
+ tune2fs -c 0 -i 0 ${partroot}
+ tune2fs -c 0 -i 0 ${partrootbackup}
log "Creating LVM partition"
if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then
@@ -454,6 +593,7 @@ perform_partitioning()
parted $HOSTVGDRIVE -s "set $hostvgpart lvm on"
parted $ROOTDRIVE -s "print"
udevadm settle 2> /dev/null || udevsettle
+ reread_partitions $HOSTVGDRIVE
# sync GPT to the legacy MBR partitions
if [ "gpt" == "$LABEL_TYPE" ]; then
@@ -702,8 +842,9 @@ DATA_SIZE=${OVIRT_VOL_DATA_SIZE:-$default_data_size}
if [ -n "$OVIRT_INIT" ]; then
# if present, use the drive selected with 'ovirt_init' boot
parameter
# setting these the same until kernel cmdline argument implemented
- ROOTDRIVE=$OVIRT_INIT
- HOSTVGDRIVE=$OVIRT_INIT
+ translate_multipath_device $OVIRT_INIT DRIVE
+ ROOTDRIVE=$DRIVE
+ HOSTVGDRIVE=$DRIVE
get_drive_size $ROOTDRIVE ROOTDRIVESPACE
fi
diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions
index ff2b016..4027613 100644
--- a/scripts/ovirt-functions
+++ b/scripts/ovirt-functions
@@ -332,7 +332,7 @@ unmount_logging_services() {
cd /etc/init.d
for prg in $(lsof -Fc +D /var/log|grep ^c|sort -u); do
srv=$(grep -l ${prg#c}$ *)
- service $srv stop
+ service $srv stop 6>&- 7>&-
services="$services $srv"
done
# debugging help
@@ -364,7 +364,7 @@ mount_logging() {
rmdir $log2
restorecon -rv /var/log
for srv in $services; do
- service $srv start
+ service $srv start 6>&- 7>&-
done
return 0
@@ -392,7 +392,7 @@ unmount_logging() {
return $rc
fi
for srv in $services; do
- service $srv start
+ service $srv start 6>&- 7>&-
done
return 0
--
1.6.6.1
Mike Burns
2010-Feb-24 17:47 UTC
[Ovirt-devel] [PATCH node 2/5] Check for negative data partition with default storage config
If the data partition is a negative size, don't offer default sizes.
Instead force the user to enter partition sizes
Signed-off-by: Mike Burns <mburns at redhat.com>
---
scripts/ovirt-config-storage | 28 ++++++++++++++++++----------
1 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage
index c3715fb..a16126c 100755
--- a/scripts/ovirt-config-storage
+++ b/scripts/ovirt-config-storage
@@ -17,7 +17,7 @@ trap 'exit $?' 1 2 13 15
# check that we're not booted from local storage; if so then exit with an
error
if is_booted_from_local_disk; then
- die "You cannot configure storage on a running system. Please boot
from CD/USB to configure local storage."
+ die "You cannot configure storage on a running system. Please boot
from CD/USB to configure storage."
fi
default_overcommit=0.5
@@ -361,9 +361,12 @@ do_configure()
printf "* For the Data partition, a size of -1 indicates that
the\n"
printf " partition should use up the remaining space on the
disk.\n\n"
- do_review
- if ask_yes_or_no "Use these default values ([Y]es/[N]o)?"; then
- return
+ if do_review; then
+ if ask_yes_or_no "Use these default values ([Y]es/[N]o)?";
then
+ return
+ fi
+ else
+ printf "Selected disk is too small for default storage
configuration"
fi
local space_left=$HOSTVGDRIVESPACE
@@ -438,8 +441,9 @@ do_review()
{
if [[ -z "$ROOTDRIVE" && "$OVIRT_ISCSI_ENABLED"
!= "y" ]]; then
printf "\nNo Root storage device selected.\n"
- return
+ return 1
fi
+ local is_negative=0
if [ "$OVIRT_ISCSI_ENABLED" != "y" ]; then
local data_size_display="$DATA_SIZE MB"
@@ -448,15 +452,17 @@ do_review()
if [ $ROOTDRIVE == $HOSTVGDRIVE ]; then
local remaining_mb=$(( $ROOTDRIVESPACE - $SWAP_SIZE \
- $ROOT_SIZE * 2 - $CONFIG_SIZE - $LOGGING_SIZE ))
+ test $remaining_mb -lt 0 && is_negative=1
else
local remaining_mb=$(( $HOSTVGDRIVESPACE - $SWAP_SIZE -
$CONFIG_SIZE - $LOGGING_SIZE ))
+ test $remaining_mb -lt 0 && is_negative=1
fi
data_size_display="$remaining_mb MB"
fi
cat <<EOF
-The local disk will be repartitioned as follows:
+The selected disk will be repartitioned as follows:
=============================================== Root Drive:
$(get_drive_size $ROOTDRIVE)
HostVG Drive: $(get_drive_size $HOSTVGDRIVE)
@@ -470,7 +476,7 @@ EOF
else
cat <<EOF
-The local disk will be repartitioned as follows:
+The selected disk will be repartitioned as follows:
=============================================== Boot Drive:
$(get_drive_size $BOOTDRIVE)
Boot partition size: $BOOT_SIZE
@@ -478,6 +484,8 @@ The local disk will be repartitioned as follows:
EOF
fi
+
+ return ${is_negative-0}
}
# cleanup lvms on selected disk
@@ -693,9 +701,9 @@ do_confirm()
"$w8" \
"$wb$sp$w" \
"$wb$sp$w" \
- "$wb If you proceed, this will destroy all data on $w"
\
- "$wb your local system, and your hard disk will be $w"
\
- "$wb irreversably reconfigured $w"
\
+ "$wb If you proceed, all data on your selected storage
$w" \
+ "$wb device will be destroyed and your hard disk
$w" \
+ "$wb will be irreversably reconfigured
$w" \
"$wb$sp$w" \
"$wb$sp$w" \
"$w8" \
--
1.6.6.1
Mike Burns
2010-Feb-24 17:47 UTC
[Ovirt-devel] [PATCH node 3/5] Handle existing HostVGs on the storage
Allow the user to install on a device that already contains HostVG.
Fail install if HostVG exists on a different drive.
Signed-off-by: Mike Burns <mburns at redhat.com>
---
scripts/ovirt-config-storage | 81 +++++++++++++++++++++++++++++++++++++----
1 files changed, 73 insertions(+), 8 deletions(-)
diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage
index a16126c..44389f3 100755
--- a/scripts/ovirt-config-storage
+++ b/scripts/ovirt-config-storage
@@ -349,6 +349,24 @@ do_configure()
printf "\n\nPlease select the disk to use for the
HostVG.\n\n"
HOSTVGDRIVE=$(get_dev_name) || return 0
+ local skipped=false
+ if check_existing_hostvg $HOSTVGDRIVE devs; then
+ for dev in $devs
+ do
+ printf "Removing HostVG on $dev will erase the drive and
cannot be undone\n"
+ if ask_yes_or_no "Do you want to remove HostVG from $dev
(y/n)?"; then
+ start_log
+ if ! wipe_lvm_on_disk $dev; then
+ stop_log
+ return 1
+ fi
+ stop_log
+ else
+ skipped=true
+ fi
+ done
+ fi
+ $skipped && printf "Installation cannot proceed with
existing HostVG.\n" && return 0
get_drive_size $HOSTVGDRIVE HOSTVGDRIVESPACE
echo $HOSTVGDRIVESPACE
fi
@@ -488,15 +506,59 @@ EOF
return ${is_negative-0}
}
+#Check for an existing HostVG on any device on the system.
+# Return 0 if then is a HostVG found, unless only one found is on $1
+# Return 1 if no HostVG found or only found on $1
+check_existing_hostvg()
+{
+ local install_dev=$1
+ local devices_var=$2
+ if [ -z "$install_dev" ]; then
+ devices="$(pvs -o pv_name,vg_name --noheadings | \
+ grep "HostVG" | awk '{print $1}' )"
+ else
+ devices="$(pvs -o pv_name,vg_name --noheadings | \
+ grep -v ${install_dev} | grep "HostVG" | awk '{print
$1}' )"
+ fi
+ rc=1
+ if [ -n "$devices" ]; then
+ printf "\n"
+ printf "There appears to already be an installation on another
device:\n"
+ for device in $devices; do
+ get_multipath_devices ${device%p[0-9]} sd_dev
+ sd_dev=$(echo $sd_dev | awk '{print $1}')
+ udi=$(hal-find-by-property --key block.device --string
/dev/${sd_dev})
+ printf "\t$device ($(basename "$udi"))\n"
+ done
+ printf "The installation cannot proceed until the device is
removed\n"
+ printf "from the system of the HostVG volume group is
removed.\n"
+ rc=0
+ fi
+
+ test -z $devices_var || eval $devices_var=$devices
+
+ return $rc
+
+}
+
# cleanup lvms on selected disk
# - remove mounted filesystems
# - remove LVM volumes and groups
wipe_lvm_on_disk()
{
+ local dev=${1-$HOSTVGDRIVE}
unmount_logging
for vg in $(pvs -o vg_name --noheadings $HOSTVGDRIVE* 2>/dev/null|sort
-u); do
+ if pvs -o pv_name,vg_name --noheadings | \
+ grep $vg | grep -v -q $dev* 2>/dev/null; then
+ log "The volume group \"$vg\" spans multiple
disks."
+ log "This operation cannot complete. Please manullay"
+ log "cleanup the storage using standard linux tools."
+ return 1
+ fi
wipe_volume_group $vg
done
+ return 0
}
@@ -867,19 +929,22 @@ if [ "$1" == "AUTO" ]; then
log "Beginning automatic disk partitioning.\n"
if [ -n "$OVIRT_INIT" ]; then
# do not format if HostVG exists on selected disk...
- pvs -o vg_name --noheadings $HOSTVGDRIVE* 2>/dev/null|grep -q -m1
"HostVG"
- existingHostVG=$?
+ check_existing_hostvg $HOSTVGDRIVE
+ existingHostVG=$?
# ... unless overridden by ovirt_firstboot parameter
- if is_firstboot || [ $existingHostVG -ne 0 ]; then
+ if is_firstboot || [ $existingHostVG -ne 0 ]; then
if check_partition_sizes; then
- log "Partitioning hard disk..."
- perform_partitioning
+ log "Partitioning hard disk..."
+ perform_partitioning
+ exit $?
fi
- else
+ else
log "Skip disk partitioning, HostVG exists"
- fi
+ exit 1
+ fi
else
- log "Missing device parameter: unable to partition any disk"
+ log "Missing device parameter: unable to partition any disk"
+ exit 2
fi
else
OPTIONS="\"Enable iSCSI Target\" \"Configure
Storage\" \"Review\" \"Commit Changes And Quit\"
\"Return To Menu\""
--
1.6.6.1
Mike Burns
2010-Feb-24 17:47 UTC
[Ovirt-devel] [PATCH node 4/5] update uninstall steps to handle multipath
Signed-off-by: Mike Burns <mburns at redhat.com>
---
scripts/ovirt-config-uninstall | 51 +++++++++++++++++++++++++++------------
1 files changed, 35 insertions(+), 16 deletions(-)
diff --git a/scripts/ovirt-config-uninstall b/scripts/ovirt-config-uninstall
index 820eead..a2c9b3c 100755
--- a/scripts/ovirt-config-uninstall
+++ b/scripts/ovirt-config-uninstall
@@ -29,24 +29,43 @@ EOF
if ask_yes_or_no "Do you wish to continue and uninstall this node
([Y]es/[N]o)?"; then
if [ -d /dev/HostVG ]; then
- log "Uninstalling node"
- log "Detaching logging"
- unmount_logging
- log "Removing volume group"
- wipe_volume_group "HostVG"
- partition=$(findfs LABEL=Root)
- if [ -n "$partition" ]; then
- log "Removing partitions"
- drive=$(echo $partition | awk '{ print substr($0, 1, length($0) - 1)
}')
- parted -s $drive "rm 1"
- parted -s $drive "rm 2"
+ log "Uninstalling node"
+ log "Detaching logging"
+ start_log
+ # multipathd holds all mounts under /var in a private namespace
+ service multipathd stop 6>&- 7>&-
+ rm -f /var/lib/multipath/bindings
+ unmount_logging
+ log "Removing volume group"
+ wipe_volume_group "HostVG"
+ partition=$(readlink -f $(findfs LABEL=Root))
+ if [ -n "$partition" ]; then
+ log "Removing partitions"
+ eval $(echo $partition | awk ' {
+ print "drive=" substr($0,1,length($1)-1);
+ print "drive2=" substr($0,1,length($1)-2);
+ }')
+ if [ ! -e "$drive" ]; then
+ drive="$drive2"
+ partpv="$drive}p2"
+ else
+ partpv="${drive}2"
+ fi
+ parted -s $drive "rm 1"
+ pvremove ${partpv}
+ parted -s $drive "rm 2"
parted -s $drive "rm 3"
- fi
- printf "Finished uninstalling node."
+ fi
+ #restart multipath
+ multipath -F
+ multipath -v3
+ service multipathd start 6>&- 7>&-
+ log "Finished uninstalling node."
+ stop_log
else
- log "There is no installed node instance to remove."
- log "Aborting"
- exit 1
+ log "There is no installed node instance to remove."
+ log "Aborting"
+ exit 1
fi
else
log "Aborted"
--
1.6.6.1
Mike Burns
2010-Feb-24 17:47 UTC
[Ovirt-devel] [PATCH node 5/5] Check for plymouth running before trying to kill it
Don't try to kill plymouth if it's already dead
Signed-off-by: Mike Burns <mburns at redhat.com>
---
scripts/ovirt-functions | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions
index 4027613..1db89ae 100644
--- a/scripts/ovirt-functions
+++ b/scripts/ovirt-functions
@@ -382,8 +382,9 @@ unmount_logging() {
log "Unmounting log partition"
# plymouthd keeps /var/log/boot.log
- plymouth --quit
- plymouth --wait
+ if plymouth --ping ; then
+ plymouth --quit
+ fi
unmount_logging_services
umount /var/log
--
1.6.6.1
Maybe Matching Threads
- [PATCH node] Handle space in storage wwid
- RESEND: [PATCH node 1/3] enables ability for a common shared root
- [PATCH node] iscsi remote root basework This lays most of the groundwork for iscsi installation and configuration. At this time configuring iscsi is disabled due to multiple issues with dependent pieces.
- [PATCH node 1/3] Enables ability to have a common shared root
- [PATCH][node REPOST] Improve performance of multipath translations