Message ID | 20210118062022.15069-2-chandanrlinux@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | xfs: Tests to verify inode fork extent count overflow detection | expand |
On Mon, Jan 18, 2021 at 11:50:12AM +0530, Chandan Babu R wrote: > This commit adds the helper _scratch_get_iext_count() which returns an > inode fork's extent count. > > Signed-off-by: Chandan Babu R <chandanrlinux@gmail.com> > --- > common/xfs | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/common/xfs b/common/xfs > index 3f5c14ba..641d6195 100644 > --- a/common/xfs > +++ b/common/xfs > @@ -903,6 +903,28 @@ _scratch_get_bmx_prefix() { > return 1 > } > > +_scratch_get_iext_count() > +{ > + ino=$1 > + whichfork=$2 Function variables should be declared with 'local' so they don't bleed into the global namespace (yay bash!), e.g. local ino="$1" Also, now that Eric has landed the xfs_db 'path' command upstream, you might consider using it: _scratch_xfs_get_metadata_field "core.nextents" "path /windows/system.ini" > + > + case $whichfork in > + "attr") > + field=core.naextents > + ;; > + "data") > + field=core.nextents > + ;; > + *) > + return 1 > + esac > + > + nextents=$(_scratch_xfs_db -c "inode $ino" -c "print $field") > + nextents=${nextents##${field} = } _scratch_xfs_get_metadata_field? --D > + > + echo $nextents > +} > + > # > # Ensures that we don't pass any mount options incompatible with XFS v4 > # > -- > 2.29.2 >
On 03 Mar 2021 at 23:00, Darrick J. Wong wrote: > On Mon, Jan 18, 2021 at 11:50:12AM +0530, Chandan Babu R wrote: >> This commit adds the helper _scratch_get_iext_count() which returns an >> inode fork's extent count. >> >> Signed-off-by: Chandan Babu R <chandanrlinux@gmail.com> >> --- >> common/xfs | 22 ++++++++++++++++++++++ >> 1 file changed, 22 insertions(+) >> >> diff --git a/common/xfs b/common/xfs >> index 3f5c14ba..641d6195 100644 >> --- a/common/xfs >> +++ b/common/xfs >> @@ -903,6 +903,28 @@ _scratch_get_bmx_prefix() { >> return 1 >> } >> >> +_scratch_get_iext_count() >> +{ >> + ino=$1 >> + whichfork=$2 > > Function variables should be declared with 'local' so they don't bleed > into the global namespace (yay bash!), e.g. > > local ino="$1" Sorry, I forgot about this. I will fix this up. > > Also, now that Eric has landed the xfs_db 'path' command upstream, you > might consider using it: > > _scratch_xfs_get_metadata_field "core.nextents" "path /windows/system.ini" > In this patchset _scratch_get_iext_count() is being used to get extent counts of anonymous inodes i.e. inodes which do not have an entry in the filesytem namespace (e.g. Quota and RT bitmap/summary inodes). Hence the 'path' command won't be useful in this case. >> + >> + case $whichfork in >> + "attr") >> + field=core.naextents >> + ;; >> + "data") >> + field=core.nextents >> + ;; >> + *) >> + return 1 >> + esac >> + >> + nextents=$(_scratch_xfs_db -c "inode $ino" -c "print $field") >> + nextents=${nextents##${field} = } > > _scratch_xfs_get_metadata_field? Sure, I will make use of the above mentioned helper. -- chandan
diff --git a/common/xfs b/common/xfs index 3f5c14ba..641d6195 100644 --- a/common/xfs +++ b/common/xfs @@ -903,6 +903,28 @@ _scratch_get_bmx_prefix() { return 1 } +_scratch_get_iext_count() +{ + ino=$1 + whichfork=$2 + + case $whichfork in + "attr") + field=core.naextents + ;; + "data") + field=core.nextents + ;; + *) + return 1 + esac + + nextents=$(_scratch_xfs_db -c "inode $ino" -c "print $field") + nextents=${nextents##${field} = } + + echo $nextents +} + # # Ensures that we don't pass any mount options incompatible with XFS v4 #
This commit adds the helper _scratch_get_iext_count() which returns an inode fork's extent count. Signed-off-by: Chandan Babu R <chandanrlinux@gmail.com> --- common/xfs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)