summaryrefslogtreecommitdiffstats
path: root/fs/smbfs/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/smbfs/dir.c')
-rw-r--r--fs/smbfs/dir.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/fs/smbfs/dir.c b/fs/smbfs/dir.c
index a29e55c7a..b5715b220 100644
--- a/fs/smbfs/dir.c
+++ b/fs/smbfs/dir.c
@@ -168,7 +168,7 @@ file->f_dentry->d_name.name);
static int smb_lookup_validate(struct dentry *, int);
static int smb_hash_dentry(struct dentry *, struct qstr *);
static int smb_compare_dentry(struct dentry *, struct qstr *, struct qstr *);
-static void smb_delete_dentry(struct dentry *);
+static int smb_delete_dentry(struct dentry *);
static struct dentry_operations smbfs_dentry_operations =
{
@@ -259,9 +259,9 @@ out:
/*
* This is the callback from dput() when d_count is going to 0.
- * We use this to unhash dentries with bad inodes and close files.
+ * We use this to unhash dentries with bad inodes.
*/
-static void
+static int
smb_delete_dentry(struct dentry * dentry)
{
if (dentry->d_inode)
@@ -272,13 +272,13 @@ smb_delete_dentry(struct dentry * dentry)
printk("smb_delete_dentry: bad inode, unhashing %s/%s\n",
dentry->d_parent->d_name.name, dentry->d_name.name);
#endif
- d_drop(dentry);
+ return 1;
}
- smb_close_dentry(dentry);
} else
{
/* N.B. Unhash negative dentries? */
}
+ return 0;
}
/*
@@ -466,10 +466,7 @@ smb_unlink(struct inode *dir, struct dentry *dentry)
smb_invalid_dir_cache(dir);
error = smb_proc_unlink(dentry);
if (!error)
- {
smb_renew_times(dentry);
- d_delete(dentry);
- }
return error;
}