diff options
Diffstat (limited to 'fs/orangefs/orangefs-kernel.h')
| -rw-r--r-- | fs/orangefs/orangefs-kernel.h | 56 | 
1 files changed, 46 insertions, 10 deletions
diff --git a/fs/orangefs/orangefs-kernel.h b/fs/orangefs/orangefs-kernel.h index 17b24ad6b264..572dd29fbd54 100644 --- a/fs/orangefs/orangefs-kernel.h +++ b/fs/orangefs/orangefs-kernel.h @@ -51,6 +51,7 @@  #include <linux/rwsem.h>  #include <linux/xattr.h>  #include <linux/exportfs.h> +#include <linux/hashtable.h>  #include <asm/unaligned.h> @@ -192,7 +193,13 @@ struct orangefs_inode_s {  	sector_t last_failed_block_index_read;  	unsigned long getattr_time; -	u32 getattr_mask; +	unsigned long mapping_time; +	int attr_valid; +	kuid_t attr_uid; +	kgid_t attr_gid; +	unsigned long bitlock; + +	DECLARE_HASHTABLE(xattr_cache, 4);  };  /* per superblock private orangefs info */ @@ -217,6 +224,25 @@ struct orangefs_stats {  	unsigned long writes;  }; +struct orangefs_cached_xattr { +	struct hlist_node node; +	char key[ORANGEFS_MAX_XATTR_NAMELEN]; +	char val[ORANGEFS_MAX_XATTR_VALUELEN]; +	ssize_t length; +	unsigned long timeout; +}; + +struct orangefs_write_range { +	loff_t pos; +	size_t len; +	kuid_t uid; +	kgid_t gid; +}; + +struct orangefs_read_options { +	ssize_t blksiz; +}; +  extern struct orangefs_stats orangefs_stats;  /* @@ -329,13 +355,15 @@ void fsid_key_table_finalize(void);  /*   * defined in inode.c   */ +vm_fault_t orangefs_page_mkwrite(struct vm_fault *);  struct inode *orangefs_new_inode(struct super_block *sb,  			      struct inode *dir,  			      int mode,  			      dev_t dev,  			      struct orangefs_object_kref *ref); -int orangefs_setattr(struct dentry *dentry, struct iattr *iattr); +int __orangefs_setattr(struct inode *, struct iattr *); +int orangefs_setattr(struct dentry *, struct iattr *);  int orangefs_getattr(const struct path *path, struct kstat *stat,  		     u32 request_mask, unsigned int flags); @@ -355,11 +383,6 @@ ssize_t orangefs_listxattr(struct dentry *dentry, char *buffer, size_t size);  struct inode *orangefs_iget(struct super_block *sb,  			 struct orangefs_object_kref *ref); -ssize_t orangefs_inode_read(struct inode *inode, -			    struct iov_iter *iter, -			    loff_t *offset, -			    loff_t readahead_size); -  /*   * defined in devorangefs-req.c   */ @@ -371,6 +394,15 @@ int is_daemon_in_service(void);  bool __is_daemon_in_service(void);  /* + * defined in file.c + */ +int orangefs_revalidate_mapping(struct inode *); +ssize_t wait_for_direct_io(enum ORANGEFS_io_type, struct inode *, loff_t *, +    struct iov_iter *, size_t, loff_t, struct orangefs_write_range *, int *); +ssize_t do_readv_writev(enum ORANGEFS_io_type, struct file *, loff_t *, +    struct iov_iter *); + +/*   * defined in orangefs-utils.c   */  __s32 fsid_of_op(struct orangefs_kernel_op_s *op); @@ -386,12 +418,14 @@ int orangefs_inode_setxattr(struct inode *inode,  			 size_t size,  			 int flags); -int orangefs_inode_getattr(struct inode *inode, int new, int bypass, -    u32 request_mask); +#define ORANGEFS_GETATTR_NEW 1 +#define ORANGEFS_GETATTR_SIZE 2 + +int orangefs_inode_getattr(struct inode *, int);  int orangefs_inode_check_changed(struct inode *inode); -int orangefs_inode_setattr(struct inode *inode, struct iattr *iattr); +int orangefs_inode_setattr(struct inode *inode);  bool orangefs_cancel_op_in_progress(struct orangefs_kernel_op_s *op); @@ -400,6 +434,7 @@ int orangefs_normalize_to_errno(__s32 error_code);  extern struct mutex orangefs_request_mutex;  extern int op_timeout_secs;  extern int slot_timeout_secs; +extern int orangefs_cache_timeout_msecs;  extern int orangefs_dcache_timeout_msecs;  extern int orangefs_getattr_timeout_msecs;  extern struct list_head orangefs_superblocks; @@ -426,6 +461,7 @@ extern const struct dentry_operations orangefs_dentry_operations;  #define ORANGEFS_OP_CANCELLATION  4   /* this is a cancellation */  #define ORANGEFS_OP_NO_MUTEX      8   /* don't acquire request_mutex */  #define ORANGEFS_OP_ASYNC         16  /* Queue it, but don't wait */ +#define ORANGEFS_OP_WRITEBACK     32  int service_operation(struct orangefs_kernel_op_s *op,  		      const char *op_name,  |