Whamcloud - gitweb
LU-14664 debugfs: print FLR values for trusted.fid 19/43519/2
authorEtienne AUJAMES <eaujames@ddn.com>
Mon, 3 May 2021 18:19:12 +0000 (20:19 +0200)
committerAndreas Dilger <adilger@whamcloud.com>
Wed, 5 May 2021 01:54:40 +0000 (01:54 +0000)
Add "layout_version" and "range" values when printing a trusted.fid
xattr.
Homogenizes the debugfs output with "ll_decode_filter".

Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
Change-Id: I1a5b4790762afc389528dc525e169ac6c75eb8bf
Reviewed-on: https://review.whamcloud.com/43519
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
debugfs/xattrs.c
lib/ext2fs/lfsck.h
tests/d_trusted_fid/expect [new file with mode: 0644]
tests/d_trusted_fid/image.gz [new file with mode: 0644]
tests/d_trusted_fid/name [new file with mode: 0644]
tests/d_trusted_fid/script [new file with mode: 0644]

index 3ad368e..4ebf6a0 100644 (file)
@@ -180,8 +180,8 @@ static int print_fidstr(FILE *f, void *name, void *value, size_t value_len)
                        ext2fs_le64_to_cpu(ff->ff_seq));
 
        fprintf(f, "parent="DFID" stripe=%u", PFID(&ff->ff_parent), stripe);
-       if (value_len > sizeof(*ff)) {
-               struct filter_fid *ff_new = value;
+       if (value_len >= sizeof(struct filter_fid_210)) {
+               struct filter_fid_210 *ff_new = value;
 
                fprintf(f, " stripe_size=%u stripe_count=%u",
                        ext2fs_le32_to_cpu(ff_new->ff_stripe_size),
@@ -193,6 +193,15 @@ static int print_fidstr(FILE *f, void *name, void *value, size_t value_len)
                                ext2fs_le64_to_cpu(ff_new->ff_pfl_start),
                                ext2fs_le64_to_cpu(ff_new->ff_pfl_end));
        }
+
+       if (value_len >= sizeof(struct filter_fid)) {
+               struct filter_fid *ff_new = value;
+
+               fprintf(f, " layout_version=%u range=%u",
+                       ext2fs_le32_to_cpu(ff_new->ff_layout_version),
+                       ext2fs_le32_to_cpu(ff_new->ff_range));
+       }
+
        fprintf(f, "\n");
 
        return 0;
index e112a5d..5f182bc 100644 (file)
@@ -71,7 +71,7 @@ struct filter_fid_old {
        __u64           ff_seq;
 };
 
-struct filter_fid {
+struct filter_fid_210 {
        struct lu_fid   ff_parent;
        __u32           ff_stripe_size;
        __u32           ff_stripe_count;
@@ -80,6 +80,17 @@ struct filter_fid {
        __u32           ff_pfl_id;
 };
 
+struct filter_fid {
+       struct lu_fid   ff_parent;
+       __u32           ff_stripe_size;
+       __u32           ff_stripe_count;
+       __u64           ff_pfl_start;
+       __u64           ff_pfl_end;
+       __u32           ff_pfl_id;
+       __u32           ff_layout_version;
+       __u32           ff_range;
+} __attribute__((packed));
+
 #define LMA_OLD_SIZE 64
 #endif /* !LMA_OLD_SIZE */
 
diff --git a/tests/d_trusted_fid/expect b/tests/d_trusted_fid/expect
new file mode 100644 (file)
index 0000000..e601771
--- /dev/null
@@ -0,0 +1,4 @@
+Extended attributes:
+  fid: parent=[0x200000402:0xc:0x0] stripe=1 stripe_size=1048576 stripe_count=2 layout_version=0 range=0
+Extended attributes:
+  fid: parent=[0x200000402:0x8:0x0] stripe=1 stripe_size=1048576 stripe_count=2 component_id=65537 component_start=0 component_end=18446744073709551615 layout_version=6 range=0
diff --git a/tests/d_trusted_fid/image.gz b/tests/d_trusted_fid/image.gz
new file mode 100644 (file)
index 0000000..9447f6f
Binary files /dev/null and b/tests/d_trusted_fid/image.gz differ
diff --git a/tests/d_trusted_fid/name b/tests/d_trusted_fid/name
new file mode 100644 (file)
index 0000000..bb7f001
--- /dev/null
@@ -0,0 +1 @@
+decode and print trusted.fid xattr in debugfs
diff --git a/tests/d_trusted_fid/script b/tests/d_trusted_fid/script
new file mode 100644 (file)
index 0000000..11ed9ad
--- /dev/null
@@ -0,0 +1,27 @@
+if ! test -x $DEBUGFS_EXE; then
+       echo "$test_name: $test_description: skipped (no debugfs)"
+       return 0
+fi
+
+IMAGE=$test_dir/image.gz
+EXP=$test_dir/expect
+OUT=$test_name.log
+gunzip < $IMAGE > $TMPFILE
+
+$DEBUGFS -w -R "ea_list /plain" $TMPFILE >> $OUT.new 2>&1
+$DEBUGFS -w -R "ea_list /pfl_flr" $TMPFILE >> $OUT.new 2>&1
+sed -f $cmd_dir/filter.sed $OUT.new > $OUT
+rm -f $TMPFILE $OUT.new
+
+cmp -s $OUT $EXP
+status=$?
+
+if [ "$status" = 0 ] ; then
+       echo "$test_name: $test_description: ok"
+       touch $test_name.ok
+else
+       echo "$test_name: $test_description: failed"
+       diff $DIFF_OPTS $EXP $OUT > $test_name.failed
+fi
+
+unset IMAGE EXP OUT