]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/hfs/dir.c
fuse: llseek fix race
[karo-tx-linux.git] / fs / hfs / dir.c
index 1cb70cdba2c1dbf61cb5bbe47f6bba47d5a70d6b..bce4eef91a063c44f8386d49c97afa388da77f2b 100644 (file)
@@ -198,7 +198,7 @@ static int hfs_create(struct inode *dir, struct dentry *dentry, int mode,
 
        res = hfs_cat_create(inode->i_ino, dir, &dentry->d_name, inode);
        if (res) {
-               inode->i_nlink = 0;
+               clear_nlink(inode);
                hfs_delete_inode(inode);
                iput(inode);
                return res;
@@ -227,7 +227,7 @@ static int hfs_mkdir(struct inode *dir, struct dentry *dentry, int mode)
 
        res = hfs_cat_create(inode->i_ino, dir, &dentry->d_name, inode);
        if (res) {
-               inode->i_nlink = 0;
+               clear_nlink(inode);
                hfs_delete_inode(inode);
                iput(inode);
                return res;
@@ -253,9 +253,6 @@ static int hfs_remove(struct inode *dir, struct dentry *dentry)
        struct inode *inode = dentry->d_inode;
        int res;
 
-       if (S_ISDIR(inode->i_mode))
-               dentry_unhash(dentry);
-
        if (S_ISDIR(inode->i_mode) && inode->i_size != 2)
                return -ENOTEMPTY;
        res = hfs_cat_delete(inode->i_ino, dir, &dentry->d_name);
@@ -286,9 +283,6 @@ static int hfs_rename(struct inode *old_dir, struct dentry *old_dentry,
 
        /* Unlink destination if it already exists */
        if (new_dentry->d_inode) {
-               if (S_ISDIR(new_dentry->d_inode->i_mode))
-                       dentry_unhash(new_dentry);
-
                res = hfs_remove(new_dir, new_dentry);
                if (res)
                        return res;