From 4886fa2105a3cc55c75ca5c401c5267758702d2c Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Mon, 1 Nov 2010 14:08:51 +0000 Subject: [PATCH] Return different status code for fsadm check of mounted filesystem Return status code 3 for fsadm check of mounted filesystem - used later with lvresize update patch to better support online filesystem resize. Also makes a more consistent user interruption and returns status code 2 in this case. --- WHATS_NEW | 1 + scripts/fsadm.sh | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index c882bfc14..ce18a401b 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.76 - =================================== + Modify fsadm to return different status code for check of mounted filesystem. Update VG metadata only once in vgchange when making multiple changes. Allow independent vgchange arguments to be used together. Automatically unmount invalidated snapshots in dmeventd. diff --git a/scripts/fsadm.sh b/scripts/fsadm.sh index c1e8fb182..b05f33e8d 100644 --- a/scripts/fsadm.sh +++ b/scripts/fsadm.sh @@ -23,6 +23,11 @@ # reiserfs: resize_reiserfs, reiserfstune # xfs: xfs_growfs, xfs_info # +# Return values: +# 0 success +# 1 error +# 2 break detected +# 3 unsupported online filesystem check for given mounted fs TOOL=fsadm @@ -126,6 +131,8 @@ cleanup() { IFS=$IFS_OLD trap 2 + test "$1" -eq 2 && verbose "Break detected" + if [ "$DO_LVRESIZE" -eq 2 ]; then # start LVRESIZE with the filesystem modification flag # and allow recursive call of fsadm @@ -349,7 +356,6 @@ resize() { # if the size parameter is missing use device size #if [ -n "$NEWSIZE" -a $NEWSIZE < test -z "$NEWSIZE" && NEWSIZE=${DEVSIZE}b - trap cleanup 2 IFS=$NL case "$FSTYPE" in "ext3"|"ext2"|"ext4") resize_ext $NEWSIZE ;; @@ -365,7 +371,10 @@ resize() { ################### check() { detect_fs "$1" - detect_mounted && error "Cannot fsck device \"$VOLUME\", filesystem is mounted on $MOUNTED" + if detect_mounted ; then + verbose "Skipping filesystem check for device \"$VOLUME\" as the filesystem is mounted on $MOUNTED"; + cleanup 3 + fi case "$FSTYPE" in "xfs") dry $XFS_CHECK "$VOLUME" ;; *) # check if executed from interactive shell environment @@ -380,6 +389,7 @@ check() { # start point of this script # - parsing parameters ############################# +trap "cleanup 2" 2 # test if we are not invoked recursively test -n "$FSADM_RUNNING" && exit 0 -- 2.43.5