aboutsummaryrefslogtreecommitdiffstats
path: root/fs/hfsplus/dir.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@tuxera.com>2010-10-27 07:45:50 -0400
committerChristoph Hellwig <hch@lst.de>2010-10-27 07:45:50 -0400
commit85b8fe8cc47b0dc1068475ba95f29ddff10a8efc (patch)
treeffda33b6caa6f32ac226ff49cfd8a18c186b68c1 /fs/hfsplus/dir.c
parente50fb58b5b3548e578d3b74ff15aeb7d9a496839 (diff)
hfsplus: free space correcly for files unlinked while open
hfsplus_delete_inode only truncates away all block allocations if i_nlink is zero. Make sure we properly drop the unlink count even when doing the rename hack for open but unlinked files. Signed-off-by: Christoph Hellwig <hch@tuxera.com>
Diffstat (limited to 'fs/hfsplus/dir.c')
-rw-r--r--fs/hfsplus/dir.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c
index d236d85ec9d7..e490aaf35174 100644
--- a/fs/hfsplus/dir.c
+++ b/fs/hfsplus/dir.c
@@ -317,8 +317,10 @@ static int hfsplus_unlink(struct inode *dir, struct dentry *dentry)
317 res = hfsplus_rename_cat(inode->i_ino, 317 res = hfsplus_rename_cat(inode->i_ino,
318 dir, &dentry->d_name, 318 dir, &dentry->d_name,
319 sbi->hidden_dir, &str); 319 sbi->hidden_dir, &str);
320 if (!res) 320 if (!res) {
321 inode->i_flags |= S_DEAD; 321 inode->i_flags |= S_DEAD;
322 drop_nlink(inode);
323 }
322 goto out; 324 goto out;
323 } 325 }
324 res = hfsplus_delete_cat(cnid, dir, &dentry->d_name); 326 res = hfsplus_delete_cat(cnid, dir, &dentry->d_name);