[LTP] [PATCH] flock02: Add test for EWOULDBLOCK errno

Andrea Cervesato andrea.cervesato@suse.com
Wed Jan 15 10:14:53 CET 2025


Hi Avinesh,

On 1/14/25 16:49, Avinesh Kumar wrote:
> Also fix a make check warning.
>
> Signed-off-by: Avinesh Kumar <akumar@suse.de>
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
> Following up on https://lore.kernel.org/ltp/1934768.7Z3S40VBb9@localhost/
>
>   testcases/kernel/syscalls/flock/flock02.c | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/testcases/kernel/syscalls/flock/flock02.c b/testcases/kernel/syscalls/flock/flock02.c
> index b8c7eee68..e2fe73a64 100644
> --- a/testcases/kernel/syscalls/flock/flock02.c
> +++ b/testcases/kernel/syscalls/flock/flock02.c
> @@ -13,6 +13,7 @@
>    * - EBADF if the file descriptor is invalid
>    * - EINVAL if the argument operation does not include LOCK_SH,LOCK_EX,LOCK_UN
>    * - EINVAL if an invalid combination of locking modes is used i.e LOCK_SH with LOCK_EX
> + * - EWOULDBLOCK if the file is locked and the LOCK_NB flag was selected
>    */
>   
>   #include <errno.h>
> @@ -31,13 +32,19 @@ static struct tcase {
>   	{&badfd, LOCK_SH, EBADF},
>   	{&fd, LOCK_NB, EINVAL},
>   	{&fd, LOCK_SH | LOCK_EX, EINVAL},
> +	{&fd, LOCK_NB | LOCK_EX, EWOULDBLOCK}
>   };
>   
> -static void verify_flock(unsigned n)
> +static void verify_flock(unsigned int n)
>   {
>   	struct tcase *tc = &tcases[n];
>   
>   	fd = SAFE_OPEN("testfile", O_RDWR);
> +	int fd2 = SAFE_OPEN("testfile", O_RDWR);
We can initialize fd2 at the beginning of verify_flock() with -1, open 
it only when tc->exp_err is EWOULDBLOCK and close it only when it's not 
-1. So we avoid to open one more testfile also for the other testcases.
> +
> +	if (tc->exp_err == EWOULDBLOCK)
> +		flock(fd2, LOCK_EX);
> +
>   	TEST(flock(*tc->fd, tc->operation));
>   	if (TST_RET == 0) {
>   		tst_res(TFAIL | TTERRNO, "flock() succeeded unexpectedly");
> @@ -53,6 +60,7 @@ static void verify_flock(unsigned n)
>   	}
>   
>   	SAFE_CLOSE(fd);
> +	SAFE_CLOSE(fd2);
>   }
>   
>   static void setup(void)
With that small thing:

Reviewed-by: Andrea Cervesato <andrea.cervesato@suse.com>


Kind regards,
Andrea


More information about the ltp mailing list