From: Etienne AUJAMES Date: Mon, 3 May 2021 18:19:12 +0000 (+0200) Subject: LU-14664 debugfs: print FLR values for trusted.fid X-Git-Tag: v1.46.2.wc2~3 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=933bb7f7af88fe810bfd3a931d1a87e92826c174;p=tools%2Fe2fsprogs.git LU-14664 debugfs: print FLR values for trusted.fid 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 Change-Id: I1a5b4790762afc389528dc525e169ac6c75eb8bf Reviewed-on: https://review.whamcloud.com/43519 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Li Dongyang Reviewed-by: Andreas Dilger --- diff --git a/debugfs/xattrs.c b/debugfs/xattrs.c index 3ad368e..4ebf6a0 100644 --- a/debugfs/xattrs.c +++ b/debugfs/xattrs.c @@ -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; diff --git a/lib/ext2fs/lfsck.h b/lib/ext2fs/lfsck.h index e112a5d..5f182bc 100644 --- a/lib/ext2fs/lfsck.h +++ b/lib/ext2fs/lfsck.h @@ -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 index 0000000..e601771 --- /dev/null +++ b/tests/d_trusted_fid/expect @@ -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 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 index 0000000..bb7f001 --- /dev/null +++ b/tests/d_trusted_fid/name @@ -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 index 0000000..11ed9ad --- /dev/null +++ b/tests/d_trusted_fid/script @@ -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