* So keep it there before we have suitable solution. */
brelse(bh);
+ mutex_unlock(&dir->i_mutex);
+ mutex_unlock(&src_parent->i_mutex);
+
+ rc = -EEXIST;
/* If the src object has never been modified, then remove it. */
if (inode->i_size == 0 && inode->i_mode & S_ISUID &&
inode->i_mode & S_ISGID)
- vfs_unlink(src_parent, src_child);
- GOTO(unlock_src, rc = 0);
+ rc = vfs_unlink(src_parent, src_child);
+ ldiskfs_journal_stop(jh);
+ RETURN(rc);
}
bh = osd_ldiskfs_find_entry(src_parent, src_child, &de, NULL);
unlock:
mutex_unlock(&dir->i_mutex);
-
-unlock_src:
mutex_unlock(&src_parent->i_mutex);
ldiskfs_journal_stop(jh);
return rc;
rc1 = __osd_xattr_set(info, inode, XATTR_NAME_FID, ff, size,
XATTR_CREATE);
- if (rc1 != 0 && rc != 0)
+ if (rc1 != 0 && rc == 0)
rc = rc1;
}