-
- Downloads
add a vfs_fsync helper
Fsync currently has a fdatawrite/fdatawait pair around the method call, and a mutex_lock/unlock of the inode mutex. All callers of fsync have to duplicate this, but we have a few and most of them don't quite get it right. This patch adds a new vfs_fsync that takes care of this. It's a little more complicated as usual as ->fsync might get a NULL file pointer and just a dentry from nfsd, but otherwise gets afile and we want to take the mapping and file operations from it when it is there. Notes on the fsync callers: - ecryptfs wasn't calling filemap_fdatawrite / filemap_fdatawait on the lower file - coda wasn't calling filemap_fdatawrite / filemap_fdatawait on the host file, and returning 0 when ->fsync was missing - shm wasn't calling either filemap_fdatawrite / filemap_fdatawait nor taking i_mutex. Now given that shared memory doesn't have disk backing not doing anything in fsync seems fine and I left it out of the vfs_fsync conversion for now, but in that case we might just not pass it through to the lower file at all but just call the no-op simple_sync_file directly. [and now actually export vfs_fsync] Signed-off-by:Christoph Hellwig <hch@lst.de> Signed-off-by:
Al Viro <viro@zeniv.linux.org.uk>
Showing
- drivers/usb/gadget/file_storage.c 1 addition, 17 deletionsdrivers/usb/gadget/file_storage.c
- fs/coda/file.c 2 additions, 10 deletionsfs/coda/file.c
- fs/ecryptfs/file.c 3 additions, 12 deletionsfs/ecryptfs/file.c
- fs/nfsd/vfs.c 3 additions, 32 deletionsfs/nfsd/vfs.c
- fs/sync.c 37 additions, 11 deletionsfs/sync.c
- include/linux/fs.h 1 addition, 1 deletioninclude/linux/fs.h
- mm/msync.c 1 addition, 1 deletionmm/msync.c
Loading
Please register or sign in to comment