From: Masatake YAMATO Date: Wed, 5 Jul 2023 02:20:52 +0000 (+0900) Subject: test: (mkfds::ro-regular-file) add a parameter for a read lease X-Git-Tag: v2.40-rc1~345^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d612cd2369a1a04160b4e9aa94951a5b5698abde;p=thirdparty%2Futil-linux.git test: (mkfds::ro-regular-file) add a parameter for a read lease Signed-off-by: Masatake YAMATO --- diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c index d17e6f7cf9..b88992a6d1 100644 --- a/tests/helpers/test_mkfds.c +++ b/tests/helpers/test_mkfds.c @@ -348,6 +348,7 @@ static void *open_ro_regular_file(const struct factory *factory, struct fdesc fd { struct arg file = decode_arg("file", factory->params, argc, argv); struct arg offset = decode_arg("offset", factory->params, argc, argv); + struct arg lease_r = decode_arg("read-lease", factory->params, argc, argv); int fd = open(ARG_STRING(file), O_RDONLY); if (fd < 0) @@ -364,6 +365,16 @@ static void *open_ro_regular_file(const struct factory *factory, struct fdesc fd } free_arg(&offset); + if (ARG_BOOLEAN(lease_r)) { + if (fcntl(fd, F_SETLEASE, F_RDLCK) < 0) { + int e = errno; + close(fd); + errno = e; + err(EXIT_FAILURE, "failed to take out a read lease"); + } + } + free_arg(&lease_r); + if (fd != fdescs[0].fd) { if (dup2(fd, fdescs[0].fd) < 0) { int e = errno; @@ -2857,6 +2868,12 @@ static const struct factory factories[] = { .desc = "seek bytes after open with SEEK_CUR", .defv.integer = 0, }, + { + .name = "read-lease", + .type = PTYPE_BOOLEAN, + .desc = "taking out read lease for the file", + .defv.integer = false, + }, PARAM_END }, },