Remove redundant m_path field
authorJ. Bruce Fields <bfields@citi.umich.edu>
Thu, 28 Aug 2008 15:17:34 +0000 (11:17 -0400)
committerSteve Dickson <steved@redhat.com>
Thu, 28 Aug 2008 15:17:34 +0000 (11:17 -0400)
Contrary to the comment above its definition, the field m_path always
has the same value as e_path: the *only* modifications of m_path are all
of the form:

strncpy(exp->m_export.m_path, exp->m_export.e_path,
sizeof (exp->m_export.m_path) - 1);
exp->m_export.m_path[sizeof (exp->m_export.m_path) - 1] = '\0';

So m_path is always just a copy of e_path.  In places where we need to
store a path to a submount of a CROSSMNT-exported filesystem, as in
cache.c, we just use a local variable.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
support/export/export.c
support/export/nfsctl.c
support/include/nfslib.h
support/nfs/exports.c
utils/mountd/mountd.c
utils/mountd/rmtab.c

index 93c58b6..14af112 100644 (file)
@@ -255,15 +255,3 @@ export_freeall(void)
        }
        client_freeall();
 }
-
-void
-export_reset(nfs_export *exp)
-{
-       if (!exp)
-               return;
-
-       /* Restore m_path. */
-       strncpy(exp->m_export.m_path, exp->m_export.e_path,
-               sizeof (exp->m_export.m_path) - 1);
-       exp->m_export.m_path[sizeof (exp->m_export.m_path) - 1] = '\0';
-}
index 32d92bd..e2877b9 100644 (file)
@@ -89,11 +89,11 @@ expsetup(struct nfsctl_export *exparg, nfs_export *exp, int unexport)
        nfs_client              *clp = exp->m_client;
        struct stat             stb;
 
-       if (stat(exp->m_export.m_path, &stb) < 0)
+       if (stat(exp->m_export.e_path, &stb) < 0)
                return 0;
 
        memset(exparg, 0, sizeof(*exparg));
-       strncpy(exparg->ex_path, exp->m_export.m_path,
+       strncpy(exparg->ex_path, exp->m_export.e_path,
                sizeof (exparg->ex_path) - 1);
        strncpy(exparg->ex_client, clp->m_hostname,
                sizeof (exparg->ex_client) - 1);
index 422b012..a51d79d 100644 (file)
@@ -67,11 +67,6 @@ struct sec_entry {
 struct exportent {
        char *          e_hostname;
        char            e_path[NFS_MAXPATHLEN+1];
-       /* The mount path may be different from the exported path due
-          to submount. It may change for every mount. The idea is we
-          set m_path every time when we process a mount. We should not
-          use it for anything else. */
-       char            m_path[NFS_MAXPATHLEN+1];
        int             e_flags;
        int             e_anonuid;
        int             e_anongid;
index 334c08e..1aaebf4 100644 (file)
@@ -127,8 +127,6 @@ getexportent(int fromkernel, int fromexports)
                if (ok <= 0)
                        return NULL;
 
-               strncpy (def_ee.m_path, def_ee.e_path, sizeof (def_ee.m_path) - 1);
-               def_ee.m_path [sizeof (def_ee.m_path) - 1] = '\0';
                ok = getexport(exp, sizeof(exp));
        }
        if (ok < 0) {
@@ -187,8 +185,6 @@ getexportent(int fromkernel, int fromexports)
                rpath[sizeof (rpath) - 1] = '\0';
                strncpy(ee.e_path, rpath, sizeof (ee.e_path) - 1);
                ee.e_path[sizeof (ee.e_path) - 1] = '\0';
-               strncpy (ee.m_path, ee.e_path, sizeof (ee.m_path) - 1);
-               ee.m_path [sizeof (ee.m_path) - 1] = '\0';
        }
 
        return &ee;
@@ -360,8 +356,6 @@ mkexportent(char *hname, char *path, char *options)
        }
        strncpy(ee.e_path, path, sizeof (ee.e_path));
        ee.e_path[sizeof (ee.e_path) - 1] = '\0';
-       strncpy (ee.m_path, ee.e_path, sizeof (ee.m_path) - 1);
-       ee.m_path [sizeof (ee.m_path) - 1] = '\0';
        if (parseopts(options, &ee, 0, NULL) < 0)
                return NULL;
        return &ee;
index 8137f7f..0facf89 100644 (file)
@@ -230,9 +230,6 @@ mount_umnt_1_svc(struct svc_req *rqstp, dirpath *argp, void *resp)
                return 1;
        }
 
-       if (!new_cache)
-               export_reset (exp);
-
        mountlist_del(inet_ntoa(sin->sin_addr), p);
        return 1;
 }
@@ -312,7 +309,6 @@ mount_pathconf_2_svc(struct svc_req *rqstp, dirpath *path, ppathcnf *res)
        } else if (stat(p, &stb) < 0) {
                xlog(L_WARNING, "can't stat exported dir %s: %s",
                                p, strerror(errno));
-               export_reset (exp);
                return 1;
        }
 
@@ -328,8 +324,6 @@ mount_pathconf_2_svc(struct svc_req *rqstp, dirpath *path, ppathcnf *res)
        res->pc_mask[0]   = 0;
        res->pc_mask[1]   = 0;
 
-       export_reset (exp);
-
        return 1;
 }
 
@@ -457,13 +451,11 @@ get_rootfh(struct svc_req *rqstp, dirpath *path, mountstat3 *error, int v3)
                if (fh != NULL) {
                        mountlist_add(inet_ntoa(sin->sin_addr), p);
                        *error = NFS_OK;
-                       export_reset (exp);
                        return fh;
                }
                xlog(L_WARNING, "getfh failed: %s", strerror(errno));
                *error = NFSERR_ACCES;
        }
-       export_reset (exp);
        return NULL;
 }
 
@@ -499,14 +491,14 @@ get_exportlist(void)
        for (i = 0; i < MCL_MAXTYPES; i++) {
                for (exp = exportlist[i]; exp; exp = exp->m_next) {
                        for (e = elist; e != NULL; e = e->ex_next) {
-                               if (!strcmp(exp->m_export.m_path, e->ex_dir))
+                               if (!strcmp(exp->m_export.e_path, e->ex_dir))
                                        break;
                        }
                        if (!e) {
                                e = (struct exportnode *) xmalloc(sizeof(*e));
                                e->ex_next = elist;
                                e->ex_groups = NULL;
-                               e->ex_dir = xstrdup(exp->m_export.m_path);
+                               e->ex_dir = xstrdup(exp->m_export.e_path);
                                elist = e;
                        }
 
index e8aff5a..5787ed6 100644 (file)
@@ -162,10 +162,8 @@ mountlist_del_all(struct sockaddr_in *sin)
        }
        while ((rep = getrmtabent(1, NULL)) != NULL) {
                if (strcmp(rep->r_client, hp->h_name) == 0 &&
-                   (exp = auth_authenticate("umountall", sin, rep->r_path))) {
-                       export_reset(exp);
+                   (exp = auth_authenticate("umountall", sin, rep->r_path)))
                        continue;
-               }
                fputrmtabent(fp, rep, NULL);
        }
        if (slink_safe_rename(_PATH_RMTABTMP, _PATH_RMTAB) < 0) {