Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 294652
b: refs/heads/master
c: c43be10
h: refs/heads/master
v: v3
  • Loading branch information
Artem Bityutskiy committed Feb 29, 2012
1 parent f5a162d commit ab4a9ed
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b06283c7df35b5a49ab141ed38e0280821379096
refs/heads/master: c43be1085f8480ab36d5c8c76a08e67bdf6d2e18
18 changes: 9 additions & 9 deletions trunk/fs/ubifs/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,7 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry)
int sz_change = CALC_DENT_SIZE(dentry->d_name.len);
int err, budgeted = 1;
struct ubifs_budget_req req = { .mod_dent = 1, .dirtied_ino = 2 };
unsigned int saved_nlink = inode->i_nlink;

/*
* Budget request settings: deletion direntry, deletion inode (+1 for
Expand Down Expand Up @@ -613,7 +614,7 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry)
out_cancel:
dir->i_size += sz_change;
dir_ui->ui_size = dir->i_size;
inc_nlink(inode);
set_nlink(inode, saved_nlink);
unlock_2_inodes(dir, inode);
if (budgeted)
ubifs_release_budget(c, &req);
Expand Down Expand Up @@ -704,8 +705,7 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry)
dir->i_size += sz_change;
dir_ui->ui_size = dir->i_size;
inc_nlink(dir);
inc_nlink(inode);
inc_nlink(inode);
set_nlink(inode, 2);
unlock_2_inodes(dir, inode);
if (budgeted)
ubifs_release_budget(c, &req);
Expand Down Expand Up @@ -977,6 +977,7 @@ static int ubifs_rename(struct inode *old_dir, struct dentry *old_dentry,
struct ubifs_budget_req ino_req = { .dirtied_ino = 1,
.dirtied_ino_d = ALIGN(old_inode_ui->data_len, 8) };
struct timespec time;
unsigned int saved_nlink;

/*
* Budget request settings: deletion direntry, new direntry, removing
Expand Down Expand Up @@ -1059,13 +1060,14 @@ static int ubifs_rename(struct inode *old_dir, struct dentry *old_dentry,
if (unlink) {
/*
* Directories cannot have hard-links, so if this is a
* directory, decrement its @i_nlink twice because an empty
* directory has @i_nlink 2.
* directory, just clear @i_nlink.
*/
saved_nlink = new_inode->i_nlink;
if (is_dir)
clear_nlink(new_inode);
else
drop_nlink(new_inode);
new_inode->i_ctime = time;
drop_nlink(new_inode);
} else {
new_dir->i_size += new_sz;
ubifs_inode(new_dir)->ui_size = new_dir->i_size;
Expand Down Expand Up @@ -1102,9 +1104,7 @@ static int ubifs_rename(struct inode *old_dir, struct dentry *old_dentry,

out_cancel:
if (unlink) {
if (is_dir)
inc_nlink(new_inode);
inc_nlink(new_inode);
set_nlink(new_inode, saved_nlink);
} else {
new_dir->i_size -= new_sz;
ubifs_inode(new_dir)->ui_size = new_dir->i_size;
Expand Down

0 comments on commit ab4a9ed

Please sign in to comment.