2.4.19-rc1/2.5.25 provide dummy fsync() routine for directories on NFS mounts
Subsystems (2)
PATCH 1/1 2.4.19-rc1/2.5.25 provide dummy fsync() routine for directories on NFS mounts
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
fs/nfs/dir.c +11 -0
@@ -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