mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
common: extract rt extent size for _get_file_block_size
_get_file_block_size is intended to return the size (in bytes) of the fundamental allocation unit for a file. This is required for remapping operations like fallocate and reflink, which can only operate on allocation units. Since the XFS realtime volume can be configure for allocation units larger than 1 fs block, we need to factor that in here. Note that ext* with bigalloc does not allocations to be aligned to the cluster size, so no update is needed there. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
committed by
Eryu Guan
parent
ac23422a8c
commit
f02ccfb24b
@@ -3991,11 +3991,18 @@ _get_file_block_size()
|
||||
echo "Missing mount point argument for _get_file_block_size"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$FSTYP" = "ocfs2" ]; then
|
||||
|
||||
case "$FSTYP" in
|
||||
"ocfs2")
|
||||
stat -c '%o' $1
|
||||
else
|
||||
;;
|
||||
"xfs")
|
||||
_xfs_get_file_block_size $1
|
||||
;;
|
||||
*)
|
||||
_get_block_size $1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Get the minimum block size of an fs.
|
||||
|
||||
+20
@@ -174,6 +174,26 @@ _scratch_mkfs_xfs()
|
||||
return $mkfs_status
|
||||
}
|
||||
|
||||
# Get the size of an allocation unit of a file. Normally this is just the
|
||||
# block size of the file, but for realtime files, this is the realtime extent
|
||||
# size.
|
||||
_xfs_get_file_block_size()
|
||||
{
|
||||
local path="$1"
|
||||
|
||||
if ! ($XFS_IO_PROG -c "stat -v" "$path" 2>&1 | egrep -q '(rt-inherit|realtime)'); then
|
||||
_get_block_size "$path"
|
||||
return
|
||||
fi
|
||||
|
||||
# Otherwise, call xfs_info until we find a mount point or the root.
|
||||
path="$(readlink -m "$path")"
|
||||
while ! $XFS_INFO_PROG "$path" &>/dev/null && [ "$path" != "/" ]; do
|
||||
path="$(dirname "$path")"
|
||||
done
|
||||
$XFS_INFO_PROG "$path" | grep realtime | sed -e 's/^.*extsz=\([0-9]*\).*$/\1/g'
|
||||
}
|
||||
|
||||
# xfs_check script is planned to be deprecated. But, we want to
|
||||
# be able to invoke "xfs_check" behavior in xfstests in order to
|
||||
# maintain the current verification levels.
|
||||
|
||||
Reference in New Issue
Block a user