From 5da330114348948f3f3fe642a96e4d2b3eaa6cdb Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Wed, 13 May 2020 20:26:03 -0400 Subject: new executable: btrfs-truncate --- src/btrfs-utils/btrfs-truncate | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 src/btrfs-utils/btrfs-truncate diff --git a/src/btrfs-utils/btrfs-truncate b/src/btrfs-utils/btrfs-truncate new file mode 100755 index 0000000..0075844 --- /dev/null +++ b/src/btrfs-utils/btrfs-truncate @@ -0,0 +1,32 @@ +#!/bin/sh +[ "$(id -u)" = 0 ] || exec sudo "$0" "$@" + +btrfs_truncate() +{ + btrfs filesystem show --raw "$1" | + while read devid d size s used u path p + do + [ "$devid $size $used $path" = 'devid size used path' ] || continue + + case "$p" in + /dev/loop*) dev=$(losetup -n -l -O back-file "$p") ;; + *) dev=$p ;; + esac + + if [ -f "$dev" ] + then + [ "$s" = "$(stat -c %s "$dev")" ] || truncate -s "$s" "$dev" || break + fi + done +} + +if [ $# = 0 ] +then + echo 'Usage: $0 [...]' >&2 + exit 1 +fi + +for fs +do + btrfs_truncate "$fs" || exit +done -- cgit v1.2.3