]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: ublk: move common code into common.c
authorMing Lei <ming.lei@redhat.com>
Sat, 22 Mar 2025 09:32:12 +0000 (17:32 +0800)
committerJens Axboe <axboe@kernel.dk>
Sat, 22 Mar 2025 14:35:08 +0000 (08:35 -0600)
Move two functions for initializing & de-initializing backing file
into common.c.

Also move one common helper into kublk.h.

Prepare for supporting ublk-stripe.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250322093218.431419-5-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
tools/testing/selftests/ublk/Makefile
tools/testing/selftests/ublk/common.c [new file with mode: 0644]
tools/testing/selftests/ublk/file_backed.c
tools/testing/selftests/ublk/kublk.h

index 652ab40adb7336316dcfa6d082d95f9b621eab96..03dae5184d08eff9a83ed180a93e159e6c1dc935 100644 (file)
@@ -18,7 +18,7 @@ TEST_GEN_PROGS_EXTENDED = kublk
 
 include ../lib.mk
 
-$(TEST_GEN_PROGS_EXTENDED): kublk.c null.c file_backed.c
+$(TEST_GEN_PROGS_EXTENDED): kublk.c null.c file_backed.c common.c
 
 check:
        shellcheck -x -f gcc *.sh
diff --git a/tools/testing/selftests/ublk/common.c b/tools/testing/selftests/ublk/common.c
new file mode 100644 (file)
index 0000000..01580a6
--- /dev/null
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include "kublk.h"
+
+void backing_file_tgt_deinit(struct ublk_dev *dev)
+{
+       int i;
+
+       for (i = 1; i < dev->nr_fds; i++) {
+               fsync(dev->fds[i]);
+               close(dev->fds[i]);
+       }
+}
+
+int backing_file_tgt_init(struct ublk_dev *dev)
+{
+       int fd, i;
+
+       assert(dev->nr_fds == 1);
+
+       for (i = 0; i < dev->tgt.nr_backing_files; i++) {
+               char *file = dev->tgt.backing_file[i];
+               unsigned long bytes;
+               struct stat st;
+
+               ublk_dbg(UBLK_DBG_DEV, "%s: file %d: %s\n", __func__, i, file);
+
+               fd = open(file, O_RDWR | O_DIRECT);
+               if (fd < 0) {
+                       ublk_err("%s: backing file %s can't be opened: %s\n",
+                                       __func__, file, strerror(errno));
+                       return -EBADF;
+               }
+
+               if (fstat(fd, &st) < 0) {
+                       close(fd);
+                       return -EBADF;
+               }
+
+               if (S_ISREG(st.st_mode))
+                       bytes = st.st_size;
+               else if (S_ISBLK(st.st_mode)) {
+                       if (ioctl(fd, BLKGETSIZE64, &bytes) != 0)
+                               return -1;
+               } else {
+                       return -EINVAL;
+               }
+
+               dev->tgt.backing_file_size[i] = bytes;
+               dev->fds[dev->nr_fds] = fd;
+               dev->nr_fds += 1;
+       }
+
+       return 0;
+}
index f58fa4ec9b514876b8671747ef7daf29c81fe205..a2e8793390a87d10f18a6e4868bc8923c78da7f6 100644 (file)
@@ -2,58 +2,6 @@
 
 #include "kublk.h"
 
-static void backing_file_tgt_deinit(struct ublk_dev *dev)
-{
-       int i;
-
-       for (i = 1; i < dev->nr_fds; i++) {
-               fsync(dev->fds[i]);
-               close(dev->fds[i]);
-       }
-}
-
-static int backing_file_tgt_init(struct ublk_dev *dev)
-{
-       int fd, i;
-
-       assert(dev->nr_fds == 1);
-
-       for (i = 0; i < dev->tgt.nr_backing_files; i++) {
-               char *file = dev->tgt.backing_file[i];
-               unsigned long bytes;
-               struct stat st;
-
-               ublk_dbg(UBLK_DBG_DEV, "%s: file %d: %s\n", __func__, i, file);
-
-               fd = open(file, O_RDWR | O_DIRECT);
-               if (fd < 0) {
-                       ublk_err("%s: backing file %s can't be opened: %s\n",
-                                       __func__, file, strerror(errno));
-                       return -EBADF;
-               }
-
-               if (fstat(fd, &st) < 0) {
-                       close(fd);
-                       return -EBADF;
-               }
-
-               if (S_ISREG(st.st_mode))
-                       bytes = st.st_size;
-               else if (S_ISBLK(st.st_mode)) {
-                       if (ioctl(fd, BLKGETSIZE64, &bytes) != 0)
-                               return -1;
-               } else {
-                       return -EINVAL;
-               }
-
-               dev->tgt.backing_file_size[i] = bytes;
-               dev->fds[dev->nr_fds] = fd;
-               dev->nr_fds += 1;
-       }
-
-       return 0;
-}
-
 static enum io_uring_op ublk_to_uring_op(const struct ublksrv_io_desc *iod, int zc)
 {
        unsigned ublk_op = ublksrv_get_op(iod);
index 40b89dcf0704867f6fb1eb6465bb747bf8ebaf18..eaadd7364e25813be068ff4854600e84019035c8 100644 (file)
@@ -320,4 +320,6 @@ static inline int ublk_queue_use_zc(const struct ublk_queue *q)
 extern const struct ublk_tgt_ops null_tgt_ops;
 extern const struct ublk_tgt_ops loop_tgt_ops;
 
+void backing_file_tgt_deinit(struct ublk_dev *dev);
+int backing_file_tgt_init(struct ublk_dev *dev);
 #endif