All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] Second series of patches for 2.6.27
@ 2008-05-27 20:28 Chuck Lever
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:28 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

Hi Trond-

Here's the next series of patches for 2.6.27.  These straightforward patches
clean up trace debugging in the NFS and RPC clients.

---

Chuck Lever (7):
      SUNRPC: Remove obsolete messages during transport connect
      NFS: Fix trace debugging nits in write.c
      NFS: Use NFSDBG_FILE for all fops
      NFS: Add debugging facility for NFS aops
      NFS: Make nfs_open methods consistent
      NFS: Make nfs_llseek methods consistent
      NFS: Make nfs_fsync methods consistent


 fs/nfs/dir.c      |   27 ++++++++++---
 fs/nfs/direct.c   |    4 +-
 fs/nfs/file.c     |  107 +++++++++++++++++++++++++++++++++++++++++------------
 fs/nfs/write.c    |   18 +++++----
 net/sunrpc/xprt.c |    8 ----
 5 files changed, 115 insertions(+), 49 deletions(-)

-- 
Chuck Lever
chuck[dot]level[at]oracle[dot]com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/7] NFS: Make nfs_fsync methods consistent
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
@ 2008-05-27 20:29   ` Chuck Lever
  2008-05-27 20:29   ` [PATCH 2/7] NFS: Make nfs_llseek " Chuck Lever
                     ` (5 subsequent siblings)
  6 siblings, 0 replies; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:29 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

Clean up: Report the same debugging info, count function calls the same,
and use similar function naming in nfs_fsync_dir() and nfs_fsync().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 fs/nfs/dir.c  |    3 ++-
 fs/nfs/file.c |   12 +++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)


diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 58d43da..1bc8bc6 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -629,10 +629,11 @@ out:
  */
 static int nfs_fsync_dir(struct file *filp, struct dentry *dentry, int datasync)
 {
-	dfprintk(VFS, "NFS: fsync_dir(%s/%s) datasync %d\n",
+	dfprintk(VFS, "NFS: fsync dir(%s/%s) datasync %d\n",
 			dentry->d_parent->d_name.name, dentry->d_name.name,
 			datasync);
 
+	nfs_inc_stats(dentry->d_inode, NFSIOS_VFSFSYNC);
 	return 0;
 }
 
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index d84a3d8..e452903 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -50,7 +50,7 @@ static ssize_t nfs_file_read(struct kiocb *, const struct iovec *iov,
 static ssize_t nfs_file_write(struct kiocb *, const struct iovec *iov,
 				unsigned long nr_segs, loff_t pos);
 static int  nfs_file_flush(struct file *, fl_owner_t id);
-static int  nfs_fsync(struct file *, struct dentry *dentry, int datasync);
+static int  nfs_file_fsync(struct file *, struct dentry *dentry, int datasync);
 static int nfs_check_flags(int flags);
 static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl);
 static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl);
@@ -72,7 +72,7 @@ const struct file_operations nfs_file_operations = {
 	.open		= nfs_file_open,
 	.flush		= nfs_file_flush,
 	.release	= nfs_file_release,
-	.fsync		= nfs_fsync,
+	.fsync		= nfs_file_fsync,
 	.lock		= nfs_lock,
 	.flock		= nfs_flock,
 	.splice_read	= nfs_file_splice_read,
@@ -181,7 +181,7 @@ static loff_t nfs_file_llseek(struct file *filp, loff_t offset, int origin)
 }
 
 /*
- * Helper for nfs_file_flush() and nfs_fsync()
+ * Helper for nfs_file_flush() and nfs_file_fsync()
  *
  * Notice that it clears the NFS_CONTEXT_ERROR_WRITE before synching to
  * disk, but it retrieves and clears ctx->error after synching, despite
@@ -296,12 +296,14 @@ nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
  * whether any write errors occurred for this process.
  */
 static int
-nfs_fsync(struct file *file, struct dentry *dentry, int datasync)
+nfs_file_fsync(struct file *file, struct dentry *dentry, int datasync)
 {
 	struct nfs_open_context *ctx = nfs_file_open_context(file);
 	struct inode *inode = dentry->d_inode;
 
-	dfprintk(VFS, "nfs: fsync(%s/%ld)\n", inode->i_sb->s_id, inode->i_ino);
+	dfprintk(VFS, "NFS: fsync file(%s/%s) datasync %d\n",
+			dentry->d_parent->d_name.name, dentry->d_name.name,
+			datasync);
 
 	nfs_inc_stats(inode, NFSIOS_VFSFSYNC);
 	return nfs_do_fsync(ctx, inode);


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/7] NFS: Make nfs_llseek methods consistent
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
  2008-05-27 20:29   ` [PATCH 1/7] NFS: Make nfs_fsync methods consistent Chuck Lever
@ 2008-05-27 20:29   ` Chuck Lever
       [not found]     ` <20080527202915.6651.44947.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
  2008-05-27 20:29   ` [PATCH 3/7] NFS: Make nfs_open " Chuck Lever
                     ` (4 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:29 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

Clean up: Report the same debugging info in nfs_llseek_dir() and
nfs_llseek_file().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 fs/nfs/dir.c  |   12 ++++++++++--
 fs/nfs/file.c |    7 +++++++
 2 files changed, 17 insertions(+), 2 deletions(-)


diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 1bc8bc6..36e51f7 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -603,7 +603,15 @@ out:
 
 static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
 {
-	mutex_lock(&filp->f_path.dentry->d_inode->i_mutex);
+	struct dentry *dentry = filp->f_path.dentry;
+	struct inode *inode = filp->f_path.dentry->d_inode;
+
+	dfprintk(VFS, "NFS: llseek dir(%s/%s, %lld, %d)\n",
+			dentry->d_parent->d_name.name,
+			dentry->d_name.name,
+			offset, origin);
+
+	mutex_lock(&inode->i_mutex);
 	switch (origin) {
 		case 1:
 			offset += filp->f_pos;
@@ -619,7 +627,7 @@ static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
 		nfs_file_open_context(filp)->dir_cookie = 0;
 	}
 out:
-	mutex_unlock(&filp->f_path.dentry->d_inode->i_mutex);
+	mutex_unlock(&inode->i_mutex);
 	return offset;
 }
 
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index e452903..06a1322 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -170,6 +170,13 @@ force_reval:
 
 static loff_t nfs_file_llseek(struct file *filp, loff_t offset, int origin)
 {
+	struct dentry *dentry = filp->f_path.dentry;
+
+	dfprintk(VFS, "NFS: llseek file(%s/%s, %lld, %d)\n",
+			dentry->d_parent->d_name.name,
+			dentry->d_name.name,
+			offset, origin);
+
 	/* origin == SEEK_END => we must revalidate the cached file length */
 	if (origin == SEEK_END) {
 		struct inode *inode = filp->f_mapping->host;


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/7] NFS: Make nfs_open methods consistent
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
  2008-05-27 20:29   ` [PATCH 1/7] NFS: Make nfs_fsync methods consistent Chuck Lever
  2008-05-27 20:29   ` [PATCH 2/7] NFS: Make nfs_llseek " Chuck Lever
@ 2008-05-27 20:29   ` Chuck Lever
       [not found]     ` <20080527202922.6651.18161.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
  2008-05-27 20:29   ` [PATCH 4/7] NFS: Add debugging facility for NFS aops Chuck Lever
                     ` (3 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:29 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

Clean up: Report the same debugging info and count function calls the
same for files and directories in nfs_opendir() and nfs_file_open().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 fs/nfs/dir.c  |    8 ++++++--
 fs/nfs/file.c |    5 +++++
 2 files changed, 11 insertions(+), 2 deletions(-)


diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 36e51f7..40b559a 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -131,10 +131,14 @@ const struct inode_operations nfs4_dir_inode_operations = {
 static int
 nfs_opendir(struct inode *inode, struct file *filp)
 {
+	struct dentry *dentry = filp->f_path.dentry;
 	int res;
 
-	dfprintk(VFS, "NFS: opendir(%s/%ld)\n",
-			inode->i_sb->s_id, inode->i_ino);
+	dfprintk(VFS, "NFS: open dir(%s/%s)\n",
+			dentry->d_parent->d_name.name,
+			dentry->d_name.name);
+
+	nfs_inc_stats(inode, NFSIOS_VFSOPEN);
 
 	lock_kernel();
 	/* Call generic open code in order to cache credentials */
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 06a1322..c3e7af0 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -117,8 +117,13 @@ static int nfs_check_flags(int flags)
 static int
 nfs_file_open(struct inode *inode, struct file *filp)
 {
+	struct dentry *dentry = filp->f_path.dentry;
 	int res;
 
+	dfprintk(VFS, "NFS: open file(%s/%s)\n",
+			dentry->d_parent->d_name.name,
+			dentry->d_name.name);
+
 	res = nfs_check_flags(filp->f_flags);
 	if (res)
 		return res;


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/7] NFS: Add debugging facility for NFS aops
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
                     ` (2 preceding siblings ...)
  2008-05-27 20:29   ` [PATCH 3/7] NFS: Make nfs_open " Chuck Lever
@ 2008-05-27 20:29   ` Chuck Lever
       [not found]     ` <20080527202929.6651.32893.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
  2008-05-27 20:29   ` [PATCH 5/7] NFS: Use NFSDBG_FILE for all fops Chuck Lever
                     ` (2 subsequent siblings)
  6 siblings, 1 reply; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:29 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

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@oracle.com>
---

 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);
+
 	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);
+
 	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));
+
 	lock_page(page);
 	mapping = page->mapping;
 	if (mapping != vma->vm_file->f_path.dentry->d_inode->i_mapping)


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 5/7] NFS: Use NFSDBG_FILE for all fops
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
                     ` (3 preceding siblings ...)
  2008-05-27 20:29   ` [PATCH 4/7] NFS: Add debugging facility for NFS aops Chuck Lever
@ 2008-05-27 20:29   ` Chuck Lever
       [not found]     ` <20080527202937.6651.55382.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
  2008-05-27 20:29   ` [PATCH 6/7] NFS: Fix trace debugging nits in write.c Chuck Lever
  2008-05-27 20:29   ` [PATCH 7/7] SUNRPC: Remove obsolete messages during transport connect Chuck Lever
  6 siblings, 1 reply; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:29 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

Clean up: some fops use NFSDBG_FILE, some use NFSDBG_VFS.  Let's use
NFSDBG_FILE for all fops, and consistently report file names instead
of inode numbers.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 fs/nfs/dir.c    |   10 +++++----
 fs/nfs/direct.c |    4 ++--
 fs/nfs/file.c   |   60 +++++++++++++++++++++++++++++++++++--------------------
 3 files changed, 45 insertions(+), 29 deletions(-)


diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 40b559a..425b984 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -134,7 +134,7 @@ nfs_opendir(struct inode *inode, struct file *filp)
 	struct dentry *dentry = filp->f_path.dentry;
 	int res;
 
-	dfprintk(VFS, "NFS: open dir(%s/%s)\n",
+	dfprintk(FILE, "NFS: open dir(%s/%s)\n",
 			dentry->d_parent->d_name.name,
 			dentry->d_name.name);
 
@@ -532,7 +532,7 @@ static int nfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
 	struct nfs_fattr fattr;
 	long		res;
 
-	dfprintk(VFS, "NFS: readdir(%s/%s) starting at cookie %Lu\n",
+	dfprintk(FILE, "NFS: readdir(%s/%s) starting at cookie %llu\n",
 			dentry->d_parent->d_name.name, dentry->d_name.name,
 			(long long)filp->f_pos);
 	nfs_inc_stats(inode, NFSIOS_VFSGETDENTS);
@@ -599,7 +599,7 @@ out:
 	unlock_kernel();
 	if (res > 0)
 		res = 0;
-	dfprintk(VFS, "NFS: readdir(%s/%s) returns %ld\n",
+	dfprintk(FILE, "NFS: readdir(%s/%s) returns %ld\n",
 			dentry->d_parent->d_name.name, dentry->d_name.name,
 			res);
 	return res;
@@ -610,7 +610,7 @@ static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
 	struct dentry *dentry = filp->f_path.dentry;
 	struct inode *inode = filp->f_path.dentry->d_inode;
 
-	dfprintk(VFS, "NFS: llseek dir(%s/%s, %lld, %d)\n",
+	dfprintk(FILE, "NFS: llseek dir(%s/%s, %lld, %d)\n",
 			dentry->d_parent->d_name.name,
 			dentry->d_name.name,
 			offset, origin);
@@ -641,7 +641,7 @@ out:
  */
 static int nfs_fsync_dir(struct file *filp, struct dentry *dentry, int datasync)
 {
-	dfprintk(VFS, "NFS: fsync dir(%s/%s) datasync %d\n",
+	dfprintk(FILE, "NFS: fsync dir(%s/%s) datasync %d\n",
 			dentry->d_parent->d_name.name, dentry->d_name.name,
 			datasync);
 
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
index 4757a2b..08f6b04 100644
--- a/fs/nfs/direct.c
+++ b/fs/nfs/direct.c
@@ -890,7 +890,7 @@ ssize_t nfs_file_direct_read(struct kiocb *iocb, const struct iovec *iov,
 	count = iov_length(iov, nr_segs);
 	nfs_add_stats(mapping->host, NFSIOS_DIRECTREADBYTES, count);
 
-	dprintk("nfs: direct read(%s/%s, %zd@%Ld)\n",
+	dfprintk(FILE, "NFS: direct read(%s/%s, %zd@%Ld)\n",
 		file->f_path.dentry->d_parent->d_name.name,
 		file->f_path.dentry->d_name.name,
 		count, (long long) pos);
@@ -947,7 +947,7 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
 	count = iov_length(iov, nr_segs);
 	nfs_add_stats(mapping->host, NFSIOS_DIRECTWRITTENBYTES, count);
 
-	dfprintk(VFS, "nfs: direct write(%s/%s, %zd@%Ld)\n",
+	dfprintk(FILE, "NFS: direct write(%s/%s, %zd@%Ld)\n",
 		file->f_path.dentry->d_parent->d_name.name,
 		file->f_path.dentry->d_name.name,
 		count, (long long) pos);
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index c872ce4..bba6181 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -120,7 +120,7 @@ nfs_file_open(struct inode *inode, struct file *filp)
 	struct dentry *dentry = filp->f_path.dentry;
 	int res;
 
-	dfprintk(VFS, "NFS: open file(%s/%s)\n",
+	dprintk("NFS: open file(%s/%s)\n",
 			dentry->d_parent->d_name.name,
 			dentry->d_name.name);
 
@@ -138,6 +138,12 @@ nfs_file_open(struct inode *inode, struct file *filp)
 static int
 nfs_file_release(struct inode *inode, struct file *filp)
 {
+	struct dentry *dentry = filp->f_path.dentry;
+
+	dprintk("NFS: release(%s/%s)\n",
+			dentry->d_parent->d_name.name,
+			dentry->d_name.name);
+
 	/* Ensure that dirty pages are flushed out with the right creds */
 	if (filp->f_mode & FMODE_WRITE)
 		nfs_wb_all(filp->f_path.dentry->d_inode);
@@ -177,7 +183,7 @@ static loff_t nfs_file_llseek(struct file *filp, loff_t offset, int origin)
 {
 	struct dentry *dentry = filp->f_path.dentry;
 
-	dfprintk(VFS, "NFS: llseek file(%s/%s, %lld, %d)\n",
+	dprintk("NFS: llseek file(%s/%s, %lld, %d)\n",
 			dentry->d_parent->d_name.name,
 			dentry->d_name.name,
 			offset, origin);
@@ -219,16 +225,18 @@ static int nfs_do_fsync(struct nfs_open_context *ctx, struct inode *inode)
 
 /*
  * Flush all dirty pages, and check for write errors.
- *
  */
 static int
 nfs_file_flush(struct file *file, fl_owner_t id)
 {
 	struct nfs_open_context *ctx = nfs_file_open_context(file);
-	struct inode	*inode = file->f_path.dentry->d_inode;
+	struct dentry	*dentry = file->f_path.dentry;
+	struct inode	*inode = dentry->d_inode;
 	int		status;
 
-	dfprintk(VFS, "nfs: flush(%s/%ld)\n", inode->i_sb->s_id, inode->i_ino);
+	dprintk("NFS: flush(%s/%s)\n",
+			dentry->d_parent->d_name.name,
+			dentry->d_name.name);
 
 	if ((file->f_mode & FMODE_WRITE) == 0)
 		return 0;
@@ -253,7 +261,7 @@ nfs_file_read(struct kiocb *iocb, const struct iovec *iov,
 	if (iocb->ki_filp->f_flags & O_DIRECT)
 		return nfs_file_direct_read(iocb, iov, nr_segs, pos);
 
-	dfprintk(VFS, "nfs: read(%s/%s, %lu@%lu)\n",
+	dprintk("NFS: read(%s/%s, %lu@%lu)\n",
 		dentry->d_parent->d_name.name, dentry->d_name.name,
 		(unsigned long) count, (unsigned long) pos);
 
@@ -273,7 +281,7 @@ nfs_file_splice_read(struct file *filp, loff_t *ppos,
 	struct inode *inode = dentry->d_inode;
 	ssize_t res;
 
-	dfprintk(VFS, "nfs: splice_read(%s/%s, %lu@%Lu)\n",
+	dprintk("NFS: splice_read(%s/%s, %lu@%Lu)\n",
 		dentry->d_parent->d_name.name, dentry->d_name.name,
 		(unsigned long) count, (unsigned long long) *ppos);
 
@@ -290,7 +298,7 @@ nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
 	struct inode *inode = dentry->d_inode;
 	int	status;
 
-	dfprintk(VFS, "nfs: mmap(%s/%s)\n",
+	dprintk("NFS: mmap(%s/%s)\n",
 		dentry->d_parent->d_name.name, dentry->d_name.name);
 
 	status = nfs_revalidate_mapping(inode, file->f_mapping);
@@ -313,7 +321,7 @@ nfs_file_fsync(struct file *file, struct dentry *dentry, int datasync)
 	struct nfs_open_context *ctx = nfs_file_open_context(file);
 	struct inode *inode = dentry->d_inode;
 
-	dfprintk(VFS, "NFS: fsync file(%s/%s) datasync %d\n",
+	dprintk("NFS: fsync file(%s/%s) datasync %d\n",
 			dentry->d_parent->d_name.name, dentry->d_name.name,
 			datasync);
 
@@ -487,9 +495,9 @@ static ssize_t nfs_file_write(struct kiocb *iocb, const struct iovec *iov,
 	if (iocb->ki_filp->f_flags & O_DIRECT)
 		return nfs_file_direct_write(iocb, iov, nr_segs, pos);
 
-	dfprintk(VFS, "nfs: write(%s/%s(%ld), %lu@%Ld)\n",
+	dprintk("NFS: write(%s/%s, %lu@%Ld)\n",
 		dentry->d_parent->d_name.name, dentry->d_name.name,
-		inode->i_ino, (unsigned long) count, (long long) pos);
+		(unsigned long) count, (long long) pos);
 
 	result = -EBUSY;
 	if (IS_SWAPFILE(inode))
@@ -633,12 +641,14 @@ out:
  */
 static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl)
 {
-	struct inode * inode = filp->f_mapping->host;
+	struct dentry *dentry = filp->f_path.dentry;
+	struct inode *inode = filp->f_mapping->host;
 
-	dprintk("NFS: nfs_lock(f=%s/%ld, t=%x, fl=%x, r=%Ld:%Ld)\n",
-			inode->i_sb->s_id, inode->i_ino,
+	dprintk("NFS: lock(%s/%s, t=%x, fl=%x, r=%lld:%lld)\n",
+			dentry->d_parent->d_name.name, dentry->d_name.name,
 			fl->fl_type, fl->fl_flags,
 			(long long)fl->fl_start, (long long)fl->fl_end);
+
 	nfs_inc_stats(inode, NFSIOS_VFSLOCK);
 
 	/* No mandatory locks over NFS */
@@ -657,9 +667,10 @@ static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl)
  */
 static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl)
 {
-	dprintk("NFS: nfs_flock(f=%s/%ld, t=%x, fl=%x)\n",
-			filp->f_path.dentry->d_inode->i_sb->s_id,
-			filp->f_path.dentry->d_inode->i_ino,
+	struct dentry *dentry = filp->f_path.dentry;
+
+	dprintk("NFS: flock(%s/%s, t=%x, fl=%x)\n",
+			dentry->d_parent->d_name.name, dentry->d_name.name,
 			fl->fl_type, fl->fl_flags);
 
 	/*
@@ -682,12 +693,17 @@ static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl)
 	return do_setlk(filp, cmd, fl);
 }
 
+/*
+ * There is no protocol support for leases, so we have no way to implement
+ * them correctly in the face of opens by other clients.
+ */
 static int nfs_setlease(struct file *file, long arg, struct file_lock **fl)
 {
-	/*
-	 * There is no protocol support for leases, so we have no way
-	 * to implement them correctly in the face of opens by other
-	 * clients.
-	 */
+	struct dentry *dentry = file->f_path.dentry;
+
+	dprintk("NFS: setlease(%s/%s, arg=%ld)\n",
+			dentry->d_parent->d_name.name,
+			dentry->d_name.name, arg);
+
 	return -EINVAL;
 }


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 6/7] NFS: Fix trace debugging nits in write.c
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
                     ` (4 preceding siblings ...)
  2008-05-27 20:29   ` [PATCH 5/7] NFS: Use NFSDBG_FILE for all fops Chuck Lever
@ 2008-05-27 20:29   ` Chuck Lever
  2008-05-27 20:29   ` [PATCH 7/7] SUNRPC: Remove obsolete messages during transport connect Chuck Lever
  6 siblings, 0 replies; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:29 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

Clean up: fix a few dprintk messages that still need to show the RPC task ID
correctly, and be sure we use the preferred %lld or %llu instead of %Ld or
%Lu.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 fs/nfs/write.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)


diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 6d8ace3..c03a039 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -721,10 +721,10 @@ int nfs_updatepage(struct file *file, struct page *page,
 
 	nfs_inc_stats(inode, NFSIOS_VFSUPDATEPAGE);
 
-	dprintk("NFS:      nfs_updatepage(%s/%s %d@%Ld)\n",
+	dprintk("NFS:       nfs_updatepage(%s/%s %d@%lld)\n",
 		file->f_path.dentry->d_parent->d_name.name,
 		file->f_path.dentry->d_name.name, count,
-		(long long)(page_offset(page) +offset));
+		(long long)(page_offset(page) + offset));
 
 	/* If we're not using byte range locks, and we know the page
 	 * is up to date, it may be more efficient to extend the write
@@ -741,7 +741,7 @@ int nfs_updatepage(struct file *file, struct page *page,
 	status = nfs_writepage_setup(ctx, page, offset, count);
 	__set_page_dirty_nobuffers(page);
 
-        dprintk("NFS:      nfs_updatepage returns %d (isize %Ld)\n",
+	dprintk("NFS:       nfs_updatepage returns %d (isize %lld)\n",
 			status, (long long)i_size_read(inode));
 	if (status < 0)
 		nfs_set_pageerror(page);
@@ -833,7 +833,7 @@ static int nfs_write_rpcsetup(struct nfs_page *req,
 	NFS_PROTO(inode)->write_setup(data, &msg);
 
 	dprintk("NFS: %5u initiated write call "
-		"(req %s/%Ld, %u bytes @ offset %Lu)\n",
+		"(req %s/%lld, %u bytes @ offset %llu)\n",
 		data->task.tk_pid,
 		inode->i_sb->s_id,
 		(long long)NFS_FILEID(inode),
@@ -979,7 +979,8 @@ static void nfs_writeback_done_partial(struct rpc_task *task, void *calldata)
 	struct nfs_write_data	*data = calldata;
 	struct nfs_page		*req = data->req;
 
-	dprintk("NFS: write (%s/%Ld %d@%Ld)",
+	dprintk("NFS: %5u write(%s/%lld %d@%lld)",
+		task->tk_pid,
 		req->wb_context->path.dentry->d_inode->i_sb->s_id,
 		(long long)NFS_FILEID(req->wb_context->path.dentry->d_inode),
 		req->wb_bytes,
@@ -1057,7 +1058,8 @@ static void nfs_writeback_release_full(void *calldata)
 
 		nfs_list_remove_request(req);
 
-		dprintk("NFS: write (%s/%Ld %d@%Ld)",
+		dprintk("NFS: %5u write (%s/%lld %d@%lld)",
+			data->task.tk_pid,
 			req->wb_context->path.dentry->d_inode->i_sb->s_id,
 			(long long)NFS_FILEID(req->wb_context->path.dentry->d_inode),
 			req->wb_bytes,
@@ -1132,7 +1134,7 @@ int nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data)
 		static unsigned long    complain;
 
 		if (time_before(complain, jiffies)) {
-			dprintk("NFS: faulty NFS server %s:"
+			dprintk("NFS:       faulty NFS server %s:"
 				" (committed = %d) != (stable = %d)\n",
 				NFS_SERVER(data->inode)->nfs_client->cl_hostname,
 				resp->verf->committed, argp->stable);
@@ -1301,7 +1303,7 @@ static void nfs_commit_release(void *calldata)
 		dec_bdi_stat(req->wb_page->mapping->backing_dev_info,
 				BDI_RECLAIMABLE);
 
-		dprintk("NFS: commit (%s/%Ld %d@%Ld)",
+		dprintk("NFS:       commit (%s/%lld %d@%lld)",
 			req->wb_context->path.dentry->d_inode->i_sb->s_id,
 			(long long)NFS_FILEID(req->wb_context->path.dentry->d_inode),
 			req->wb_bytes,


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 7/7] SUNRPC: Remove obsolete messages during transport connect
       [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
                     ` (5 preceding siblings ...)
  2008-05-27 20:29   ` [PATCH 6/7] NFS: Fix trace debugging nits in write.c Chuck Lever
@ 2008-05-27 20:29   ` Chuck Lever
  6 siblings, 0 replies; 13+ messages in thread
From: Chuck Lever @ 2008-05-27 20:29 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

Recent changes to the RPC client's transport connect logic make connect
status values ECONNREFUSED and ECONNRESET impossible.

Clean up xprt_connect_status() to account for these changes.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 net/sunrpc/xprt.c |    8 +-------
 1 files changed, 1 insertions(+), 7 deletions(-)


diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index e1770f7..67996bd 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -690,7 +690,7 @@ static void xprt_connect_status(struct rpc_task *task)
 {
 	struct rpc_xprt	*xprt = task->tk_xprt;
 
-	if (task->tk_status >= 0) {
+	if (task->tk_status == 0) {
 		xprt->stat.connect_count++;
 		xprt->stat.connect_time += (long)jiffies - xprt->stat.connect_start;
 		dprintk("RPC: %5u xprt_connect_status: connection established\n",
@@ -699,12 +699,6 @@ static void xprt_connect_status(struct rpc_task *task)
 	}
 
 	switch (task->tk_status) {
-	case -ECONNREFUSED:
-	case -ECONNRESET:
-		dprintk("RPC: %5u xprt_connect_status: server %s refused "
-				"connection\n", task->tk_pid,
-				task->tk_client->cl_server);
-		break;
 	case -ENOTCONN:
 		dprintk("RPC: %5u xprt_connect_status: connection broken\n",
 				task->tk_pid);


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/7] NFS: Make nfs_llseek methods consistent
       [not found]     ` <20080527202915.6651.44947.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
@ 2008-06-10 18:27       ` Trond Myklebust
  0 siblings, 0 replies; 13+ messages in thread
From: Trond Myklebust @ 2008-06-10 18:27 UTC (permalink / raw)
  To: Chuck Lever; +Cc: linux-nfs

On Tue, 2008-05-27 at 16:29 -0400, Chuck Lever wrote:
> Clean up: Report the same debugging info in nfs_llseek_dir() and
> nfs_llseek_file().
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> 
>  fs/nfs/dir.c  |   12 ++++++++++--
>  fs/nfs/file.c |    7 +++++++
>  2 files changed, 17 insertions(+), 2 deletions(-)
> 
> 
> diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
> index 1bc8bc6..36e51f7 100644
> --- a/fs/nfs/dir.c
> +++ b/fs/nfs/dir.c
> @@ -603,7 +603,15 @@ out:
>  
>  static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
>  {
> -	mutex_lock(&filp->f_path.dentry->d_inode->i_mutex);
> +	struct dentry *dentry = filp->f_path.dentry;
> +	struct inode *inode = filp->f_path.dentry->d_inode;
> +
> +	dfprintk(VFS, "NFS: llseek dir(%s/%s, %lld, %d)\n",
> +			dentry->d_parent->d_name.name,
> +			dentry->d_name.name,
> +			offset, origin);
> +
> +	mutex_lock(&inode->i_mutex);
>  	switch (origin) {
>  		case 1:
>  			offset += filp->f_pos;
> @@ -619,7 +627,7 @@ static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
>  		nfs_file_open_context(filp)->dir_cookie = 0;
>  	}
>  out:
> -	mutex_unlock(&filp->f_path.dentry->d_inode->i_mutex);
> +	mutex_unlock(&inode->i_mutex);
>  	return offset;
>  }
>  
> diff --git a/fs/nfs/file.c b/fs/nfs/file.c
> index e452903..06a1322 100644
> --- a/fs/nfs/file.c
> +++ b/fs/nfs/file.c
> @@ -170,6 +170,13 @@ force_reval:
>  
>  static loff_t nfs_file_llseek(struct file *filp, loff_t offset, int origin)
>  {
> +	struct dentry *dentry = filp->f_path.dentry;
> +
> +	dfprintk(VFS, "NFS: llseek file(%s/%s, %lld, %d)\n",
> +			dentry->d_parent->d_name.name,
> +			dentry->d_name.name,
> +			offset, origin);
> +

This will result in 'unused variable' warnings for 'dentry' if you
compile with #undef RPC_DEBUG.

>  	/* origin == SEEK_END => we must revalidate the cached file length */
>  	if (origin == SEEK_END) {
>  		struct inode *inode = filp->f_mapping->host;
> 
-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/7] NFS: Make nfs_open methods consistent
       [not found]     ` <20080527202922.6651.18161.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
@ 2008-06-10 18:27       ` Trond Myklebust
  0 siblings, 0 replies; 13+ messages in thread
From: Trond Myklebust @ 2008-06-10 18:27 UTC (permalink / raw)
  To: Chuck Lever; +Cc: linux-nfs

On Tue, 2008-05-27 at 16:29 -0400, Chuck Lever wrote:
> Clean up: Report the same debugging info and count function calls the
> same for files and directories in nfs_opendir() and nfs_file_open().
>=20
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>=20
>  fs/nfs/dir.c  |    8 ++++++--
>  fs/nfs/file.c |    5 +++++
>  2 files changed, 11 insertions(+), 2 deletions(-)
>=20
>=20
> diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
> index 36e51f7..40b559a 100644
> --- a/fs/nfs/dir.c
> +++ b/fs/nfs/dir.c
> @@ -131,10 +131,14 @@ const struct inode_operations nfs4_dir_inode_op=
erations =3D {
>  static int
>  nfs_opendir(struct inode *inode, struct file *filp)
>  {
> +	struct dentry *dentry =3D filp->f_path.dentry;
>  	int res;
> =20
> -	dfprintk(VFS, "NFS: opendir(%s/%ld)\n",
> -			inode->i_sb->s_id, inode->i_ino);
> +	dfprintk(VFS, "NFS: open dir(%s/%s)\n",
> +			dentry->d_parent->d_name.name,
> +			dentry->d_name.name);
> +
> +	nfs_inc_stats(inode, NFSIOS_VFSOPEN);
> =20

This will result in 'unused variable' warnings for 'dentry' if you
compile with #undef RPC_DEBUG.

>  	lock_kernel();
>  	/* Call generic open code in order to cache credentials */
> diff --git a/fs/nfs/file.c b/fs/nfs/file.c
> index 06a1322..c3e7af0 100644
> --- a/fs/nfs/file.c
> +++ b/fs/nfs/file.c
> @@ -117,8 +117,13 @@ static int nfs_check_flags(int flags)
>  static int
>  nfs_file_open(struct inode *inode, struct file *filp)
>  {
> +	struct dentry *dentry =3D filp->f_path.dentry;
>  	int res;
> =20
> +	dfprintk(VFS, "NFS: open file(%s/%s)\n",
> +			dentry->d_parent->d_name.name,
> +			dentry->d_name.name);
> +

=EF=BB=BFThis will result in 'unused variable' warnings for 'dentry' if=
 you
compile with #undef RPC_DEBUG.

>  	res =3D nfs_check_flags(filp->f_flags);
>  	if (res)
>  		return res;
>=20
--=20
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 4/7] NFS: Add debugging facility for NFS aops
       [not found]     ` <20080527202929.6651.32893.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
@ 2008-06-10 18:30       ` Trond Myklebust
  0 siblings, 0 replies; 13+ messages in thread
From: Trond Myklebust @ 2008-06-10 18:30 UTC (permalink / raw)
  To: Chuck Lever; +Cc: linux-nfs

On Tue, 2008-05-27 at 16:29 -0400, Chuck Lever wrote:
> Recent work in fs/nfs/file.c neglected to add appropriate trace debug=
ging
> for the NFS client's address space operations.
>=20
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>=20
>  fs/nfs/file.c |   29 ++++++++++++++++++++++++++++-
>  1 files changed, 28 insertions(+), 1 deletions(-)
>=20
>=20
> 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, s=
truct address_space *mapping,
>  			loff_t pos, unsigned len, unsigned flags,
>  			struct page **pagep, void **fsdata)
>  {
> +	struct dentry *dentry =3D file->f_path.dentry;
> +	struct inode *inode =3D mapping->host;
>  	int ret;
>  	pgoff_t index;
>  	struct page *page;
>  	index =3D pos >> PAGE_CACHE_SHIFT;
> =20
> +	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 =3D __grab_cache_page(mapping, index);
>  	if (!page)
>  		return -ENOMEM;
> @@ -355,9 +361,15 @@ static int nfs_write_end(struct file *file, stru=
ct address_space *mapping,
>  			loff_t pos, unsigned len, unsigned copied,
>  			struct page *page, void *fsdata)
>  {
> +	struct dentry *dentry =3D file->f_path.dentry;
> +	struct inode *inode =3D mapping->host;
>  	unsigned offset =3D pos & (PAGE_CACHE_SIZE - 1);
>  	int status;
> =20
> +	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);
> +

=EF=BB=BFThis will result in 'unused variable' warnings for 'dentry' an=
d 'inode'
if you compile with #undef RPC_DEBUG.

>  	lock_kernel();
>  	status =3D nfs_updatepage(file, page, offset, copied);
>  	unlock_kernel();
> @@ -372,6 +384,8 @@ static int nfs_write_end(struct file *file, struc=
t address_space *mapping,
> =20
>  static void nfs_invalidate_page(struct page *page, unsigned long off=
set)
>  {
> +	dfprintk(PAGECACHE, "NFS: invalidate_page(%p, %lu)\n", page, offset=
);
> +
>  	if (offset !=3D 0)
>  		return;
>  	/* Cancel any unstarted writes on this page */
> @@ -380,13 +394,20 @@ static void nfs_invalidate_page(struct page *pa=
ge, unsigned long offset)
> =20
>  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;
>  }
> =20
>  static int nfs_launder_page(struct page *page)
>  {
> -	return nfs_wb_page(page->mapping->host, page);
> +	struct inode *inode =3D 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);
>  }
> =20
>  const struct address_space_operations nfs_file_aops =3D {
> @@ -406,10 +427,16 @@ const struct address_space_operations nfs_file_=
aops =3D {
>  static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct pa=
ge *page)
>  {
>  	struct file *filp =3D vma->vm_file;
> +	struct dentry *dentry =3D filp->f_path.dentry;
>  	unsigned pagelen;
>  	int ret =3D -EINVAL;
>  	struct address_space *mapping;
> =20
> +	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));
> +

=EF=BB=BFThis will result in 'unused variable' warnings for 'dentry' if=
 you
compile with #undef RPC_DEBUG.

>  	lock_page(page);
>  	mapping =3D page->mapping;
>  	if (mapping !=3D vma->vm_file->f_path.dentry->d_inode->i_mapping)
>=20
--=20
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 5/7] NFS: Use NFSDBG_FILE for all fops
       [not found]     ` <20080527202937.6651.55382.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
@ 2008-06-10 18:32       ` Trond Myklebust
  0 siblings, 0 replies; 13+ messages in thread
From: Trond Myklebust @ 2008-06-10 18:32 UTC (permalink / raw)
  To: Chuck Lever; +Cc: linux-nfs

On Tue, 2008-05-27 at 16:29 -0400, Chuck Lever wrote:
> Clean up: some fops use NFSDBG_FILE, some use NFSDBG_VFS.  Let's use
> NFSDBG_FILE for all fops, and consistently report file names instead
> of inode numbers.
>=20
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>=20
>  fs/nfs/dir.c    |   10 +++++----
>  fs/nfs/direct.c |    4 ++--
>  fs/nfs/file.c   |   60 +++++++++++++++++++++++++++++++++++----------=
----------
>  3 files changed, 45 insertions(+), 29 deletions(-)
>=20
>=20
> diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
> index 40b559a..425b984 100644
> --- a/fs/nfs/dir.c
> +++ b/fs/nfs/dir.c
> @@ -134,7 +134,7 @@ nfs_opendir(struct inode *inode, struct file *fil=
p)
>  	struct dentry *dentry =3D filp->f_path.dentry;
>  	int res;
> =20
> -	dfprintk(VFS, "NFS: open dir(%s/%s)\n",
> +	dfprintk(FILE, "NFS: open dir(%s/%s)\n",
>  			dentry->d_parent->d_name.name,
>  			dentry->d_name.name);
> =20
> @@ -532,7 +532,7 @@ static int nfs_readdir(struct file *filp, void *d=
irent, filldir_t filldir)
>  	struct nfs_fattr fattr;
>  	long		res;
> =20
> -	dfprintk(VFS, "NFS: readdir(%s/%s) starting at cookie %Lu\n",
> +	dfprintk(FILE, "NFS: readdir(%s/%s) starting at cookie %llu\n",
>  			dentry->d_parent->d_name.name, dentry->d_name.name,
>  			(long long)filp->f_pos);
>  	nfs_inc_stats(inode, NFSIOS_VFSGETDENTS);
> @@ -599,7 +599,7 @@ out:
>  	unlock_kernel();
>  	if (res > 0)
>  		res =3D 0;
> -	dfprintk(VFS, "NFS: readdir(%s/%s) returns %ld\n",
> +	dfprintk(FILE, "NFS: readdir(%s/%s) returns %ld\n",
>  			dentry->d_parent->d_name.name, dentry->d_name.name,
>  			res);
>  	return res;
> @@ -610,7 +610,7 @@ static loff_t nfs_llseek_dir(struct file *filp, l=
off_t offset, int origin)
>  	struct dentry *dentry =3D filp->f_path.dentry;
>  	struct inode *inode =3D filp->f_path.dentry->d_inode;
> =20
> -	dfprintk(VFS, "NFS: llseek dir(%s/%s, %lld, %d)\n",
> +	dfprintk(FILE, "NFS: llseek dir(%s/%s, %lld, %d)\n",
>  			dentry->d_parent->d_name.name,
>  			dentry->d_name.name,
>  			offset, origin);
> @@ -641,7 +641,7 @@ out:
>   */
>  static int nfs_fsync_dir(struct file *filp, struct dentry *dentry, i=
nt datasync)
>  {
> -	dfprintk(VFS, "NFS: fsync dir(%s/%s) datasync %d\n",
> +	dfprintk(FILE, "NFS: fsync dir(%s/%s) datasync %d\n",
>  			dentry->d_parent->d_name.name, dentry->d_name.name,
>  			datasync);
> =20
> diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c
> index 4757a2b..08f6b04 100644
> --- a/fs/nfs/direct.c
> +++ b/fs/nfs/direct.c
> @@ -890,7 +890,7 @@ ssize_t nfs_file_direct_read(struct kiocb *iocb, =
const struct iovec *iov,
>  	count =3D iov_length(iov, nr_segs);
>  	nfs_add_stats(mapping->host, NFSIOS_DIRECTREADBYTES, count);
> =20
> -	dprintk("nfs: direct read(%s/%s, %zd@%Ld)\n",
> +	dfprintk(FILE, "NFS: direct read(%s/%s, %zd@%Ld)\n",
>  		file->f_path.dentry->d_parent->d_name.name,
>  		file->f_path.dentry->d_name.name,
>  		count, (long long) pos);
> @@ -947,7 +947,7 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb,=
 const struct iovec *iov,
>  	count =3D iov_length(iov, nr_segs);
>  	nfs_add_stats(mapping->host, NFSIOS_DIRECTWRITTENBYTES, count);
> =20
> -	dfprintk(VFS, "nfs: direct write(%s/%s, %zd@%Ld)\n",
> +	dfprintk(FILE, "NFS: direct write(%s/%s, %zd@%Ld)\n",
>  		file->f_path.dentry->d_parent->d_name.name,
>  		file->f_path.dentry->d_name.name,
>  		count, (long long) pos);
> diff --git a/fs/nfs/file.c b/fs/nfs/file.c
> index c872ce4..bba6181 100644
> --- a/fs/nfs/file.c
> +++ b/fs/nfs/file.c
> @@ -120,7 +120,7 @@ nfs_file_open(struct inode *inode, struct file *f=
ilp)
>  	struct dentry *dentry =3D filp->f_path.dentry;
>  	int res;
> =20
> -	dfprintk(VFS, "NFS: open file(%s/%s)\n",
> +	dprintk("NFS: open file(%s/%s)\n",
>  			dentry->d_parent->d_name.name,
>  			dentry->d_name.name);
> =20
> @@ -138,6 +138,12 @@ nfs_file_open(struct inode *inode, struct file *=
filp)
>  static int
>  nfs_file_release(struct inode *inode, struct file *filp)
>  {
> +	struct dentry *dentry =3D filp->f_path.dentry;
> +
> +	dprintk("NFS: release(%s/%s)\n",
> +			dentry->d_parent->d_name.name,
> +			dentry->d_name.name);
> +
=EF=BB=BF
This will result in 'unused variable' warnings for 'dentry' if you
compile with #undef RPC_DEBUG.

>  	/* Ensure that dirty pages are flushed out with the right creds */
>  	if (filp->f_mode & FMODE_WRITE)
>  		nfs_wb_all(filp->f_path.dentry->d_inode);
> @@ -177,7 +183,7 @@ static loff_t nfs_file_llseek(struct file *filp, =
loff_t offset, int origin)
>  {
>  	struct dentry *dentry =3D filp->f_path.dentry;
> =20
> -	dfprintk(VFS, "NFS: llseek file(%s/%s, %lld, %d)\n",
> +	dprintk("NFS: llseek file(%s/%s, %lld, %d)\n",
>  			dentry->d_parent->d_name.name,
>  			dentry->d_name.name,
>  			offset, origin);
> @@ -219,16 +225,18 @@ static int nfs_do_fsync(struct nfs_open_context=
 *ctx, struct inode *inode)
> =20
>  /*
>   * Flush all dirty pages, and check for write errors.
> - *
>   */
>  static int
>  nfs_file_flush(struct file *file, fl_owner_t id)
>  {
>  	struct nfs_open_context *ctx =3D nfs_file_open_context(file);
> -	struct inode	*inode =3D file->f_path.dentry->d_inode;
> +	struct dentry	*dentry =3D file->f_path.dentry;
> +	struct inode	*inode =3D dentry->d_inode;
>  	int		status;
> =20
> -	dfprintk(VFS, "nfs: flush(%s/%ld)\n", inode->i_sb->s_id, inode->i_i=
no);
> +	dprintk("NFS: flush(%s/%s)\n",
> +			dentry->d_parent->d_name.name,
> +			dentry->d_name.name);
> =20
>  	if ((file->f_mode & FMODE_WRITE) =3D=3D 0)
>  		return 0;
> @@ -253,7 +261,7 @@ nfs_file_read(struct kiocb *iocb, const struct io=
vec *iov,
>  	if (iocb->ki_filp->f_flags & O_DIRECT)
>  		return nfs_file_direct_read(iocb, iov, nr_segs, pos);
> =20
> -	dfprintk(VFS, "nfs: read(%s/%s, %lu@%lu)\n",
> +	dprintk("NFS: read(%s/%s, %lu@%lu)\n",
>  		dentry->d_parent->d_name.name, dentry->d_name.name,
>  		(unsigned long) count, (unsigned long) pos);
> =20
> @@ -273,7 +281,7 @@ nfs_file_splice_read(struct file *filp, loff_t *p=
pos,
>  	struct inode *inode =3D dentry->d_inode;
>  	ssize_t res;
> =20
> -	dfprintk(VFS, "nfs: splice_read(%s/%s, %lu@%Lu)\n",
> +	dprintk("NFS: splice_read(%s/%s, %lu@%Lu)\n",
>  		dentry->d_parent->d_name.name, dentry->d_name.name,
>  		(unsigned long) count, (unsigned long long) *ppos);
> =20
> @@ -290,7 +298,7 @@ nfs_file_mmap(struct file * file, struct vm_area_=
struct * vma)
>  	struct inode *inode =3D dentry->d_inode;
>  	int	status;
> =20
> -	dfprintk(VFS, "nfs: mmap(%s/%s)\n",
> +	dprintk("NFS: mmap(%s/%s)\n",
>  		dentry->d_parent->d_name.name, dentry->d_name.name);
> =20
>  	status =3D nfs_revalidate_mapping(inode, file->f_mapping);
> @@ -313,7 +321,7 @@ nfs_file_fsync(struct file *file, struct dentry *=
dentry, int datasync)
>  	struct nfs_open_context *ctx =3D nfs_file_open_context(file);
>  	struct inode *inode =3D dentry->d_inode;
> =20
> -	dfprintk(VFS, "NFS: fsync file(%s/%s) datasync %d\n",
> +	dprintk("NFS: fsync file(%s/%s) datasync %d\n",
>  			dentry->d_parent->d_name.name, dentry->d_name.name,
>  			datasync);
> =20
> @@ -487,9 +495,9 @@ static ssize_t nfs_file_write(struct kiocb *iocb,=
 const struct iovec *iov,
>  	if (iocb->ki_filp->f_flags & O_DIRECT)
>  		return nfs_file_direct_write(iocb, iov, nr_segs, pos);
> =20
> -	dfprintk(VFS, "nfs: write(%s/%s(%ld), %lu@%Ld)\n",
> +	dprintk("NFS: write(%s/%s, %lu@%Ld)\n",
>  		dentry->d_parent->d_name.name, dentry->d_name.name,
> -		inode->i_ino, (unsigned long) count, (long long) pos);
> +		(unsigned long) count, (long long) pos);
> =20
>  	result =3D -EBUSY;
>  	if (IS_SWAPFILE(inode))
> @@ -633,12 +641,14 @@ out:
>   */
>  static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl=
)
>  {
> -	struct inode * inode =3D filp->f_mapping->host;
> +	struct dentry *dentry =3D filp->f_path.dentry;
> +	struct inode *inode =3D filp->f_mapping->host;
> =20
> -	dprintk("NFS: nfs_lock(f=3D%s/%ld, t=3D%x, fl=3D%x, r=3D%Ld:%Ld)\n"=
,
> -			inode->i_sb->s_id, inode->i_ino,
> +	dprintk("NFS: lock(%s/%s, t=3D%x, fl=3D%x, r=3D%lld:%lld)\n",
> +			dentry->d_parent->d_name.name, dentry->d_name.name,
>  			fl->fl_type, fl->fl_flags,
>  			(long long)fl->fl_start, (long long)fl->fl_end);
> +
>  	nfs_inc_stats(inode, NFSIOS_VFSLOCK);
> =20
>  	/* No mandatory locks over NFS */
> @@ -657,9 +667,10 @@ static int nfs_lock(struct file *filp, int cmd, =
struct file_lock *fl)
>   */
>  static int nfs_flock(struct file *filp, int cmd, struct file_lock *f=
l)
>  {
> -	dprintk("NFS: nfs_flock(f=3D%s/%ld, t=3D%x, fl=3D%x)\n",
> -			filp->f_path.dentry->d_inode->i_sb->s_id,
> -			filp->f_path.dentry->d_inode->i_ino,
> +	struct dentry *dentry =3D filp->f_path.dentry;
> +
> +	dprintk("NFS: flock(%s/%s, t=3D%x, fl=3D%x)\n",
> +			dentry->d_parent->d_name.name, dentry->d_name.name,
>  			fl->fl_type, fl->fl_flags);

=EF=BB=BFThis will result in 'unused variable' warnings for 'dentry' if=
 you
compile with #undef RPC_DEBUG.

> =20
>  	/*
> @@ -682,12 +693,17 @@ static int nfs_flock(struct file *filp, int cmd=
, struct file_lock *fl)
>  	return do_setlk(filp, cmd, fl);
>  }
> =20
> +/*
> + * There is no protocol support for leases, so we have no way to imp=
lement
> + * them correctly in the face of opens by other clients.
> + */
>  static int nfs_setlease(struct file *file, long arg, struct file_loc=
k **fl)
>  {
> -	/*
> -	 * There is no protocol support for leases, so we have no way
> -	 * to implement them correctly in the face of opens by other
> -	 * clients.
> -	 */
> +	struct dentry *dentry =3D file->f_path.dentry;
> +
> +	dprintk("NFS: setlease(%s/%s, arg=3D%ld)\n",
> +			dentry->d_parent->d_name.name,
> +			dentry->d_name.name, arg);
> +

=EF=BB=BFThis will result in 'unused variable' warnings for 'dentry' if=
 you
compile with #undef RPC_DEBUG.

>  	return -EINVAL;
>  }
>=20
--=20
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 4/7] NFS: Add debugging facility for NFS aops
       [not found] ` <20080611215018.7068.71737.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
@ 2008-06-11 21:55   ` Chuck Lever
  0 siblings, 0 replies; 13+ messages in thread
From: Chuck Lever @ 2008-06-11 21:55 UTC (permalink / raw)
  To: trond.myklebust; +Cc: linux-nfs

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@oracle.com>
---

 fs/nfs/file.c |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)


diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index ce18877..5a14f1c 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -335,6 +335,11 @@ static int nfs_write_begin(struct file *file, struct address_space *mapping,
 	struct page *page;
 	index = pos >> PAGE_CACHE_SHIFT;
 
+	dfprintk(PAGECACHE, "NFS: write_begin(%s/%s(%ld), %u@%lld)\n",
+		file->f_path.dentry->d_parent->d_name.name,
+		file->f_path.dentry->d_name.name,
+		mapping->host->i_ino, len, (long long) pos);
+
 	page = __grab_cache_page(mapping, index);
 	if (!page)
 		return -ENOMEM;
@@ -355,6 +360,11 @@ static int nfs_write_end(struct file *file, struct address_space *mapping,
 	unsigned offset = pos & (PAGE_CACHE_SIZE - 1);
 	int status;
 
+	dfprintk(PAGECACHE, "NFS: write_end(%s/%s(%ld), %u@%lld)\n",
+		file->f_path.dentry->d_parent->d_name.name,
+		file->f_path.dentry->d_name.name,
+		mapping->host->i_ino, len, (long long) pos);
+
 	lock_kernel();
 	status = nfs_updatepage(file, page, offset, copied);
 	unlock_kernel();
@@ -369,6 +379,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 */
@@ -377,13 +389,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 = {
@@ -403,13 +422,19 @@ 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));
+
 	lock_page(page);
 	mapping = page->mapping;
-	if (mapping != vma->vm_file->f_path.dentry->d_inode->i_mapping)
+	if (mapping != dentry->d_inode->i_mapping)
 		goto out_unlock;
 
 	ret = 0;


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2008-06-11 22:02 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-27 20:28 [PATCH 0/7] Second series of patches for 2.6.27 Chuck Lever
     [not found] ` <20080527202347.6651.54668.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-05-27 20:29   ` [PATCH 1/7] NFS: Make nfs_fsync methods consistent Chuck Lever
2008-05-27 20:29   ` [PATCH 2/7] NFS: Make nfs_llseek " Chuck Lever
     [not found]     ` <20080527202915.6651.44947.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-06-10 18:27       ` Trond Myklebust
2008-05-27 20:29   ` [PATCH 3/7] NFS: Make nfs_open " Chuck Lever
     [not found]     ` <20080527202922.6651.18161.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-06-10 18:27       ` Trond Myklebust
2008-05-27 20:29   ` [PATCH 4/7] NFS: Add debugging facility for NFS aops Chuck Lever
     [not found]     ` <20080527202929.6651.32893.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-06-10 18:30       ` Trond Myklebust
2008-05-27 20:29   ` [PATCH 5/7] NFS: Use NFSDBG_FILE for all fops Chuck Lever
     [not found]     ` <20080527202937.6651.55382.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-06-10 18:32       ` Trond Myklebust
2008-05-27 20:29   ` [PATCH 6/7] NFS: Fix trace debugging nits in write.c Chuck Lever
2008-05-27 20:29   ` [PATCH 7/7] SUNRPC: Remove obsolete messages during transport connect Chuck Lever
  -- strict thread matches above, loose matches on Subject: below --
2008-06-11 21:55 [PATCH 0/7] dprintk clean-ups [resend] Chuck Lever
     [not found] ` <20080611215018.7068.71737.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2008-06-11 21:55   ` [PATCH 4/7] NFS: Add debugging facility for NFS aops Chuck Lever

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.