chiark / gitweb /
version of remountresizereiserfs from chiark
authorianmdlvl <ianmdlvl>
Wed, 22 Nov 2006 19:52:40 +0000 (19:52 +0000)
committerianmdlvl <ianmdlvl>
Wed, 22 Nov 2006 19:52:40 +0000 (19:52 +0000)
debian/changelog
scripts/remountresizereiserfs

index d4409457213fdc8fcd047ada1871c36d4dbf0e22..424dbcfd8213fb2c873b94abdbccbe05ab15db80 100644 (file)
@@ -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,
index 9db7ec0efb9fc4a04d097f6543093544df177758..810a51e31af5c7edf470e7a5c24eabb93fec82b2 100755 (executable)
@@ -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