diff --git a/WHATS_NEW b/WHATS_NEW index c0baadf56..a1c025a39 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.75 - ===================================== + Fix detection of mounted filesystems for fsadm when udev is used. Fix assignment of default value to LVM variable is fsadm. Fix support for --yes flag for fsadm. Do not execute lvresize with --dry-run option for fsadm. diff --git a/scripts/fsadm.sh b/scripts/fsadm.sh index 8572c0518..642d32e71 100644 --- a/scripts/fsadm.sh +++ b/scripts/fsadm.sh @@ -65,6 +65,7 @@ BLOCKCOUNT= MOUNTPOINT= MOUNTED= REMOUNT= +PROCMOUNTS="/proc/mounts" IFS_OLD=$IFS # without bash $'\n' @@ -164,10 +165,15 @@ decode_size() { # detect filesystem on the given device # dereference device name if it is symbolic link detect_fs() { - VOLUME=${1#/dev/} + VOLUME_ORIG=$1 + VOLUME=${1#/dev/} VOLUME=$($READLINK $READLINK_E "/dev/$VOLUME") || error "Cannot get readlink $1" - # strip newline from volume name - VOLUME=${VOLUME%%$NL} + RVOLUME=$VOLUME + case "$RVOLUME" in + /dev/dm-[0-9]*) + read &1 && VOLUME="/dev/mapper/$SYSVOLUME" + ;; + esac # use /dev/null as cache file to be sure about the result # not using option '-o value' to be compatible with older version of blkid FSTYPE=$($BLKID -c /dev/null -s TYPE "$VOLUME") || error "Cannot get FSTYPE of \"$VOLUME\"" @@ -177,11 +183,19 @@ detect_fs() { } # check if the given device is already mounted and where +# FIXME: resolve swap usage and device stacking detect_mounted() { - $MOUNT >/dev/null || error "Cannot detect mounted device $VOLUME" - MOUNTED=$($MOUNT | $GREP "$VOLUME") - MOUNTED=${MOUNTED##* on } - MOUNTED=${MOUNTED% type *} # allow type in the mount name + test -e $PROCMOUNTS || error "Cannot detect mounted device $VOLUME" + + MOUNTED=$($GREP ^"$VOLUME" $PROCMOUNTS) + + # for empty string try again with real volume name + test -z "$MOUNTED" && MOUNTED=$($GREP ^"$RVOLUME" $PROCMOUNTS) + + # cut device name prefix and trim everything past mountpoint + # echo translates \040 to spaces + MOUNTED=${MOUNTED#* } + MOUNTED=$(echo -n -e ${MOUNTED%% *}) test -n "$MOUNTED" }