public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH] Fix ioctl_ficlone on XFS without reflink support
@ 2024-09-24 12:53 Andrea Cervesato
  2024-09-26 11:57 ` Cyril Hrubis
  0 siblings, 1 reply; 10+ messages in thread
From: Andrea Cervesato @ 2024-09-24 12:53 UTC (permalink / raw)
  To: ltp

From: Andrea Cervesato <andrea.cervesato@suse.com>

reflink has been introduced in XFS by kernel 4.9 and mkfs.xfs enabled
by default in 5.1.0. Check the mkfs.xfs version in order to make sure
that mkfs.xfs supports reflink and verify kernel is at least 4.9 when
we run the ioctl_ficlone tests on XFS.

Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
ioctl_ficlone tests are failing in certain circumstances. In particular,
when kernel version is lower than 4.9 and mkfs.xfs is not 5.1.0
---
 testcases/kernel/syscalls/ioctl/ioctl_ficlone01.c      | 9 ++++++++-
 testcases/kernel/syscalls/ioctl/ioctl_ficlone03.c      | 5 ++++-
 testcases/kernel/syscalls/ioctl/ioctl_ficlonerange01.c | 5 ++++-
 testcases/kernel/syscalls/ioctl/ioctl_ficlonerange02.c | 5 ++++-
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ficlone01.c b/testcases/kernel/syscalls/ioctl/ioctl_ficlone01.c
index f5407f789..d0faf3327 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ficlone01.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ficlone01.c
@@ -95,6 +95,12 @@ static void run(void)
 	SAFE_UNLINK(DSTPATH);
 }
 
+static void setup(void)
+{
+	if (!strcmp(tst_device->fs_type, "xfs") && tst_kvercmp(4, 9, 0) < 0)
+		tst_brk(TCONF, "XFS doesn't support reflink");
+}
+
 static void cleanup(void)
 {
 	if (src_fd != -1)
@@ -106,6 +112,7 @@ static void cleanup(void)
 
 static struct tst_test test = {
 	.test_all = run,
+	.setup = setup,
 	.cleanup = cleanup,
 	.min_kver = "4.5",
 	.needs_root = 1,
@@ -115,7 +122,7 @@ static struct tst_test test = {
 		{.type = "bcachefs"},
 		{.type = "btrfs"},
 		{
-			.type = "xfs",
+			.type = "xfs >= 5.1.0",
 			.mkfs_opts = (const char *const []) {"-m", "reflink=1", NULL},
 		},
 		{}
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ficlone03.c b/testcases/kernel/syscalls/ioctl/ioctl_ficlone03.c
index 3cc386c59..8e32ba039 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ficlone03.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ficlone03.c
@@ -62,6 +62,9 @@ static void setup(void)
 	int attr;
 	struct stat sb;
 
+	if (!strcmp(tst_device->fs_type, "xfs") && tst_kvercmp(4, 9, 0) < 0)
+		tst_brk(TCONF, "XFS doesn't support reflink");
+
 	rw_file = SAFE_OPEN("ok_only", O_CREAT | O_RDWR, 0640);
 	ro_file = SAFE_OPEN("rd_only", O_CREAT | O_RDONLY, 0640);
 	wo_file = SAFE_OPEN("rw_only", O_CREAT | O_WRONLY, 0640);
@@ -113,7 +116,7 @@ static struct tst_test test = {
 		{.type = "bcachefs"},
 		{.type = "btrfs"},
 		{
-			.type = "xfs",
+			.type = "xfs >= 5.1.0",
 			.mkfs_opts = (const char *const []) {"-m", "reflink=1", NULL},
 		},
 		{}
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange01.c b/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange01.c
index e352c513b..4128285b1 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange01.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange01.c
@@ -108,6 +108,9 @@ static void setup(void)
 {
 	struct stat sb;
 
+	if (!strcmp(tst_device->fs_type, "xfs") && tst_kvercmp(4, 9, 0) < 0)
+		tst_brk(TCONF, "XFS doesn't support reflink");
+
 	SAFE_STAT(MNTPOINT, &sb);
 
 	filesize = sb.st_blksize * CHUNKS;
@@ -148,7 +151,7 @@ static struct tst_test test = {
 		{.type = "bcachefs"},
 		{.type = "btrfs"},
 		{
-			.type = "xfs",
+			.type = "xfs >= 5.1.0",
 			.mkfs_opts = (const char *const []) {"-m", "reflink=1", NULL},
 		},
 		{}
diff --git a/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange02.c b/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange02.c
index ad36df162..d1f8d60c0 100644
--- a/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange02.c
+++ b/testcases/kernel/syscalls/ioctl/ioctl_ficlonerange02.c
@@ -60,6 +60,9 @@ static void setup(void)
 {
 	struct stat sb;
 
+	if (!strcmp(tst_device->fs_type, "xfs") && tst_kvercmp(4, 9, 0) < 0)
+		tst_brk(TCONF, "XFS doesn't support reflink");
+
 	SAFE_STAT(MNTPOINT, &sb);
 
 	alignment = sb.st_blksize;
@@ -85,7 +88,7 @@ static struct tst_test test = {
 		{.type = "bcachefs"},
 		{.type = "btrfs"},
 		{
-			.type = "xfs",
+			.type = "xfs >= 5.1.0",
 			.mkfs_opts = (const char *const []) {"-m", "reflink=1", NULL},
 		},
 		{}

---
base-commit: 968e6245d93bc91723e72086a71e6bc50f495d0b
change-id: 20240924-ioctl_ficlone01_fix-88a17ef58543

Best regards,
-- 
Andrea Cervesato <andrea.cervesato@suse.com>


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-10-01 11:41 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-24 12:53 [LTP] [PATCH] Fix ioctl_ficlone on XFS without reflink support Andrea Cervesato
2024-09-26 11:57 ` Cyril Hrubis
2024-09-26 14:58   ` Andrea Cervesato via ltp
2024-09-26 15:40     ` Cyril Hrubis
2024-09-27  7:44       ` Andrea Cervesato via ltp
2024-09-27  7:49         ` Cyril Hrubis
2024-09-27 14:41   ` Martin Doucha
2024-09-30  8:48     ` Cyril Hrubis
2024-09-30  8:53       ` Cyril Hrubis
2024-10-01 11:39     ` Cyril Hrubis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox