diff options
Diffstat (limited to 'fs/fuse/fuse_i.h')
| -rw-r--r-- | fs/fuse/fuse_i.h | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index c4c093bbf456..5256ad333b05 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -26,6 +26,7 @@  #include <linux/xattr.h>  #include <linux/pid_namespace.h>  #include <linux/refcount.h> +#include <linux/user_namespace.h>  /** Max number of pages that can be used in a single read request */  #define FUSE_MAX_PAGES_PER_REQ 32 @@ -466,6 +467,9 @@ struct fuse_conn {  	/** The pid namespace for this mount */  	struct pid_namespace *pid_ns; +	/** The user namespace for this mount */ +	struct user_namespace *user_ns; +  	/** Maximum read size */  	unsigned max_read; @@ -515,6 +519,9 @@ struct fuse_conn {  	    abort and device release */  	unsigned connected; +	/** Connection aborted via sysfs */ +	bool aborted; +  	/** Connection failed (version mismatch).  Cannot race with  	    setting other bitfields since it is only set once in INIT  	    reply, before any other request, and never cleared */ @@ -526,6 +533,9 @@ struct fuse_conn {  	/** Do readpages asynchronously?  Only set in INIT */  	unsigned async_read:1; +	/** Return an unique read error after abort.  Only set in INIT */ +	unsigned abort_err:1; +  	/** Do not send separate SETATTR request before open(O_TRUNC)  */  	unsigned atomic_o_trunc:1; @@ -851,7 +861,7 @@ void fuse_request_send_background_locked(struct fuse_conn *fc,  					 struct fuse_req *req);  /* Abort all requests */ -void fuse_abort_conn(struct fuse_conn *fc); +void fuse_abort_conn(struct fuse_conn *fc, bool is_abort);  /**   * Invalidate inode attributes @@ -870,7 +880,7 @@ struct fuse_conn *fuse_conn_get(struct fuse_conn *fc);  /**   * Initialize fuse_conn   */ -void fuse_conn_init(struct fuse_conn *fc); +void fuse_conn_init(struct fuse_conn *fc, struct user_namespace *user_ns);  /**   * Release reference to fuse_conn @@ -975,6 +985,7 @@ ssize_t fuse_listxattr(struct dentry *entry, char *list, size_t size);  int fuse_removexattr(struct inode *inode, const char *name);  extern const struct xattr_handler *fuse_xattr_handlers[];  extern const struct xattr_handler *fuse_acl_xattr_handlers[]; +extern const struct xattr_handler *fuse_no_acl_xattr_handlers[];  struct posix_acl;  struct posix_acl *fuse_get_acl(struct inode *inode, int type); |