insert_inode_hash(ip);
mark_inode_dirty(ip);
- d_instantiate(dentry, ip);
dip->i_ctime = dip->i_mtime = CURRENT_TIME;
if (rc) {
ip->i_nlink = 0;
iput(ip);
- }
+ } else
+ d_instantiate(dentry, ip);
out2:
free_UCSname(&dname);
insert_inode_hash(ip);
mark_inode_dirty(ip);
- d_instantiate(dentry, ip);
/* update parent directory inode */
dip->i_nlink++; /* for '..' from child directory */
if (rc) {
ip->i_nlink = 0;
iput(ip);
- }
+ } else
+ d_instantiate(dentry, ip);
out2:
free_UCSname(&dname);
ip->i_ctime = CURRENT_TIME;
mark_inode_dirty(dir);
atomic_inc(&ip->i_count);
- d_instantiate(dentry, ip);
iplist[0] = ip;
iplist[1] = dir;
rc = txCommit(tid, 2, &iplist[0], 0);
+ if (!rc)
+ d_instantiate(dentry, ip);
+
free_dname:
free_UCSname(&dname);
insert_inode_hash(ip);
mark_inode_dirty(ip);
- d_instantiate(dentry, ip);
/*
* commit update of parent directory and link object
if (rc) {
ip->i_nlink = 0;
iput(ip);
- }
+ } else
+ d_instantiate(dentry, ip);
out2:
free_UCSname(&dname);
insert_inode_hash(ip);
mark_inode_dirty(ip);
- d_instantiate(dentry, ip);
dir->i_ctime = dir->i_mtime = CURRENT_TIME;
if (rc) {
ip->i_nlink = 0;
iput(ip);
- }
+ } else
+ d_instantiate(dentry, ip);
out1:
free_UCSname(&dname);