# # Make sure check_new_cache() is looking in the right place # --- src/support/nfs/cacheio.c.org 2003-08-04 00:12:16.000000000 -0400 +++ src/support/nfs/cacheio.c 2004-03-22 18:12:55.163534208 -0500 @@ -223,12 +223,23 @@ int readline(int fd, char **buf, int *le * This succeeds iff the "nfsd" filesystem is mounted on * /proc/fs/nfs */ +static char *cachelist[] = { + { "auth.unix.ip" }, { "nfsd.export" }, { "nfsd.fh" }, + { NULL, NULL } +}; int check_new_cache(void) { struct stat stb; - return (stat("/proc/fs/nfs/filehandle", &stb) == 0) || - (stat("/proc/fs/nfsd/filehandle", &stb) == 0); + char path[64]; + int i; + + for (i=0; cachelist[i]; i++ ){ + sprintf(path, "/proc/net/rpc/%s/channel", cachelist[i]); + if (stat(path, &stb) < 0) + return 0; + } + return 1; } # # Eliminate 3 syslog message that are logged for # successful events. # --- src/utils/mountd/mountd.c.org 2003-09-12 18:14:16.000000000 -0400 +++ src/utils/mountd/mountd.c 2004-06-16 09:31:06.000000000 -0400 @@ -90,10 +90,11 @@ mount_dump_1_svc(struct svc_req *rqstp, { struct sockaddr_in *addr = (struct sockaddr_in *) svc_getcaller(rqstp->rq_xprt); - xlog(L_NOTICE, "dump request from %s", - inet_ntoa(addr->sin_addr)); - *res = mountlist_list(); + if ((*res = mountlist_list()) == NULL) + xlog(L_WARNING, "dump request from %s failed.", + inet_ntoa(addr->sin_addr)); + return 1; } @@ -143,9 +144,11 @@ mount_export_1_svc(struct svc_req *rqstp { struct sockaddr_in *addr = (struct sockaddr_in *) svc_getcaller(rqstp->rq_xprt); - xlog(L_NOTICE, "export request from %s", - inet_ntoa(addr->sin_addr)); - *resp = get_exportlist(); + + if ((*resp = get_exportlist()) == NULL) + xlog(L_WARNING, "export request from %s failed.", + inet_ntoa(addr->sin_addr)); + return 1; } @@ -154,9 +157,10 @@ mount_exportall_1_svc(struct svc_req *rq { struct sockaddr_in *addr = (struct sockaddr_in *) svc_getcaller(rqstp->rq_xprt); - xlog(L_NOTICE, "exportall request from %s", - inet_ntoa(addr->sin_addr)); - *resp = get_exportlist(); + + if ((*resp = get_exportlist()) == NULL) + xlog(L_WARNING, "exportall request from %s failed.", + inet_ntoa(addr->sin_addr)); return 1; }