summaryrefslogtreecommitdiffstats
path: root/xlators/mount/fuse/src/fuse-bridge.c
diff options
context:
space:
mode:
authorLubomir Rintel <lubo.rintel@gooddata.com>2012-08-29 14:55:13 +0200
committerAnand Avati <avati@redhat.com>2012-09-12 14:39:06 -0700
commitab039cc10f8493c6964ddc5b1510219708a31c60 (patch)
tree9b71740885cb876389c129073ed65e0ea9e00a3b /xlators/mount/fuse/src/fuse-bridge.c
parent4f87fd0ae2ce629576ca5f647a99888d31a46815 (diff)
fuse-bridge: Pass unknown option down to fuse
In Linux, certain "filesystem-specific" options (passed in string form in last argument to mount(2)), such as "rootcontext" or "context" are in fact common to all filesystems, including fuse. We should pass them down to the actual mount(2) call untouched. This is achieved by adding "fuse-mountopts" option to mount/fuse translator and adjusting the mount helper to propagate it with unrecognized options as they are encountered. BUG: 852754 Change-Id: I309203090c02025334561be235864d8d04e4159b Signed-off-by: Lubomir Rintel <lubo.rintel@gooddata.com> Reviewed-on: http://review.gluster.org/3871 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/mount/fuse/src/fuse-bridge.c')
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c
index 726e500e9e4..f9d3846207c 100644
--- a/xlators/mount/fuse/src/fuse-bridge.c
+++ b/xlators/mount/fuse/src/fuse-bridge.c
@@ -4655,6 +4655,8 @@ init (xlator_t *this_xl)
GF_OPTION_INIT("gid-timeout", priv->gid_cache_timeout, int32,
cleanup_exit);
+ GF_OPTION_INIT ("fuse-mountopts", priv->fuse_mountopts, str, cleanup_exit);
+
if (gid_cache_init(&priv->gid_cache, priv->gid_cache_timeout) < 0) {
gf_log("glusterfs-fuse", GF_LOG_ERROR, "Failed to initialize "
"group cache.");
@@ -4716,9 +4718,11 @@ init (xlator_t *this_xl)
goto cleanup_exit;
}
- gf_asprintf (&mnt_args, "%s%sallow_other,max_read=131072",
+ gf_asprintf (&mnt_args, "%s%s%s%sallow_other,max_read=131072",
priv->read_only ? "ro," : "",
- priv->acl ? "" : "default_permissions,");
+ priv->acl ? "" : "default_permissions,",
+ priv->fuse_mountopts ? priv->fuse_mountopts : "",
+ priv->fuse_mountopts ? "," : "");
if (!mnt_args)
goto cleanup_exit;
@@ -4886,5 +4890,8 @@ struct volume_options options[] = {
.min = 12,
.max = (64 * GF_UNIT_KB),
},
+ { .key = {"fuse-mountopts"},
+ .type = GF_OPTION_TYPE_STR
+ },
{ .key = {NULL} },
};