diff mbox series

statx07: Skip test if NFS server is never enabled

Message ID 20250211032457.7396-1-liwang@redhat.com
State Accepted
Headers show
Series statx07: Skip test if NFS server is never enabled | expand

Commit Message

Li Wang Feb. 11, 2025, 3:24 a.m. UTC
The statx07 test requires an active NFS server, as it relies on
exportfs, which reads from '/var/lib/nfs/etab'. By default, etab
file does not exist unless the NFS server is started at least once
(since new version nfs-utils-2.5.4-32.el9).

This causing the test to fail when etab is missing:

  tst_test.c:1722: TINFO: Overall timeout per run is 0h 00m 30s
  tst_buffers.c:57: TINFO: Test is using guarded buffers
  exportfs: can't open /var/lib/nfs/etab for reading
  statx07.c:136: TBROK: failed to exportfs

This patch adds a check using access("/var/lib/nfs/etab", F_OK)
before running the test. If the file does not exist, the test
is skipped (TCONF) instead of failing, preventing misleading
test failures.

Signed-off-by: Li Wang <liwang@redhat.com>
Cc: Yongcheng Yang <yoyang@redhat.com>
---
 testcases/kernel/syscalls/statx/statx07.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Petr Vorel Feb. 11, 2025, 5:20 p.m. UTC | #1
Hi Li, all,

> The statx07 test requires an active NFS server, as it relies on
> exportfs, which reads from '/var/lib/nfs/etab'. By default, etab
> file does not exist unless the NFS server is started at least once
> (since new version nfs-utils-2.5.4-32.el9).

> This causing the test to fail when etab is missing:

>   tst_test.c:1722: TINFO: Overall timeout per run is 0h 00m 30s
>   tst_buffers.c:57: TINFO: Test is using guarded buffers
>   exportfs: can't open /var/lib/nfs/etab for reading
>   statx07.c:136: TBROK: failed to exportfs

> This patch adds a check using access("/var/lib/nfs/etab", F_OK)
> before running the test. If the file does not exist, the test
> is skipped (TCONF) instead of failing, preventing misleading
> test failures.

> Signed-off-by: Li Wang <liwang@redhat.com>
> Cc: Yongcheng Yang <yoyang@redhat.com>
> ---
>  testcases/kernel/syscalls/statx/statx07.c | 3 +++
>  1 file changed, 3 insertions(+)

> diff --git a/testcases/kernel/syscalls/statx/statx07.c b/testcases/kernel/syscalls/statx/statx07.c
> index 968174330..bc8e6fd65 100644
> --- a/testcases/kernel/syscalls/statx/statx07.c
> +++ b/testcases/kernel/syscalls/statx/statx07.c
> @@ -115,6 +115,9 @@ static void setup(void)
>  	int ret;
>  	char server_path[BUFF_SIZE];

> +	if (access("/var/lib/nfs/etab", F_OK) < 0)
> +		tst_brk(TCONF, "nfs-server might not set up");

On Tumbleweed with nfs-client-2.8.1-44.2.x86_64:

# systemctl stop nfs-server.service
# ./statx07
...
tst_test.c:1904: TINFO: Tested kernel: 6.13.0-2.g0127a37-default #1 SMP PREEMPT_DYNAMIC Thu Jan 23 11:21:55 UTC 2025 (0127a37) x86_64
...
statx07.c:141: TCONF: nfs server not set up?: EOPNOTSUPP (95)

$ ls -la /var/lib/nfs/etab

The same behavior is on older systems (I checked SLE15-SP4 with 5.14 based
kernel and nfs-client-2.1.1).

There is a working detection. I wonder what is different on the system you test.
OTOH fortunately this patch would not break SLES/openSUSE (it would just not
help to detect), therefore I'm not against it.

Kind regards,
Petr

> +
>  	mode_t old_umask = umask(0);

>  	SAFE_MKDIR(SERV_PATH, DEFAULT_MODE);
Yongcheng Yang Feb. 12, 2025, 1:07 a.m. UTC | #2
Hi Petr,

On Tue, Feb 11, 2025 at 06:20:19PM +0100, Petr Vorel wrote:
> Hi Li, all,
> 
> > The statx07 test requires an active NFS server, as it relies on
> > exportfs, which reads from '/var/lib/nfs/etab'. By default, etab
> > file does not exist unless the NFS server is started at least once
> > (since new version nfs-utils-2.5.4-32.el9).
> 
> > This causing the test to fail when etab is missing:
> 
> >   tst_test.c:1722: TINFO: Overall timeout per run is 0h 00m 30s
> >   tst_buffers.c:57: TINFO: Test is using guarded buffers
> >   exportfs: can't open /var/lib/nfs/etab for reading
> >   statx07.c:136: TBROK: failed to exportfs
> 
> > This patch adds a check using access("/var/lib/nfs/etab", F_OK)
> > before running the test. If the file does not exist, the test
> > is skipped (TCONF) instead of failing, preventing misleading
> > test failures.
> 
> > Signed-off-by: Li Wang <liwang@redhat.com>
> > Cc: Yongcheng Yang <yoyang@redhat.com>
> > ---
> >  testcases/kernel/syscalls/statx/statx07.c | 3 +++
> >  1 file changed, 3 insertions(+)
> 
> > diff --git a/testcases/kernel/syscalls/statx/statx07.c b/testcases/kernel/syscalls/statx/statx07.c
> > index 968174330..bc8e6fd65 100644
> > --- a/testcases/kernel/syscalls/statx/statx07.c
> > +++ b/testcases/kernel/syscalls/statx/statx07.c
> > @@ -115,6 +115,9 @@ static void setup(void)
> >  	int ret;
> >  	char server_path[BUFF_SIZE];
> 
> > +	if (access("/var/lib/nfs/etab", F_OK) < 0)
> > +		tst_brk(TCONF, "nfs-server might not set up");
> 
> On Tumbleweed with nfs-client-2.8.1-44.2.x86_64:
> 
> # systemctl stop nfs-server.service
> # ./statx07
> ...
> tst_test.c:1904: TINFO: Tested kernel: 6.13.0-2.g0127a37-default #1 SMP PREEMPT_DYNAMIC Thu Jan 23 11:21:55 UTC 2025 (0127a37) x86_64
> ...
> statx07.c:141: TCONF: nfs server not set up?: EOPNOTSUPP (95)
> 
> $ ls -la /var/lib/nfs/etab
> 
> The same behavior is on older systems (I checked SLE15-SP4 with 5.14 based
> kernel and nfs-client-2.1.1).
> 
> There is a working detection. I wonder what is different on the system you test.
> OTOH fortunately this patch would not break SLES/openSUSE (it would just not
> help to detect), therefore I'm not against it.

This is for an update of the nfs-utils spec file, see
https://src.fedoraproject.org/rpms/nfs-utils/c/eea36e50024efbac78514f96a29f05306905118b?//branch=rawhide

Now /var/lib/nfs/etab and /var/lib/nfs/rmtab are marked as %config files
and they will not be created when nfs-utils is just installed.

Best Regards,
Yongcheng

> 
> Kind regards,
> Petr
> 
> > +
> >  	mode_t old_umask = umask(0);
> 
> >  	SAFE_MKDIR(SERV_PATH, DEFAULT_MODE);
>
Li Wang Feb. 12, 2025, 1:44 a.m. UTC | #3
On Wed, Feb 12, 2025 at 9:08 AM Yongcheng Yang <yoyang@redhat.com> wrote:

> Hi Petr,
>
> On Tue, Feb 11, 2025 at 06:20:19PM +0100, Petr Vorel wrote:
> > Hi Li, all,
> >
> > > The statx07 test requires an active NFS server, as it relies on
> > > exportfs, which reads from '/var/lib/nfs/etab'. By default, etab
> > > file does not exist unless the NFS server is started at least once
> > > (since new version nfs-utils-2.5.4-32.el9).
> >
> > > This causing the test to fail when etab is missing:
> >
> > >   tst_test.c:1722: TINFO: Overall timeout per run is 0h 00m 30s
> > >   tst_buffers.c:57: TINFO: Test is using guarded buffers
> > >   exportfs: can't open /var/lib/nfs/etab for reading
> > >   statx07.c:136: TBROK: failed to exportfs
> >
> > > This patch adds a check using access("/var/lib/nfs/etab", F_OK)
> > > before running the test. If the file does not exist, the test
> > > is skipped (TCONF) instead of failing, preventing misleading
> > > test failures.
> >
> > > Signed-off-by: Li Wang <liwang@redhat.com>
> > > Cc: Yongcheng Yang <yoyang@redhat.com>
> > > ---
> > >  testcases/kernel/syscalls/statx/statx07.c | 3 +++
> > >  1 file changed, 3 insertions(+)
> >
> > > diff --git a/testcases/kernel/syscalls/statx/statx07.c
> b/testcases/kernel/syscalls/statx/statx07.c
> > > index 968174330..bc8e6fd65 100644
> > > --- a/testcases/kernel/syscalls/statx/statx07.c
> > > +++ b/testcases/kernel/syscalls/statx/statx07.c
> > > @@ -115,6 +115,9 @@ static void setup(void)
> > >     int ret;
> > >     char server_path[BUFF_SIZE];
> >
> > > +   if (access("/var/lib/nfs/etab", F_OK) < 0)
> > > +           tst_brk(TCONF, "nfs-server might not set up");
> >
> > On Tumbleweed with nfs-client-2.8.1-44.2.x86_64:
> >
> > # systemctl stop nfs-server.service
> > # ./statx07
> > ...
> > tst_test.c:1904: TINFO: Tested kernel: 6.13.0-2.g0127a37-default #1 SMP
> PREEMPT_DYNAMIC Thu Jan 23 11:21:55 UTC 2025 (0127a37) x86_64
> > ...
> > statx07.c:141: TCONF: nfs server not set up?: EOPNOTSUPP (95)
> >
> > $ ls -la /var/lib/nfs/etab
> >
> > The same behavior is on older systems (I checked SLE15-SP4 with 5.14
> based
> > kernel and nfs-client-2.1.1).
> >
> > There is a working detection. I wonder what is different on the system
> you test.
> > OTOH fortunately this patch would not break SLES/openSUSE (it would just
> not
> > help to detect), therefore I'm not against it.
>
> This is for an update of the nfs-utils spec file, see
>
> https://src.fedoraproject.org/rpms/nfs-utils/c/eea36e50024efbac78514f96a29f05306905118b?//branch=rawhide
>
> Now /var/lib/nfs/etab and /var/lib/nfs/rmtab are marked as %config files
> and they will not be created when nfs-utils is just installed.
>

Ture, so if statx07 test on a system never starts nfs service,
which the etab file is not being created, it would be failed like that.

Once we start and then stop the nfs service the problem disappears
because etab file is created by the starting process.

That's why I sent the config file detection additionally.



>
> Best Regards,
> Yongcheng
>
> >
> > Kind regards,
> > Petr
> >
> > > +
> > >     mode_t old_umask = umask(0);
> >
> > >     SAFE_MKDIR(SERV_PATH, DEFAULT_MODE);
> >
>
>
Li Wang Feb. 14, 2025, 3:41 a.m. UTC | #4
Pushed, thanks.
diff mbox series

Patch

diff --git a/testcases/kernel/syscalls/statx/statx07.c b/testcases/kernel/syscalls/statx/statx07.c
index 968174330..bc8e6fd65 100644
--- a/testcases/kernel/syscalls/statx/statx07.c
+++ b/testcases/kernel/syscalls/statx/statx07.c
@@ -115,6 +115,9 @@  static void setup(void)
 	int ret;
 	char server_path[BUFF_SIZE];
 
+	if (access("/var/lib/nfs/etab", F_OK) < 0)
+		tst_brk(TCONF, "nfs-server might not set up");
+
 	mode_t old_umask = umask(0);
 
 	SAFE_MKDIR(SERV_PATH, DEFAULT_MODE);