[Ocfs2-tools-devel] ocfs2-test: fix flock_unit_test for fcntl locks

Joel Becker Joel.Becker at oracle.com
Thu Aug 14 11:51:55 PDT 2008


On Wed, Aug 13, 2008 at 09:06:12PM -0700, Mark Fasheh wrote:
> We were expecting a failure for the same-node same-fd trylock tests when in
> fcntl mode, but fcntl locks will actually succeed for this, while flock
> locks won't. The solution is to check which locking mode we're using and
> adjust our expected return accordingly.
> 
> Signed-off-by: Mark Fasheh <mfasheh at suse.com>
Signed-off-by: Joel Becker <joel.becker at oracle.com>


> 
> Index: ocfs2-test/programs/flock_tests/flock_unit_test.c
> ===================================================================
> --- ocfs2-test/programs/flock_tests/flock_unit_test.c	(revision 183)
> +++ ocfs2-test/programs/flock_tests/flock_unit_test.c	(working copy)
> @@ -329,7 +329,19 @@
>  static void test_1node_1file(char *fname)
>  {
>  	int fd1, fd2;
> +	int trylock_return = 0;
>  
> +	/*
> +	 * flock allows one lock per fd, so a trylock on the 2nd file
> +	 * descriptor will return EWOULDBLOCK.
> +	 *
> +	 * fcntl on the other hand, only allows one lock per process,
> +	 * regardless of the number of fds used. So our trylocks here
> +	 * should succeed as it'll be considered an EX->EX convert.
> +	 */
> +	if (use_flock)
> +		trylock_return = EWOULDBLOCK;
> +
>  	fd1 = get_fd(fname);
>  	fd2 = get_fd(fname);
>  
> @@ -344,13 +356,13 @@
>  
>  	info("Two exclusive trylocks\n");
>  	lock_abort(fname, fd1, 0, 1, 1);
> -	lock_abort(fname, fd2, EWOULDBLOCK, 1, 1);
> +	lock_abort(fname, fd2, trylock_return, 1, 1);
>  	unlock_abort(fname, fd1, 0);
>  
>  
>  	info("One exclusive, one shared trylock\n");
>  	lock_abort(fname, fd1, 0, 1, 0);
> -	lock_abort(fname, fd2, EWOULDBLOCK, 0, 1);
> +	lock_abort(fname, fd2, trylock_return, 0, 1);
>  	unlock_abort(fname, fd1, 0);
>  
>  
> 
> _______________________________________________
> Ocfs2-tools-devel mailing list
> Ocfs2-tools-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-tools-devel

-- 

"You must remember this:
 A kiss is just a kiss,
 A sigh is just a sigh.
 The fundamental rules apply
 As time goes by."

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127



More information about the Ocfs2-tools-devel mailing list