On Tue, 2008-05-27 at 16:29 -0400, Chuck Lever wrote: > Recent work in fs/nfs/file.c neglected to add appropriate trace debugging > for the NFS client's address space operations. > > Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > --- > > fs/nfs/file.c | 29 ++++++++++++++++++++++++++++- > 1 files changed, 28 insertions(+), 1 deletions(-) > > > diff --git a/fs/nfs/file.c b/fs/nfs/file.c > index c3e7af0..c872ce4 100644 > --- a/fs/nfs/file.c > +++ b/fs/nfs/file.c > @@ -333,11 +333,17 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping, > loff_t pos, unsigned len, unsigned flags, > struct page **pagep, void **fsdata) > { > + struct dentry *dentry = file->f_path.dentry; > + struct inode *inode = mapping->host; > int ret; > pgoff_t index; > struct page *page; > index = pos >> PAGE_CACHE_SHIFT; > > + dfprintk(PAGECACHE, "NFS: write_begin(%s/%s(%ld), %u@%lld)\n", > + dentry->d_parent->d_name.name, dentry->d_name.name, > + inode->i_ino, len, (long long) pos); > + This will result in 'unused variable' warnings for 'dentry' and 'inode' if you compile with #undef RPC_DEBUG. > page = __grab_cache_page(mapping, index); > if (!page) > return -ENOMEM; > @@ -355,9 +361,15 @@ static int nfs_write_end(struct file *file, struct address_space *mapping, > loff_t pos, unsigned len, unsigned copied, > struct page *page, void *fsdata) > { > + struct dentry *dentry = file->f_path.dentry; > + struct inode *inode = mapping->host; > unsigned offset = pos & (PAGE_CACHE_SIZE - 1); > int status; > > + dfprintk(PAGECACHE, "NFS: write_end(%s/%s(%ld), %u@%lld)\n", > + dentry->d_parent->d_name.name, dentry->d_name.name, > + inode->i_ino, len, (long long) pos); > + This will result in 'unused variable' warnings for 'dentry' and 'inode' if you compile with #undef RPC_DEBUG. > lock_kernel(); > status = nfs_updatepage(file, page, offset, copied); > unlock_kernel(); > @@ -372,6 +384,8 @@ static int nfs_write_end(struct file *file, struct address_space *mapping, > > static void nfs_invalidate_page(struct page *page, unsigned long offset) > { > + dfprintk(PAGECACHE, "NFS: invalidate_page(%p, %lu)\n", page, offset); > + > if (offset != 0) > return; > /* Cancel any unstarted writes on this page */ > @@ -380,13 +394,20 @@ static void nfs_invalidate_page(struct page *page, unsigned long offset) > > static int nfs_release_page(struct page *page, gfp_t gfp) > { > + dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page); > + > /* If PagePrivate() is set, then the page is not freeable */ > return 0; > } > > static int nfs_launder_page(struct page *page) > { > - return nfs_wb_page(page->mapping->host, page); > + struct inode *inode = page->mapping->host; > + > + dfprintk(PAGECACHE, "NFS: launder_page(%ld, %llu)\n", > + inode->i_ino, (long long)page_offset(page)); > + > + return nfs_wb_page(inode, page); > } > > const struct address_space_operations nfs_file_aops = { > @@ -406,10 +427,16 @@ const struct address_space_operations nfs_file_aops = { > static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct page *page) > { > struct file *filp = vma->vm_file; > + struct dentry *dentry = filp->f_path.dentry; > unsigned pagelen; > int ret = -EINVAL; > struct address_space *mapping; > > + dfprintk(PAGECACHE, "NFS: vm_page_mkwrite(%s/%s(%ld), offset %lld)\n", > + dentry->d_parent->d_name.name, dentry->d_name.name, > + filp->f_mapping->host->i_ino, > + (long long)page_offset(page)); > + This will result in 'unused variable' warnings for 'dentry' if you compile with #undef RPC_DEBUG. > lock_page(page); > mapping = page->mapping; > if (mapping != vma->vm_file->f_path.dentry->d_inode->i_mapping) > -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html