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 |
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.
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 --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
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(-)