mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Fix detection of mounted filesystem.
Update the way how fsadm detects mounted filesystem. With udev /dev/dm-XXX paths are now returned - but mount or /proc/mounts prints names in form of /dev/mapper/vg-lv - so the match was not found. Fixex RHBZ #638050. Current solution uses same trick as mount and detects vg-lv name through /sys where available - this should be reasonable safe. Instead of calling mount without parameter to get actual mount table, switch to use /proc/mounts directly.
This commit is contained in:
parent
0d9ed7ade3
commit
55b94bf393
@ -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.
|
||||
|
@ -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 </sys/block/${RVOLUME#/dev/}/dm/name SYSVOLUME 2>&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"
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user