diff options
author | Csaba Henk <csaba@gluster.com> | 2011-01-27 05:23:32 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2011-01-27 03:17:03 -0800 |
commit | 482d77b85d84bf5c2b48e4717f8d186967e42e63 (patch) | |
tree | 26464428f8bbb777a3c45e838214e3e0914f1c5a /xlators/mount/fuse/src | |
parent | a2a92b99fc031544ff8a87861d34b2bbbdd2753c (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/src')
-rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.c | 7 | ||||
-rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.h | 3 | ||||
-rw-r--r-- | xlators/mount/fuse/src/fuse-helpers.c | 5 |
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; |