[linux-lvm] [PATCH 17/35] fsadm: Handle resize if there is no file system
Lukas Czerner
lczerner at redhat.com
Wed Sep 21 16:45:36 UTC 2011
Resize the logical volume even if there is not file system on it.
Signed-off-by: Lukas Czerner <lczerner at redhat.com>
---
scripts/fsadm.sh | 28 ++++++++++++++++++++--------
1 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/scripts/fsadm.sh b/scripts/fsadm.sh
index 3b47a21..112ad62 100755
--- a/scripts/fsadm.sh
+++ b/scripts/fsadm.sh
@@ -630,10 +630,18 @@ resize() {
# only one of those variable should be set, so it is safe to do that
decode_size $extend $shrink $new_size 1
detect_fs $lvname
- detect_fs_size
+ # What if there is not file system on the volume
+ if [ -z $FSTYP ]; then
+ total=$(LANG=C $LVM lvs -o lv_size --separator ' ' --noheadings --units k $lvname 2> /dev/null)
+ total=${total%%.*}
+ else
+ detect_fs_size
+ fi
+ [ -z $total ] && error "Could not determine the size of the volume"
[ "$extend" ] && size=$(($total + $NEWSIZE))
[ "$shrink" ] && size=$(($total - $NEWSIZE))
if [ "$new_size" ]; then
+ # NEWSIZE is decoded new_size
[ $NEWSIZE -ge $total ] && extend=1 || shrink=1
size=$NEWSIZE
fi
@@ -641,15 +649,19 @@ resize() {
# Do the actual resize
if [ "$shrink" ]; then
- resize_fs $lvname $size
- # The file system might decide to alight the size a bit, so we
- # have to resize the volume to the exact size of the file system
- # so we do not corrupt it.
- detect_fs_size
- resize_lvolume $lvname $total
+ if [ "$FSTYPE" ]; then
+ resize_fs $lvname $size
+ # The file system might decide to alight the size a bit, so we
+ # have to resize the volume to the exact size of the file system
+ # so we do not corrupt it.
+ detect_fs_size
+ fi
+ resize_lvolume $lvname $size
elif [ "$extend" ]; then
resize_lvolume $lvname $size
- resize_fs $lvname
+ if [ "$FSTYPE" ]; then
+ resize_fs $lvname
+ fi
fi
}
--
1.7.4.4
More information about the linux-lvm
mailing list