chiark / gitweb /
@@ -1,3 +1,9 @@
authorianmdlvl <ianmdlvl>
Tue, 15 Aug 2006 14:47:35 +0000 (14:47 +0000)
committerianmdlvl <ianmdlvl>
Tue, 15 Aug 2006 14:47:35 +0000 (14:47 +0000)
+chiark-utils (4.1.8) unstable; urgency=low
+
+  * remountresizereiserfs: New script for calculating resize= parameter.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Tue, 15 Aug 2006 15:46:19 +0100
+
 chiark-utils (4.1.7) unstable; urgency=low

   * backup: new `noinc' fs line option.

debian/changelog
scripts/Makefile
scripts/remountresizereiserfs [new file with mode: 0755]

index 1ee9c3a..8db2f20 100644 (file)
@@ -1,3 +1,9 @@
+chiark-utils (4.1.8) unstable; urgency=low
+
+  * remountresizereiserfs: New script for calculating resize= parameter.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Tue, 15 Aug 2006 15:46:19 +0100
+
 chiark-utils (4.1.7) unstable; urgency=low
 
   * backup: new `noinc' fs line option.
index 59efbc9..ea1ef35 100644 (file)
@@ -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 (executable)
index 0000000..9db7ec0
--- /dev/null
@@ -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