diff options
Diffstat (limited to 'include/linux/fs.h')
| -rw-r--r-- | include/linux/fs.h | 21 | 
1 files changed, 16 insertions, 5 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 2c28271ab9d..e8cd6b83967 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -675,9 +675,11 @@ static inline loff_t i_size_read(const struct inode *inode)  static inline void i_size_write(struct inode *inode, loff_t i_size)  {  #if BITS_PER_LONG==32 && defined(CONFIG_SMP) +	preempt_disable();  	write_seqcount_begin(&inode->i_size_seqcount);  	inode->i_size = i_size;  	write_seqcount_end(&inode->i_size_seqcount); +	preempt_enable();  #elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPT)  	preempt_disable();  	inode->i_size = i_size; @@ -2080,7 +2082,6 @@ extern int sync_filesystem(struct super_block *);  extern const struct file_operations def_blk_fops;  extern const struct file_operations def_chr_fops;  extern const struct file_operations bad_sock_fops; -extern const struct file_operations def_fifo_fops;  #ifdef CONFIG_BLOCK  extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long);  extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long); @@ -2152,10 +2153,6 @@ extern void init_special_inode(struct inode *, umode_t, dev_t);  extern void make_bad_inode(struct inode *);  extern int is_bad_inode(struct inode *); -extern const struct file_operations read_pipefifo_fops; -extern const struct file_operations write_pipefifo_fops; -extern const struct file_operations rdwr_pipefifo_fops; -  #ifdef CONFIG_BLOCK  /*   * return READ, READA, or WRITE @@ -2223,6 +2220,20 @@ static inline struct inode *file_inode(struct file *f)  	return f->f_inode;  } +static inline void file_start_write(struct file *file) +{ +	if (!S_ISREG(file_inode(file)->i_mode)) +		return; +	__sb_start_write(file_inode(file)->i_sb, SB_FREEZE_WRITE, true); +} + +static inline void file_end_write(struct file *file) +{ +	if (!S_ISREG(file_inode(file)->i_mode)) +		return; +	__sb_end_write(file_inode(file)->i_sb, SB_FREEZE_WRITE); +} +  /*   * get_write_access() gets write permission for a file.   * put_write_access() releases this write permission.  |