Skip to content

Commit e290046

Browse files
authored
Merge pull request #1346 from igaw/update-logging
nvme: Adapt to logging changes in libnvme
2 parents 0f87fa5 + 4057104 commit e290046

4 files changed

Lines changed: 118 additions & 92 deletions

File tree

fabrics.c

Lines changed: 57 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,9 @@ static int __discover(nvme_ctrl_t c, const struct nvme_fabrics_config *defcfg,
322322
return 0;
323323
}
324324

325-
static int discover_from_conf_file(nvme_host_t h, const char *desc,
326-
bool connect, const struct nvme_fabrics_config *defcfg)
325+
static int discover_from_conf_file(nvme_root_t r, nvme_host_t h,
326+
const char *desc, bool connect,
327+
const struct nvme_fabrics_config *defcfg)
327328
{
328329
char *transport = NULL, *traddr = NULL, *trsvcid = NULL;
329330
char *hostnqn = NULL, *hostid = NULL, *hostkey = NULL, *ctrlkey = NULL;
@@ -388,7 +389,7 @@ static int discover_from_conf_file(nvme_host_t h, const char *desc,
388389
if (!transport && !traddr)
389390
goto next;
390391

391-
c = nvme_create_ctrl(subsysnqn, transport, traddr,
392+
c = nvme_create_ctrl(r, subsysnqn, transport, traddr,
392393
cfg.host_traddr, cfg.host_iface, trsvcid);
393394
if (!c)
394395
goto next;
@@ -451,27 +452,22 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
451452
if (ret < 0)
452453
return ret;
453454

454-
switch (verbose) {
455-
case 0:
456-
nvme_log_level = LOG_WARNING;
457-
break;
458-
case 1:
459-
nvme_log_level = LOG_NOTICE;
460-
break;
461-
case 2:
462-
nvme_log_level = LOG_INFO;
463-
break;
464-
default:
465-
nvme_log_level = LOG_DEBUG;
466-
break;
467-
}
468-
if (quiet)
469-
nvme_log_level = LOG_ERR;
470-
471455
if (!strcmp(config_file, "none"))
472456
config_file = NULL;
473457

474-
r = nvme_scan(config_file);
458+
r = nvme_create_root(stderr, map_log_level(verbose, quiet));
459+
if (!r) {
460+
fprintf(stderr, "Failed to create topology root: %s\n",
461+
nvme_strerror(errno));
462+
return -errno;
463+
}
464+
ret = nvme_scan_topology(r, NULL);
465+
if (ret < 0) {
466+
fprintf(stderr, "Failed to scan topoplogy: %s\n",
467+
nvme_strerror(errno));
468+
return ret;
469+
}
470+
475471
if (persistent && !cfg.keep_alive_tmo)
476472
cfg.keep_alive_tmo = 30;
477473
if (!hostnqn)
@@ -493,7 +489,7 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
493489
nvme_host_set_dhchap_key(h, hostkey);
494490

495491
if (!device && !transport && !traddr) {
496-
ret = discover_from_conf_file(h, desc, connect, &cfg);
492+
ret = discover_from_conf_file(r, h, desc, connect, &cfg);
497493
goto out_free;
498494
}
499495

@@ -539,7 +535,7 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect)
539535
}
540536
if (!c) {
541537
/* No device or non-matching device, create a new controller */
542-
c = nvme_create_ctrl(subsysnqn, transport, traddr,
538+
c = nvme_create_ctrl(r, subsysnqn, transport, traddr,
543539
cfg.host_traddr, cfg.host_iface, trsvcid);
544540
if (!c) {
545541
ret = errno;
@@ -616,21 +612,6 @@ int nvmf_connect(const char *desc, int argc, char **argv)
616612
else
617613
return EINVAL;
618614

619-
switch (verbose) {
620-
case 0:
621-
nvme_log_level = LOG_WARNING;
622-
break;
623-
case 1:
624-
nvme_log_level = LOG_NOTICE;
625-
break;
626-
case 2:
627-
nvme_log_level = LOG_INFO;
628-
break;
629-
default:
630-
nvme_log_level = LOG_DEBUG;
631-
break;
632-
}
633-
634615
if (!subsysnqn) {
635616
fprintf(stderr,
636617
"required argument [--nqn | -n] not specified\n");
@@ -655,7 +636,20 @@ int nvmf_connect(const char *desc, int argc, char **argv)
655636
if (!strcmp(config_file, "none"))
656637
config_file = NULL;
657638

658-
r = nvme_scan(config_file);
639+
r = nvme_create_root(stderr, map_log_level(verbose, quiet));
640+
if (!r) {
641+
fprintf(stderr, "Failed to create topology root: %s\n",
642+
nvme_strerror(errno));
643+
return -errno;
644+
}
645+
ret = nvme_scan_topology(r, NULL);
646+
if (ret < 0) {
647+
fprintf(stderr, "Failed to scan topoplogy: %s\n",
648+
nvme_strerror(errno));
649+
return ret;
650+
}
651+
nvme_read_config(r, config_file);
652+
659653
if (!hostnqn)
660654
hostnqn = hnqn = nvmf_hostnqn_from_file();
661655
if (!hostid)
@@ -667,7 +661,7 @@ int nvmf_connect(const char *desc, int argc, char **argv)
667661
}
668662
if (hostkey)
669663
nvme_host_set_dhchap_key(h, hostkey);
670-
c = nvme_create_ctrl(subsysnqn, transport, traddr,
664+
c = nvme_create_ctrl(r, subsysnqn, transport, traddr,
671665
cfg.host_traddr, cfg.host_iface, trsvcid);
672666
if (!c) {
673667
errno = ENOMEM;
@@ -728,27 +722,25 @@ int nvmf_disconnect(const char *desc, int argc, char **argv)
728722
if (ret)
729723
return ret;
730724

731-
switch (cfg.verbose) {
732-
case 0:
733-
nvme_log_level = LOG_WARNING;
734-
break;
735-
case 1:
736-
nvme_log_level = LOG_NOTICE;
737-
break;
738-
case 2:
739-
nvme_log_level = LOG_INFO;
740-
break;
741-
default:
742-
nvme_log_level = LOG_DEBUG;
743-
break;
744-
}
745-
746725
if (!cfg.nqn && !cfg.device) {
747726
fprintf(stderr,
748727
"Neither device name [--device | -d] nor NQN [--nqn | -n] provided\n");
749728
return EINVAL;
750729
}
751-
r = nvme_scan(NULL);
730+
731+
r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
732+
if (!r) {
733+
fprintf(stderr, "Failed to create topology root: %s\n",
734+
nvme_strerror(errno));
735+
return -errno;
736+
}
737+
ret = nvme_scan_topology(r, NULL);
738+
if (ret < 0) {
739+
fprintf(stderr, "Failed to scan topoplogy: %s\n",
740+
nvme_strerror(errno));
741+
return ret;
742+
}
743+
752744
if (cfg.nqn) {
753745
int i = 0;
754746
char *n = cfg.nqn;
@@ -824,26 +816,17 @@ int nvmf_disconnect_all(const char *desc, int argc, char **argv)
824816
if (ret)
825817
return ret;
826818

827-
switch (cfg.verbose) {
828-
case 0:
829-
nvme_log_level = LOG_WARNING;
830-
break;
831-
case 1:
832-
nvme_log_level = LOG_NOTICE;
833-
break;
834-
case 2:
835-
nvme_log_level = LOG_INFO;
836-
break;
837-
default:
838-
nvme_log_level = LOG_DEBUG;
839-
break;
840-
}
841-
842-
r = nvme_scan(NULL);
819+
r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
843820
if (!r) {
844-
fprintf(stderr, "Failed to scan nvme subsystem: %s\n",
821+
fprintf(stderr, "Failed to create topology root: %s\n",
822+
nvme_strerror(errno));
823+
return -errno;
824+
}
825+
ret = nvme_scan_topology(r, NULL);
826+
if (ret < 0) {
827+
fprintf(stderr, "Failed to scan topoplogy: %s\n",
845828
nvme_strerror(errno));
846-
return errno;
829+
return ret;
847830
}
848831

849832
nvme_for_each_host(r, h) {

nvme.c

Lines changed: 59 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,30 @@ const char *nvme_strerror(int errnum)
163163
return strerror(errnum);
164164
}
165165

166+
int map_log_level(int verbose, bool quiet)
167+
{
168+
int log_level;
169+
170+
switch (verbose) {
171+
case 0:
172+
log_level = LOG_WARNING;
173+
break;
174+
case 1:
175+
log_level = LOG_NOTICE;
176+
break;
177+
case 2:
178+
log_level = LOG_INFO;
179+
break;
180+
default:
181+
log_level = LOG_DEBUG;
182+
break;
183+
}
184+
if (quiet)
185+
log_level = LOG_ERR;
186+
187+
return log_level;
188+
}
189+
166190
static ssize_t getrandom_bytes(void *buf, size_t buflen)
167191
{
168192
#if HAVE_SYS_RANDOM
@@ -2338,6 +2362,7 @@ static int list_subsys(int argc, char **argv, struct command *cmd,
23382362
enum nvme_print_flags flags;
23392363
const char *desc = "Retrieve information for subsystems";
23402364
const char *verbose = "Increase output verbosity";
2365+
nvme_scan_filter_t filter = NULL;
23412366
int err;
23422367

23432368
struct config {
@@ -2374,21 +2399,31 @@ static int list_subsys(int argc, char **argv, struct command *cmd,
23742399
if (cfg.verbose)
23752400
flags |= VERBOSE;
23762401

2377-
if (devicename)
2378-
r = nvme_scan_filter(nvme_match_device_filter);
2379-
else
2380-
r = nvme_scan(NULL);
2381-
2382-
if (r) {
2383-
nvme_show_subsystem_list(r, flags);
2384-
nvme_free_tree(r);
2385-
} else {
2402+
r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
2403+
if (!r) {
23862404
if (devicename)
2387-
fprintf(stderr, "Failed to scan nvme subsystem for %s\n", devicename);
2405+
fprintf(stderr,
2406+
"Failed to scan nvme subsystem for %s\n",
2407+
devicename);
23882408
else
23892409
fprintf(stderr, "Failed to scan nvme subsystem\n");
23902410
err = -errno;
2411+
goto ret;
23912412
}
2413+
2414+
if (devicename)
2415+
filter = nvme_match_device_filter;
2416+
2417+
err = nvme_scan_topology(r, filter);
2418+
if (err) {
2419+
fprintf(stderr, "Failed to scan topology: %s\n",
2420+
nvme_strerror(errno));
2421+
goto ret;
2422+
}
2423+
2424+
nvme_show_subsystem_list(r, flags);
2425+
nvme_free_tree(r);
2426+
23922427
ret:
23932428
return err;
23942429
}
@@ -2431,14 +2466,21 @@ static int list(int argc, char **argv, struct command *cmd, struct plugin *plugi
24312466
if (cfg.verbose)
24322467
flags |= VERBOSE;
24332468

2434-
r = nvme_scan(NULL);
2435-
if (r) {
2436-
nvme_show_list_items(r, flags);
2437-
nvme_free_tree(r);
2438-
} else {
2439-
fprintf(stderr, "Failed to scan nvme subsystems\n");
2440-
err = -errno;
2469+
r = nvme_create_root(stderr, map_log_level(cfg.verbose, false));
2470+
if (!r) {
2471+
fprintf(stderr, "Failed to create topology root: %s\n",
2472+
nvme_strerror(errno));
2473+
return -errno;
24412474
}
2475+
err = nvme_scan_topology(r, NULL);
2476+
if (err < 0) {
2477+
fprintf(stderr, "Failed to scan topoplogy: %s\n",
2478+
nvme_strerror(errno));
2479+
return err;
2480+
}
2481+
2482+
nvme_show_list_items(r, flags);
2483+
nvme_free_tree(r);
24422484

24432485
return err;
24442486
}

nvme.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,5 @@ void d(unsigned char *buf, int len, int width, int group);
105105
void d_raw(unsigned char *buf, unsigned len);
106106
uint64_t int48_to_long(uint8_t *data);
107107

108+
int map_log_level(int verbose, bool quiet);
108109
#endif /* _NVME_H */

subprojects/libnvme.wrap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[wrap-git]
22
url = https://github.com/linux-nvme/libnvme.git
3-
revision = fcf7edfe4daf298ef4a2790666a9ba7b579f34e1
3+
revision = 5b397aa3a2a70331373d321cf357055d3b1e7e4c
44

55
[provide]
66
libnvme = libnvme_dep

0 commit comments

Comments
 (0)