diff mbox series

[v2] generic/571: skip test on filesystems that don't support F_SETLEASE fcntl

Message ID 20200401172659.299308-1-smayhew@redhat.com (mailing list archive)
State New, archived
Headers show
Series [v2] generic/571: skip test on filesystems that don't support F_SETLEASE fcntl | expand

Commit Message

Scott Mayhew April 1, 2020, 5:26 p.m. UTC
Add an option to the locktest program to check for fcntl setlease
support, and skip the generic/571 test on filesystems where the check
returns EINVAL.

Signed-off-by: Scott Mayhew <smayhew@redhat.com>
---
 common/rc         |  8 ++++++++
 src/locktest.c    | 14 +++++++++++++-
 tests/generic/571 |  1 +
 3 files changed, 22 insertions(+), 1 deletion(-)

Comments

Christoph Hellwig April 2, 2020, 10:39 a.m. UTC | #1
On Wed, Apr 01, 2020 at 01:26:59PM -0400, Scott Mayhew wrote:
> Add an option to the locktest program to check for fcntl setlease
> support, and skip the generic/571 test on filesystems where the check
> returns EINVAL.

The changes to locktest.c seem to contain some whitespace damange.

Otherwie this looks sensible to me.
Scott Mayhew April 2, 2020, 12:22 p.m. UTC | #2
Hi Christoph,

On Thu, 02 Apr 2020, Christoph Hellwig wrote:

> On Wed, Apr 01, 2020 at 01:26:59PM -0400, Scott Mayhew wrote:
> > Add an option to the locktest program to check for fcntl setlease
> > support, and skip the generic/571 test on filesystems where the check
> > returns EINVAL.
> 
> The changes to locktest.c seem to contain some whitespace damange.
> 
The changes are consistent with the existing locktest.c, which uses a
mixture of tabs and spaces.

-Scott

> Otherwie this looks sensible to me.
>
diff mbox series

Patch

diff --git a/common/rc b/common/rc
index 454f5ccf..504232fd 100644
--- a/common/rc
+++ b/common/rc
@@ -3501,6 +3501,14 @@  _require_test_fcntl_advisory_locks()
 		_notrun "Require fcntl advisory locks support"
 }
 
+_require_test_fcntl_setlease()
+{
+	_require_test_program "locktest"
+	touch $TEST_DIR/setlease_testfile
+	$here/src/locktest -t $TEST_DIR/setlease_testfile >/dev/null 2>&1
+	[ $? -eq 22 ] && _notrun "Require fcntl setlease support"
+}
+
 _require_ofd_locks()
 {
 	# Give a test run by getlk wrlck on testfile.
diff --git a/src/locktest.c b/src/locktest.c
index 8696966f..0e7c3008 100644
--- a/src/locktest.c
+++ b/src/locktest.c
@@ -1030,6 +1030,7 @@  main(int argc, char *argv[])
     extern int	optind;
     int fail_count = 0;
     int run_leases = 0;
+    int test_setlease = 0;
     
     atexit(cleanup);
     
@@ -1042,7 +1043,7 @@  main(int argc, char *argv[])
 	    prog = p+1;
     }
 
-    while ((c = getopt(argc, argv, "dLn:h:p:?")) != EOF) {
+    while ((c = getopt(argc, argv, "dLn:h:p:t?")) != EOF) {
 	switch (c) {
 
 	case 'd':	/* debug flag */
@@ -1072,6 +1073,10 @@  main(int argc, char *argv[])
 	    }
 	    break;
 
+	case 't':
+	    test_setlease = 1;
+	    break;
+
 	case '?':
 	default:
 	    errflag++;
@@ -1090,6 +1095,13 @@  main(int argc, char *argv[])
     if (do_open(O_RDWR) == FAIL)
 	exit(1);
 
+    if (test_setlease == 1) {
+	fcntl(f_fd, F_SETLEASE, F_UNLCK);
+	saved_errno = errno;
+	close(f_fd);
+	exit(saved_errno);
+    }
+
     setbuf(stderr, NULL);
 
     if (server) {
diff --git a/tests/generic/571 b/tests/generic/571
index 68c8a604..599e3e68 100755
--- a/tests/generic/571
+++ b/tests/generic/571
@@ -26,6 +26,7 @@  _supported_fs generic
 _supported_os Linux
 _require_test
 _require_test_fcntl_advisory_locks
+_require_test_fcntl_setlease
 
 _run_leasetest