From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from szxga01-in.huawei.com ([119.145.14.64]:16653 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752241AbbA3B3k (ORCPT ); Thu, 29 Jan 2015 20:29:40 -0500 Message-ID: <54CADE7D.5000607@huawei.com> Date: Fri, 30 Jan 2015 09:29:33 +0800 From: Miao Xie MIME-Version: 1.0 To: Qu Wenruo , Subject: Re: [PATCH RESEND v4 2/8] btrfs: Make btrfs_parse_options() parse mount option in a atomic way References: <1422498281-20493-1-git-send-email-quwenruo@cn.fujitsu.com> <1422498281-20493-3-git-send-email-quwenruo@cn.fujitsu.com> <54CAD0FC.4010503@huawei.com> <54CADC6E.2070703@cn.fujitsu.com> In-Reply-To: <54CADC6E.2070703@cn.fujitsu.com> Content-Type: text/plain; charset="utf-8" Sender: linux-btrfs-owner@vger.kernel.org List-ID: 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; >>> } >>> > > . >