X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=blobdiff_plain;f=scripts%2Fremountresizereiserfs;h=810a51e31af5c7edf470e7a5c24eabb93fec82b2;hp=9db7ec0efb9fc4a04d097f6543093544df177758;hb=9d528ea86b055d822e4c68ea4b0d5b59c46f1529;hpb=2a0d47d77f55c82e4531b72f87ea1b6827077160 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