Here are two patches which aim to disentangle and make more explicit the situation when a space_info has to be created VS when space_info values are being updated.
It survived multiple xfstest runs with additional ASSERTs which I have removed in this posting. One such assert which didn't trigger was in btrfs_make_block_group. Despite that I haven't changed the logic of the code to try and allocate a space_info if one can't be found. However, I'd like someone more knowledgble of the internals of bg lifecycle to tell me if in fact btrfs_make_block_group can be called with flags for non-existant struct space_info. Nikolay Borisov (2): btrfs: Separate space_info create/update btrfs: Refactor update_space_info fs/btrfs/extent-tree.c | 172 +++++++++++++++++++++---------------------------- 1 file changed, 73 insertions(+), 99 deletions(-) -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html