Message ID | 1466020386-43034-1-git-send-email-smayhew@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 06/15/2016 03:53 PM, Scott Mayhew wrote: > Commit 76f8ce8c (statd: Update existing record if we receive SM_MON with > new cookie) added some logic to unconditionally delete some existing > on-disk monitor records. That works fine in an HA-NFS setup where > there's a good chance of monitor files being left around after service > failovers, but in the case where there isn't an existing monitor file > statd emits a scary looking message like this: > > Jun 15 14:14:59 hostname rpc.statd[1368]: Failed to delete: could not > stat original file /var/lib/nfs/statd/sm/nfs.smayhew.test: No such file > or directory > > That message can be suppressed. > > Signed-off-by: Scott Mayhew <smayhew@redhat.com> Committed... steved. > --- > support/include/nsm.h | 3 ++- > support/nsm/file.c | 14 ++++++++------ > utils/statd/monitor.c | 6 +++--- > 3 files changed, 13 insertions(+), 10 deletions(-) > > diff --git a/support/include/nsm.h b/support/include/nsm.h > index fb4d823..080d176 100644 > --- a/support/include/nsm.h > +++ b/support/include/nsm.h > @@ -59,7 +59,8 @@ extern unsigned int > extern _Bool nsm_insert_monitored_host(const char *hostname, > const struct sockaddr *sap, const struct mon *m); > extern void nsm_delete_monitored_host(const char *hostname, > - const char *mon_name, const char *my_name); > + const char *mon_name, const char *my_name, > + const int chatty); > extern void nsm_delete_notified_host(const char *hostname, > const char *mon_name, const char *my_name); > extern size_t nsm_priv_to_hex(const char *priv, char *buf, > diff --git a/support/nsm/file.c b/support/nsm/file.c > index 7a8b504..aafa755 100644 > --- a/support/nsm/file.c > +++ b/support/nsm/file.c > @@ -1013,7 +1013,7 @@ nsm_load_notify_list(nsm_populate_t func) > > static void > nsm_delete_host(const char *directory, const char *hostname, > - const char *mon_name, const char *my_name) > + const char *mon_name, const char *my_name, const int chatty) > { > char line[LINELEN + 1 + SM_MAXSTRLEN + 2]; > char *outbuf = NULL; > @@ -1029,8 +1029,9 @@ nsm_delete_host(const char *directory, const char *hostname, > } > > if (stat(path, &stb) == -1) { > - xlog(L_ERROR, "Failed to delete: " > - "could not stat original file %s: %m", path); > + if (chatty) > + xlog(L_ERROR, "Failed to delete: " > + "could not stat original file %s: %m", path); > goto out; > } > remaining = (size_t)stb.st_size + 1; > @@ -1109,13 +1110,14 @@ out: > * @hostname: '\0'-terminated C string containing hostname of record to delete > * @mon_name: '\0'-terminated C string containing monname of record to delete > * @my_name: '\0'-terminated C string containing myname of record to delete > + * @chatty: should an error be logged if the monitor file doesn't exist? > * > */ > void > nsm_delete_monitored_host(const char *hostname, const char *mon_name, > - const char *my_name) > + const char *my_name, const int chatty) > { > - nsm_delete_host(NSM_MONITOR_DIR, hostname, mon_name, my_name); > + nsm_delete_host(NSM_MONITOR_DIR, hostname, mon_name, my_name, chatty); > } > > /** > @@ -1129,5 +1131,5 @@ void > nsm_delete_notified_host(const char *hostname, const char *mon_name, > const char *my_name) > { > - nsm_delete_host(NSM_NOTIFY_DIR, hostname, mon_name, my_name); > + nsm_delete_host(NSM_NOTIFY_DIR, hostname, mon_name, my_name, 1); > } > diff --git a/utils/statd/monitor.c b/utils/statd/monitor.c > index 368bd80..45c4346 100644 > --- a/utils/statd/monitor.c > +++ b/utils/statd/monitor.c > @@ -193,7 +193,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp) > * Now, Create file on stable storage for host, first deleting any > * existing records on file. > */ > - nsm_delete_monitored_host(dnsname, mon_name, my_name); > + nsm_delete_monitored_host(dnsname, mon_name, my_name, 0); > > if (!nsm_insert_monitored_host(dnsname, > (struct sockaddr *)(char *)&my_addr, argp)) { > @@ -324,7 +324,7 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp) > ha_callout("del-client", mon_name, my_name, -1); > > nsm_delete_monitored_host(clnt->dns_name, > - mon_name, my_name); > + mon_name, my_name, 1); > nlist_free(&rtnl, clnt); > > return (&result); > @@ -379,7 +379,7 @@ sm_unmon_all_1_svc(struct my_id *argp, struct svc_req *rqstp) > /* PRC: do the HA callout: */ > ha_callout("del-client", mon_name, my_name, -1); > nsm_delete_monitored_host(clnt->dns_name, > - mon_name, my_name); > + mon_name, my_name, 1); > nlist_free(&rtnl, clnt); > ++count; > clnt = temp; > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/support/include/nsm.h b/support/include/nsm.h index fb4d823..080d176 100644 --- a/support/include/nsm.h +++ b/support/include/nsm.h @@ -59,7 +59,8 @@ extern unsigned int extern _Bool nsm_insert_monitored_host(const char *hostname, const struct sockaddr *sap, const struct mon *m); extern void nsm_delete_monitored_host(const char *hostname, - const char *mon_name, const char *my_name); + const char *mon_name, const char *my_name, + const int chatty); extern void nsm_delete_notified_host(const char *hostname, const char *mon_name, const char *my_name); extern size_t nsm_priv_to_hex(const char *priv, char *buf, diff --git a/support/nsm/file.c b/support/nsm/file.c index 7a8b504..aafa755 100644 --- a/support/nsm/file.c +++ b/support/nsm/file.c @@ -1013,7 +1013,7 @@ nsm_load_notify_list(nsm_populate_t func) static void nsm_delete_host(const char *directory, const char *hostname, - const char *mon_name, const char *my_name) + const char *mon_name, const char *my_name, const int chatty) { char line[LINELEN + 1 + SM_MAXSTRLEN + 2]; char *outbuf = NULL; @@ -1029,8 +1029,9 @@ nsm_delete_host(const char *directory, const char *hostname, } if (stat(path, &stb) == -1) { - xlog(L_ERROR, "Failed to delete: " - "could not stat original file %s: %m", path); + if (chatty) + xlog(L_ERROR, "Failed to delete: " + "could not stat original file %s: %m", path); goto out; } remaining = (size_t)stb.st_size + 1; @@ -1109,13 +1110,14 @@ out: * @hostname: '\0'-terminated C string containing hostname of record to delete * @mon_name: '\0'-terminated C string containing monname of record to delete * @my_name: '\0'-terminated C string containing myname of record to delete + * @chatty: should an error be logged if the monitor file doesn't exist? * */ void nsm_delete_monitored_host(const char *hostname, const char *mon_name, - const char *my_name) + const char *my_name, const int chatty) { - nsm_delete_host(NSM_MONITOR_DIR, hostname, mon_name, my_name); + nsm_delete_host(NSM_MONITOR_DIR, hostname, mon_name, my_name, chatty); } /** @@ -1129,5 +1131,5 @@ void nsm_delete_notified_host(const char *hostname, const char *mon_name, const char *my_name) { - nsm_delete_host(NSM_NOTIFY_DIR, hostname, mon_name, my_name); + nsm_delete_host(NSM_NOTIFY_DIR, hostname, mon_name, my_name, 1); } diff --git a/utils/statd/monitor.c b/utils/statd/monitor.c index 368bd80..45c4346 100644 --- a/utils/statd/monitor.c +++ b/utils/statd/monitor.c @@ -193,7 +193,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp) * Now, Create file on stable storage for host, first deleting any * existing records on file. */ - nsm_delete_monitored_host(dnsname, mon_name, my_name); + nsm_delete_monitored_host(dnsname, mon_name, my_name, 0); if (!nsm_insert_monitored_host(dnsname, (struct sockaddr *)(char *)&my_addr, argp)) { @@ -324,7 +324,7 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp) ha_callout("del-client", mon_name, my_name, -1); nsm_delete_monitored_host(clnt->dns_name, - mon_name, my_name); + mon_name, my_name, 1); nlist_free(&rtnl, clnt); return (&result); @@ -379,7 +379,7 @@ sm_unmon_all_1_svc(struct my_id *argp, struct svc_req *rqstp) /* PRC: do the HA callout: */ ha_callout("del-client", mon_name, my_name, -1); nsm_delete_monitored_host(clnt->dns_name, - mon_name, my_name); + mon_name, my_name, 1); nlist_free(&rtnl, clnt); ++count; clnt = temp;
Commit 76f8ce8c (statd: Update existing record if we receive SM_MON with new cookie) added some logic to unconditionally delete some existing on-disk monitor records. That works fine in an HA-NFS setup where there's a good chance of monitor files being left around after service failovers, but in the case where there isn't an existing monitor file statd emits a scary looking message like this: Jun 15 14:14:59 hostname rpc.statd[1368]: Failed to delete: could not stat original file /var/lib/nfs/statd/sm/nfs.smayhew.test: No such file or directory That message can be suppressed. Signed-off-by: Scott Mayhew <smayhew@redhat.com> --- support/include/nsm.h | 3 ++- support/nsm/file.c | 14 ++++++++------ utils/statd/monitor.c | 6 +++--- 3 files changed, 13 insertions(+), 10 deletions(-)