diff options
| -rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 2 | ||||
| -rw-r--r-- | fs/adfs/dir.c | 2 | ||||
| -rw-r--r-- | fs/adfs/file.c | 2 | ||||
| -rw-r--r-- | fs/bfs/dir.c | 2 | ||||
| -rw-r--r-- | fs/ext2/file.c | 2 | ||||
| -rw-r--r-- | fs/ext4/fsync.c | 2 | ||||
| -rw-r--r-- | fs/fat/file.c | 2 | ||||
| -rw-r--r-- | fs/hugetlbfs/inode.c | 2 | ||||
| -rw-r--r-- | fs/libfs.c | 30 | ||||
| -rw-r--r-- | fs/minix/dir.c | 2 | ||||
| -rw-r--r-- | fs/minix/file.c | 2 | ||||
| -rw-r--r-- | fs/omfs/file.c | 2 | ||||
| -rw-r--r-- | fs/qnx4/dir.c | 2 | ||||
| -rw-r--r-- | fs/ramfs/file-mmu.c | 2 | ||||
| -rw-r--r-- | fs/ramfs/file-nommu.c | 2 | ||||
| -rw-r--r-- | fs/sysv/dir.c | 2 | ||||
| -rw-r--r-- | fs/sysv/file.c | 2 | ||||
| -rw-r--r-- | fs/udf/dir.c | 2 | ||||
| -rw-r--r-- | fs/udf/file.c | 2 | ||||
| -rw-r--r-- | fs/ufs/dir.c | 2 | ||||
| -rw-r--r-- | fs/ufs/file.c | 2 | ||||
| -rw-r--r-- | include/linux/fs.h | 4 | ||||
| -rw-r--r-- | mm/shmem.c | 2 | 
23 files changed, 44 insertions, 32 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index fc1b1c42b1d..e5e5f823d68 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c @@ -251,7 +251,7 @@ const struct file_operations spufs_context_fops = {  	.llseek		= dcache_dir_lseek,  	.read		= generic_read_dir,  	.readdir	= dcache_readdir, -	.fsync		= simple_sync_file, +	.fsync		= noop_fsync,  };  EXPORT_SYMBOL_GPL(spufs_context_fops); diff --git a/fs/adfs/dir.c b/fs/adfs/dir.c index 23aa52f548a..f4287e4de74 100644 --- a/fs/adfs/dir.c +++ b/fs/adfs/dir.c @@ -197,7 +197,7 @@ const struct file_operations adfs_dir_operations = {  	.read		= generic_read_dir,  	.llseek		= generic_file_llseek,  	.readdir	= adfs_readdir, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  };  static int diff --git a/fs/adfs/file.c b/fs/adfs/file.c index 005ea34d175..a36da5382b4 100644 --- a/fs/adfs/file.c +++ b/fs/adfs/file.c @@ -26,7 +26,7 @@ const struct file_operations adfs_file_operations = {  	.read		= do_sync_read,  	.aio_read	= generic_file_aio_read,  	.mmap		= generic_file_mmap, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  	.write		= do_sync_write,  	.aio_write	= generic_file_aio_write,  	.splice_read	= generic_file_splice_read, diff --git a/fs/bfs/dir.c b/fs/bfs/dir.c index 8f73841fc97..d967e052b77 100644 --- a/fs/bfs/dir.c +++ b/fs/bfs/dir.c @@ -78,7 +78,7 @@ static int bfs_readdir(struct file *f, void *dirent, filldir_t filldir)  const struct file_operations bfs_dir_operations = {  	.read		= generic_read_dir,  	.readdir	= bfs_readdir, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  	.llseek		= generic_file_llseek,  }; diff --git a/fs/ext2/file.c b/fs/ext2/file.c index 48bcfc32701..d82e7ca9345 100644 --- a/fs/ext2/file.c +++ b/fs/ext2/file.c @@ -46,7 +46,7 @@ int ext2_fsync(struct file *file, int datasync)  	struct super_block *sb = file->f_mapping->host->i_sb;  	struct address_space *mapping = sb->s_bdev->bd_inode->i_mapping; -	ret = simple_fsync(file, datasync); +	ret = generic_file_fsync(file, datasync);  	if (ret == -EIO || test_and_clear_bit(AS_EIO, &mapping->flags)) {  		/* We don't really know where the IO error happened... */  		ext2_error(sb, __func__, diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c index 40f34520173..592adf2e546 100644 --- a/fs/ext4/fsync.c +++ b/fs/ext4/fsync.c @@ -91,7 +91,7 @@ int ext4_sync_file(struct file *file, int datasync)  		return ret;  	if (!journal) { -		ret = simple_fsync(file, datasync); +		ret = generic_file_fsync(file, datasync);  		if (!ret && !list_empty(&inode->i_dentry))  			ext4_sync_parent(inode);  		return ret; diff --git a/fs/fat/file.c b/fs/fat/file.c index 29a57694437..8c13b8acfd2 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@ -154,7 +154,7 @@ int fat_file_fsync(struct file *filp, int datasync)  	struct inode *inode = filp->f_mapping->host;  	int res, err; -	res = simple_fsync(filp, datasync); +	res = generic_file_fsync(filp, datasync);  	err = sync_mapping_buffers(MSDOS_SB(inode->i_sb)->fat_inode->i_mapping);  	return res ? res : err; diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index a0bbd3d1b41..a4e9a7ec369 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -688,7 +688,7 @@ static void init_once(void *foo)  const struct file_operations hugetlbfs_file_operations = {  	.read			= hugetlbfs_read,  	.mmap			= hugetlbfs_file_mmap, -	.fsync			= simple_sync_file, +	.fsync			= noop_fsync,  	.get_unmapped_area	= hugetlb_get_unmapped_area,  }; diff --git a/fs/libfs.c b/fs/libfs.c index e57ea58bda6..b84d0a7a220 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -58,11 +58,6 @@ struct dentry *simple_lookup(struct inode *dir, struct dentry *dentry, struct na  	return NULL;  } -int simple_sync_file(struct file *file, int datasync) -{ -	return 0; -} -   int dcache_dir_open(struct inode *inode, struct file *file)  {  	static struct qstr cursor_name = {.len = 1, .name = "."}; @@ -190,7 +185,7 @@ const struct file_operations simple_dir_operations = {  	.llseek		= dcache_dir_lseek,  	.read		= generic_read_dir,  	.readdir	= dcache_readdir, -	.fsync		= simple_sync_file, +	.fsync		= noop_fsync,  };  const struct inode_operations simple_dir_inode_operations = { @@ -851,7 +846,16 @@ struct dentry *generic_fh_to_parent(struct super_block *sb, struct fid *fid,  }  EXPORT_SYMBOL_GPL(generic_fh_to_parent); -int simple_fsync(struct file *file, int datasync) +/** + * generic_file_fsync - generic fsync implementation for simple filesystems + * @file:	file to synchronize + * @datasync:	only synchronize essential metadata if true + * + * This is a generic implementation of the fsync method for simple + * filesystems which track all non-inode metadata in the buffers list + * hanging off the address_space structure. + */ +int generic_file_fsync(struct file *file, int datasync)  {  	struct writeback_control wbc = {  		.sync_mode = WB_SYNC_ALL, @@ -872,7 +876,15 @@ int simple_fsync(struct file *file, int datasync)  		ret = err;  	return ret;  } -EXPORT_SYMBOL(simple_fsync); +EXPORT_SYMBOL(generic_file_fsync); + +/* + * No-op implementation of ->fsync for in-memory filesystems. + */ +int noop_fsync(struct file *file, int datasync) +{ +	return 0; +}  EXPORT_SYMBOL(dcache_dir_close);  EXPORT_SYMBOL(dcache_dir_lseek); @@ -895,7 +907,7 @@ EXPORT_SYMBOL(simple_release_fs);  EXPORT_SYMBOL(simple_rename);  EXPORT_SYMBOL(simple_rmdir);  EXPORT_SYMBOL(simple_statfs); -EXPORT_SYMBOL(simple_sync_file); +EXPORT_SYMBOL(noop_fsync);  EXPORT_SYMBOL(simple_unlink);  EXPORT_SYMBOL(simple_read_from_buffer);  EXPORT_SYMBOL(simple_write_to_buffer); diff --git a/fs/minix/dir.c b/fs/minix/dir.c index 6198731d7fc..aaab97ec5bc 100644 --- a/fs/minix/dir.c +++ b/fs/minix/dir.c @@ -22,7 +22,7 @@ const struct file_operations minix_dir_operations = {  	.llseek		= generic_file_llseek,  	.read		= generic_read_dir,  	.readdir	= minix_readdir, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  };  static inline void dir_put_page(struct page *page) diff --git a/fs/minix/file.c b/fs/minix/file.c index 3eec3e607a8..d5320ff23fa 100644 --- a/fs/minix/file.c +++ b/fs/minix/file.c @@ -19,7 +19,7 @@ const struct file_operations minix_file_operations = {  	.write		= do_sync_write,  	.aio_write	= generic_file_aio_write,  	.mmap		= generic_file_mmap, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  	.splice_read	= generic_file_splice_read,  }; diff --git a/fs/omfs/file.c b/fs/omfs/file.c index 399487c0936..6e7a3291bbe 100644 --- a/fs/omfs/file.c +++ b/fs/omfs/file.c @@ -329,7 +329,7 @@ const struct file_operations omfs_file_operations = {  	.aio_read = generic_file_aio_read,  	.aio_write = generic_file_aio_write,  	.mmap = generic_file_mmap, -	.fsync = simple_fsync, +	.fsync = generic_file_fsync,  	.splice_read = generic_file_splice_read,  }; diff --git a/fs/qnx4/dir.c b/fs/qnx4/dir.c index 3d3fd469213..6e8fc62b40a 100644 --- a/fs/qnx4/dir.c +++ b/fs/qnx4/dir.c @@ -80,7 +80,7 @@ const struct file_operations qnx4_dir_operations =  	.llseek		= generic_file_llseek,  	.read		= generic_read_dir,  	.readdir	= qnx4_readdir, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  };  const struct inode_operations qnx4_dir_inode_operations = diff --git a/fs/ramfs/file-mmu.c b/fs/ramfs/file-mmu.c index 78f613cb9c7..50020501c5e 100644 --- a/fs/ramfs/file-mmu.c +++ b/fs/ramfs/file-mmu.c @@ -43,7 +43,7 @@ const struct file_operations ramfs_file_operations = {  	.write		= do_sync_write,  	.aio_write	= generic_file_aio_write,  	.mmap		= generic_file_mmap, -	.fsync		= simple_sync_file, +	.fsync		= noop_fsync,  	.splice_read	= generic_file_splice_read,  	.splice_write	= generic_file_splice_write,  	.llseek		= generic_file_llseek, diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c index 5ea4ad81a42..869f2d80183 100644 --- a/fs/ramfs/file-nommu.c +++ b/fs/ramfs/file-nommu.c @@ -42,7 +42,7 @@ const struct file_operations ramfs_file_operations = {  	.aio_read		= generic_file_aio_read,  	.write			= do_sync_write,  	.aio_write		= generic_file_aio_write, -	.fsync			= simple_sync_file, +	.fsync			= noop_fsync,  	.splice_read		= generic_file_splice_read,  	.splice_write		= generic_file_splice_write,  	.llseek			= generic_file_llseek, diff --git a/fs/sysv/dir.c b/fs/sysv/dir.c index 1dabed286b4..79941e4964a 100644 --- a/fs/sysv/dir.c +++ b/fs/sysv/dir.c @@ -24,7 +24,7 @@ const struct file_operations sysv_dir_operations = {  	.llseek		= generic_file_llseek,  	.read		= generic_read_dir,  	.readdir	= sysv_readdir, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  };  static inline void dir_put_page(struct page *page) diff --git a/fs/sysv/file.c b/fs/sysv/file.c index 96340c01f4a..750cc22349b 100644 --- a/fs/sysv/file.c +++ b/fs/sysv/file.c @@ -26,7 +26,7 @@ const struct file_operations sysv_file_operations = {  	.write		= do_sync_write,  	.aio_write	= generic_file_aio_write,  	.mmap		= generic_file_mmap, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  	.splice_read	= generic_file_splice_read,  }; diff --git a/fs/udf/dir.c b/fs/udf/dir.c index 1660c81ffa3..51552bf5022 100644 --- a/fs/udf/dir.c +++ b/fs/udf/dir.c @@ -211,5 +211,5 @@ const struct file_operations udf_dir_operations = {  	.read			= generic_read_dir,  	.readdir		= udf_readdir,  	.unlocked_ioctl		= udf_ioctl, -	.fsync			= simple_fsync, +	.fsync			= generic_file_fsync,  }; diff --git a/fs/udf/file.c b/fs/udf/file.c index baae3a72394..0660280aa18 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c @@ -224,7 +224,7 @@ const struct file_operations udf_file_operations = {  	.write			= do_sync_write,  	.aio_write		= udf_file_aio_write,  	.release		= udf_release_file, -	.fsync			= simple_fsync, +	.fsync			= generic_file_fsync,  	.splice_read		= generic_file_splice_read,  	.llseek			= generic_file_llseek,  }; diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c index 317a0d444f6..ec784756dc6 100644 --- a/fs/ufs/dir.c +++ b/fs/ufs/dir.c @@ -666,6 +666,6 @@ not_empty:  const struct file_operations ufs_dir_operations = {  	.read		= generic_read_dir,  	.readdir	= ufs_readdir, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  	.llseek		= generic_file_llseek,  }; diff --git a/fs/ufs/file.c b/fs/ufs/file.c index a8962cecde5..d4c30d1bef8 100644 --- a/fs/ufs/file.c +++ b/fs/ufs/file.c @@ -42,6 +42,6 @@ const struct file_operations ufs_file_operations = {  	.aio_write	= generic_file_aio_write,  	.mmap		= generic_file_mmap,  	.open           = dquot_file_open, -	.fsync		= simple_fsync, +	.fsync		= generic_file_fsync,  	.splice_read	= generic_file_splice_read,  }; diff --git a/include/linux/fs.h b/include/linux/fs.h index eb39e5eb77f..acf6c52a50d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2348,7 +2348,7 @@ extern int simple_link(struct dentry *, struct inode *, struct dentry *);  extern int simple_unlink(struct inode *, struct dentry *);  extern int simple_rmdir(struct inode *, struct dentry *);  extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); -extern int simple_sync_file(struct file *, int); +extern int noop_fsync(struct file *, int);  extern int simple_empty(struct dentry *);  extern int simple_readpage(struct file *file, struct page *page);  extern int simple_write_begin(struct file *file, struct address_space *mapping, @@ -2373,7 +2373,7 @@ extern ssize_t simple_read_from_buffer(void __user *to, size_t count,  extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,  		const void __user *from, size_t count); -extern int simple_fsync(struct file *, int); +extern int generic_file_fsync(struct file *, int);  #ifdef CONFIG_MIGRATION  extern int buffer_migrate_page(struct address_space *, diff --git a/mm/shmem.c b/mm/shmem.c index 855eaf5b8d5..4daf8cecf42 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2433,7 +2433,7 @@ static const struct file_operations shmem_file_operations = {  	.write		= do_sync_write,  	.aio_read	= shmem_file_aio_read,  	.aio_write	= generic_file_aio_write, -	.fsync		= simple_sync_file, +	.fsync		= noop_fsync,  	.splice_read	= generic_file_splice_read,  	.splice_write	= generic_file_splice_write,  #endif  |