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>
Reviewed-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
_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.
extern int optind;
int fail_count = 0;
int run_leases = 0;
+ int test_setlease = 0;
atexit(cleanup);
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 */
}
break;
+ case 't':
+ test_setlease = 1;
+ break;
+
case '?':
default:
errflag++;
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) {
_supported_os Linux
_require_test
_require_test_fcntl_advisory_locks
+_require_test_fcntl_setlease
_run_leasetest