From: mwilck@suse.com
To: Keith Busch <kbusch@kernel.org>, linux-nvme@lists.infradead.org
Cc: Hannes Reinecke <hare@suse.de>,
Chaitanya Kulkarni <Chaitanya.Kulkarni@wdc.com>,
Martin Wilck <mwilck@suse.com>
Subject: [PATCH 07/35] fabrics: use log() macro
Date: Tue, 26 Jan 2021 21:32:56 +0100 [thread overview]
Message-ID: <20210126203324.23610-8-mwilck@suse.com> (raw)
In-Reply-To: <20210126203324.23610-1-mwilck@suse.com>
From: Martin Wilck <mwilck@suse.com>
Fabrics functionality will be used by the monitor code, we
need consistent logging. This patch causes no functional change
for the fabrics module.
Signed-off-by: Martin Wilck <mwilck@suse.com>
---
fabrics.c | 83 ++++++++++++++++++++++++++++++-------------------------
1 file changed, 45 insertions(+), 38 deletions(-)
diff --git a/fabrics.c b/fabrics.c
index 17711cf..555b6b4 100644
--- a/fabrics.c
+++ b/fabrics.c
@@ -32,6 +32,8 @@
#include <libgen.h>
#include <sys/stat.h>
#include <stddef.h>
+#include <syslog.h>
+#include <time.h>
#include <sys/types.h>
#include <arpa/inet.h>
@@ -46,6 +48,10 @@
#include "util/argconfig.h"
#include "common.h"
+#include "log.h"
+
+int log_level = LOG_NOTICE;
+bool log_timestamp;
#ifdef HAVE_SYSTEMD
#include <systemd/sd-id128.h>
@@ -86,7 +92,6 @@ static struct config {
int hdr_digest;
int data_digest;
bool persistent;
- bool quiet;
bool matching_only;
} cfg = { .ctrl_loss_tmo = NVMF_DEF_CTRL_LOSS_TMO };
@@ -345,7 +350,7 @@ static char *find_ctrl_with_connectargs(struct connect_args *args)
n = scandir(SYS_NVME, &devices, scan_ctrls_filter, alphasort);
if (n < 0) {
- fprintf(stderr, "no NVMe controller(s) detected.\n");
+ log(LOG_ERR, "no NVMe controller(s) detected.\n");
return NULL;
}
@@ -353,7 +358,7 @@ static char *find_ctrl_with_connectargs(struct connect_args *args)
if (ctrl_matches_connectargs(devices[i]->d_name, args)) {
devname = strdup(devices[i]->d_name);
if (devname == NULL)
- fprintf(stderr, "no memory for ctrl name %s\n",
+ log(LOG_ERR, "no memory for ctrl name %s\n",
devices[i]->d_name);
goto cleanup_devices;
}
@@ -415,7 +420,7 @@ static int add_ctrl(const char *argstr)
fd = open(PATH_NVME_FABRICS, O_RDWR);
if (fd < 0) {
- fprintf(stderr, "Failed to open %s: %s\n",
+ log(LOG_ERR, "Failed to open %s: %s\n",
PATH_NVME_FABRICS, strerror(errno));
ret = -errno;
goto out;
@@ -423,8 +428,8 @@ static int add_ctrl(const char *argstr)
ret = write(fd, argstr, len);
if (ret != len) {
- if (errno != EALREADY || !cfg.quiet)
- fprintf(stderr, "Failed to write to %s: %s\n",
+ if (errno != EALREADY)
+ log(LOG_NOTICE, "Failed to write to %s: %s\n",
PATH_NVME_FABRICS, strerror(errno));
ret = -errno;
goto out_close;
@@ -432,7 +437,7 @@ static int add_ctrl(const char *argstr)
len = read(fd, buf, BUF_SIZE);
if (len < 0) {
- fprintf(stderr, "Failed to read from %s: %s\n",
+ log(LOG_ERR, "Failed to read from %s: %s\n",
PATH_NVME_FABRICS, strerror(errno));
ret = -errno;
goto out_close;
@@ -459,7 +464,7 @@ static int add_ctrl(const char *argstr)
}
out_fail:
- fprintf(stderr, "Failed to parse ctrl info for \"%s\"\n", argstr);
+ log(LOG_ERR, "Failed to parse ctrl info for \"%s\"\n", argstr);
ret = -EINVAL;
out_close:
close(fd);
@@ -474,7 +479,7 @@ static int remove_ctrl_by_path(char *sysfs_path)
fd = open(sysfs_path, O_WRONLY);
if (fd < 0) {
ret = -errno;
- fprintf(stderr, "Failed to open %s: %s\n", sysfs_path,
+ log(LOG_ERR, "Failed to open %s: %s\n", sysfs_path,
strerror(errno));
goto out;
}
@@ -528,7 +533,7 @@ static int nvmf_get_log_page_discovery(const char *dev_path,
fd = open(dev_path, O_RDWR);
if (fd < 0) {
error = -errno;
- fprintf(stderr, "Failed to open %s: %s\n",
+ log(LOG_ERR, "Failed to open %s: %s\n",
dev_path, strerror(errno));
goto out;
}
@@ -699,7 +704,7 @@ static void save_discovery_log(struct nvmf_disc_rsp_page_hdr *log, int numrec)
fd = open(cfg.raw, O_CREAT|O_RDWR|O_TRUNC, S_IRUSR|S_IWUSR);
if (fd < 0) {
- fprintf(stderr, "failed to open %s: %s\n",
+ log(LOG_ERR, "failed to open %s: %s\n",
cfg.raw, strerror(errno));
return;
}
@@ -708,7 +713,7 @@ static void save_discovery_log(struct nvmf_disc_rsp_page_hdr *log, int numrec)
numrec * sizeof(struct nvmf_disc_rsp_page_entry);
ret = write(fd, log, len);
if (ret < 0)
- fprintf(stderr, "failed to write to %s: %s\n",
+ log(LOG_ERR, "failed to write to %s: %s\n",
cfg.raw, strerror(errno));
else
printf("Discovery log is saved to %s\n", cfg.raw);
@@ -855,13 +860,13 @@ static int build_options(char *argstr, int max_len, bool discover)
int len;
if (!cfg.transport) {
- fprintf(stderr, "need a transport (-t) argument\n");
+ log(LOG_ERR, "need a transport (-t) argument\n");
return -EINVAL;
}
if (strncmp(cfg.transport, "loop", 4)) {
if (!cfg.traddr) {
- fprintf(stderr, "need a address (-a) argument\n");
+ log(LOG_ERR, "need a address (-a) argument\n");
return -EINVAL;
}
}
@@ -945,7 +950,7 @@ static int hostname2traddr(struct config *cfg)
ret = getaddrinfo(cfg->traddr, NULL, &hints, &host_info);
if (ret) {
- fprintf(stderr, "failed to resolve host %s info\n", cfg->traddr);
+ log(LOG_ERR, "failed to resolve host %s info\n", cfg->traddr);
return ret;
}
@@ -961,14 +966,14 @@ static int hostname2traddr(struct config *cfg)
addrstr, NVMF_TRADDR_SIZE);
break;
default:
- fprintf(stderr, "unrecognized address family (%d) %s\n",
+ log(LOG_ERR, "unrecognized address family (%d) %s\n",
host_info->ai_family, cfg->traddr);
ret = -EINVAL;
goto free_addrinfo;
}
if (!p) {
- fprintf(stderr, "failed to get traddr for %s\n", cfg->traddr);
+ log(LOG_ERR, "failed to get traddr for %s\n", cfg->traddr);
ret = -errno;
goto free_addrinfo;
}
@@ -996,7 +1001,7 @@ retry:
case NVME_NQN_NVME:
break;
default:
- fprintf(stderr, "skipping unsupported subtype %d\n",
+ log(LOG_ERR, "skipping unsupported subtype %d\n",
e->subtype);
return -EINVAL;
}
@@ -1085,7 +1090,7 @@ retry:
transport = trtype_str(e->trtype);
if (!strcmp(transport, "unrecognized")) {
- fprintf(stderr, "skipping unsupported transport %d\n",
+ log(LOG_ERR, "skipping unsupported transport %d\n",
e->trtype);
return -EINVAL;
}
@@ -1131,7 +1136,7 @@ retry:
p += len;
break;
default:
- fprintf(stderr, "skipping unsupported adrfam\n");
+ log(LOG_ERR, "skipping unsupported adrfam\n");
return -EINVAL;
}
break;
@@ -1146,7 +1151,7 @@ retry:
p += len;
break;
default:
- fprintf(stderr, "skipping unsupported adrfam\n");
+ log(LOG_ERR, "skipping unsupported adrfam\n");
return -EINVAL;
}
break;
@@ -1231,9 +1236,7 @@ static int connect_ctrls(struct nvmf_disc_rsp_page_hdr *log, int numrec)
if (instance == -EALREADY) {
const char *traddr = log->entries[i].traddr;
- if (!cfg.quiet)
- fprintf(stderr,
- "traddr=%.*s is already connected\n",
+ log(LOG_NOTICE, "traddr=%.*s is already connected\n",
space_strip_len(NVMF_TRADDR_SIZE,
traddr),
traddr);
@@ -1321,12 +1324,12 @@ static int do_discover(char *argstr, bool connect)
print_discovery_log(log, numrec);
break;
case DISC_GET_NUMRECS:
- fprintf(stderr,
+ log(LOG_ERR,
"Get number of discovery log entries failed.\n");
ret = status;
break;
case DISC_GET_LOG:
- fprintf(stderr, "Get discovery log entries failed.\n");
+ log(LOG_ERR, "Get discovery log entries failed.\n");
ret = status;
break;
case DISC_NO_LOG:
@@ -1338,12 +1341,12 @@ static int do_discover(char *argstr, bool connect)
ret = -EAGAIN;
break;
case DISC_NOT_EQUAL:
- fprintf(stderr,
+ log(LOG_ERR,
"Numrec values of last two get discovery log page not equal\n");
ret = -EBADSLT;
break;
default:
- fprintf(stderr, "Get discovery log page failed: %d\n", ret);
+ log(LOG_ERR, "Get discovery log page failed: %d\n", ret);
break;
}
@@ -1359,7 +1362,7 @@ static int discover_from_conf_file(const char *desc, char *argstr,
f = fopen(PATH_NVMF_DISC, "r");
if (f == NULL) {
- fprintf(stderr, "No discover params given and no %s conf\n",
+ log(LOG_ERR, "No discover params given and no %s conf\n",
PATH_NVMF_DISC);
return -EINVAL;
}
@@ -1370,14 +1373,14 @@ static int discover_from_conf_file(const char *desc, char *argstr,
args = strdup(line);
if (!args) {
- fprintf(stderr, "failed to strdup args\n");
+ log(LOG_ERR, "failed to strdup args\n");
ret = -ENOMEM;
goto out;
}
argv = calloc(MAX_DISC_ARGS, BUF_SIZE);
if (!argv) {
- fprintf(stderr, "failed to allocate argv vector\n");
+ log(LOG_ERR, "failed to allocate argv vector\n");
free(args);
ret = -ENOMEM;
goto out;
@@ -1428,6 +1431,7 @@ int fabrics_discover(const char *desc, int argc, char **argv, bool connect)
{
char argstr[BUF_SIZE];
int ret;
+ bool quiet = false;
OPT_ARGS(opts) = {
OPT_LIST("transport", 't', &cfg.transport, "transport type"),
@@ -1449,7 +1453,7 @@ int fabrics_discover(const char *desc, int argc, char **argv, bool connect)
OPT_INT("nr-poll-queues", 'P', &cfg.nr_poll_queues, "number of poll queues to use (default 0)"),
OPT_INT("queue-size", 'Q', &cfg.queue_size, "number of io queue elements to use (default 128)"),
OPT_FLAG("persistent", 'p', &cfg.persistent, "persistent discovery connection"),
- OPT_FLAG("quiet", 'S', &cfg.quiet, "suppress already connected errors"),
+ OPT_FLAG("quiet", 'S', &quiet, "suppress already connected errors"),
OPT_FLAG("matching", 'm', &cfg.matching_only, "connect only records matching the traddr"),
OPT_END()
};
@@ -1459,6 +1463,9 @@ int fabrics_discover(const char *desc, int argc, char **argv, bool connect)
if (ret)
goto out;
+ if (quiet)
+ log_level = LOG_WARNING;
+
if (cfg.device && !strcmp(cfg.device, "none"))
cfg.device = NULL;
@@ -1534,7 +1541,7 @@ int fabrics_connect(const char *desc, int argc, char **argv)
goto out;
if (!cfg.nqn) {
- fprintf(stderr, "need a -n argument\n");
+ log(LOG_ERR, "need a -n argument\n");
ret = -EINVAL;
goto out;
}
@@ -1572,7 +1579,7 @@ static int disconnect_subsys(char *nqn, char *ctrl)
fd = open(sysfs_nqn_path, O_RDONLY);
if (fd < 0) {
- fprintf(stderr, "Failed to open %s: %s\n",
+ log(LOG_ERR, "Failed to open %s: %s\n",
sysfs_nqn_path, strerror(errno));
goto free;
}
@@ -1646,7 +1653,7 @@ int fabrics_disconnect(const char *desc, int argc, char **argv)
goto out;
if (!cfg.nqn && !cfg.device) {
- fprintf(stderr, "need a -n or -d argument\n");
+ log(LOG_ERR, "need a -n or -d argument\n");
ret = -EINVAL;
goto out;
}
@@ -1654,7 +1661,7 @@ int fabrics_disconnect(const char *desc, int argc, char **argv)
if (cfg.nqn) {
ret = disconnect_by_nqn(cfg.nqn);
if (ret < 0)
- fprintf(stderr, "Failed to disconnect by NQN: %s\n",
+ log(LOG_ERR, "Failed to disconnect by NQN: %s\n",
cfg.nqn);
else {
printf("NQN:%s disconnected %d controller(s)\n", cfg.nqn, ret);
@@ -1665,7 +1672,7 @@ int fabrics_disconnect(const char *desc, int argc, char **argv)
if (cfg.device) {
ret = disconnect_by_device(cfg.device);
if (ret)
- fprintf(stderr,
+ log(LOG_ERR,
"Failed to disconnect by device name: %s\n",
cfg.device);
}
@@ -1689,7 +1696,7 @@ int fabrics_disconnect_all(const char *desc, int argc, char **argv)
err = scan_subsystems(&t, NULL, 0, NULL);
if (err) {
- fprintf(stderr, "Failed to scan namespaces\n");
+ log(LOG_ERR, "Failed to scan namespaces\n");
goto out;
}
--
2.29.2
_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
next prev parent reply other threads:[~2021-01-26 20:35 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-26 20:32 [PATCH 00/35] RFC: add "nvme monitor" subcommand mwilck
2021-01-26 20:32 ` [PATCH 01/35] nvme-monitor: add new stub mwilck
2021-01-26 20:32 ` [PATCH 02/35] monitor: create udev socket mwilck
2021-01-26 20:32 ` [PATCH 03/35] monitor: initialize signal handling mwilck
2021-01-26 20:32 ` [PATCH 04/35] monitor: add main loop for uevent monitoring mwilck
2021-01-26 20:32 ` [PATCH 05/35] monitor: add uevent filters mwilck
2021-02-04 6:58 ` Hannes Reinecke
2021-01-26 20:32 ` [PATCH 06/35] monitor: Create a log() macro mwilck
2021-02-04 7:01 ` Hannes Reinecke
2021-02-04 9:14 ` Martin Wilck
2021-01-26 20:32 ` mwilck [this message]
2021-02-04 7:02 ` [PATCH 07/35] fabrics: use " Hannes Reinecke
2021-01-26 20:32 ` [PATCH 08/35] monitor: add command line options to control logging mwilck
2021-02-04 7:04 ` Hannes Reinecke
2021-02-04 9:18 ` Martin Wilck
2021-01-26 20:32 ` [PATCH 09/35] nvme_get_ctrl_attr(): constify "path" argument mwilck
2021-02-04 7:05 ` Hannes Reinecke
2021-01-26 20:32 ` [PATCH 10/35] fabrics: export do_discover(), build_options() and config mwilck
2021-02-04 7:09 ` Hannes Reinecke
2021-02-04 9:21 ` Martin Wilck
2021-01-26 20:33 ` [PATCH 11/35] monitor: add option -A / --autoconnect mwilck
2021-01-29 18:59 ` Sagi Grimberg
2021-01-29 19:33 ` Martin Wilck
2021-01-29 20:09 ` Sagi Grimberg
2021-02-04 7:13 ` Hannes Reinecke
2021-01-26 20:33 ` [PATCH 12/35] monitor: add helpers for __attribute__((cleanup)) mwilck
2021-02-04 7:14 ` Hannes Reinecke
2021-01-26 20:33 ` [PATCH 13/35] monitor: disable nvmf-autoconnect udev rules in autoconnect mode mwilck
2021-01-29 1:52 ` Sagi Grimberg
2021-01-29 14:16 ` Martin Wilck
2021-01-29 18:54 ` Sagi Grimberg
2021-02-04 7:16 ` Hannes Reinecke
2021-02-04 9:37 ` Martin Wilck
2021-01-26 20:33 ` [PATCH 14/35] monitor: implement handling of fc_udev_device mwilck
2021-01-26 20:33 ` [PATCH 15/35] monitor: implement handling of nvme AEN events mwilck
2021-01-26 20:33 ` [PATCH 16/35] monitor: reset children's signal disposition mwilck
2021-01-29 1:54 ` Sagi Grimberg
2021-01-29 14:18 ` Martin Wilck
2021-01-26 20:33 ` [PATCH 17/35] monitor: handle SIGCHLD for terminated child processes mwilck
2021-01-29 1:54 ` Sagi Grimberg
2021-01-26 20:33 ` [PATCH 18/35] monitor: add "--persistent/-p" flag mwilck
2021-01-29 19:02 ` Sagi Grimberg
2021-01-29 19:45 ` Martin Wilck
2021-01-26 20:33 ` [PATCH 19/35] fabrics: use "const char *" in struct config mwilck
2021-02-04 7:20 ` Hannes Reinecke
2021-01-26 20:33 ` [PATCH 20/35] fabrics: export arg_str(), parse_conn_arg(), and remove_ctrl() mwilck
2021-01-26 20:33 ` [PATCH 21/35] nvme-cli: add "list.h" mwilck
2021-01-26 20:33 ` [PATCH 22/35] conn-db: add simple connection registry mwilck
2021-01-29 1:59 ` Sagi Grimberg
2021-01-29 14:18 ` Martin Wilck
2021-01-26 20:33 ` [PATCH 23/35] monitor: handle restart of pending discoveries mwilck
2021-01-26 20:33 ` [PATCH 24/35] monitor: monitor_discovery(): try to reuse existing controllers mwilck
2021-01-26 20:33 ` [PATCH 25/35] monitor: read existing connections on startup mwilck
2021-01-26 20:33 ` [PATCH 26/35] monitor: implement starting discovery controllers " mwilck
2021-01-29 21:06 ` Sagi Grimberg
2021-01-29 21:13 ` Martin Wilck
2021-01-29 21:18 ` Sagi Grimberg
2021-01-26 20:33 ` [PATCH 27/35] monitor: implement cleanup of created discovery controllers mwilck
2021-01-26 20:33 ` [PATCH 28/35] monitor: basic handling of add/remove uevents for nvme controllers mwilck
2021-01-26 20:33 ` [PATCH 29/35] monitor: kill running discovery tasks on exit mwilck
2021-01-26 20:33 ` [PATCH 30/35] monitor: add connection property options from connect-all mwilck
2021-01-26 20:33 ` [PATCH 31/35] completions: add completions for nvme monitor mwilck
2021-01-26 20:33 ` [PATCH 32/35] nvmf-autoconnect: add unit file for nvme-monitor.service mwilck
2021-01-29 19:08 ` Sagi Grimberg
2021-01-29 19:50 ` Martin Wilck
2021-01-26 20:33 ` [PATCH 33/35] nvme-connect-all(1): fix documentation for --quiet/-S mwilck
2021-01-29 19:09 ` Sagi Grimberg
2021-01-26 20:33 ` [PATCH 34/35] nvme-monitor(1): add man page for nvme-monitor mwilck
2021-01-26 20:33 ` [PATCH 35/35] monitor: add option --keep/-K mwilck
2021-01-29 19:10 ` Sagi Grimberg
2021-01-29 19:53 ` Martin Wilck
2021-01-29 20:16 ` Sagi Grimberg
2021-01-29 20:30 ` Martin Wilck
2021-01-29 20:45 ` Sagi Grimberg
2021-01-29 20:51 ` Martin Wilck
2021-01-29 20:57 ` Sagi Grimberg
2021-01-29 21:05 ` Martin Wilck
2021-01-29 21:11 ` Sagi Grimberg
2021-01-29 21:15 ` Martin Wilck
2021-01-29 21:21 ` Sagi Grimberg
2021-02-04 7:34 ` Hannes Reinecke
2021-02-04 9:41 ` Martin Wilck
2021-01-29 1:14 ` [PATCH 00/35] RFC: add "nvme monitor" subcommand Sagi Grimberg
2021-01-29 11:18 ` Martin Wilck
2021-01-29 20:08 ` Sagi Grimberg
2021-01-29 20:27 ` Martin Wilck
2021-02-04 7:52 ` Hannes Reinecke
2021-02-22 19:02 ` Enzo Matsumiya
2021-02-22 21:05 ` Martin Wilck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210126203324.23610-8-mwilck@suse.com \
--to=mwilck@suse.com \
--cc=Chaitanya.Kulkarni@wdc.com \
--cc=hare@suse.de \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).