summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--support/export/export.c2
-rw-r--r--support/include/exportfs.h4
-rw-r--r--utils/exportfs/exportfs.c2
-rw-r--r--utils/mountd/cache.c8
4 files changed, 12 insertions, 4 deletions
diff --git a/support/export/export.c b/support/export/export.c
index a4b0788..74e1d1b 100644
--- a/support/export/export.c
+++ b/support/export/export.c
@@ -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;
diff --git a/support/include/exportfs.h b/support/include/exportfs.h
index 458611b..431b5ce 100644
--- a/support/include/exportfs.h
+++ b/support/include/exportfs.h
@@ -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];
diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
index 1eca567..8c3f634 100644
--- a/utils/exportfs/exportfs.c
+++ b/utils/exportfs/exportfs.c
@@ -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);
}
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index ed7fe35..5612a9e 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -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;
}
}
}