Messages in this thread Patch in this message | | | From | Trond Myklebust <> | Subject | [PATCH] 2.4.19-rc1/2.5.25 provide dummy fsync() routine for directories on NFS mounts | Date | Tue, 9 Jul 2002 15:49:15 +0200 |
| |
Hi,
There was a bug reported on the 'exim' user list a couple of months ago: the Linux NFS client reports -EINVAL if you try to fsync() a directory.
The correct response would be to return a dummy '0' for success, since all NFS operations that change the directory are supposed to be performed synchronously on the server anyway...
Cheers, Trond
diff -u --recursive --new-file linux-2.4.19-rc1/fs/nfs/dir.c linux-2.4.19-fsync_dir/fs/nfs/dir.c --- linux-2.4.19-rc1/fs/nfs/dir.c Tue Mar 12 16:35:02 2002 +++ linux-2.4.19-fsync_dir/fs/nfs/dir.c Tue Jul 9 15:41:29 2002 @@ -45,12 +45,14 @@ static int nfs_mknod(struct inode *, struct dentry *, int, int); static int nfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *); +static int nfs_fsync_dir(struct file *, struct dentry *, int); struct file_operations nfs_dir_operations = { read: generic_read_dir, readdir: nfs_readdir, open: nfs_open, release: nfs_release, + fsync: nfs_fsync_dir }; struct inode_operations nfs_dir_inode_operations = { @@ -401,6 +403,15 @@ return 0; } +/* + * All directory operations under NFS are synchronous, so fsync() + * is a dummy operation. + */ +int nfs_fsync_dir(struct file *filp, struct dentry *dentry, int datasync) +{ + return 0; +} + /* * A check for whether or not the parent directory has changed. * In the case it has, we assume that the dentries are untrustworthy | |