Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initialize logging for commands #2288

Merged
merged 3 commits into from
May 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 32 additions & 27 deletions nvme.c
Original file line number Diff line number Diff line change
Expand Up @@ -432,21 +432,34 @@ static int get_dev(struct nvme_dev **dev, int argc, char **argv, int flags)
return ret != 0 ? -errno : 0;
}

static int parse_args(int argc, char *argv[], const char *desc,
struct argconfig_commandline_options *opts)
{
int ret;

ret = argconfig_parse(argc, argv, desc, opts);
if (ret)
return ret;

log_level = map_log_level(verbose_level, false);
nvme_init_default_logging(stderr, log_level, false, false);

return 0;
}

int parse_and_open(struct nvme_dev **dev, int argc, char **argv,
const char *desc,
struct argconfig_commandline_options *opts)
{
int ret;

ret = argconfig_parse(argc, argv, desc, opts);
ret = parse_args(argc, argv, desc, opts);
if (ret)
return ret;

ret = get_dev(dev, argc, argv, O_RDONLY);
if (ret < 0)
argconfig_print_help(desc, opts);
else
log_level = map_log_level(verbose_level, false);

return ret;
}
Expand Down Expand Up @@ -3269,7 +3282,7 @@ static bool nvme_match_device_filter(nvme_subsystem_t s,
static int list_subsys(int argc, char **argv, struct command *cmd,
struct plugin *plugin)
{
nvme_root_t r = NULL;
_cleanup_nvme_root_ nvme_root_t r = NULL;
enum nvme_print_flags flags;
const char *desc = "Retrieve information for subsystems";
nvme_scan_filter_t filter = NULL;
Expand All @@ -3279,9 +3292,9 @@ static int list_subsys(int argc, char **argv, struct command *cmd,

NVME_ARGS(opts);

err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err < 0)
goto ret;
return err;

devname = NULL;
if (optind < argc)
Expand All @@ -3303,17 +3316,15 @@ static int list_subsys(int argc, char **argv, struct command *cmd,
nvme_show_error("Failed to scan nvme subsystem for %s", devname);
else
nvme_show_error("Failed to scan nvme subsystem");
err = -errno;
goto ret;
return -errno;
}

if (devname) {
int subsys_num;

if (sscanf(devname, "nvme%dn%d", &subsys_num, &nsid) != 2) {
nvme_show_error("Invalid device name %s", devname);
err = -EINVAL;
goto ret;
return -EINVAL;
}
filter = nvme_match_device_filter;
}
Expand All @@ -3322,27 +3333,24 @@ static int list_subsys(int argc, char **argv, struct command *cmd,
if (err) {
if (errno != ENOENT)
nvme_show_error("Failed to scan topology: %s", nvme_strerror(errno));
goto ret;
return -errno;
}

nvme_show_subsystem_list(r, nsid != NVME_NSID_ALL, flags);

ret:
if (r)
nvme_free_tree(r);
return err;
return 0;
}

static int list(int argc, char **argv, struct command *cmd, struct plugin *plugin)
{
const char *desc = "Retrieve basic information for all NVMe namespaces";
enum nvme_print_flags flags;
nvme_root_t r;
_cleanup_nvme_root_ nvme_root_t r = NULL;
int err = 0;

NVME_ARGS(opts);

err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err < 0)
return err;

Expand All @@ -3364,12 +3372,10 @@ static int list(int argc, char **argv, struct command *cmd, struct plugin *plugi
if (err < 0) {
if (errno != ENOENT)
nvme_show_error("Failed to scan topology: %s", nvme_strerror(errno));
nvme_free_tree(r);
return err;
}

nvme_show_list_items(r, flags);
nvme_free_tree(r);

return err;
}
Expand Down Expand Up @@ -6128,7 +6134,7 @@ static int format_cmd(int argc, char **argv, struct command *cmd, struct plugin
OPT_FLAG("force", 0, &cfg.force, force),
OPT_SUFFIX("block-size", 'b', &cfg.bs, bs));

err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err)
return err;

Expand Down Expand Up @@ -7783,7 +7789,7 @@ static int submit_io(int opcode, char *command, const char *desc, int argc, char
if (err)
return err;
} else {
err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err)
return err;
err = open_exclusive(&dev, argc, argv, cfg.force);
Expand Down Expand Up @@ -8975,7 +8981,7 @@ static int gen_dhchap_key(int argc, char **argv, struct command *command, struct
OPT_STR("nqn", 'n', &cfg.nqn, nqn),
OPT_UINT("hmac", 'm', &cfg.hmac, hmac));

err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err)
return err;

Expand Down Expand Up @@ -9089,7 +9095,7 @@ static int check_dhchap_key(int argc, char **argv, struct command *command, stru
NVME_ARGS(opts,
OPT_STR("key", 'k', &cfg.key, key));

err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err)
return err;

Expand Down Expand Up @@ -9208,7 +9214,7 @@ static int gen_tls_key(int argc, char **argv, struct command *command, struct pl
OPT_UINT("identity", 'I', &cfg.identity, identity),
OPT_FLAG("insert", 'i', &cfg.insert, insert));

err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err)
return err;
if (cfg.hmac < 1 || cfg.hmac > 2) {
Expand Down Expand Up @@ -9326,7 +9332,7 @@ static int check_tls_key(int argc, char **argv, struct command *command, struct
OPT_UINT("identity", 'I', &cfg.identity, identity),
OPT_FLAG("insert", 'i', &cfg.insert, insert));

err = argconfig_parse(argc, argv, desc, opts);
err = parse_args(argc, argv, desc, opts);
if (err)
return err;

Expand Down Expand Up @@ -9508,7 +9514,7 @@ static int show_topology_cmd(int argc, char **argv, struct command *command, str
const char *desc = "Show the topology\n";
const char *ranking = "Ranking order: namespace|ctrl";
enum nvme_print_flags flags;
nvme_root_t r;
_cleanup_nvme_root_ nvme_root_t r = NULL;
igaw marked this conversation as resolved.
Show resolved Hide resolved
enum nvme_cli_topo_ranking rank;
int err;

Expand Down Expand Up @@ -9560,7 +9566,6 @@ static int show_topology_cmd(int argc, char **argv, struct command *command, str
}

nvme_show_topology(r, rank, flags);
nvme_free_tree(r);

return err;
}
Expand Down
2 changes: 1 addition & 1 deletion subprojects/libnvme.wrap
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[wrap-git]
url = https://github.com/linux-nvme/libnvme.git
revision = 80c5cf2aa45f4afc7571dc48850fae3fd62828af
revision = bec7a98636546f68ff1efe6794b2d546cf63febc

[provide]
libnvme = libnvme_dep
Expand Down
9 changes: 9 additions & 0 deletions util/cleanup.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#include <unistd.h>
#include <stdlib.h>

#include <libnvme.h>

#include "util/mem.h"

#define __cleanup__(fn) __attribute__((cleanup(fn)))
Expand Down Expand Up @@ -34,4 +36,11 @@ static inline void close_file(int *f)
}
#define _cleanup_file_ __cleanup__(close_file)

static inline void cleanup_nvme_root(nvme_root_t *r)
{
if (r)
nvme_free_tree(*r);
}
#define _cleanup_nvme_root_ __cleanup__(cleanup_nvme_root)

#endif