diff options
Diffstat (limited to 'include/linux/fs.h')
| -rw-r--r-- | include/linux/fs.h | 50 | 
1 files changed, 25 insertions, 25 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index b33cfc97b9c..2c28271ab9d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -44,6 +44,7 @@ struct vm_area_struct;  struct vfsmount;  struct cred;  struct swap_info_struct; +struct seq_file;  extern void __init inode_init(void);  extern void __init inode_init_early(void); @@ -300,7 +301,7 @@ size_t iov_iter_copy_from_user(struct page *page,  		struct iov_iter *i, unsigned long offset, size_t bytes);  void iov_iter_advance(struct iov_iter *i, size_t bytes);  int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes); -size_t iov_iter_single_seg_count(struct iov_iter *i); +size_t iov_iter_single_seg_count(const struct iov_iter *i);  static inline void iov_iter_init(struct iov_iter *i,  			const struct iovec *iov, unsigned long nr_segs, @@ -418,7 +419,7 @@ struct address_space {  	struct backing_dev_info *backing_dev_info; /* device readahead, etc */  	spinlock_t		private_lock;	/* for use by the address_space */  	struct list_head	private_list;	/* ditto */ -	struct address_space	*assoc_mapping;	/* ditto */ +	void			*private_data;	/* ditto */  } __attribute__((aligned(sizeof(long))));  	/*  	 * On most architectures that alignment is already the case; but @@ -462,8 +463,6 @@ struct block_device {  	int			bd_fsfreeze_count;  	/* Mutex for freeze */  	struct mutex		bd_fsfreeze_mutex; -	/* A semaphore that prevents I/O while block size is being changed */ -	struct percpu_rw_semaphore	bd_block_size_semaphore;  };  /* @@ -770,7 +769,7 @@ struct file {  	} f_u;  	struct path		f_path;  #define f_dentry	f_path.dentry -#define f_vfsmnt	f_path.mnt +	struct inode		*f_inode;	/* cached value */  	const struct file_operations	*f_op;  	/* @@ -1446,10 +1445,6 @@ static inline void sb_start_intwrite(struct super_block *sb)  extern bool inode_owner_or_capable(const struct inode *inode); -/* not quite ready to be deprecated, but... */ -extern void lock_super(struct super_block *); -extern void unlock_super(struct super_block *); -  /*   * VFS helper functions..   */ @@ -1545,6 +1540,7 @@ struct file_operations {  	int (*setlease)(struct file *, long, struct file_lock **);  	long (*fallocate)(struct file *file, int mode, loff_t offset,  			  loff_t len); +	int (*show_fdinfo)(struct seq_file *m, struct file *f);  };  struct inode_operations { @@ -1565,7 +1561,6 @@ struct inode_operations {  	int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t);  	int (*rename) (struct inode *, struct dentry *,  			struct inode *, struct dentry *); -	void (*truncate) (struct inode *);  	int (*setattr) (struct dentry *, struct iattr *);  	int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);  	int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); @@ -1580,8 +1575,6 @@ struct inode_operations {  			   umode_t create_mode, int *opened);  } ____cacheline_aligned; -struct seq_file; -  ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,  			      unsigned long nr_segs, unsigned long fast_segs,  			      struct iovec *fast_pointer, @@ -1812,7 +1805,8 @@ struct file_system_type {  #define FS_REQUIRES_DEV		1   #define FS_BINARY_MOUNTDATA	2  #define FS_HAS_SUBTYPE		4 -#define FS_REVAL_DOT		16384	/* Check the paths ".", ".." for staleness */ +#define FS_USERNS_MOUNT		8	/* Can be mounted by userns root */ +#define FS_USERNS_DEV_MOUNT	16 /* A userns mount does not imply MNT_NODEV */  #define FS_RENAME_DOES_D_MOVE	32768	/* FS will handle d_move() during rename() internally. */  	struct dentry *(*mount) (struct file_system_type *, int,  		       const char *, void *); @@ -1831,6 +1825,8 @@ struct file_system_type {  	struct lock_class_key i_mutex_dir_key;  }; +#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME) +  extern struct dentry *mount_ns(struct file_system_type *fs_type, int flags,  	void *data, int (*fill_super)(struct super_block *, void *, int));  extern struct dentry *mount_bdev(struct file_system_type *fs_type, @@ -1999,6 +1995,7 @@ struct filename {  	bool			separate; /* should "name" be freed? */  }; +extern long vfs_truncate(struct path *, loff_t);  extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs,  		       struct file *filp);  extern int do_fallocate(struct file *file, int mode, loff_t offset, @@ -2049,7 +2046,6 @@ extern void unregister_blkdev(unsigned int, const char *);  extern struct block_device *bdget(dev_t);  extern struct block_device *bdgrab(struct block_device *bdev);  extern void bd_set_size(struct block_device *, loff_t size); -extern sector_t blkdev_max_block(struct block_device *bdev);  extern void bd_forget(struct inode *inode);  extern void bdput(struct block_device *);  extern void invalidate_bdev(struct block_device *); @@ -2222,6 +2218,11 @@ static inline bool execute_ok(struct inode *inode)  	return (inode->i_mode & S_IXUGO) || S_ISDIR(inode->i_mode);  } +static inline struct inode *file_inode(struct file *f) +{ +	return f->f_inode; +} +  /*   * get_write_access() gets write permission for a file.   * put_write_access() releases this write permission. @@ -2244,7 +2245,7 @@ static inline int get_write_access(struct inode *inode)  }  static inline int deny_write_access(struct file *file)  { -	struct inode *inode = file->f_path.dentry->d_inode; +	struct inode *inode = file_inode(file);  	return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -ETXTBSY;  }  static inline void put_write_access(struct inode * inode) @@ -2254,7 +2255,7 @@ static inline void put_write_access(struct inode * inode)  static inline void allow_write_access(struct file *file)  {  	if (file) -		atomic_inc(&file->f_path.dentry->d_inode->i_writecount); +		atomic_inc(&file_inode(file)->i_writecount);  }  #ifdef CONFIG_IMA  static inline void i_readcount_dec(struct inode *inode) @@ -2279,6 +2280,7 @@ static inline void i_readcount_inc(struct inode *inode)  extern int do_pipe_flags(int *, int);  extern int kernel_read(struct file *, loff_t, char *, unsigned long); +extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t);  extern struct file * open_exec(const char *);  /* fs/dcache.c -- generic fs support functions */ @@ -2289,9 +2291,9 @@ extern ino_t find_inode_number(struct dentry *, struct qstr *);  #include <linux/err.h>  /* needed for stackable file system support */ -extern loff_t default_llseek(struct file *file, loff_t offset, int origin); +extern loff_t default_llseek(struct file *file, loff_t offset, int whence); -extern loff_t vfs_llseek(struct file *file, loff_t offset, int origin); +extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence);  extern int inode_init_always(struct super_block *, struct inode *);  extern void inode_init_once(struct inode *); @@ -2379,8 +2381,6 @@ extern int generic_segment_checks(const struct iovec *iov,  		unsigned long *nr_segs, size_t *count, int access_flags);  /* fs/block_dev.c */ -extern ssize_t blkdev_aio_read(struct kiocb *iocb, const struct iovec *iov, -			       unsigned long nr_segs, loff_t pos);  extern ssize_t blkdev_aio_write(struct kiocb *iocb, const struct iovec *iov,  				unsigned long nr_segs, loff_t pos);  extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end, @@ -2401,11 +2401,11 @@ extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,  extern void  file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); -extern loff_t noop_llseek(struct file *file, loff_t offset, int origin); -extern loff_t no_llseek(struct file *file, loff_t offset, int origin); -extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin); +extern loff_t noop_llseek(struct file *file, loff_t offset, int whence); +extern loff_t no_llseek(struct file *file, loff_t offset, int whence); +extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence);  extern loff_t generic_file_llseek_size(struct file *file, loff_t offset, -		int origin, loff_t maxsize, loff_t eof); +		int whence, loff_t maxsize, loff_t eof);  extern int generic_file_open(struct inode * inode, struct file * filp);  extern int nonseekable_open(struct inode * inode, struct file * filp); @@ -2470,7 +2470,7 @@ extern int page_symlink(struct inode *inode, const char *symname, int len);  extern const struct inode_operations page_symlink_inode_operations;  extern int generic_readlink(struct dentry *, char __user *, int);  extern void generic_fillattr(struct inode *, struct kstat *); -extern int vfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); +extern int vfs_getattr(struct path *, struct kstat *);  void __inode_add_bytes(struct inode *inode, loff_t bytes);  void inode_add_bytes(struct inode *inode, loff_t bytes);  void inode_sub_bytes(struct inode *inode, loff_t bytes);  |