* [LTP] [PATCH] flock: Add negative tests for flock
@ 2024-04-16 8:02 Yang Xu via ltp
2024-05-30 14:13 ` Avinesh Kumar
2024-05-30 14:40 ` [LTP] [PATCH v2] flock: Add test for verifying EINTR errno Avinesh Kumar
0 siblings, 2 replies; 13+ messages in thread
From: Yang Xu via ltp @ 2024-04-16 8:02 UTC (permalink / raw)
To: ltp
Add negative cases for flock(), when errno is EINTR or EWOULDBLOCK
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/flock/.gitignore | 1 +
testcases/kernel/syscalls/flock/flock07.c | 98 ++++++++++++++++++++++
3 files changed, 100 insertions(+)
create mode 100644 testcases/kernel/syscalls/flock/flock07.c
diff --git a/runtest/syscalls b/runtest/syscalls
index 9578e991a..de4f5a633 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -375,6 +375,7 @@ flock02 flock02
flock03 flock03
flock04 flock04
flock06 flock06
+flock07 flock07
fmtmsg01 fmtmsg01
diff --git a/testcases/kernel/syscalls/flock/.gitignore b/testcases/kernel/syscalls/flock/.gitignore
index c8cb0fc54..9bac582e1 100644
--- a/testcases/kernel/syscalls/flock/.gitignore
+++ b/testcases/kernel/syscalls/flock/.gitignore
@@ -3,3 +3,4 @@
/flock03
/flock04
/flock06
+/flock07
diff --git a/testcases/kernel/syscalls/flock/flock07.c b/testcases/kernel/syscalls/flock/flock07.c
new file mode 100644
index 000000000..6fd650186
--- /dev/null
+++ b/testcases/kernel/syscalls/flock/flock07.c
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
+ * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
+ */
+
+/*\
+ * [Description]
+ *
+ * Verify that flock(2) fails with
+ *
+ * - EINTR when waiting lock, call is interrupted by signal
+ * - EWOULDBLOCK when file is locked and LOCK_NB flag is selected
+ */
+
+#include <signal.h>
+#include <sys/file.h>
+#include <sys/wait.h>
+#include "tst_test.h"
+
+#define TEST_INTR "test_intr"
+#define TEST_EWOULDBLOCK "test_ewouldblock"
+
+static struct test_case_t {
+ char *filename;
+ int expected_errno;
+ int child;
+ char *desc;
+} tcases[] = {
+ {TEST_INTR, EINTR, 1,
+ "while waiting lock, call is interrupted by signal"},
+ {TEST_EWOULDBLOCK, EWOULDBLOCK, 0,
+ "file is locked and LOCK_NB flag is selected"},
+};
+
+static void setup(void)
+{
+ SAFE_TOUCH(TEST_INTR, 0777, NULL);
+ SAFE_TOUCH(TEST_EWOULDBLOCK, 0777, NULL);
+}
+
+static void handler(int sig)
+{
+ switch (sig) {
+ case SIGUSR1:
+ tst_res(TINFO, "%s", "Got SIGUSR1");
+ break;
+ default:
+ tst_res(TINFO, "%s", "Got other signal");
+ break;
+ }
+}
+
+static void child_do(int fd, struct test_case_t *tc)
+{
+ struct sigaction sa;
+
+ sa.sa_handler = handler;
+ SAFE_SIGEMPTYSET(&sa.sa_mask);
+ SAFE_SIGACTION(SIGUSR1, &sa, NULL);
+
+ TST_EXP_FAIL(flock(fd, LOCK_EX), tc->expected_errno, "%s", tc->desc);
+}
+
+static void verify_flock(unsigned int i)
+{
+ struct test_case_t *tc = &tcases[i];
+ pid_t pid;
+ int fd1 = SAFE_OPEN(tc->filename, O_RDWR);
+ int fd2 = SAFE_OPEN(tc->filename, O_RDWR);
+
+ if (tc->child) {
+ flock(fd1, LOCK_EX);
+ pid = SAFE_FORK();
+ if (!pid) {
+ child_do(fd2, tc);
+ exit(0);
+ }
+ sleep(1);
+ SAFE_KILL(pid, SIGUSR1);
+ SAFE_WAITPID(pid, NULL, 0);
+ } else {
+ flock(fd1, LOCK_EX);
+ TST_EXP_FAIL(flock(fd2, LOCK_EX | LOCK_NB), tc->expected_errno,
+ "%s", tc->desc);
+ }
+ SAFE_CLOSE(fd1);
+ SAFE_CLOSE(fd2);
+}
+
+static struct tst_test test = {
+ .setup = setup,
+ .tcnt = ARRAY_SIZE(tcases),
+ .test = verify_flock,
+ .needs_tmpdir = 1,
+ .needs_root = 1,
+ .forks_child = 1,
+};
--
2.39.3
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [LTP] [PATCH] flock: Add negative tests for flock
2024-04-16 8:02 [LTP] [PATCH] flock: Add negative tests for flock Yang Xu via ltp
@ 2024-05-30 14:13 ` Avinesh Kumar
2024-10-21 14:28 ` Petr Vorel
2024-05-30 14:40 ` [LTP] [PATCH v2] flock: Add test for verifying EINTR errno Avinesh Kumar
1 sibling, 1 reply; 13+ messages in thread
From: Avinesh Kumar @ 2024-05-30 14:13 UTC (permalink / raw)
To: Yang Xu; +Cc: ltp
Hi Yang Xu,
When I am testing this by running multiple times, EINTR test is getting
timed out randomly.
tst_test.c:1625: TINFO: Timeout per run is 0h 00m 30s
flock07.c:46: TINFO: Got SIGUSR1
Test timeouted, sending SIGKILL!
tst_test.c:1673: TINFO: Killed the leftover descendant processes
tst_test.c:1679: TINFO: If you are running on slow machine, try exporting LTP_TIMEOUT_MUL > 1
tst_test.c:1681: TBROK: Test killed! (timeout?)
In these cases I see that there are two locks (held or waiting) by the process
even after SIGUSER1 signal is delivered, so somehow signal is being ignored.
flock07 16520 FLOCK WRITE* 0 0 0 /tmp...
flock07 16519 FLOCK WRITE 0 0 0 /tmp...
And I feel we should add EWOULDBLOCK errno test to flock02.c file,
and keep only EINTR testcase here.
On Tuesday, April 16, 2024 10:02:37 AM GMT+2 Yang Xu via ltp wrote:
> Add negative cases for flock(), when errno is EINTR or EWOULDBLOCK
>
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
> runtest/syscalls | 1 +
> testcases/kernel/syscalls/flock/.gitignore | 1 +
> testcases/kernel/syscalls/flock/flock07.c | 98 ++++++++++++++++++++++
> 3 files changed, 100 insertions(+)
> create mode 100644 testcases/kernel/syscalls/flock/flock07.c
>
> diff --git a/runtest/syscalls b/runtest/syscalls
> index 9578e991a..de4f5a633 100644
> --- a/runtest/syscalls
> +++ b/runtest/syscalls
> @@ -375,6 +375,7 @@ flock02 flock02
> flock03 flock03
> flock04 flock04
> flock06 flock06
> +flock07 flock07
>
> fmtmsg01 fmtmsg01
>
> diff --git a/testcases/kernel/syscalls/flock/.gitignore b/testcases/kernel/syscalls/flock/.gitignore
> index c8cb0fc54..9bac582e1 100644
> --- a/testcases/kernel/syscalls/flock/.gitignore
> +++ b/testcases/kernel/syscalls/flock/.gitignore
> @@ -3,3 +3,4 @@
> /flock03
> /flock04
> /flock06
> +/flock07
> diff --git a/testcases/kernel/syscalls/flock/flock07.c b/testcases/kernel/syscalls/flock/flock07.c
> new file mode 100644
> index 000000000..6fd650186
> --- /dev/null
> +++ b/testcases/kernel/syscalls/flock/flock07.c
> @@ -0,0 +1,98 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
> + * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
> + */
> +
> +/*\
> + * [Description]
> + *
> + * Verify that flock(2) fails with
> + *
> + * - EINTR when waiting lock, call is interrupted by signal
> + * - EWOULDBLOCK when file is locked and LOCK_NB flag is selected
> + */
> +
> +#include <signal.h>
> +#include <sys/file.h>
> +#include <sys/wait.h>
> +#include "tst_test.h"
> +
> +#define TEST_INTR "test_intr"
> +#define TEST_EWOULDBLOCK "test_ewouldblock"
> +
> +static struct test_case_t {
> + char *filename;
> + int expected_errno;
> + int child;
> + char *desc;
> +} tcases[] = {
> + {TEST_INTR, EINTR, 1,
> + "while waiting lock, call is interrupted by signal"},
> + {TEST_EWOULDBLOCK, EWOULDBLOCK, 0,
> + "file is locked and LOCK_NB flag is selected"},
> +};
> +
> +static void setup(void)
> +{
> + SAFE_TOUCH(TEST_INTR, 0777, NULL);
> + SAFE_TOUCH(TEST_EWOULDBLOCK, 0777, NULL);
> +}
> +
> +static void handler(int sig)
> +{
> + switch (sig) {
> + case SIGUSR1:
> + tst_res(TINFO, "%s", "Got SIGUSR1");
> + break;
> + default:
> + tst_res(TINFO, "%s", "Got other signal");
> + break;
> + }
> +}
> +
> +static void child_do(int fd, struct test_case_t *tc)
> +{
> + struct sigaction sa;
> +
> + sa.sa_handler = handler;
> + SAFE_SIGEMPTYSET(&sa.sa_mask);
> + SAFE_SIGACTION(SIGUSR1, &sa, NULL);
> +
> + TST_EXP_FAIL(flock(fd, LOCK_EX), tc->expected_errno, "%s", tc->desc);
> +}
> +
> +static void verify_flock(unsigned int i)
> +{
> + struct test_case_t *tc = &tcases[i];
> + pid_t pid;
> + int fd1 = SAFE_OPEN(tc->filename, O_RDWR);
> + int fd2 = SAFE_OPEN(tc->filename, O_RDWR);
> +
> + if (tc->child) {
> + flock(fd1, LOCK_EX);
> + pid = SAFE_FORK();
> + if (!pid) {
> + child_do(fd2, tc);
> + exit(0);
> + }
> + sleep(1);
> + SAFE_KILL(pid, SIGUSR1);
> + SAFE_WAITPID(pid, NULL, 0);
> + } else {
> + flock(fd1, LOCK_EX);
> + TST_EXP_FAIL(flock(fd2, LOCK_EX | LOCK_NB), tc->expected_errno,
> + "%s", tc->desc);
> + }
> + SAFE_CLOSE(fd1);
> + SAFE_CLOSE(fd2);
> +}
> +
> +static struct tst_test test = {
> + .setup = setup,
> + .tcnt = ARRAY_SIZE(tcases),
> + .test = verify_flock,
> + .needs_tmpdir = 1,
> + .needs_root = 1,
> + .forks_child = 1,
> +};
>
Regards,
Avinesh
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [LTP] [PATCH] flock: Add negative tests for flock
2024-05-30 14:13 ` Avinesh Kumar
@ 2024-10-21 14:28 ` Petr Vorel
0 siblings, 0 replies; 13+ messages in thread
From: Petr Vorel @ 2024-10-21 14:28 UTC (permalink / raw)
To: Avinesh Kumar; +Cc: ltp
Hi Yang Xu, Avinesh,
> Hi Yang Xu,
> When I am testing this by running multiple times, EINTR test is getting
> timed out randomly.
> tst_test.c:1625: TINFO: Timeout per run is 0h 00m 30s
> flock07.c:46: TINFO: Got SIGUSR1
> Test timeouted, sending SIGKILL!
> tst_test.c:1673: TINFO: Killed the leftover descendant processes
> tst_test.c:1679: TINFO: If you are running on slow machine, try exporting LTP_TIMEOUT_MUL > 1
> tst_test.c:1681: TBROK: Test killed! (timeout?)
> In these cases I see that there are two locks (held or waiting) by the process
> even after SIGUSER1 signal is delivered, so somehow signal is being ignored.
> flock07 16520 FLOCK WRITE* 0 0 0 /tmp...
> flock07 16519 FLOCK WRITE 0 0 0 /tmp...
> And I feel we should add EWOULDBLOCK errno test to flock02.c file,
> and keep only EINTR testcase here.
There are v2 and v3 sent by Avinesh, therefore I set this in patchwork as
"Changes requested". Please correct me if I'm wrong.
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread
* [LTP] [PATCH v2] flock: Add test for verifying EINTR errno
2024-04-16 8:02 [LTP] [PATCH] flock: Add negative tests for flock Yang Xu via ltp
2024-05-30 14:13 ` Avinesh Kumar
@ 2024-05-30 14:40 ` Avinesh Kumar
2024-05-30 14:48 ` [LTP] [PATCH v3] " Avinesh Kumar
1 sibling, 1 reply; 13+ messages in thread
From: Avinesh Kumar @ 2024-05-30 14:40 UTC (permalink / raw)
To: ltp
Modified Yang Xu's v1 patch and kept only EINTR test here.
Signed-off-by: Avinesh Kumar <akumar@suse.de>
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
testcases/kernel/syscalls/flock/flock07.c | 70 +++++++++++++++++++++++
1 file changed, 70 insertions(+)
create mode 100644 testcases/kernel/syscalls/flock/flock07.c
diff --git a/testcases/kernel/syscalls/flock/flock07.c b/testcases/kernel/syscalls/flock/flock07.c
new file mode 100644
index 000000000..b2de84905
--- /dev/null
+++ b/testcases/kernel/syscalls/flock/flock07.c
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
+ * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
+ * Copyright (c) 2024 Linux Test Project
+ */
+
+/*\
+ * [Description]
+ *
+ * Verify that flock(2) fails with errno EINTR when waiting to acquire a lock,
+ * and the call is interrupted by a signal.
+ */
+
+#include <sys/file.h>
+#include "tst_test.h"
+
+#define TEMPFILE "test_eintr"
+
+static void handler(int sig)
+{
+ tst_res(TINFO, "Received signal: %d", sig);
+}
+
+static void setup(void)
+{
+ SAFE_TOUCH(TEMPFILE, 0777, NULL);
+}
+
+static void child_do(int fd)
+{
+ struct sigaction sa;
+
+ sa.sa_handler = handler;
+ SAFE_SIGEMPTYSET(&sa.sa_mask);
+ SAFE_SIGACTION(SIGUSR1, &sa, NULL);
+
+ tst_res(TINFO, "Trying to acquire exclusive lock from child");
+ TST_EXP_FAIL(flock(fd, LOCK_EX), EINTR);
+}
+
+static void verify_flock(void)
+{
+ pid_t pid;
+ int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
+ int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
+
+ TST_EXP_PASS(flock(fd1, LOCK_EX));
+
+ pid = SAFE_FORK();
+ if (!pid) {
+ child_do(fd2);
+ exit(0);
+ } else {
+ sleep(1);
+ SAFE_KILL(pid, SIGUSR1);
+ SAFE_WAITPID(pid, NULL, 0);
+ }
+
+ SAFE_CLOSE(fd1);
+ SAFE_CLOSE(fd2);
+}
+
+static struct tst_test test = {
+ .setup = setup,
+ .test_all = verify_flock,
+ .needs_tmpdir = 1,
+ .needs_root = 1,
+ .forks_child = 1,
+};
--
2.45.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 13+ messages in thread* [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2024-05-30 14:40 ` [LTP] [PATCH v2] flock: Add test for verifying EINTR errno Avinesh Kumar
@ 2024-05-30 14:48 ` Avinesh Kumar
2024-10-21 19:55 ` Petr Vorel
2025-02-03 14:22 ` Petr Vorel
0 siblings, 2 replies; 13+ messages in thread
From: Avinesh Kumar @ 2024-05-30 14:48 UTC (permalink / raw)
To: ltp
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
Signed-off-by: Avinesh Kumar <akumar@suse.de>
---
runtest/syscalls | 1 +
testcases/kernel/syscalls/flock/.gitignore | 1 +
testcases/kernel/syscalls/flock/flock07.c | 70 ++++++++++++++++++++++
3 files changed, 72 insertions(+)
create mode 100644 testcases/kernel/syscalls/flock/flock07.c
diff --git a/runtest/syscalls b/runtest/syscalls
index cf06ee563..091453fec 100644
--- a/runtest/syscalls
+++ b/runtest/syscalls
@@ -374,6 +374,7 @@ flock02 flock02
flock03 flock03
flock04 flock04
flock06 flock06
+flock07 flock07
fmtmsg01 fmtmsg01
diff --git a/testcases/kernel/syscalls/flock/.gitignore b/testcases/kernel/syscalls/flock/.gitignore
index c8cb0fc54..9bac582e1 100644
--- a/testcases/kernel/syscalls/flock/.gitignore
+++ b/testcases/kernel/syscalls/flock/.gitignore
@@ -3,3 +3,4 @@
/flock03
/flock04
/flock06
+/flock07
diff --git a/testcases/kernel/syscalls/flock/flock07.c b/testcases/kernel/syscalls/flock/flock07.c
new file mode 100644
index 000000000..b2de84905
--- /dev/null
+++ b/testcases/kernel/syscalls/flock/flock07.c
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
+ * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
+ * Copyright (c) 2024 Linux Test Project
+ */
+
+/*\
+ * [Description]
+ *
+ * Verify that flock(2) fails with errno EINTR when waiting to acquire a lock,
+ * and the call is interrupted by a signal.
+ */
+
+#include <sys/file.h>
+#include "tst_test.h"
+
+#define TEMPFILE "test_eintr"
+
+static void handler(int sig)
+{
+ tst_res(TINFO, "Received signal: %d", sig);
+}
+
+static void setup(void)
+{
+ SAFE_TOUCH(TEMPFILE, 0777, NULL);
+}
+
+static void child_do(int fd)
+{
+ struct sigaction sa;
+
+ sa.sa_handler = handler;
+ SAFE_SIGEMPTYSET(&sa.sa_mask);
+ SAFE_SIGACTION(SIGUSR1, &sa, NULL);
+
+ tst_res(TINFO, "Trying to acquire exclusive lock from child");
+ TST_EXP_FAIL(flock(fd, LOCK_EX), EINTR);
+}
+
+static void verify_flock(void)
+{
+ pid_t pid;
+ int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
+ int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
+
+ TST_EXP_PASS(flock(fd1, LOCK_EX));
+
+ pid = SAFE_FORK();
+ if (!pid) {
+ child_do(fd2);
+ exit(0);
+ } else {
+ sleep(1);
+ SAFE_KILL(pid, SIGUSR1);
+ SAFE_WAITPID(pid, NULL, 0);
+ }
+
+ SAFE_CLOSE(fd1);
+ SAFE_CLOSE(fd2);
+}
+
+static struct tst_test test = {
+ .setup = setup,
+ .test_all = verify_flock,
+ .needs_tmpdir = 1,
+ .needs_root = 1,
+ .forks_child = 1,
+};
--
2.45.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2024-05-30 14:48 ` [LTP] [PATCH v3] " Avinesh Kumar
@ 2024-10-21 19:55 ` Petr Vorel
2025-01-14 15:54 ` Avinesh Kumar
2025-02-03 14:22 ` Petr Vorel
1 sibling, 1 reply; 13+ messages in thread
From: Petr Vorel @ 2024-10-21 19:55 UTC (permalink / raw)
To: Avinesh Kumar; +Cc: ltp
Hi Avinesh, Yang Xu,
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> Signed-off-by: Avinesh Kumar <akumar@suse.de>
...
> --- /dev/null
> +++ b/testcases/kernel/syscalls/flock/flock07.c
> @@ -0,0 +1,70 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
> + * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
> + * Copyright (c) 2024 Linux Test Project
> + */
> +
> +/*\
> + * [Description]
> + *
> + * Verify that flock(2) fails with errno EINTR when waiting to acquire a lock,
> + * and the call is interrupted by a signal.
Avinesh, you mentioned at Yang Xu's v1 [1] that EINTR test is getting timed out
randomly. I also experienced timeouts on aarch64 and ppc64le. v1 had 2 tests
(EINTR and EWOULDBLOCK), you here posted only EINTR. I would expect you would
put here only the other one - EWOULDBLOCK. Or am I missing something?
Kind regards,
Petr
[1] https://lore.kernel.org/ltp/1934768.7Z3S40VBb9@localhost/
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2024-10-21 19:55 ` Petr Vorel
@ 2025-01-14 15:54 ` Avinesh Kumar
2025-01-31 11:01 ` Petr Vorel
0 siblings, 1 reply; 13+ messages in thread
From: Avinesh Kumar @ 2025-01-14 15:54 UTC (permalink / raw)
To: Petr Vorel; +Cc: ltp
On Monday, October 21, 2024 9:55:21 PM CET Petr Vorel wrote:
> Hi Avinesh, Yang Xu,
>
> > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> > Signed-off-by: Avinesh Kumar <akumar@suse.de>
> ...
> > --- /dev/null
> > +++ b/testcases/kernel/syscalls/flock/flock07.c
> > @@ -0,0 +1,70 @@
> > +// SPDX-License-Identifier: GPL-2.0-or-later
> > +/*
> > + * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
> > + * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
> > + * Copyright (c) 2024 Linux Test Project
> > + */
> > +
> > +/*\
> > + * [Description]
> > + *
> > + * Verify that flock(2) fails with errno EINTR when waiting to acquire a lock,
> > + * and the call is interrupted by a signal.
>
> Avinesh, you mentioned at Yang Xu's v1 [1] that EINTR test is getting timed out
> randomly. I also experienced timeouts on aarch64 and ppc64le. v1 had 2 tests
> (EINTR and EWOULDBLOCK), you here posted only EINTR. I would expect you would
> put here only the other one - EWOULDBLOCK. Or am I missing something?
Hi Petr,
I am sorry, I completely missed this.
I sent the patch for EWOULDBLOCK case now -
https://lore.kernel.org/ltp/20250114155013.7644-1-akumar@suse.de/T/#u
Regards,
Avinesh
>
> Kind regards,
> Petr
>
> [1] https://lore.kernel.org/ltp/1934768.7Z3S40VBb9@localhost/
>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2025-01-14 15:54 ` Avinesh Kumar
@ 2025-01-31 11:01 ` Petr Vorel
2025-02-03 9:41 ` Avinesh Kumar
0 siblings, 1 reply; 13+ messages in thread
From: Petr Vorel @ 2025-01-31 11:01 UTC (permalink / raw)
To: Avinesh Kumar; +Cc: ltp
> On Monday, October 21, 2024 9:55:21 PM CET Petr Vorel wrote:
> > Hi Avinesh, Yang Xu,
> > > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> > > Signed-off-by: Avinesh Kumar <akumar@suse.de>
> > ...
> > > --- /dev/null
> > > +++ b/testcases/kernel/syscalls/flock/flock07.c
> > > @@ -0,0 +1,70 @@
> > > +// SPDX-License-Identifier: GPL-2.0-or-later
> > > +/*
> > > + * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
> > > + * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
> > > + * Copyright (c) 2024 Linux Test Project
> > > + */
> > > +
> > > +/*\
> > > + * [Description]
> > > + *
> > > + * Verify that flock(2) fails with errno EINTR when waiting to acquire a lock,
> > > + * and the call is interrupted by a signal.
> > Avinesh, you mentioned at Yang Xu's v1 [1] that EINTR test is getting timed out
> > randomly. I also experienced timeouts on aarch64 and ppc64le. v1 had 2 tests
> > (EINTR and EWOULDBLOCK), you here posted only EINTR. I would expect you would
> > put here only the other one - EWOULDBLOCK. Or am I missing something?
> Hi Petr,
> I am sorry, I completely missed this.
> I sent the patch for EWOULDBLOCK case now -
> https://lore.kernel.org/ltp/20250114155013.7644-1-akumar@suse.de/T/#u
Thanks for info. I'm closing this as rejected. Please let me know if I did not
understand you and this is a valid patch.
Kind regards,
Petr
> Regards,
> Avinesh
> > Kind regards,
> > Petr
> > [1] https://lore.kernel.org/ltp/1934768.7Z3S40VBb9@localhost/
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2025-01-31 11:01 ` Petr Vorel
@ 2025-02-03 9:41 ` Avinesh Kumar
2025-02-03 10:12 ` Petr Vorel
0 siblings, 1 reply; 13+ messages in thread
From: Avinesh Kumar @ 2025-02-03 9:41 UTC (permalink / raw)
To: Petr Vorel; +Cc: ltp
On Friday, January 31, 2025 12:01:36 PM CET Petr Vorel wrote:
> > On Monday, October 21, 2024 9:55:21 PM CET Petr Vorel wrote:
> > > Hi Avinesh, Yang Xu,
>
> > > > Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> > > > Signed-off-by: Avinesh Kumar <akumar@suse.de>
> > > ...
> > > > --- /dev/null
> > > > +++ b/testcases/kernel/syscalls/flock/flock07.c
> > > > @@ -0,0 +1,70 @@
> > > > +// SPDX-License-Identifier: GPL-2.0-or-later
> > > > +/*
> > > > + * Copyright (c) 2024 FUJITSU LIMITED. All Rights Reserved.
> > > > + * Author: Yang Xu <xuyang2018.jy@fujitsu.com>
> > > > + * Copyright (c) 2024 Linux Test Project
> > > > + */
> > > > +
> > > > +/*\
> > > > + * [Description]
> > > > + *
> > > > + * Verify that flock(2) fails with errno EINTR when waiting to acquire a lock,
> > > > + * and the call is interrupted by a signal.
>
> > > Avinesh, you mentioned at Yang Xu's v1 [1] that EINTR test is getting timed out
> > > randomly. I also experienced timeouts on aarch64 and ppc64le. v1 had 2 tests
> > > (EINTR and EWOULDBLOCK), you here posted only EINTR. I would expect you would
> > > put here only the other one - EWOULDBLOCK. Or am I missing something?
> > Hi Petr,
>
> > I am sorry, I completely missed this.
> > I sent the patch for EWOULDBLOCK case now -
> > https://lore.kernel.org/ltp/20250114155013.7644-1-akumar@suse.de/T/#u
>
> Thanks for info. I'm closing this as rejected. Please let me know if I did not
> understand you and this is a valid patch.
Hi Petr, the above v3 patch (for new test of flock/EINTR errno) is still valid.
I took out the EWOULDBLOCK test from the original patch (by Yang Xu) and
added that to flock02, you already merged that one.
So you can review flock07.c patch just for the EINTR case.
Thanks,
Avinesh
>
> Kind regards,
> Petr
>
> > Regards,
> > Avinesh
>
> > > Kind regards,
> > > Petr
>
> > > [1] https://lore.kernel.org/ltp/1934768.7Z3S40VBb9@localhost/
>
>
>
>
>
>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2025-02-03 9:41 ` Avinesh Kumar
@ 2025-02-03 10:12 ` Petr Vorel
0 siblings, 0 replies; 13+ messages in thread
From: Petr Vorel @ 2025-02-03 10:12 UTC (permalink / raw)
To: Avinesh Kumar; +Cc: ltp
Hi Avinesh,
...
> > > Hi Petr,
> > > I am sorry, I completely missed this.
> > > I sent the patch for EWOULDBLOCK case now -
> > > https://lore.kernel.org/ltp/20250114155013.7644-1-akumar@suse.de/T/#u
> > Thanks for info. I'm closing this as rejected. Please let me know if I did not
> > understand you and this is a valid patch.
> Hi Petr, the above v3 patch (for new test of flock/EINTR errno) is still valid.
> I took out the EWOULDBLOCK test from the original patch (by Yang Xu) and
> added that to flock02, you already merged that one.
> So you can review flock07.c patch just for the EINTR case.
Thanks for info, I reopened it in patchwork and I'll have look later.
I see, the crash is workarounded by forking child and verifying, that's why it's
not in flock02.c (which has other errnos, which don't need a workaround with
forking).
Kind regards,
Petr
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2024-05-30 14:48 ` [LTP] [PATCH v3] " Avinesh Kumar
2024-10-21 19:55 ` Petr Vorel
@ 2025-02-03 14:22 ` Petr Vorel
2025-02-03 14:55 ` Avinesh Kumar
1 sibling, 1 reply; 13+ messages in thread
From: Petr Vorel @ 2025-02-03 14:22 UTC (permalink / raw)
To: Avinesh Kumar; +Cc: ltp
Hi Avinesh, all,
...
> +++ b/testcases/kernel/syscalls/flock/flock07.c
...
> +static void handler(int sig)
> +{
> + tst_res(TINFO, "Received signal: %d", sig);
How about print a signal constant/name?
tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
> +}
...
> +static void verify_flock(void)
> +{
> + pid_t pid;
> + int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
> + int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
How about to setup file descriptors in setup() and close them in cleanup()?
I suggest to merge with the change below.
> +
> + TST_EXP_PASS(flock(fd1, LOCK_EX));
> +
> + pid = SAFE_FORK();
> + if (!pid) {
> + child_do(fd2);
> + exit(0);
> + } else {
> + sleep(1);
> + SAFE_KILL(pid, SIGUSR1);
> + SAFE_WAITPID(pid, NULL, 0);
> + }
> +
> + SAFE_CLOSE(fd1);
> + SAFE_CLOSE(fd2);
> +}
Kind regards,
Petr
+++ testcases/kernel/syscalls/flock/flock07.c
@@ -17,14 +17,27 @@
#define TEMPFILE "test_eintr"
+static int fd1 = -1, fd2 = -1;
+
static void handler(int sig)
{
- tst_res(TINFO, "Received signal: %d", sig);
+ tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
}
static void setup(void)
{
SAFE_TOUCH(TEMPFILE, 0777, NULL);
+ fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
+ fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
+}
+
+static void cleanup(void)
+{
+ if (fd1 >= 0)
+ SAFE_CLOSE(fd1);
+
+ if (fd2 >= 0)
+ SAFE_CLOSE(fd2);
}
static void child_do(int fd)
@@ -42,8 +55,6 @@ static void child_do(int fd)
static void verify_flock(void)
{
pid_t pid;
- int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
- int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
TST_EXP_PASS(flock(fd1, LOCK_EX));
@@ -56,13 +67,11 @@ static void verify_flock(void)
SAFE_KILL(pid, SIGUSR1);
SAFE_WAITPID(pid, NULL, 0);
}
-
- SAFE_CLOSE(fd1);
- SAFE_CLOSE(fd2);
}
static struct tst_test test = {
.setup = setup,
+ .cleanup = cleanup,
.test_all = verify_flock,
.needs_tmpdir = 1,
.needs_root = 1,
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [LTP] [PATCH v3] flock: Add test for verifying EINTR errno
2025-02-03 14:22 ` Petr Vorel
@ 2025-02-03 14:55 ` Avinesh Kumar
2025-02-03 15:33 ` Petr Vorel
0 siblings, 1 reply; 13+ messages in thread
From: Avinesh Kumar @ 2025-02-03 14:55 UTC (permalink / raw)
To: Petr Vorel; +Cc: ltp
On Monday, February 3, 2025 3:22:13 PM CET Petr Vorel wrote:
> Hi Avinesh, all,
>
> ...
> > +++ b/testcases/kernel/syscalls/flock/flock07.c
> ...
> > +static void handler(int sig)
> > +{
> > + tst_res(TINFO, "Received signal: %d", sig);
> How about print a signal constant/name?
>
> tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
> > +}
> ...
> > +static void verify_flock(void)
> > +{
> > + pid_t pid;
> > + int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
> > + int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
> How about to setup file descriptors in setup() and close them in cleanup()?
>
> I suggest to merge with the change below.
Hi Petr,
Thank you for the review, and I agree with your suggestions.
Regards,
Avinesh
>
> > +
> > + TST_EXP_PASS(flock(fd1, LOCK_EX));
> > +
> > + pid = SAFE_FORK();
> > + if (!pid) {
> > + child_do(fd2);
> > + exit(0);
> > + } else {
> > + sleep(1);
> > + SAFE_KILL(pid, SIGUSR1);
> > + SAFE_WAITPID(pid, NULL, 0);
> > + }
> > +
> > + SAFE_CLOSE(fd1);
> > + SAFE_CLOSE(fd2);
> > +}
>
> Kind regards,
> Petr
>
> +++ testcases/kernel/syscalls/flock/flock07.c
> @@ -17,14 +17,27 @@
>
> #define TEMPFILE "test_eintr"
>
> +static int fd1 = -1, fd2 = -1;
> +
> static void handler(int sig)
> {
> - tst_res(TINFO, "Received signal: %d", sig);
> + tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
> }
>
> static void setup(void)
> {
> SAFE_TOUCH(TEMPFILE, 0777, NULL);
> + fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
> + fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
> +}
> +
> +static void cleanup(void)
> +{
> + if (fd1 >= 0)
> + SAFE_CLOSE(fd1);
> +
> + if (fd2 >= 0)
> + SAFE_CLOSE(fd2);
> }
>
> static void child_do(int fd)
> @@ -42,8 +55,6 @@ static void child_do(int fd)
> static void verify_flock(void)
> {
> pid_t pid;
> - int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
> - int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
>
> TST_EXP_PASS(flock(fd1, LOCK_EX));
>
> @@ -56,13 +67,11 @@ static void verify_flock(void)
> SAFE_KILL(pid, SIGUSR1);
> SAFE_WAITPID(pid, NULL, 0);
> }
> -
> - SAFE_CLOSE(fd1);
> - SAFE_CLOSE(fd2);
> }
>
> static struct tst_test test = {
> .setup = setup,
> + .cleanup = cleanup,
> .test_all = verify_flock,
> .needs_tmpdir = 1,
> .needs_root = 1,
>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-02-03 15:34 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-16 8:02 [LTP] [PATCH] flock: Add negative tests for flock Yang Xu via ltp
2024-05-30 14:13 ` Avinesh Kumar
2024-10-21 14:28 ` Petr Vorel
2024-05-30 14:40 ` [LTP] [PATCH v2] flock: Add test for verifying EINTR errno Avinesh Kumar
2024-05-30 14:48 ` [LTP] [PATCH v3] " Avinesh Kumar
2024-10-21 19:55 ` Petr Vorel
2025-01-14 15:54 ` Avinesh Kumar
2025-01-31 11:01 ` Petr Vorel
2025-02-03 9:41 ` Avinesh Kumar
2025-02-03 10:12 ` Petr Vorel
2025-02-03 14:22 ` Petr Vorel
2025-02-03 14:55 ` Avinesh Kumar
2025-02-03 15:33 ` Petr Vorel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox