]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
test: (mkfds::ro-regular-file) add a parameter for a read lease
authorMasatake YAMATO <yamato@redhat.com>
Wed, 5 Jul 2023 02:20:52 +0000 (11:20 +0900)
committerMasatake YAMATO <yamato@redhat.com>
Wed, 5 Jul 2023 07:01:09 +0000 (16:01 +0900)
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
tests/helpers/test_mkfds.c

index d17e6f7cf96ced105ebdb0bfbedb37ea04c36db5..b88992a6d19b246fe0b0ea3293daecedb85c09fa 100644 (file)
@@ -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
                },
        },