diff options
| -rw-r--r-- | contrib/fuse-include/fuse_kernel.h | 10 | ||||
| -rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.c | 12 | 
2 files changed, 17 insertions, 5 deletions
diff --git a/contrib/fuse-include/fuse_kernel.h b/contrib/fuse-include/fuse_kernel.h index dac35d8b9b1..9ae25d6f9c0 100644 --- a/contrib/fuse-include/fuse_kernel.h +++ b/contrib/fuse-include/fuse_kernel.h @@ -56,6 +56,10 @@   *  - add umask flag to input argument of open, mknod and mkdir   *  - add notification messages for invalidation of inodes and   *    directory entries + * + * 7.13 + *  - make max number of background requests and congestion threshold + *    tunables   */  #ifndef _LINUX_FUSE_H @@ -66,12 +70,13 @@  #define __s64 int64_t  #define __u32 uint32_t  #define __s32 int32_t +#define __u16 uint16_t  /** Version number of this interface */  #define FUSE_KERNEL_VERSION 7  /** Minor version number of this interface */ -#define FUSE_KERNEL_MINOR_VERSION 12 +#define FUSE_KERNEL_MINOR_VERSION 13  /** The node ID of the root inode */  #define FUSE_ROOT_ID 1 @@ -457,7 +462,8 @@ struct fuse_init_out {  	__u32	minor;  	__u32	max_readahead;  	__u32	flags; -	__u32	unused; +	__u16   max_background; +	__u16   congestion_threshold;  	__u32	max_write;  }; diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 714ca995d5b..a17c8e53c3a 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -62,7 +62,7 @@  #define ZR_DIRECT_IO_OPT        "direct-io-mode"  #define ZR_STRICT_VOLFILE_CHECK "strict-volfile-check" -#define FUSE_712_OP_HIGH (FUSE_POLL + 1) +#define FUSE_713_OP_HIGH (FUSE_POLL + 1)  #define GLUSTERFS_XATTR_LEN_MAX  65536  #define MAX_FUSE_PROC_DELAY 1 @@ -2914,6 +2914,12 @@ fuse_init (xlator_t *this, fuse_in_header_t *finh, void *msg)                  priv->direct_io_mode = 0;                  fino.flags |= FUSE_BIG_WRITES;          } +        if (fini->minor >= 13) { +                /* these values seemed to work fine during testing */ + +                fino.max_background = 64; +                fino.congestion_threshold = 48; +        }          if (fini->minor < 9)                  *priv->msg0_len_p = sizeof(*finh) + FUSE_COMPAT_WRITE_IN_SIZE; @@ -2951,7 +2957,7 @@ fuse_discard (xlator_t *this, fuse_in_header_t *finh, void *msg)          FREE (finh);  } -static fuse_handler_t *fuse_ops[FUSE_712_OP_HIGH]; +static fuse_handler_t *fuse_ops[FUSE_713_OP_HIGH];  int  fuse_first_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, @@ -3443,7 +3449,7 @@ init (xlator_t *this_xl)          pthread_mutex_init (&priv->child_up_mutex, NULL);          priv->child_up_value = 1; -        for (i = 0; i < FUSE_712_OP_HIGH; i++) +        for (i = 0; i < FUSE_713_OP_HIGH; i++)                  fuse_ops[i] = fuse_enosys;          fuse_ops[FUSE_INIT]        = fuse_init;          fuse_ops[FUSE_DESTROY]     = fuse_discard;  | 
