|
@@ -1811,11 +1811,16 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th,
|
|
|
TYPE_STAT_DATA, SD_SIZE, MAX_US_INT);
|
|
|
memcpy(INODE_PKEY(inode), &(ih.ih_key), KEY_SIZE);
|
|
|
args.dirid = le32_to_cpu(ih.ih_key.k_dir_id);
|
|
|
- if (insert_inode_locked4(inode, args.objectid,
|
|
|
- reiserfs_find_actor, &args) < 0) {
|
|
|
+
|
|
|
+ reiserfs_write_unlock(inode->i_sb);
|
|
|
+ err = insert_inode_locked4(inode, args.objectid,
|
|
|
+ reiserfs_find_actor, &args);
|
|
|
+ reiserfs_write_lock(inode->i_sb);
|
|
|
+ if (err) {
|
|
|
err = -EINVAL;
|
|
|
goto out_bad_inode;
|
|
|
}
|
|
|
+
|
|
|
if (old_format_only(sb))
|
|
|
/* not a perfect generation count, as object ids can be reused, but
|
|
|
** this is as good as reiserfs can do right now.
|