@@ -13,6 +13,22 @@ _filter_devid()
sed -e "s/\(devid\)\s\+[0-9]\+/\1 <DEVID>/g"
}
+
+# Filter btrfs fi show output to match the old format, before the more verbose
+# missing device lines were add
+_filter_btrfs_missing_line()
+{
+ awk '
+ BEGIN {should_print=0}
+# skip empty lines as btrfs progs inserts such
+ /^$/ {next}
+ !/.*\*\*\*MISSING\*\*\*/ {print $0}
+ /.*\*\*\*MISSING\*\*\*/ {should_print=1}
+# The final \n adds an extra empty line to match with the original output
+ END {if (should_print) {print "\t*** Some devices missing"} print "\n"}
+ '
+}
+
# If passed a number as first arg, filter that number of devices
# If passed a UUID as second arg, filter that exact UUID
_filter_btrfs_filesystem_show()
@@ -31,9 +47,9 @@ _filter_btrfs_filesystem_show()
fi
# the uniq collapses all device lines into 1
- _filter_uuid $UUID | _filter_scratch | _filter_scratch_pool | \
- _filter_size | _filter_btrfs_version | _filter_devid | \
- _filter_zero_size | \
+ _filter_btrfs_missing_line | _filter_uuid $UUID | _filter_scratch | \
+ _filter_scratch_pool | _filter_size | _filter_btrfs_version | \
+ _filter_devid | _filter_zero_size | \
sed -e "s/\(Total devices\) $NUMDEVS/\1 $NUM_SUBST/g" | \
uniq
}
There are pending changes to btrfs progs which make the output of 'btrfs fi show' more useful w.r.t to misisng devices. I.e instead of printing a single '*** Some devices missing' at the end it now produces one line per missing device: Total devices 2 FS bytes used 128.00KiB devid 1 size 5.00GiB used 1.26GiB path /dev/loop0 devid 2 size 0 used 0 path /dev/loop1 ***MISSING*** This obviously will break all existing tests so in anticipation for this change landing the filter is being added. Signed-off-by: Nikolay Borisov <nborisov@suse.com> --- common/filter.btrfs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-)