From 9e1aa7b9a04776bd43eb75bef50a53f41e17b813 Mon Sep 17 00:00:00 2001 From: Jeff Layton Date: Mon, 18 Dec 2006 15:43:56 -0500 Subject: [PATCH] remove extraneous mountlist_add/del calls and change remaining ones to use IP addresses Neil suggested a patch to change the mountlist_add and mountlist_del calls to use IP addresses instead of the names returned by client_compose based on a command line option flag. I don't see any real reason to put client_compose strings into the rmtab, so this patch makes it so that it adds IP addresses instead of those strings to the rmtab by default. It also removes all mountlist_add calls that are being done from kernel cache routines. My main concern there is NFSv4. We don't seem to make any upcalls to mountd on NFSv4 unmounts, and I don't see a way to reliably remove NFSv4 entries. So, I figured I'd stick with having mountlist_add only called when a v2 or v3 mount call is made, and mountlist_del called only on the corresponding unmount call. Signed-off-by: Jeff Layton Signed-off-by: Neil Brown --- utils/mountd/cache.c | 9 --------- utils/mountd/mountd.c | 17 ++++++++--------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index c57d3b0..726b98f 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -83,9 +83,6 @@ void auth_unix_ip(FILE *f) qword_print(f, *client?client:"DEFAULT"); qword_eol(f); - if (client && strcmp(ipaddr, client)) - mountlist_add(ipaddr, *client?client:"DEFAULT"); - if (client) free(client); } @@ -295,7 +292,6 @@ void nfsd_export(FILE *f) qword_printint(f, found->m_export.e_anonuid); qword_printint(f, found->m_export.e_anongid); qword_printint(f, found->m_export.e_fsid); - mountlist_add(dom, path); } qword_eol(f); out: @@ -373,8 +369,6 @@ void cache_export_ent(char *domain, struct exportent *exp) qword_eol(f); fclose(f); - - mountlist_add(domain, exp->e_path); } void cache_export(nfs_export *exp) @@ -393,9 +387,6 @@ void cache_export(nfs_export *exp) fclose(f); - if (strcmp(inet_ntoa(exp->m_client->m_addrlist[0]), exp->m_client->m_hostname)) - mountlist_add(inet_ntoa(exp->m_client->m_addrlist[0]), exp->m_client->m_hostname); - cache_export_ent(exp->m_client->m_hostname, &exp->m_export); } diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c index f40d367..e151fa2 100644 --- a/utils/mountd/mountd.c +++ b/utils/mountd/mountd.c @@ -225,14 +225,11 @@ mount_umnt_1_svc(struct svc_req *rqstp, dirpath *argp, void *resp) if (!(exp = auth_authenticate("unmount", sin, p))) { return 1; } - if (new_cache) { - if (strcmp(inet_ntoa(exp->m_client->m_addrlist[0]), exp->m_client->m_hostname)) - mountlist_del(inet_ntoa(exp->m_client->m_addrlist[0]), exp->m_client->m_hostname); - mountlist_del(exp->m_client->m_hostname, p); - } else { - mountlist_del(exp->m_client->m_hostname, p); + + if (!new_cache) export_reset (exp); - } + + mountlist_del(inet_ntoa(sin->sin_addr), p); return 1; } @@ -421,8 +418,10 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, mountstat3 *error, int v3) fh = cache_get_filehandle(exp, v3?64:32, p); if (fh == NULL) *error = NFSERR_ACCES; - else + else { *error = NFS_OK; + mountlist_add(inet_ntoa(sin->sin_addr), p); + } return fh; } else { struct nfs_fh_len *fh; @@ -443,7 +442,7 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, mountstat3 *error, int v3) stb.st_dev, stb.st_ino); } if (fh != NULL) { - mountlist_add(exp->m_client->m_hostname, p); + mountlist_add(inet_ntoa(sin->sin_addr), p); *error = NFS_OK; export_reset (exp); return fh; -- 2.39.5