Skip to content

Commit 10d962d

Browse files
Ming Leiaxboe
authored andcommitted
selftests: ublk: move common code into common.c
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent 9413c0c commit 10d962d

File tree

4 files changed

+58
-53
lines changed

4 files changed

+58
-53
lines changed

tools/testing/selftests/ublk/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ TEST_GEN_PROGS_EXTENDED = kublk
1818

1919
include ../lib.mk
2020

21-
$(TEST_GEN_PROGS_EXTENDED): kublk.c null.c file_backed.c
21+
$(TEST_GEN_PROGS_EXTENDED): kublk.c null.c file_backed.c common.c
2222

2323
check:
2424
shellcheck -x -f gcc *.sh

tools/testing/selftests/ublk/common.c

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
3+
#include "kublk.h"
4+
5+
void backing_file_tgt_deinit(struct ublk_dev *dev)
6+
{
7+
int i;
8+
9+
for (i = 1; i < dev->nr_fds; i++) {
10+
fsync(dev->fds[i]);
11+
close(dev->fds[i]);
12+
}
13+
}
14+
15+
int backing_file_tgt_init(struct ublk_dev *dev)
16+
{
17+
int fd, i;
18+
19+
assert(dev->nr_fds == 1);
20+
21+
for (i = 0; i < dev->tgt.nr_backing_files; i++) {
22+
char *file = dev->tgt.backing_file[i];
23+
unsigned long bytes;
24+
struct stat st;
25+
26+
ublk_dbg(UBLK_DBG_DEV, "%s: file %d: %s\n", __func__, i, file);
27+
28+
fd = open(file, O_RDWR | O_DIRECT);
29+
if (fd < 0) {
30+
ublk_err("%s: backing file %s can't be opened: %s\n",
31+
__func__, file, strerror(errno));
32+
return -EBADF;
33+
}
34+
35+
if (fstat(fd, &st) < 0) {
36+
close(fd);
37+
return -EBADF;
38+
}
39+
40+
if (S_ISREG(st.st_mode))
41+
bytes = st.st_size;
42+
else if (S_ISBLK(st.st_mode)) {
43+
if (ioctl(fd, BLKGETSIZE64, &bytes) != 0)
44+
return -1;
45+
} else {
46+
return -EINVAL;
47+
}
48+
49+
dev->tgt.backing_file_size[i] = bytes;
50+
dev->fds[dev->nr_fds] = fd;
51+
dev->nr_fds += 1;
52+
}
53+
54+
return 0;
55+
}

tools/testing/selftests/ublk/file_backed.c

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,6 @@
22

33
#include "kublk.h"
44

5-
static void backing_file_tgt_deinit(struct ublk_dev *dev)
6-
{
7-
int i;
8-
9-
for (i = 1; i < dev->nr_fds; i++) {
10-
fsync(dev->fds[i]);
11-
close(dev->fds[i]);
12-
}
13-
}
14-
15-
static int backing_file_tgt_init(struct ublk_dev *dev)
16-
{
17-
int fd, i;
18-
19-
assert(dev->nr_fds == 1);
20-
21-
for (i = 0; i < dev->tgt.nr_backing_files; i++) {
22-
char *file = dev->tgt.backing_file[i];
23-
unsigned long bytes;
24-
struct stat st;
25-
26-
ublk_dbg(UBLK_DBG_DEV, "%s: file %d: %s\n", __func__, i, file);
27-
28-
fd = open(file, O_RDWR | O_DIRECT);
29-
if (fd < 0) {
30-
ublk_err("%s: backing file %s can't be opened: %s\n",
31-
__func__, file, strerror(errno));
32-
return -EBADF;
33-
}
34-
35-
if (fstat(fd, &st) < 0) {
36-
close(fd);
37-
return -EBADF;
38-
}
39-
40-
if (S_ISREG(st.st_mode))
41-
bytes = st.st_size;
42-
else if (S_ISBLK(st.st_mode)) {
43-
if (ioctl(fd, BLKGETSIZE64, &bytes) != 0)
44-
return -1;
45-
} else {
46-
return -EINVAL;
47-
}
48-
49-
dev->tgt.backing_file_size[i] = bytes;
50-
dev->fds[dev->nr_fds] = fd;
51-
dev->nr_fds += 1;
52-
}
53-
54-
return 0;
55-
}
56-
575
static enum io_uring_op ublk_to_uring_op(const struct ublksrv_io_desc *iod, int zc)
586
{
597
unsigned ublk_op = ublksrv_get_op(iod);

tools/testing/selftests/ublk/kublk.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,4 +320,6 @@ static inline int ublk_queue_use_zc(const struct ublk_queue *q)
320320
extern const struct ublk_tgt_ops null_tgt_ops;
321321
extern const struct ublk_tgt_ops loop_tgt_ops;
322322

323+
void backing_file_tgt_deinit(struct ublk_dev *dev);
324+
int backing_file_tgt_init(struct ublk_dev *dev);
323325
#endif

0 commit comments

Comments
 (0)