Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.24.5-rc2 /fs/hfsplus/dir.c

Filename:/fs/hfsplus/dir.c
Lines Added:15
Lines Deleted:8
Also changed in: (Previous) 2.6.24.5-rc1  2.6.24-git22  2.6.24-git21  2.6.24-git20  2.6.24-git19  2.6.24-git18 
(Following) 2.6.24.5  2.6.24.6  2.6.24.7 

Location
[  2.6.24.5-rc2
  [  fs
    [  hfsplus
       o  dir.c

Patch

diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
index 1955ee6..078684f 100644
--- a/fs/hfsplus/dir.c
+++ b/fs/hfsplus/dir.c
@@ -340,16 +340,23 @@ static int hfsplus_unlink(struct inode *dir, struct dentry *dentry)
 
    if (inode->i_nlink > 0)
       drop_nlink(inode);
-   hfsplus_delete_inode(inode);
-   if (inode->i_ino != cnid && !inode->i_nlink) {
-      if (!atomic_read(&HFSPLUS_I(inode).opencnt)) {
-         res = hfsplus_delete_cat(inode->i_ino, HFSPLUS_SB(sb).hidden_dir, NULL);
-         if (!res)
-            hfsplus_delete_inode(inode);
+   if (inode->i_ino == cnid)
+      clear_nlink(inode);
+   if (!inode->i_nlink) {
+      if (inode->i_ino != cnid) {
+         HFSPLUS_SB(sb).file_count--;
+         if (!atomic_read(&HFSPLUS_I(inode).opencnt)) {
+            res = hfsplus_delete_cat(inode->i_ino,
+                      HFSPLUS_SB(sb).hidden_dir,
+                      NULL);
+            if (!res)
+               hfsplus_delete_inode(inode);
+         } else
+            inode->i_flags |= S_DEAD;
       } else
-         inode->i_flags |= S_DEAD;
+         hfsplus_delete_inode(inode);
    } else
-      clear_nlink(inode);
+      HFSPLUS_SB(sb).file_count--;
    inode->i_ctime = CURRENT_TIME_SEC;
    mark_inode_dirty(inode);
 


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.