aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/dir.c')
-rw-r--r--fs/nfs/dir.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 982a2064fe4c..b1940660502f 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -133,8 +133,11 @@ nfs_opendir(struct inode *inode, struct file *filp)
133{ 133{
134 int res; 134 int res;
135 135
136 dfprintk(VFS, "NFS: opendir(%s/%ld)\n", 136 dfprintk(FILE, "NFS: open dir(%s/%s)\n",
137 inode->i_sb->s_id, inode->i_ino); 137 filp->f_path.dentry->d_parent->d_name.name,
138 filp->f_path.dentry->d_name.name);
139
140 nfs_inc_stats(inode, NFSIOS_VFSOPEN);
138 141
139 lock_kernel(); 142 lock_kernel();
140 /* Call generic open code in order to cache credentials */ 143 /* Call generic open code in order to cache credentials */
@@ -528,7 +531,7 @@ static int nfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
528 struct nfs_fattr fattr; 531 struct nfs_fattr fattr;
529 long res; 532 long res;
530 533
531 dfprintk(VFS, "NFS: readdir(%s/%s) starting at cookie %Lu\n", 534 dfprintk(FILE, "NFS: readdir(%s/%s) starting at cookie %llu\n",
532 dentry->d_parent->d_name.name, dentry->d_name.name, 535 dentry->d_parent->d_name.name, dentry->d_name.name,
533 (long long)filp->f_pos); 536 (long long)filp->f_pos);
534 nfs_inc_stats(inode, NFSIOS_VFSGETDENTS); 537 nfs_inc_stats(inode, NFSIOS_VFSGETDENTS);
@@ -595,7 +598,7 @@ out:
595 unlock_kernel(); 598 unlock_kernel();
596 if (res > 0) 599 if (res > 0)
597 res = 0; 600 res = 0;
598 dfprintk(VFS, "NFS: readdir(%s/%s) returns %ld\n", 601 dfprintk(FILE, "NFS: readdir(%s/%s) returns %ld\n",
599 dentry->d_parent->d_name.name, dentry->d_name.name, 602 dentry->d_parent->d_name.name, dentry->d_name.name,
600 res); 603 res);
601 return res; 604 return res;
@@ -603,7 +606,15 @@ out:
603 606
604static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin) 607static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
605{ 608{
606 mutex_lock(&filp->f_path.dentry->d_inode->i_mutex); 609 struct dentry *dentry = filp->f_path.dentry;
610 struct inode *inode = dentry->d_inode;
611
612 dfprintk(FILE, "NFS: llseek dir(%s/%s, %lld, %d)\n",
613 dentry->d_parent->d_name.name,
614 dentry->d_name.name,
615 offset, origin);
616
617 mutex_lock(&inode->i_mutex);
607 switch (origin) { 618 switch (origin) {
608 case 1: 619 case 1:
609 offset += filp->f_pos; 620 offset += filp->f_pos;
@@ -619,7 +630,7 @@ static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
619 nfs_file_open_context(filp)->dir_cookie = 0; 630 nfs_file_open_context(filp)->dir_cookie = 0;
620 } 631 }
621out: 632out:
622 mutex_unlock(&filp->f_path.dentry->d_inode->i_mutex); 633 mutex_unlock(&inode->i_mutex);
623 return offset; 634 return offset;
624} 635}
625 636
@@ -629,10 +640,11 @@ out:
629 */ 640 */
630static int nfs_fsync_dir(struct file *filp, struct dentry *dentry, int datasync) 641static int nfs_fsync_dir(struct file *filp, struct dentry *dentry, int datasync)
631{ 642{
632 dfprintk(VFS, "NFS: fsync_dir(%s/%s) datasync %d\n", 643 dfprintk(FILE, "NFS: fsync dir(%s/%s) datasync %d\n",
633 dentry->d_parent->d_name.name, dentry->d_name.name, 644 dentry->d_parent->d_name.name, dentry->d_name.name,
634 datasync); 645 datasync);
635 646
647 nfs_inc_stats(dentry->d_inode, NFSIOS_VFSFSYNC);
636 return 0; 648 return 0;
637} 649}
638 650