patch-2.2.19 linux/fs/nfs/file.c
Next file: linux/fs/nfs/inode.c
Previous file: linux/fs/nfs/dir.c
Back to the patch index
Back to the overall index
- Lines: 73
- Date:
Sun Mar 25 11:37:38 2001
- Orig file:
v2.2.18/fs/nfs/file.c
- Orig date:
Sun Mar 25 11:28:33 2001
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.18/fs/nfs/file.c linux/fs/nfs/file.c
@@ -111,13 +111,14 @@
nfs_file_read(struct file * file, char * buf, size_t count, loff_t *ppos)
{
struct dentry * dentry = file->f_dentry;
+ struct inode * inode = dentry->d_inode;
ssize_t result;
dfprintk(VFS, "nfs: read(%s/%s, %lu@%lu)\n",
dentry->d_parent->d_name.name, dentry->d_name.name,
(unsigned long) count, (unsigned long) *ppos);
- result = nfs_revalidate_inode(dentry);
+ result = nfs_revalidate_inode(NFS_SERVER(inode), inode);
if (!result)
result = generic_file_read(file, buf, count, ppos);
return result;
@@ -127,12 +128,13 @@
nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
{
struct dentry *dentry = file->f_dentry;
+ struct inode *inode = dentry->d_inode;
int status;
dfprintk(VFS, "nfs: mmap(%s/%s)\n",
dentry->d_parent->d_name.name, dentry->d_name.name);
- status = nfs_revalidate_inode(dentry);
+ status = nfs_revalidate_inode(NFS_SERVER(inode), inode);
if (!status)
status = generic_file_mmap(file, vma);
return status;
@@ -182,10 +184,8 @@
rpages = NFS_SERVER(inode)->rpages;
result = nfs_pagein_inode(inode, index, rpages);
if (result < 0)
- goto out_bad;
+ return result;
return 0;
- out_bad:
- return result;
}
/*
@@ -205,7 +205,7 @@
result = -EBUSY;
if (IS_SWAPFILE(inode))
goto out_swapfile;
- result = nfs_revalidate_inode(dentry);
+ result = nfs_revalidate_inode(NFS_SERVER(inode), inode);
if (result)
goto out;
@@ -265,7 +265,9 @@
* Flush all pending writes before doing anything
* with locks..
*/
+ down(&inode->i_sem);
status = nfs_wb_all(inode);
+ up(&inode->i_sem);
if (status < 0)
goto out_unlock;
@@ -280,8 +282,10 @@
out_unlock:
out_ok:
if ((cmd == F_SETLK || cmd == F_SETLKW) && fl->fl_type != F_UNLCK) {
+ down(&inode->i_sem);
nfs_wb_all(inode); /* we may have slept */
nfs_zap_caches(inode);
+ up(&inode->i_sem);
}
return status;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)