From 2a0d47d77f55c82e4531b72f87ea1b6827077160 Mon Sep 17 00:00:00 2001 From: ianmdlvl Date: Tue, 15 Aug 2006 14:47:35 +0000 Subject: [PATCH 1/1] @@ -1,3 +1,9 @@ +chiark-utils (4.1.8) unstable; urgency=low + + * remountresizereiserfs: New script for calculating resize= parameter. + + -- Ian Jackson Tue, 15 Aug 2006 15:46:19 +0100 + chiark-utils (4.1.7) unstable; urgency=low * backup: new `noinc' fs line option. --- debian/changelog | 6 +++++ scripts/Makefile | 2 +- scripts/remountresizereiserfs | 46 +++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100755 scripts/remountresizereiserfs diff --git a/debian/changelog b/debian/changelog index 1ee9c3a..8db2f20 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +chiark-utils (4.1.8) unstable; urgency=low + + * remountresizereiserfs: New script for calculating resize= parameter. + + -- Ian Jackson Tue, 15 Aug 2006 15:46:19 +0100 + chiark-utils (4.1.7) unstable; urgency=low * backup: new `noinc' fs line option. diff --git a/scripts/Makefile b/scripts/Makefile index 59efbc9..ea1ef35 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -23,7 +23,7 @@ include ../settings.make SCRIPTS= palm-datebook-reminders random-word expire-iso8601 \ genspic2gnuplot gnucap2genspic ngspice2genspic \ - cvs-repomove cvs-adjustroot + cvs-repomove cvs-adjustroot remountresizereiserfs MANPAGES1= palm-datebook-reminders CSCRIPTS= named-conf diff --git a/scripts/remountresizereiserfs b/scripts/remountresizereiserfs new file mode 100755 index 0000000..9db7ec0 --- /dev/null +++ b/scripts/remountresizereiserfs @@ -0,0 +1,46 @@ +#!/bin/bash +# usage: +# remountresizereiserfs /mountpoint + +set -e +fail () { echo >&2 "$*"; exit 1; } +case "$#.$1" in 1.[^-]*);; *) fail 'bad usage';; esac + +mp=$1 + +df=`df -P $mp` +dfl2=`printf "%s" "$df" | sed 1d` + +case "$dfl2" in +/dev/*" "[0-9]*" "[0-9]*" "[0-9]*" "[0-9]*"% "/*) + dev=${dfl2%% *} + mp2=${dfl2##* } + if [ "x$mp2" != "x$mp" ]; then fail "mountpoint is $mp2 not $mp"; fi + ;; +*) fail "could not parse df output" ;; +esac + +lvi=$(lvdisplay -c $dev) +vg=${lvi#*:} +vg=${vg%%:*} +vgsz_le=${lvi#*:*:*:*:*:*:*:*:} +vgsz_le=${vgsz_le%%:*} + +vgi=$(vgdisplay -c $vg) +pesz_blk=${vgi#*:*:*:*:*:*:*:*:*:*:*:*:} +pesz_blk=${pesz_blk%%:*} + +pesz_by=$(( $pesz_blk * 512 )) + +dbrfs=$(debugreiserfs $dev) +blksz_by=$(printf "%s" "$dbrfs" | egrep '^Blocksize: ' || fail "blocksize?") +blksz_by=${blksz_by#*: } + +if [ $(( $pesz_by % $blksz_by )) != 0 ]; then + fail "extent size ${pesz}by does not divide block size ${blksz_by}by" +fi + +pesz_blk=$(( $pesz_by / $blksz_by )) +vgsz_blk=$(( $vgsz_le * $pesz_blk )) + +echo mount -o remount,resize=$vgsz_blk $dev $mp -- 2.30.2