[PATCH 07/35] fabrics: use log() macro

mwilck
2021-01-26T20:35:03Z

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