It fail on f2fs: [+] Default length with start set (should succeed) [+] Length beyond the end of fs (should succeed) [+] Length beyond the end of fs with start set (should succeed) +After the full fs discard 0 bytes were discarded however the file system is 12882804736 bytes long. +It seems that fs logic handling len argument overflows The root cause is f2fs can tag a special flag TRIMMED_FLAG to indicate the whole filesystem is trimmed, so after mkfs/fstrim(), following fstrim() won't trim any block. Suggested-by: Chao Yu <yuchao0@xxxxxxxxxx> Signed-off-by: Sun Ke <sunke32@xxxxxxxxxx> --- tests/generic/260 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/generic/260 b/tests/generic/260 index 8d6d6c79a5c1..b15b4e570bd1 100755 --- a/tests/generic/260 +++ b/tests/generic/260 @@ -95,7 +95,10 @@ fi # It is because btrfs does not have not-yet-used parts of the device # mapped and since we got here right after the mkfs, there is not # enough free extents in the root tree. -if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ]; then +# F2fs is also special. F2fs can tag a special flag TRIMMED_FLAG to +# indicate the whole filesystem is trimmed, so after mkfs/fstrim(), +# following fstrim() won't trim any block. +if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ] && [ $FSTYP != "f2fs" ]; then status=1 echo "After the full fs discard $bytes bytes were discarded"\ "however the file system is $(_math "$fssize*1024") bytes long." @@ -154,8 +157,11 @@ _scratch_mount # It is because btrfs does not have not-yet-used parts of the device # mapped and since we got here right after the mkfs, there is not # enough free extents in the root tree. +# F2fs is also special. F2fs can tag a special flag TRIMMED_FLAG to +# indicate the whole filesystem is trimmed, so after mkfs/fstrim(), +# following fstrim() won't trim any block. bytes=$($FSTRIM_PROG -v -l$len $SCRATCH_MNT | _filter_fstrim) -if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ]; then +if [ $bytes -le $(_math "$fssize*512") ] && [ $FSTYP != "btrfs" ] && [ $FSTYP != "f2fs" ]; then status=1 echo "It seems that fs logic handling len argument overflows" fi -- 2.25.4