diff options
Diffstat (limited to 'xlators/mount')
| -rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.c | 13 | ||||
| -rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.h | 3 | ||||
| -rwxr-xr-x | xlators/mount/fuse/utils/mount.glusterfs.in | 5 | 
3 files changed, 19 insertions, 2 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 5b6fed9fe76..ce33009d8e3 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -3752,8 +3752,10 @@ fuse_init (xlator_t *this, fuse_in_header_t *finh, void *msg)          if (fini->minor < 9)                  *priv->msg0_len_p = sizeof(*finh) + FUSE_COMPAT_WRITE_IN_SIZE;  #endif -	if (fini->flags & FUSE_DO_READDIRPLUS) -		fino.flags |= FUSE_DO_READDIRPLUS; +        if (priv->use_readdirp) { +                if (fini->flags & FUSE_DO_READDIRPLUS) +                        fino.flags |= FUSE_DO_READDIRPLUS; +        }  	if (fini->flags & FUSE_ASYNC_DIO)  		fino.flags |= FUSE_ASYNC_DIO; @@ -4728,6 +4730,7 @@ fuse_priv_dump (xlator_t  *this)                              (int)private->strict_volfile_check);          gf_proc_dump_write("reverse_thread_started", "%d",                             (int)private->reverse_fuse_thread_started); +        gf_proc_dump_write("use_readdirp", "%d", private->use_readdirp);          return 0;  } @@ -5115,6 +5118,8 @@ init (xlator_t *this_xl)          GF_OPTION_INIT ("enable-ino32", priv->enable_ino32, bool, cleanup_exit); +        GF_OPTION_INIT ("use-readdirp", priv->use_readdirp, bool, cleanup_exit); +          priv->fuse_dump_fd = -1;          ret = dict_get_str (options, "dump-fuse", &value_string);          if (ret == 0) { @@ -5394,5 +5399,9 @@ struct volume_options options[] = {          { .key = {"fuse-mountopts"},            .type = GF_OPTION_TYPE_STR          }, +        { .key = {"use-readdirp"}, +          .type = GF_OPTION_TYPE_BOOL, +          .default_value = "no" +        },          { .key = {NULL} },  }; diff --git a/xlators/mount/fuse/src/fuse-bridge.h b/xlators/mount/fuse/src/fuse-bridge.h index d90b85e727e..2626638dc4f 100644 --- a/xlators/mount/fuse/src/fuse-bridge.h +++ b/xlators/mount/fuse/src/fuse-bridge.h @@ -119,6 +119,9 @@ struct fuse_private {          /* for fuse queue length and congestion threshold */          int background_qlen;          int congestion_threshold; + +        /* for using fuse-kernel readdirp*/ +        gf_boolean_t use_readdirp;  };  typedef struct fuse_private fuse_private_t; diff --git a/xlators/mount/fuse/utils/mount.glusterfs.in b/xlators/mount/fuse/utils/mount.glusterfs.in index 3fedb8ce342..c0a2ed1a743 100755 --- a/xlators/mount/fuse/utils/mount.glusterfs.in +++ b/xlators/mount/fuse/utils/mount.glusterfs.in @@ -135,6 +135,10 @@ start_glusterfs ()  	cmd_line=$(echo "$cmd_line --direct-io-mode=$direct_io_mode");      fi +    if [ -n "$use_readdirp" ]; then +	cmd_line=$(echo "$cmd_line --use-readdirp=$use_readdirp"); +    fi +      if [ -n "$volume_name" ]; then          cmd_line=$(echo "$cmd_line --volume-name=$volume_name");      fi @@ -376,6 +380,7 @@ main ()  			    "congestion-threshold")	cong_threshold=$value ;;  			    "xlator-option")	xlator_option=$xlator_option" "$pair ;;  			    "fuse-mountopts")	fuse_mountopts=$value ;; +                            "use-readdirp") use_readdirp=$value ;;                              *)                                  # Passthru                                  [ -z "$fuse_mountopts" ] || fuse_mountopts="$fuse_mountopts,"  | 
