On Fri, 30 Jan 2015 09:20:46 +0800, Qu Wenruo wrote: >> Here need ACCESS_ONCE to wrap info->mount_opt, or the complier might use >> info->mount_opt instead of new_opt. > Thanks for pointing out this one. >> >> But I worried that this is not key reason of the wrong space cache. Could >> you explain the race condition which caused the wrong space cache? >> >> Thanks >> Miao > CPU0: > remount() > |- sync_fs() <- after sync_fs() we can start new trans > |- btrfs_parse_options() CPU1: > |- start_transaction() > |- Do some bg allocation, not recorded in space_cache.
I think it is a bug if a free space is not recorded in space cache. Could you explain why it is not recorded? Thanks Miao > |- set SPACE_CACHE bit due to cache_gen > > |- commit_transaction() > |- write space cache and update cache_gen. > but since some of it is not recorded in space > cache, > the space cache missing some records. > |- clear SPACE_CACHE bit dut to nospace_cache > > So the space cache is wrong. > > Thanks, > Qu >> >>> + } >>> kfree(orig); >>> return ret; >>> } >>> > > . > -- 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