mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
fstests: Introduce check for explicit SHARED extent flag reporting
For fs support reflink, some of them (OK, btrfs again) doesn't split
SHARED flag for extent fiemap reporting.
For example:
0 4K 8K
/ File1: Extent 0 \
/ \
|<- On disk Extent-->|
| /
| File2 /
Extent: 0
Fs supports explicit SHARED extent reporting should report fiemap like:
File1: 2 extents
Extent 0-4K: SHARED
Extent 4-8K:
File2: 1 extents
Extent 0-4K: SHARED
Fs doesn't support explicit reporting will report fiemap like:
File1: 1 extent
Extent 0-8K: SHARED
File2: 1 extent
Extent 0-4K: SHARED
Test case like generic/372 require explicit reporting will cause
false alert on btrfs.
Add such runtime check for that requirememt.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This commit is contained in:
@@ -78,6 +78,50 @@ _require_scratch_reflink()
|
||||
_scratch_unmount
|
||||
}
|
||||
|
||||
# this test requires scratch fs to report explicit SHARED flag
|
||||
# e.g.
|
||||
# 0 4K 8K
|
||||
# / File1: Extent 0 \
|
||||
# / \
|
||||
# |<- On disk Extent-->|
|
||||
# | /
|
||||
# | File2 /
|
||||
# Extent: 0
|
||||
# Fs supports explicit SHARED extent reporting should report fiemap like:
|
||||
# File1: 2 extents
|
||||
# Extent 0-4K: SHARED
|
||||
# Extent 4-8K:
|
||||
# File2: 1 extents
|
||||
# Extent 0-4K: SHARED
|
||||
#
|
||||
# Fs doesn't support explicit reporting will report fiemap like:
|
||||
# File1: 1 extent
|
||||
# Extent 0-8K: SHARED
|
||||
# File2: 1 extent
|
||||
# Extent 0-4K: SHARED
|
||||
_require_scratch_explicit_shared_extents()
|
||||
{
|
||||
_require_scratch
|
||||
_require_fiemap
|
||||
_require_scratch_reflink
|
||||
_require_xfs_io_command "reflink"
|
||||
local nr_extents
|
||||
|
||||
_scratch_mkfs > /dev/null
|
||||
_scratch_mount
|
||||
|
||||
_pwrite_byte 0x61 0 128k $SCRATCH_MNT/file1 >/dev/null
|
||||
_reflink_range $SCRATCH_MNT/file1 0 $SCRATCH_MNT/file2 0 64k >/dev/null
|
||||
|
||||
_scratch_cycle_mount
|
||||
|
||||
nr_extents=$(_count_extents $SCRATCH_MNT/file1)
|
||||
if [ $nr_extents -eq 1 ]; then
|
||||
_notrun "Explicit SHARED flag reporting not support by filesystem type: $FSTYP"
|
||||
fi
|
||||
_scratch_unmount
|
||||
}
|
||||
|
||||
# this test requires the test fs support dedupe...
|
||||
_require_test_dedupe()
|
||||
{
|
||||
|
||||
@@ -47,6 +47,7 @@ _supported_os Linux
|
||||
_supported_fs generic
|
||||
_require_scratch_reflink
|
||||
_require_fiemap
|
||||
_require_scratch_explicit_shared_extents
|
||||
|
||||
echo "Format and mount"
|
||||
_scratch_mkfs > $seqres.full 2>&1
|
||||
|
||||
Reference in New Issue
Block a user