[PATCH] btrfs: add new filter for missing devices

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



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@xxxxxxxx>
---
 common/filter.btrfs | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/common/filter.btrfs b/common/filter.btrfs
index d4169cc69112..37b92478c939 100644
--- a/common/filter.btrfs
+++ b/common/filter.btrfs
@@ -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
 }
-- 
2.17.1




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux