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@xxxxxxxxxx> --- tools/testing/selftests/ublk/Makefile | 2 +- tools/testing/selftests/ublk/common.c | 55 ++++++++++++++++++++++ tools/testing/selftests/ublk/file_backed.c | 52 -------------------- tools/testing/selftests/ublk/kublk.h | 2 + 4 files changed, 58 insertions(+), 53 deletions(-) create mode 100644 tools/testing/selftests/ublk/common.c diff --git a/tools/testing/selftests/ublk/Makefile b/tools/testing/selftests/ublk/Makefile index 652ab40adb73..03dae5184d08 100644 --- a/tools/testing/selftests/ublk/Makefile +++ b/tools/testing/selftests/ublk/Makefile @@ -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 index 000000000000..01580a6f8519 --- /dev/null +++ b/tools/testing/selftests/ublk/common.c @@ -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; +} diff --git a/tools/testing/selftests/ublk/file_backed.c b/tools/testing/selftests/ublk/file_backed.c index f58fa4ec9b51..a2e8793390a8 100644 --- a/tools/testing/selftests/ublk/file_backed.c +++ b/tools/testing/selftests/ublk/file_backed.c @@ -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); diff --git a/tools/testing/selftests/ublk/kublk.h b/tools/testing/selftests/ublk/kublk.h index 40b89dcf0704..eaadd7364e25 100644 --- a/tools/testing/selftests/ublk/kublk.h +++ b/tools/testing/selftests/ublk/kublk.h @@ -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 -- 2.47.0