|
@@ -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 = 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;
|
|
|
}
|
|
|
|