Skip to content

Commit 52e47fd

Browse files
committed
nvme-cli: update to libnvme v2
Update to use the libnvme v2 API. Unfortunately, it's not possible to do step by step updates this change is big. Though the resulting diff is easy to read. Generally, following things are necessary to get things going: - replace struct nvme_dev with nvme_link_t - drop nvme_cli* wrappers - remove MI helper functions - replaced alternative versions of function with latest - remove libnvme-mi dependency - parse_and_open opens root and link object - use consistently cleanup helpers for root and link object - use early returns Signed-off-by: Daniel Wagner <[email protected]>
1 parent ac005e7 commit 52e47fd

65 files changed

Lines changed: 2788 additions & 3898 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

libnvme-wrap.c

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,38 +36,3 @@ rtype __attribute__((weak)) name(proto) \
3636
return fn(args); \
3737
return defret; \
3838
}
39-
40-
FN(nvme_get_version,
41-
const char *, PROTO(enum nvme_version type),
42-
ARGS(type), "n/a")
43-
44-
VOID_FN(nvme_init_copy_range_f1,
45-
PROTO(struct nvme_copy_range_f1 *copy, __u16 *nlbs,
46-
__u64 *slbas, __u64 *eilbrts, __u32 *elbatms,
47-
__u32 *elbats, __u16 nr),
48-
ARGS(copy, nlbs, slbas, eilbrts, elbatms, elbats, nr))
49-
50-
VOID_FN(nvme_init_copy_range_f2,
51-
PROTO(struct nvme_copy_range_f2 *copy, __u32 *snsids,
52-
__u16 *nlbs, __u64 *slbas, __u16 *sopts, __u32 *eilbrts,
53-
__u32 *elbatms, __u32 *elbats, __u16 nr),
54-
ARGS(copy, snsids, nlbs, slbas, sopts, eilbrts, elbatms, elbats, nr))
55-
56-
VOID_FN(nvme_init_copy_range_f3,
57-
PROTO(struct nvme_copy_range_f3 *copy, __u32 *snsids,
58-
__u16 *nlbs, __u64 *slbas, __u16 *sopts, __u64 *eilbrts,
59-
__u32 *elbatms, __u32 *elbats, __u16 nr),
60-
ARGS(copy, snsids, nlbs, slbas, sopts, eilbrts, elbatms, elbats, nr))
61-
62-
FN(nvme_get_feature_length2,
63-
int,
64-
PROTO(int fid, __u32 cdw11, enum nvme_data_tfr dir,
65-
__u32 *len),
66-
ARGS(fid, cdw11, dir, len),
67-
-EEXIST)
68-
69-
FN(nvme_ctrl_is_persistent,
70-
bool,
71-
PROTO(nvme_ctrl_t c),
72-
ARGS(c),
73-
false)

logging.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ static void nvme_log_retry(int errnum)
107107
printf("passthru command returned '%s'\n", strerror(errnum));
108108
}
109109

110-
int nvme_submit_passthru(int fd, unsigned long ioctl_cmd,
110+
int nvme_submit_passthru(nvme_link_t l, unsigned long ioctl_cmd,
111111
struct nvme_passthru_cmd *cmd, __u32 *result)
112112
{
113113
struct timeval start;
@@ -119,7 +119,7 @@ int nvme_submit_passthru(int fd, unsigned long ioctl_cmd,
119119

120120
if (!nvme_cfg.dry_run) {
121121
retry:
122-
err = ioctl(fd, ioctl_cmd, cmd);
122+
err = ioctl(nvme_link_get_fd(l), ioctl_cmd, cmd);
123123
if (err && (errno == EAGAIN ||
124124
(errno == EINTR && !nvme_sigint_received))) {
125125
nvme_log_retry(errno);
@@ -139,7 +139,7 @@ int nvme_submit_passthru(int fd, unsigned long ioctl_cmd,
139139
return err;
140140
}
141141

142-
int nvme_submit_passthru64(int fd, unsigned long ioctl_cmd,
142+
int nvme_submit_passthru64(nvme_link_t l, unsigned long ioctl_cmd,
143143
struct nvme_passthru_cmd64 *cmd,
144144
__u64 *result)
145145
{
@@ -152,7 +152,7 @@ int nvme_submit_passthru64(int fd, unsigned long ioctl_cmd,
152152

153153
if (!nvme_cfg.dry_run) {
154154
retry:
155-
err = ioctl(fd, ioctl_cmd, cmd);
155+
err = ioctl(nvme_link_get_fd(l), ioctl_cmd, cmd);
156156
if (err && (errno == EAGAIN ||
157157
(errno == EINTR && !nvme_sigint_received))) {
158158
nvme_log_retry(errno);

meson.build

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ conf.set('RUNDIR', '"@0@"'.format(rundir))
5050
# Check for libnvme availability
5151
libnvme_dep = dependency('libnvme', version: '>=1.13', required: true,
5252
fallback : ['libnvme', 'libnvme_dep'])
53-
libnvme_mi_dep = dependency('libnvme-mi', required: true,
54-
fallback : ['libnvme', 'libnvme_mi_dep'])
5553

5654
# Check for libjson-c availability
5755
if get_option('json-c').disabled()
@@ -280,7 +278,6 @@ sources = [
280278
'nvme-print-stdout.c',
281279
'nvme-print-binary.c',
282280
'nvme-rpmb.c',
283-
'nvme-wrap.c',
284281
'plugin.c',
285282
'libnvme-wrap.c',
286283
'logging.c',
@@ -303,7 +300,7 @@ subdir('Documentation')
303300
executable(
304301
'nvme',
305302
sources,
306-
dependencies: [ libnvme_dep, libnvme_mi_dep, json_c_dep ],
303+
dependencies: [ libnvme_dep, json_c_dep ],
307304
link_args: '-ldl',
308305
include_directories: incdir,
309306
install: true,

0 commit comments

Comments
 (0)