All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] utimensat01: Test all available FS and handle FS with no attributes
@ 2020-09-29 14:46 Richard Palethorpe
  2020-09-29 18:11 ` Petr Vorel
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Palethorpe @ 2020-09-29 14:46 UTC (permalink / raw)
  To: ltp

If tmpdir is mounted on tmpfs then the test will fail with ENOTTY as
this FS apparently does not support file attributes (inode
flags). Instead we can test with all the available filesystems, some
of which may support file attributes.

Also if we now get ENOTTY then it is assumed the file system does not
support attributes (or at least the attribute we want to test) and the
test fails with TCONF. However the underlying FS could return some
other errno, but it is not clear what else to expect, if anything.

Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
---
 .../kernel/syscalls/utimensat/utimensat01.c      | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/testcases/kernel/syscalls/utimensat/utimensat01.c b/testcases/kernel/syscalls/utimensat/utimensat01.c
index fe490f441..5410c345a 100644
--- a/testcases/kernel/syscalls/utimensat/utimensat01.c
+++ b/testcases/kernel/syscalls/utimensat/utimensat01.c
@@ -21,8 +21,9 @@
 #include "time64_variants.h"
 #include "tst_timer.h"
 
-#define TEST_FILE	"test_file"
-#define TEST_DIR	"test_dir"
+#define MNTPOINT 	"mntpoint"
+#define TEST_FILE	MNTPOINT"/test_file"
+#define TEST_DIR	MNTPOINT"/test_dir"
 
 static void *bad_addr;
 
@@ -182,7 +183,12 @@ static void change_attr(struct test_case *tc, int fd, int set)
 	if (!tc->attr)
 		return;
 
-	SAFE_IOCTL(fd, FS_IOC_GETFLAGS, &attr);
+	if (ioctl(fd, FS_IOC_GETFLAGS, &attr)) {
+		if (errno == ENOTTY)
+			tst_brk(TCONF | TERRNO, "Attributes not supported by FS");
+		else
+			tst_brk(TBROK | TERRNO, "ioctl(fd, FS_IOC_GETFLAGS, &attr) failed");
+	}
 
 	if (set)
 		attr |= tc->attr;
@@ -305,5 +311,7 @@ static struct tst_test test = {
 	.test_variants = ARRAY_SIZE(variants),
 	.setup = setup,
 	.needs_root = 1,
-	.needs_tmpdir = 1,
+	.mount_device = 1,
+	.mntpoint = MNTPOINT,
+	.all_filesystems = 1,
 };
-- 
2.28.0


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

* [LTP] [PATCH] utimensat01: Test all available FS and handle FS with no attributes
  2020-09-29 14:46 [LTP] [PATCH] utimensat01: Test all available FS and handle FS with no attributes Richard Palethorpe
@ 2020-09-29 18:11 ` Petr Vorel
  2020-09-30  8:16   ` Cyril Hrubis
  0 siblings, 1 reply; 5+ messages in thread
From: Petr Vorel @ 2020-09-29 18:11 UTC (permalink / raw)
  To: ltp

Hi Richie,

LGTM.

Although this fails on NTFS and exfat and FUSE.
I don't remember which flag removes these filesystems, there was some
workaround. Cyril, Li, Jan, do you remember?

Kind regards,
Petr

tst_test.c:1248: TINFO: Timeout per run is 0h 05m 00s
utimensat01.c:298: TINFO: Testing variant: syscall with old kernel spec
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:282: TPASS:  0: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:282: TPASS:  1: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:274: TFAIL:  2: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:278: TFAIL:  3: mtime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:274: TFAIL:  4: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:282: TPASS:  5: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:282: TPASS:  6: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:282: TPASS:  7: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:274: TFAIL:  8: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:278: TFAIL:  9: mtime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:274: TFAIL: 10: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:282: TPASS: 11: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315525600: 315525600)
utimensat01.c:188: TCONF: Attributes not supported by FS: ENOTTY (25)
tst_test.c:1316: TINFO: Testing on exfat
tst_mkfs.c:89: TINFO: Formatting /dev/loop1 with exfat opts='' extra opts=''
tst_test.c:1248: TINFO: Timeout per run is 0h 05m 00s
utimensat01.c:298: TINFO: Testing variant: syscall with old kernel spec
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:282: TPASS:  0: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:282: TPASS:  1: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:274: TFAIL:  2: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:278: TFAIL:  3: mtime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:274: TFAIL:  4: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:282: TPASS:  5: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:282: TPASS:  6: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:282: TPASS:  7: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:274: TFAIL:  8: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:278: TFAIL:  9: mtime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:274: TFAIL: 10: atime shouldn't have changed but did
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:282: TPASS: 11: utimensat() passed
utimensat01.c:213: TFAIL: Failed to reset access and modification time (315532800: 315532800)
utimensat01.c:188: TCONF: Attributes not supported by FS: ENOTTY (25)
tst_test.c:1316: TINFO: Testing on ntfs
tst_mkfs.c:89: TINFO: Formatting /dev/loop1 with ntfs opts='' extra opts=''
The partition start sector was not specified for /dev/loop1 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/loop1 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/loop1 and it could not be obtained automatically.  It has been set to 0.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
safe_macros.c:755: TINFO: Trying FUSE...
tst_test.c:1248: TINFO: Timeout per run is 0h 05m 00s
utimensat01.c:298: TINFO: Testing variant: syscall with old kernel spec
utimensat01.c:282: TPASS:  0: utimensat() passed
utimensat01.c:282: TPASS:  1: utimensat() passed
utimensat01.c:282: TPASS:  2: utimensat() passed
utimensat01.c:274: TFAIL:  3: atime should have changed but didn't
utimensat01.c:278: TFAIL:  4: mtime should have changed but didn't
utimensat01.c:282: TPASS:  5: utimensat() passed
utimensat01.c:282: TPASS:  6: utimensat() passed
utimensat01.c:282: TPASS:  7: utimensat() passed
utimensat01.c:282: TPASS:  8: utimensat() passed
utimensat01.c:274: TFAIL:  9: atime should have changed but didn't
utimensat01.c:278: TFAIL: 10: mtime should have changed but didn't
utimensat01.c:282: TPASS: 11: utimensat() passed
utimensat01.c:190: TBROK: ioctl(fd, FS_IOC_GETFLAGS, &attr) failed: EINVAL (22)

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

* [LTP] [PATCH] utimensat01: Test all available FS and handle FS with no attributes
  2020-09-29 18:11 ` Petr Vorel
@ 2020-09-30  8:16   ` Cyril Hrubis
  2020-09-30  8:21     ` Petr Vorel
  0 siblings, 1 reply; 5+ messages in thread
From: Cyril Hrubis @ 2020-09-30  8:16 UTC (permalink / raw)
  To: ltp

Hi!
> Although this fails on NTFS and exfat and FUSE.
> I don't remember which flag removes these filesystems, there was some
> workaround. Cyril, Li, Jan, do you remember?

That's the:

.dev_fs_flags = TST_FS_SKIP_FUSE,

Which should fix the failures here. Moreover I do wonder if this is a
real bug in the fuse implementation or something that have been left out
intentionally.

-- 
Cyril Hrubis
chrubis@suse.cz

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

* [LTP] [PATCH] utimensat01: Test all available FS and handle FS with no attributes
  2020-09-30  8:16   ` Cyril Hrubis
@ 2020-09-30  8:21     ` Petr Vorel
  2020-09-30 11:24       ` Richard Palethorpe
  0 siblings, 1 reply; 5+ messages in thread
From: Petr Vorel @ 2020-09-30  8:21 UTC (permalink / raw)
  To: ltp

Hi Cyril,

> Hi!
> > Although this fails on NTFS and exfat and FUSE.
> > I don't remember which flag removes these filesystems, there was some
> > workaround. Cyril, Li, Jan, do you remember?

> That's the:

> .dev_fs_flags = TST_FS_SKIP_FUSE,

> Which should fix the failures here. Moreover I do wonder if this is a
> real bug in the fuse implementation or something that have been left out
> intentionally.
Thanks for info. Also vfat needs to be filtered out (if it's not a bug, which
needs to be implemented).
If we decide to filter out it, we'd need one more flag (something like
TST_FS_SKIP_MICROSOFT, which would filter out vfat, ntfs and exfat).

Kind regards,
Petr

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

* [LTP] [PATCH] utimensat01: Test all available FS and handle FS with no attributes
  2020-09-30  8:21     ` Petr Vorel
@ 2020-09-30 11:24       ` Richard Palethorpe
  0 siblings, 0 replies; 5+ messages in thread
From: Richard Palethorpe @ 2020-09-30 11:24 UTC (permalink / raw)
  To: ltp

Hello,

Petr Vorel <pvorel@suse.cz> writes:

> Hi Cyril,
>
>> Hi!
>> > Although this fails on NTFS and exfat and FUSE.
>> > I don't remember which flag removes these filesystems, there was some
>> > workaround. Cyril, Li, Jan, do you remember?
>
>> That's the:
>
>> .dev_fs_flags = TST_FS_SKIP_FUSE,
>
>> Which should fix the failures here. Moreover I do wonder if this is a
>> real bug in the fuse implementation or something that have been left out
>> intentionally.
> Thanks for info. Also vfat needs to be filtered out (if it's not a bug, which
> needs to be implemented).
> If we decide to filter out it, we'd need one more flag (something like
> TST_FS_SKIP_MICROSOFT, which would filter out vfat, ntfs and exfat).

I sent in a patch which just uses ext4 as a temp solution. We should
probably specify the filesystems we expect this test to work on and
accept failure for others. This seems like a complex issue as it can be
different for every FS.

>
> Kind regards,
> Petr


-- 
Thank you,
Richard.

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

end of thread, other threads:[~2020-09-30 11:24 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-29 14:46 [LTP] [PATCH] utimensat01: Test all available FS and handle FS with no attributes Richard Palethorpe
2020-09-29 18:11 ` Petr Vorel
2020-09-30  8:16   ` Cyril Hrubis
2020-09-30  8:21     ` Petr Vorel
2020-09-30 11:24       ` Richard Palethorpe

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.