diff options
-rwxr-xr-x | scripts/diff-dump-tree.sh | 13 | ||||
-rwxr-xr-x | scripts/main.sh | 58 | ||||
-rwxr-xr-x | scripts/mount.sh | 18 |
3 files changed, 56 insertions, 33 deletions
diff --git a/scripts/diff-dump-tree.sh b/scripts/diff-dump-tree.sh index 3d560d9..c3de337 100755 --- a/scripts/diff-dump-tree.sh +++ b/scripts/diff-dump-tree.sh @@ -1,4 +1,8 @@ #!/bin/bash +readonly image=../scratch/new.img + +###################################################################### + set -e ( cd ../btrfs-progs @@ -12,14 +16,19 @@ set -e fi make ) + +make build + +###################################################################### + diff -u \ - <(../btrfs-progs/btrfs inspect dump-tree --noscan --csum-items ../scratch/new.img | + <(../btrfs-progs/btrfs inspect dump-tree --noscan --csum-items "$image" | sed -e 's/ UNKNOWN.0 / UNTYPED /g' \ -e 's/\b18446744073709551615\b/-1/g' \ -e 's/INODE_REF 6)/INODE_REF ROOT_TREE_DIR)/g' \ -e 's/ROOT_BACKREF 5)/ROOT_BACKREF FS_TREE)/g' \ ) \ - <(go run ./cmd/btrfs-rec/ inspect dump-trees --pv=../scratch/new.img | + <(./bin/btrfs-rec inspect dump-trees --pv="$image" | sed -E \ -e 's/([0-9]),/\1/g' \ ) diff --git a/scripts/main.sh b/scripts/main.sh index d89f387..73eada7 100755 --- a/scripts/main.sh +++ b/scripts/main.sh @@ -1,30 +1,38 @@ #!/bin/bash +readonly image=../scratch/dump-zero.img + +###################################################################### + set -e -b=../scratch/dump-zero -gen() ( + +run-btrfs-rec() { local tgt=$1; shift local log=${tgt%.*}.log if test -s "$tgt"; then return fi - { set -x; command time --verbose "$@"; } \ - >"$tgt" \ - 2> >(tee >&2 "$log") -) + { + set -x; + command time --verbose \ + ./bin/btrfs-rec \ + --pv="$image" \ + "$@" + } >"$tgt" 2> >(tee >&2 "$log") +} set -x -CGO_ENABLED=0 go build -trimpath ./cmd/btrfs-rec -mkdir -p "$b.gen" +make build +gendir="${image%.img}.gen" +mkdir -p "$gendir" +export GOMEMLIMIT="$(awk '/^MemTotal:/{ print $2 "KiB" }' </proc/meminfo)" { set +x; } &>/dev/null -export GOMEMLIMIT="$(awk '/^MemTotal:/{ print $2 "KiB" }' </proc/meminfo)" +###################################################################### -gen $b.gen/0.scandevices.json \ - ./btrfs-rec --pv=$b.img \ +run-btrfs-rec $gendir/0.scandevices.json \ inspect scandevices -gen $b.gen/1.mappings.json \ - ./btrfs-rec --pv=$b.img \ - inspect rebuild-mappings $b.gen/0.scandevices.json +run-btrfs-rec $gendir/1.mappings.json \ + inspect rebuild-mappings $gendir/0.scandevices.json # 1.mappings.log says: # @@ -44,19 +52,19 @@ gen $b.gen/1.mappings.json \ # # And then run that through `rebuild-mappings` again to fill in the # flags and normalize it. -gen $b.gen/2.mappings.json \ - ./btrfs-rec --pv=$b.img --mappings=<(sed <$b.gen/1.mappings.json \ +run-btrfs-rec $gendir/2.mappings.json \ + --mappings=<(sed <$gendir/1.mappings.json \ -e '2a{"LAddr":5242880,"PAddr":{"Dev":1,"Addr":5242880},"Size":1},' \ -e '2a{"LAddr":13631488,"PAddr":{"Dev":1,"Addr":13631488},"Size":1},') \ - inspect rebuild-mappings $b.gen/0.scandevices.json + inspect rebuild-mappings $gendir/0.scandevices.json -gen $b.gen/3.nodes.json \ - ./btrfs-rec --pv=$b.img --mappings=$b.gen/2.mappings.json \ - inspect rebuild-nodes $b.gen/0.scandevices.json +run-btrfs-rec $gendir/3.nodes.json \ + --mappings=$gendir/2.mappings.json \ + inspect rebuild-nodes $gendir/0.scandevices.json -# gen $b.gen/4.ls-files.txt \ -# ./btrfs-rec --pv=$b.img --mappings=$b.gen/2.mappings.json \ +# run-btrfs-rec $gendir/4.ls-files.txt \ +# --mappings=$gendir/2.mappings.json \ # inspect ls-files -# gen $b.gen/4.ls-trees.txt \ -# ./btrfs-rec --pv=$b.img --mappings=$b.gen/2.mappings.json \ -# inspect ls-trees --scandevices=$b.gen/0.scandevices.json +# run-btrfs-rec $gendir/4.ls-trees.txt \ +# --mappings=$gendir/2.mappings.json \ +# inspect ls-trees --scandevices=$gendir/0.scandevices.json diff --git a/scripts/mount.sh b/scripts/mount.sh index f75f403..bf84163 100755 --- a/scripts/mount.sh +++ b/scripts/mount.sh @@ -1,14 +1,20 @@ #!/bin/bash +readonly image=../scratch/dump-zero.img + +###################################################################### + set -e set -x -go build ./cmd/btrfs-rec +make build -mkdir -p ../scratch/dump-zero.mnt +gendir="${image%.img}.gen" +mountpoint="${image%.img}.mnt" +mkdir -p "$mountpoint" -sudo ./btrfs-rec \ - --pv ../scratch/dump-zero.img \ - --mappings=../scratch/dump-zero.gen/2.mappings.json \ +sudo ./bin/btrfs-rec \ + --pv="$image" + --mappings="$gendir/2.mappings.json" \ inspect mount \ --skip-filesums \ - ../scratch/dump-zero.mnt + "$mountpoint" |