From: ianmdlvl Date: Wed, 22 Nov 2006 19:52:40 +0000 (+0000) Subject: version of remountresizereiserfs from chiark X-Git-Tag: debian_version_4_1_11~1 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=1f82b533574de79be2ffc793e55449b54566e6a2 version of remountresizereiserfs from chiark --- diff --git a/debian/changelog b/debian/changelog index d440945..424dbcf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +chiark-utils (4.1.11) unstable; urgency=low + + * remountresizereiserfs version copied from chiark. Works with LVM1 + on 2.6.x, but not with 2.4.x due to stupid stupid LVM bug where + sizes are reported in 512-byte kilobytes but only sometimes. Also + fixed to cope better with dm-based LVM volumes. + + -- + chiark-utils (4.1.10) unstable; urgency=low * New script `hexterm', `terminal emulator' for binary data, diff --git a/scripts/remountresizereiserfs b/scripts/remountresizereiserfs index 9db7ec0..810a51e 100755 --- a/scripts/remountresizereiserfs +++ b/scripts/remountresizereiserfs @@ -20,27 +20,38 @@ case "$dfl2" in *) fail "could not parse df output" ;; esac -lvi=$(lvdisplay -c $dev) +dm=/dev/mapper +case "$dev" in +$dm/*/*) + fail "too many path segments in mapper device \`$dev'" + ;; +$dm/*) + lv=${dev#$dm/} + lv=${lv//--//} + case "$lv" in + *-*) ;; + *) fail "no single hyphen in mapper device \`$lv'";; + esac + vg=${lv%%-*} + lv=${lv#*-} + vg=${vg//\//-} + lv=${lv//\//-} + devu=/dev/$vg/$lv + ;; +*) + devu=$dev +esac + +lvi=$(lvdisplay -c $devu) 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 )) +vgsz_kb=${lvi#*:*:*:*:*:*:} +vgsz_kb=${vgsz_kb%%:*} 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 )) +vgsz_blk=$(dc -e "$vgsz_kb 1024* $blksz_by /p") -echo mount -o remount,resize=$vgsz_blk $dev $mp +echo mount -o remount,resize=$vgsz_blk $mp