Make warning about host matching multiple exports more helpful.
authorNeil Brown <neilb@suse.de>
Sun, 18 Mar 2007 23:22:22 +0000 (10:22 +1100)
committerNeil Brown <neilb@suse.de>
Sun, 18 Mar 2007 23:22:22 +0000 (10:22 +1100)
1/ only warn once per export, as it could get too noisy.
2/ make it a little clearer why this might be a problem.

support/export/export.c
support/include/exportfs.h
utils/exportfs/exportfs.c
utils/mountd/cache.c

index a4b0788..74e1d1b 100644 (file)
@@ -90,6 +90,7 @@ export_init(nfs_export *exp, nfs_client *clp, struct exportent *nep)
        exp->m_xtabent = 0;
        exp->m_mayexport = 0;
        exp->m_changed = 0;
+       exp->m_warned = 0;
        exp->m_client = clp;
        clp->m_count++;
 }
@@ -115,6 +116,7 @@ export_dup(nfs_export *exp, struct hostent *hp)
        new->m_exported = 0;
        new->m_xtabent = 0;
        new->m_changed = 0;
+       new->m_warned = 0;
        export_add(new);
 
        return new;
index 458611b..431b5ce 100644 (file)
@@ -47,7 +47,9 @@ typedef struct mexport {
        int                     m_exported;     /* known to knfsd. -1 means not sure */
        int                     m_xtabent  : 1, /* xtab entry exists */
                                m_mayexport: 1, /* derived from xtabbed */
-                               m_changed  : 1; /* options (may) have changed */
+                               m_changed  : 1, /* options (may) have changed */
+                               m_warned   : 1; /* warned about multiple exports
+                                                * matching one client */
 } nfs_export;
 
 extern nfs_client *            clientlist[MCL_MAXTYPES];
index 1eca567..8c3f634 100644 (file)
@@ -218,6 +218,7 @@ export_all(int verbose)
                        exp->m_xtabent = 1;
                        exp->m_mayexport = 1;
                        exp->m_changed = 1;
+                       exp->m_warned = 0;
                }
        }
 }
@@ -274,6 +275,7 @@ exportfs(char *arg, char *options, int verbose)
        exp->m_xtabent = 1;
        exp->m_mayexport = 1;
        exp->m_changed = 1;
+       exp->m_warned = 0;
        if (hp) free (hp);
 }
 
index ed7fe35..5612a9e 100644 (file)
@@ -520,10 +520,12 @@ void nfsd_export(FILE *f)
                        if (!found) {
                                found = exp;
                                found_type = i;
-                       } else if (found_type == i) {
-                               xlog(L_WARNING, "%s exported to both %s and %s in %s",
-                                    path, exp->m_client->m_hostname, found->m_client->m_hostname,
+                       } else if (found_type == i && found->m_warned == 0) {
+                               xlog(L_WARNING, "%s exported to both %s and %s, "
+                                    "arbitrarily choosing options from first",
+                                    path, found->m_client->m_hostname, exp->m_client->m_hostname,
                                     dom);
+                               found->m_warned = 1;
                        }
                }
        }