lowest_level = p->lowest_level;
WARN_ON(lowest_level && ins_len);
WARN_ON(p->nodes[0] != NULL);
- WARN_ON(root == root->fs_info->extent_root &&
+ WARN_ON(cow && root == root->fs_info->extent_root &&
!mutex_is_locked(&root->fs_info->alloc_mutex));
WARN_ON(root == root->fs_info->chunk_root &&
!mutex_is_locked(&root->fs_info->chunk_mutex));
free_extent_buffer(tmp);
goto again;
} else {
+ if (tmp)
+ free_extent_buffer(tmp);
b = read_node_slot(root, b, slot);
}
}
free_extent_buffer(c);
path->nodes[level] = next;
path->slots[level] = 0;
- path->locks[level] = 1;
+ if (!path->skip_locking)
+ path->locks[level] = 1;
if (!level)
break;
if (level == 1 && path->locks[1] && path->reada)