summaryrefslogtreecommitdiffstats
path: root/xlators/mount/fuse
diff options
context:
space:
mode:
authorCsaba Henk <csaba@gluster.com>2011-01-27 05:23:32 +0000
committerAnand V. Avati <avati@dev.gluster.com>2011-01-27 03:17:03 -0800
commit482d77b85d84bf5c2b48e4717f8d186967e42e63 (patch)
tree26464428f8bbb777a3c45e838214e3e0914f1c5a /xlators/mount/fuse
parenta2a92b99fc031544ff8a87861d34b2bbbdd2753c (diff)
implement "--client-pid" option which can forcibly set the pid value in messages to a predefined value
Signed-off-by: Csaba Henk <csaba@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 2310 (georeplication) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2310
Diffstat (limited to 'xlators/mount/fuse')
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.c7
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.h3
-rw-r--r--xlators/mount/fuse/src/fuse-helpers.c5
3 files changed, 15 insertions, 0 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c
index 35fb9ec83..44340e992 100644
--- a/xlators/mount/fuse/src/fuse-bridge.c
+++ b/xlators/mount/fuse/src/fuse-bridge.c
@@ -3503,6 +3503,10 @@ init (xlator_t *this_xl)
if (ret != 0)
priv->entry_timeout = 1.0; /* default */
+ ret = dict_get_int32 (options, "client-pid",
+ &priv->client_pid);
+ if (ret == 0)
+ priv->client_pid_set = _gf_true;
priv->direct_io_mode = 2;
ret = dict_get_str (options, ZR_DIRECT_IO_OPT, &value_string);
@@ -3656,5 +3660,8 @@ struct volume_options options[] = {
{ .key = {ZR_STRICT_VOLFILE_CHECK},
.type = GF_OPTION_TYPE_BOOL
},
+ { .key = {"client-pid"},
+ .type = GF_OPTION_TYPE_INT
+ },
{ .key = {NULL} },
};
diff --git a/xlators/mount/fuse/src/fuse-bridge.h b/xlators/mount/fuse/src/fuse-bridge.h
index 28b76d46e..c51733fcb 100644
--- a/xlators/mount/fuse/src/fuse-bridge.h
+++ b/xlators/mount/fuse/src/fuse-bridge.h
@@ -105,6 +105,9 @@ struct fuse_private {
glusterfs_graph_t *next_graph;
xlator_t *active_subvol;
+
+ pid_t client_pid;
+ gf_boolean_t client_pid_set;
};
typedef struct fuse_private fuse_private_t;
diff --git a/xlators/mount/fuse/src/fuse-helpers.c b/xlators/mount/fuse/src/fuse-helpers.c
index 7dbf09bf5..ec2cfe296 100644
--- a/xlators/mount/fuse/src/fuse-helpers.c
+++ b/xlators/mount/fuse/src/fuse-helpers.c
@@ -141,10 +141,12 @@ get_call_frame_for_req (fuse_state_t *state)
fuse_in_header_t *finh = NULL;
call_frame_t *frame = NULL;
xlator_t *this = NULL;
+ fuse_private_t *priv = NULL;
pool = state->pool;
finh = state->finh;
this = state->this;
+ priv = this->private;
frame = create_frame (this, pool);
if (!frame)
@@ -158,6 +160,9 @@ get_call_frame_for_req (fuse_state_t *state)
frame->root->unique = finh->unique;
}
+ if (priv && priv->client_pid_set)
+ frame->root->pid = priv->client_pid;
+
frame->root->type = GF_OP_TYPE_FOP;
return frame;