Re: [PATCH V4 01/11] common/xfs: Add a helper to get an inode fork's extent count

Chandan Babu R
2021-03-05T14:42:14Z

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