From: Jeff Layton <jlayton@kernel.org>
To: Steve Dickson <steved@redhat.com>
Cc: Scott Mayhew <smayhew@redhat.com>,
Yongcheng Yang <yoyang@redhat.com>,
linux-nfs@vger.kernel.org, Jeff Layton <jlayton@kernel.org>
Subject: [PATCH v2 1/3] nfsdctl: convert to xlog()
Date: Fri, 10 Jan 2025 08:46:21 -0500 [thread overview]
Message-ID: <20250110-lockd-nl-v2-1-e3abe78cc7fb@kernel.org> (raw)
In-Reply-To: <20250110-lockd-nl-v2-0-e3abe78cc7fb@kernel.org>
Convert all of the fprintf(stderr, ...) calls to xlog(L_ERROR, ...)
calls. Change the -d option to not take an argument, and add a -s
option that will make nfsdctl log to syslog instead of stderr.
Also remove the extraneous error message in run_commandline, and add
a couple of trivial debug messages when the program starts and ends
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
utils/nfsdctl/nfsdctl.8 | 9 +++-
utils/nfsdctl/nfsdctl.adoc | 3 ++
utils/nfsdctl/nfsdctl.c | 111 +++++++++++++++++++++++++--------------------
3 files changed, 71 insertions(+), 52 deletions(-)
diff --git a/utils/nfsdctl/nfsdctl.8 b/utils/nfsdctl/nfsdctl.8
index b08fe8036a70155b8f8713ffccb861b98b15302a..39ae1855ae50e94da113981d5e8cf8ac14440c3a 100644
--- a/utils/nfsdctl/nfsdctl.8
+++ b/utils/nfsdctl/nfsdctl.8
@@ -2,12 +2,12 @@
.\" Title: nfsdctl
.\" Author: Jeff Layton
.\" Generator: Asciidoctor 2.0.20
-.\" Date: 2024-12-30
+.\" Date: 2025-01-09
.\" Manual: \ \&
.\" Source: \ \&
.\" Language: English
.\"
-.TH "NFSDCTL" "8" "2024-12-30" "\ \&" "\ \&"
+.TH "NFSDCTL" "8" "2025-01-09" "\ \&" "\ \&"
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.ss \n[.ss] 0
@@ -60,6 +60,11 @@ Enable debug logging
Print program help text
.RE
.sp
+\fB\-s, \-\-syslog\fP
+.RS 4
+Log to syslog instead of to stderr (the default)
+.RE
+.sp
\fB\-V, \-\-version\fP
.RS 4
Print program version
diff --git a/utils/nfsdctl/nfsdctl.adoc b/utils/nfsdctl/nfsdctl.adoc
index c5921458a8e81e749d264cc7dd8344889ec71ac5..2114693042594297b7c5d8600ca16813a0f2356c 100644
--- a/utils/nfsdctl/nfsdctl.adoc
+++ b/utils/nfsdctl/nfsdctl.adoc
@@ -30,6 +30,9 @@ To get information about different subcommand usage, pass the subcommand the
*-h, --help*::
Print program help text
+*-s, --syslog*::
+ Log to syslog instead of to stderr (the default)
+
*-V, --version*::
Print program version
diff --git a/utils/nfsdctl/nfsdctl.c b/utils/nfsdctl/nfsdctl.c
index ef917ff037e4ef9c532f814eb144ade642112036..e6819aec9890ae675a43b8259021ebaa909b08b9 100644
--- a/utils/nfsdctl/nfsdctl.c
+++ b/utils/nfsdctl/nfsdctl.c
@@ -43,8 +43,6 @@
* gcc -I/usr/include/libnl3/ -o <prog-name> <prog-name>.c -lnl-3 -lnl-genl-3
*/
-static int debug_level;
-
struct nfs_version {
uint8_t major;
uint8_t minor;
@@ -388,7 +386,7 @@ static struct nl_sock *netlink_sock_alloc(void)
return NULL;
if (genl_connect(sock)) {
- fprintf(stderr, "Failed to connect to generic netlink\n");
+ xlog(L_ERROR, "Failed to connect to generic netlink");
nl_socket_free(sock);
return NULL;
}
@@ -407,18 +405,18 @@ static struct nl_msg *netlink_msg_alloc(struct nl_sock *sock)
id = genl_ctrl_resolve(sock, NFSD_FAMILY_NAME);
if (id < 0) {
- fprintf(stderr, "%s not found\n", NFSD_FAMILY_NAME);
+ xlog(L_ERROR, "%s not found", NFSD_FAMILY_NAME);
return NULL;
}
msg = nlmsg_alloc();
if (!msg) {
- fprintf(stderr, "failed to allocate netlink message\n");
+ xlog(L_ERROR, "failed to allocate netlink message");
return NULL;
}
if (!genlmsg_put(msg, 0, 0, id, 0, 0, 0, 0)) {
- fprintf(stderr, "failed to allocate netlink message\n");
+ xlog(L_ERROR, "failed to allocate netlink message");
nlmsg_free(msg);
return NULL;
}
@@ -460,7 +458,7 @@ static int status_func(struct nl_sock *sock, int argc, char ** argv)
cb = nl_cb_alloc(NL_CB_CUSTOM);
if (!cb) {
- fprintf(stderr, "failed to allocate netlink callbacks\n");
+ xlog(L_ERROR, "failed to allocate netlink callbacks");
ret = 1;
goto out;
}
@@ -478,7 +476,7 @@ static int status_func(struct nl_sock *sock, int argc, char ** argv)
while (ret > 0)
nl_recvmsgs(sock, cb);
if (ret < 0) {
- fprintf(stderr, "Error: %s\n", strerror(-ret));
+ xlog(L_ERROR, "Error: %s", strerror(-ret));
ret = 1;
}
out_cb:
@@ -519,14 +517,14 @@ static int threads_doit(struct nl_sock *sock, int cmd, int grace, int lease,
cb = nl_cb_alloc(NL_CB_CUSTOM);
if (!cb) {
- fprintf(stderr, "failed to allocate netlink callbacks\n");
+ xlog(L_ERROR, "failed to allocate netlink callbacks");
ret = 1;
goto out;
}
ret = nl_send_auto(sock, msg);
if (ret < 0) {
- fprintf(stderr, "send failed (%d)!\n", ret);
+ xlog(L_ERROR, "send failed (%d)!", ret);
goto out_cb;
}
@@ -539,7 +537,7 @@ static int threads_doit(struct nl_sock *sock, int cmd, int grace, int lease,
while (ret > 0)
nl_recvmsgs(sock, cb);
if (ret < 0) {
- fprintf(stderr, "Error: %s\n", strerror(-ret));
+ xlog(L_ERROR, "Error: %s", strerror(-ret));
ret = 1;
}
out_cb:
@@ -584,13 +582,13 @@ static int threads_func(struct nl_sock *sock, int argc, char **argv)
/* empty string? */
if (targv[i][0] == '\0') {
- fprintf(stderr, "Invalid threads value %s.\n", targv[i]);
+ xlog(L_ERROR, "Invalid threads value %s.", targv[i]);
return 1;
}
pool_threads[i] = strtol(targv[i], &endptr, 0);
if (!endptr || *endptr != '\0') {
- fprintf(stderr, "Invalid threads value %s.\n", argv[1]);
+ xlog(L_ERROR, "Invalid threads value %s.", argv[1]);
return 1;
}
}
@@ -619,14 +617,14 @@ static int fetch_nfsd_versions(struct nl_sock *sock)
cb = nl_cb_alloc(NL_CB_CUSTOM);
if (!cb) {
- fprintf(stderr, "failed to allocate netlink callbacks\n");
+ xlog(L_ERROR, "failed to allocate netlink callbacks");
ret = 1;
goto out;
}
ret = nl_send_auto(sock, msg);
if (ret < 0) {
- fprintf(stderr, "send failed: %d\n", ret);
+ xlog(L_ERROR, "send failed: %d", ret);
goto out_cb;
}
@@ -639,7 +637,7 @@ static int fetch_nfsd_versions(struct nl_sock *sock)
while (ret > 0)
nl_recvmsgs(sock, cb);
if (ret < 0) {
- fprintf(stderr, "Error: %s\n", strerror(-ret));
+ xlog(L_ERROR, "Error: %s", strerror(-ret));
ret = 1;
}
out_cb:
@@ -688,7 +686,7 @@ static int set_nfsd_versions(struct nl_sock *sock)
a = nla_nest_start(msg, NLA_F_NESTED | NFSD_A_SERVER_PROTO_VERSION);
if (!a) {
- fprintf(stderr, "Unable to allocate version nest!\n");
+ xlog(L_ERROR, "Unable to allocate version nest!");
ret = 1;
goto out;
}
@@ -705,14 +703,14 @@ static int set_nfsd_versions(struct nl_sock *sock)
cb = nl_cb_alloc(NL_CB_CUSTOM);
if (!cb) {
- fprintf(stderr, "Failed to allocate netlink callbacks\n");
+ xlog(L_ERROR, "Failed to allocate netlink callbacks");
ret = 1;
goto out;
}
ret = nl_send_auto(sock, msg);
if (ret < 0) {
- fprintf(stderr, "Send failed: %d\n", ret);
+ xlog(L_ERROR, "Send failed: %d", ret);
goto out_cb;
}
@@ -725,7 +723,7 @@ static int set_nfsd_versions(struct nl_sock *sock)
while (ret > 0)
nl_recvmsgs(sock, cb);
if (ret < 0) {
- fprintf(stderr, "Error: %s\n", strerror(-ret));
+ xlog(L_ERROR, "Error: %s", strerror(-ret));
ret = 1;
}
out_cb:
@@ -750,7 +748,7 @@ static int update_nfsd_version(int major, int minor, bool enabled)
/* the kernel doesn't support this version */
if (!enabled)
return 0;
- fprintf(stderr, "This kernel does not support NFS version %d.%d\n", major, minor);
+ xlog(L_ERROR, "This kernel does not support NFS version %d.%d", major, minor);
return -EINVAL;
}
@@ -792,7 +790,7 @@ static int version_func(struct nl_sock *sock, int argc, char ** argv)
ret = sscanf(str, "%c%d.%d\n", &sign, &major, &minor);
if (ret < 2) {
- fprintf(stderr, "Invalid version string (%d) %s\n", ret, str);
+ xlog(L_ERROR, "Invalid version string (%d) %s", ret, str);
return -EINVAL;
}
@@ -804,7 +802,7 @@ static int version_func(struct nl_sock *sock, int argc, char ** argv)
enabled = false;
break;
default:
- fprintf(stderr, "Invalid version string %s\n", str);
+ xlog(L_ERROR, "Invalid version string %s", str);
return -EINVAL;
}
@@ -837,14 +835,14 @@ static int fetch_current_listeners(struct nl_sock *sock)
cb = nl_cb_alloc(NL_CB_CUSTOM);
if (!cb) {
- fprintf(stderr, "failed to allocate netlink callbacks\n");
+ xlog(L_ERROR, "failed to allocate netlink callbacks");
ret = 1;
goto out;
}
ret = nl_send_auto(sock, msg);
if (ret < 0) {
- fprintf(stderr, "send failed: %d\n", ret);
+ xlog(L_ERROR, "send failed: %d", ret);
goto out_cb;
}
@@ -857,7 +855,7 @@ static int fetch_current_listeners(struct nl_sock *sock)
while (ret > 0)
nl_recvmsgs(sock, cb);
if (ret < 0) {
- fprintf(stderr, "Error: %s\n", strerror(-ret));
+ xlog(L_ERROR, "Error: %s", strerror(-ret));
ret = 1;
}
out_cb:
@@ -992,7 +990,7 @@ static int update_listeners(const char *str)
*/
ret = getaddrinfo(addr, port, &hints, &res);
if (ret) {
- fprintf(stderr, "getaddrinfo of \"%s\" failed: %s\n",
+ xlog(L_ERROR, "getaddrinfo of \"%s\" failed: %s",
addr, gai_strerror(ret));
return -EINVAL;
}
@@ -1044,7 +1042,7 @@ static int update_listeners(const char *str)
}
return 0;
out_inval:
- fprintf(stderr, "Invalid listener update string: %s", str);
+ xlog(L_ERROR, "Invalid listener update string: %s", str);
return -EINVAL;
}
@@ -1074,7 +1072,7 @@ static int set_listeners(struct nl_sock *sock)
a = nla_nest_start(msg, NLA_F_NESTED | NFSD_A_SERVER_SOCK_ADDR);
if (!a) {
- fprintf(stderr, "Unable to allocate listener nest!\n");
+ xlog(L_ERROR, "Unable to allocate listener nest!");
ret = 1;
goto out;
}
@@ -1089,14 +1087,14 @@ static int set_listeners(struct nl_sock *sock)
cb = nl_cb_alloc(NL_CB_CUSTOM);
if (!cb) {
- fprintf(stderr, "Failed to allocate netlink callbacks\n");
+ xlog(L_ERROR, "Failed to allocate netlink callbacks");
ret = 1;
goto out;
}
ret = nl_send_auto(sock, msg);
if (ret < 0) {
- fprintf(stderr, "Send failed: %d\n", ret);
+ xlog(L_ERROR, "Send failed: %d", ret);
goto out_cb;
}
@@ -1109,7 +1107,7 @@ static int set_listeners(struct nl_sock *sock)
while (ret > 0)
nl_recvmsgs(sock, cb);
if (ret < 0) {
- fprintf(stderr, "Error: %s\n", strerror(-ret));
+ xlog(L_ERROR, "Error: %s", strerror(-ret));
ret = 1;
}
out_cb:
@@ -1186,14 +1184,14 @@ static int pool_mode_doit(struct nl_sock *sock, int cmd, const char *pool_mode)
cb = nl_cb_alloc(NL_CB_CUSTOM);
if (!cb) {
- fprintf(stderr, "failed to allocate netlink callbacks\n");
+ xlog(L_ERROR, "failed to allocate netlink callbacks");
ret = 1;
goto out;
}
ret = nl_send_auto(sock, msg);
if (ret < 0) {
- fprintf(stderr, "send failed (%d)!\n", ret);
+ xlog(L_ERROR, "send failed (%d)!", ret);
goto out_cb;
}
@@ -1206,7 +1204,7 @@ static int pool_mode_doit(struct nl_sock *sock, int cmd, const char *pool_mode)
while (ret > 0)
nl_recvmsgs(sock, cb);
if (ret < 0) {
- fprintf(stderr, "Error: %s\n", strerror(-ret));
+ xlog(L_ERROR, "Error: %s", strerror(-ret));
ret = 1;
}
out_cb:
@@ -1243,7 +1241,7 @@ static int pool_mode_func(struct nl_sock *sock, int argc, char **argv)
/* empty string? */
if (*targv[0] == '\0') {
- fprintf(stderr, "Invalid threads value %s.\n", targv[0]);
+ xlog(L_ERROR, "Invalid threads value %s.", targv[0]);
return 1;
}
pool_mode = targv[0];
@@ -1395,7 +1393,7 @@ static int autostart_func(struct nl_sock *sock, int argc, char ** argv)
threads[idx++] = strtol(n->field, &endptr, 0);
if (!endptr || *endptr != '\0') {
- fprintf(stderr, "Invalid threads value %s.\n", n->field);
+ xlog(L_ERROR, "Invalid threads value %s.", n->field);
ret = -EINVAL;
goto out;
}
@@ -1451,10 +1449,11 @@ static nfsdctl_func func[] = {
static void usage(void)
{
printf("Usage:\n");
- printf("%s [-hv] [COMMAND] [ARGS]\n", taskname);
+ printf("%s [-hdsV] [COMMAND] [ARGS]\n", taskname);
printf(" options:\n");
printf(" -h | --help usage info\n");
- printf(" -d | --debug=NUM enable debugging\n");
+ printf(" -d | --debug enable debugging\n");
+ printf(" -s | --syslog log messages to syslog\n");
printf(" -V | --version print version info\n");
printf(" commands:\n");
printf(" pool-mode get/set host pool mode setting\n");
@@ -1468,7 +1467,8 @@ static void usage(void)
/* Options given before the command string */
static const struct option pre_options[] = {
{ "help", no_argument, NULL, 'h' },
- { "debug", required_argument, NULL, 'd' },
+ { "debug", no_argument, NULL, 'd' },
+ { "syslog", no_argument, NULL, 's' },
{ "version", no_argument, NULL, 'V' },
{ },
};
@@ -1521,8 +1521,6 @@ static int run_commandline(struct nl_sock *sock)
ret = tokenize_string(line, &argc, argv);
if (!ret)
ret = run_one_command(sock, argc, argv);
- if (ret)
- fprintf(stderr, "Error: %s\n", strerror(ret));
free(line);
}
return 0;
@@ -1531,23 +1529,25 @@ static int run_commandline(struct nl_sock *sock)
int main(int argc, char **argv)
{
int opt, ret;
- struct nl_sock *sock = netlink_sock_alloc();
-
- if (!sock) {
- fprintf(stderr, "Unable to allocate netlink socket!");
- return 1;
- }
+ struct nl_sock *sock;
taskname = argv[0];
+ xlog_syslog(0);
+ xlog_stderr(1);
+
/* Parse the preliminary options */
- while ((opt = getopt_long(argc, argv, "+hd:V", pre_options, NULL)) != -1) {
+ while ((opt = getopt_long(argc, argv, "+hdsV", pre_options, NULL)) != -1) {
switch (opt) {
case 'h':
usage();
return 0;
case 'd':
- debug_level = atoi(optarg);
+ xlog_config(D_ALL, 1);
+ break;
+ case 's':
+ xlog_syslog(1);
+ xlog_stderr(0);
break;
case 'V':
// FIXME: print_version();
@@ -1555,6 +1555,16 @@ int main(int argc, char **argv)
}
}
+ xlog_open(basename(argv[0]));
+
+ xlog(D_GENERAL, "nfsdctl started");
+
+ sock = netlink_sock_alloc();
+ if (!sock) {
+ xlog(L_ERROR, "Unable to allocate netlink socket!");
+ return 1;
+ }
+
if (optind > argc) {
usage();
return 1;
@@ -1566,5 +1576,6 @@ int main(int argc, char **argv)
ret = run_one_command(sock, argc - optind, &argv[optind]);
nl_socket_free(sock);
+ xlog(D_GENERAL, "nfsdctl exiting");
return ret;
}
--
2.47.1
next prev parent reply other threads:[~2025-01-10 13:46 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-10 13:46 [PATCH v2 0/3] nfsdctl: add support for new lockd configuration interface Jeff Layton
2025-01-10 13:46 ` Jeff Layton [this message]
2025-01-10 13:46 ` [PATCH v2 2/3] nfsdctl: fix the --version option Jeff Layton
2025-01-10 13:46 ` [PATCH v2 3/3] nfsdctl: add necessary bits to configure lockd Jeff Layton
2025-01-10 15:05 ` Tom Talpey
2025-01-10 15:21 ` Jeff Layton
2025-01-10 15:40 ` Tom Talpey
2025-01-13 13:39 ` Benjamin Coddington
2025-01-14 15:53 ` Tom Talpey
2025-01-14 21:09 ` [PATCH v2 0/3] nfsdctl: add support for new lockd configuration interface Scott Mayhew
2025-01-14 21:18 ` Jeff Layton
2025-01-15 14:44 ` Scott Mayhew
2025-01-15 14:56 ` Jeff Layton
2025-01-15 15:12 ` Steve Dickson
2025-01-15 15:28 ` Jeff Layton
2025-01-15 16:40 ` Scott Mayhew
2025-01-15 17:00 ` [nfs-utils PATCH] nfsdctl: debug logging fixups Scott Mayhew
2025-01-15 17:02 ` Jeff Layton
2025-01-15 17:32 ` Steve Dickson
2025-01-15 17:35 ` Jeff Layton
2025-01-15 17:47 ` Steve Dickson
2025-01-15 18:33 ` Jeff Layton
2025-01-15 20:53 ` Steve Dickson
2025-01-16 11:50 ` Jeff Layton
2025-01-16 21:00 ` Steve Dickson
2025-01-16 21:12 ` Jeff Layton
2025-03-19 19:47 ` [PATCH v2 0/3] nfsdctl: add support for new lockd configuration interface Steve Dickson
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=20250110-lockd-nl-v2-1-e3abe78cc7fb@kernel.org \
--to=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=smayhew@redhat.com \
--cc=steved@redhat.com \
--cc=yoyang@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.