summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2012-10-19 10:25:14 -0400
committerSteve Dickson <steved@redhat.com>2012-10-22 09:44:02 -0400
commita8dcaa282122b5db8f4ffb7e5d99b2c4b62cbb78 (patch)
tree48a5a53a937ceb4fe1c37a1db9ea6873aa1e33d1
parentd69795533b0c8906e42aa2eb1cf4628cda42a766 (diff)
downloadnfs-utils-a8dcaa282122b5db8f4ffb7e5d99b2c4b62cbb78.zip
nfs-utils-a8dcaa282122b5db8f4ffb7e5d99b2c4b62cbb78.tar.gz
nfs-utils-a8dcaa282122b5db8f4ffb7e5d99b2c4b62cbb78.tar.xz
mountd: Use static buffer when constructing junction export options
Clean up: Simplify locations_to_export() by constructing a junction's export options in a static buffer. We can do this because all of this code is called serially, in one thread, and the result is thrown away immediately after the caller is finished. The returned exportent itself is static. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--utils/mountd/cache.c36
1 files changed, 5 insertions, 31 deletions
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 942fdbd..8de2eac 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -917,14 +917,15 @@ out_false:
*
* Returned exportent points to static memory.
*/
-static struct exportent *do_locations_to_export(struct jp_ops *ops,
- nfs_fsloc_set_t locations, const char *junction,
- char *options, size_t options_len)
+static struct exportent *locations_to_export(struct jp_ops *ops,
+ nfs_fsloc_set_t locations, const char *junction)
{
+ static char options[BUFSIZ];
struct exportent *exp;
int ttl;
- if (!locations_to_options(ops, locations, options, options_len, &ttl))
+ options[0] = '\0';
+ if (!locations_to_options(ops, locations, options, sizeof(options), &ttl))
return NULL;
exp = mkexportent("*", (char *)junction, options);
@@ -939,33 +940,6 @@ static struct exportent *do_locations_to_export(struct jp_ops *ops,
}
/*
- * Convert set of FS locations to an exportent. Returns pointer to
- * an exportent if "junction" refers to a junction.
- *
- * Returned exportent points to static memory.
- */
-static struct exportent *locations_to_export(struct jp_ops *ops,
- nfs_fsloc_set_t locations, const char *junction)
-{
- struct exportent *exp;
- char *options;
-
- options = malloc(BUFSIZ);
- if (options == NULL) {
- xlog(D_GENERAL, "%s: failed to allocate options buffer",
- __func__);
- return NULL;
- }
- options[0] = '\0';
-
- exp = do_locations_to_export(ops, locations, junction,
- options, BUFSIZ);
-
- free(options);
- return exp;
-}
-
-/*
* Retrieve locations information in "junction" and dump it to the
* kernel. Returns pointer to an exportent if "junction" refers
* to a junction.