diff options
Diffstat (limited to 'xlators/mount/fuse')
-rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.c | 34 | ||||
-rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.h | 15 | ||||
-rwxr-xr-x | xlators/mount/fuse/utils/mount.glusterfs.in | 7 |
3 files changed, 42 insertions, 14 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 3b9824e137c..34a0dbbe539 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -5161,10 +5161,15 @@ fuse_priv_dump (xlator_t *this) int fuse_history_dump (xlator_t *this) { - int ret = -1; - char key_prefix[GF_DUMP_MAX_BUF_LEN] = {0,}; + int ret = -1; + char key_prefix[GF_DUMP_MAX_BUF_LEN] = {0,}; + fuse_private_t *priv = this->private; GF_VALIDATE_OR_GOTO ("fuse", this, out); + + if (!priv->event_history) + goto out; + GF_VALIDATE_OR_GOTO (this->name, this->history, out); gf_proc_dump_build_key (key_prefix, "xlator.mount.fuse", @@ -5659,6 +5664,9 @@ init (xlator_t *this_xl) } } + GF_OPTION_INIT("event-history", priv->event_history, bool, + cleanup_exit); + /* user has set only background-qlen, not congestion-threshold, use the fuse kernel driver formula to set congestion. ie, 75% */ if (dict_get (this_xl->options, "background-qlen") && @@ -5757,14 +5765,16 @@ init (xlator_t *this_xl) goto cleanup_exit; } - event = eh_new (FUSE_EVENT_HISTORY_SIZE, _gf_false, NULL); - if (!event) { - gf_log (this_xl->name, GF_LOG_ERROR, - "could not create a new event history"); - goto cleanup_exit; - } + if (priv->event_history) { + event = eh_new (FUSE_EVENT_HISTORY_SIZE, _gf_false, NULL); + if (!event) { + gf_log (this_xl->name, GF_LOG_ERROR, + "could not create a new event history"); + goto cleanup_exit; + } - this_xl->history = event; + this_xl->history = event; + } pthread_mutex_init (&priv->fuse_dump_mutex, NULL); pthread_cond_init (&priv->sync_cond, NULL); @@ -5961,5 +5971,11 @@ struct volume_options options[] = { .type = GF_OPTION_TYPE_BOOL, .default_value = "false" }, + { .key = {"event-history"}, + .type = GF_OPTION_TYPE_BOOL, + .default_value = "false", + .description = "This option can be used to enable or disable fuse " + "event history.", + }, { .key = {NULL} }, }; diff --git a/xlators/mount/fuse/src/fuse-bridge.h b/xlators/mount/fuse/src/fuse-bridge.h index 201b7f6930f..2dfef64c975 100644 --- a/xlators/mount/fuse/src/fuse-bridge.h +++ b/xlators/mount/fuse/src/fuse-bridge.h @@ -135,6 +135,9 @@ struct fuse_private { /* Enable or disable capability support */ gf_boolean_t capability; + /* Enable or disable event history */ + gf_boolean_t event_history; + /* whether to run the unmount daemon */ gf_boolean_t auto_unmount; }; @@ -280,7 +283,8 @@ typedef struct fuse_graph_switch_args fuse_graph_switch_args_t; #define fuse_log_eh_fop(this, state, frame, op_ret, op_errno) \ do { \ - if (this->history) { \ + fuse_private_t *priv = this->private; \ + if (this->history && priv->event_history) { \ if (state->fd) \ gf_log_eh ("op_ret: %d, op_errno: %d, " \ "%"PRIu64", %s () => %p, gfid: %s", \ @@ -300,10 +304,11 @@ typedef struct fuse_graph_switch_args fuse_graph_switch_args_t; } \ } while(0) -#define fuse_log_eh(this, args...) \ - do { \ - if (this->history) \ - gf_log_eh(args); \ +#define fuse_log_eh(this, args...) \ + do { \ + fuse_private_t *priv = this->private; \ + if (this->history && priv->event_history) \ + gf_log_eh(args); \ } while (0) static inline xlator_t * diff --git a/xlators/mount/fuse/utils/mount.glusterfs.in b/xlators/mount/fuse/utils/mount.glusterfs.in index ea7205b95e2..c6f2dda8e9a 100755 --- a/xlators/mount/fuse/utils/mount.glusterfs.in +++ b/xlators/mount/fuse/utils/mount.glusterfs.in @@ -217,6 +217,10 @@ start_glusterfs () cmd_line=$(echo "$cmd_line --use-readdirp=$use_readdirp"); fi + if [ -n "$event_history" ]; then + cmd_line=$(echo "$cmd_line --event-history=$event_history"); + fi + if [ -n "$volume_name" ]; then cmd_line=$(echo "$cmd_line --volume-name=$volume_name"); fi @@ -488,6 +492,9 @@ with_options() "use-readdirp") use_readdirp=$value ;; + "event-history") + event_history=$value + ;; "no-root-squash") if [ $value = "yes" ] || [ $value = "on" ] || |