patch-2.4.19 linux-2.4.19/fs/nfs/write.c
Next file: linux-2.4.19/fs/nfsd/export.c
Previous file: linux-2.4.19/fs/nfs/read.c
Back to the patch index
Back to the overall index
- Lines: 70
- Date:
Fri Aug 2 17:39:45 2002
- Orig file:
linux-2.4.18/fs/nfs/write.c
- Orig date:
Mon Feb 25 11:38:09 2002
diff -urN linux-2.4.18/fs/nfs/write.c linux-2.4.19/fs/nfs/write.c
@@ -238,17 +238,11 @@
int
nfs_writepage(struct page *page)
{
- struct inode *inode;
+ struct inode *inode = page->mapping->host;
unsigned long end_index;
unsigned offset = PAGE_CACHE_SIZE;
int err;
- struct address_space *mapping = page->mapping;
- if (!mapping)
- BUG();
- inode = mapping->host;
- if (!inode)
- BUG();
end_index = inode->i_size >> PAGE_CACHE_SHIFT;
/* Ensure we've flushed out any previous writes */
@@ -362,6 +356,7 @@
iput(inode);
} else
spin_unlock(&nfs_wreq_lock);
+ nfs_clear_request(req);
nfs_release_request(req);
}
@@ -688,9 +683,13 @@
}
spin_unlock(&nfs_wreq_lock);
- new = nfs_create_request(file, inode, page, offset, bytes);
+ new = nfs_create_request(nfs_file_cred(file), inode, page, offset, bytes);
if (IS_ERR(new))
return new;
+ if (file) {
+ new->wb_file = file;
+ get_file(file);
+ }
/* If the region is locked, adjust the timeout */
if (region_locked(inode, new))
new->wb_timeout = jiffies + NFS_WRITEBACK_LOCKDELAY;
@@ -768,7 +767,8 @@
int
nfs_flush_incompatible(struct file *file, struct page *page)
{
- struct inode *inode = file->f_dentry->d_inode;
+ struct rpc_cred *cred = nfs_file_cred(file);
+ struct inode *inode = page->mapping->host;
struct nfs_page *req;
int status = 0;
/*
@@ -781,7 +781,7 @@
*/
req = nfs_find_request(inode,page);
if (req) {
- if (req->wb_file != file || req->wb_page != page)
+ if (req->wb_file != file || req->wb_cred != cred || req->wb_page != page)
status = nfs_wb_page(inode, page);
nfs_release_request(req);
}
@@ -798,7 +798,7 @@
nfs_updatepage(struct file *file, struct page *page, unsigned int offset, unsigned int count)
{
struct dentry *dentry = file->f_dentry;
- struct inode *inode = dentry->d_inode;
+ struct inode *inode = page->mapping->host;
struct nfs_page *req;
loff_t end;
int status = 0;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)