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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox