mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
common/rc: improve _fstyp_has_non_default_seek_data_hole()
commit34081087adds more sanity to seek_sanity_test() to prevent a lseek() implementation regression from being ignored, and a hardcoded whitelist is maintained to distinguish whether a filesystem type only supports non-default behavior of SEEK_HOLE or not. In commit34081087, NFS is listed in this whitelist, that is, NFS is thought supporting non-default behavior only. However as far as I know, nfsv2 and nfsv3 only support default behavior of SEEK_HOLE (that is, always returning EOF) in linux. On the other hand, xfstests uses "mount -t nfs ..." to mount a NFS mount point. Normally the mount point is mounted as nfsv4, but it can be mounted mandatorily as nfsv3 if we specify "Nfsvers=3" in /etc/nfsmount.conf. In this case, a series of tests fail (including generic/285, generic/448, generic/490, etc.) with error message "Default behavior is not allowed. Aborting." So I just make some special handling for NFS in _fstyp_has_non_default_seek_data_hole(), that is, default behavior of SEEK_HOLE is acceptable for nfsv2 and nfsv3. Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com> Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
@@ -2315,9 +2315,16 @@ _fstyp_has_non_default_seek_data_hole()
|
||||
fi
|
||||
|
||||
case "$fstyp" in
|
||||
btrfs|ext4|xfs|ceph|cifs|f2fs|gfs2|nfs*|ocfs2|tmpfs)
|
||||
btrfs|ext4|xfs|ceph|cifs|f2fs|gfs2|ocfs2|tmpfs)
|
||||
return 0
|
||||
;;
|
||||
nfs*)
|
||||
# NFSv2 and NFSv3 only support default behavior of SEEK_HOLE,
|
||||
# while NFSv4 supports non-default behavior
|
||||
local nfsvers=`_df_device $TEST_DEV | $AWK_PROG '{ print $2 }'`
|
||||
[ "$nfsvers" = "nfs4" ]
|
||||
return $?
|
||||
;;
|
||||
overlay)
|
||||
if [ ! -z $OVL_BASE_FSTYP -a $OVL_BASE_FSTYP != "overlay" ]; then
|
||||
_fstyp_has_non_default_seek_data_hole $OVL_BASE_FSTYP
|
||||
|
||||
Reference in New Issue
Block a user