[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f23134aa-435d-e280-e35f-402c8acb8093@cn.fujitsu.com>
Date: Wed, 7 Sep 2016 09:56:40 +0800
From: Qu Wenruo <quwenruo@...fujitsu.com>
To: Zhao Lei <zhaolei@...fujitsu.com>, <dsterba@...e.com>,
<clm@...com>, <anand.jain@...cle.com>, <fdmanana@...e.com>,
<linux-btrfs@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] Btrfs: remove unnecessary code of chunk_root assignment
in btrfs_read_chunk_tree.
At 09/07/2016 09:38 AM, Sean Fu wrote:
> On Mon, Sep 05, 2016 at 03:56:41PM +0800, Qu Wenruo wrote:
>>
>>
>> At 09/05/2016 09:19 AM, Zhao Lei wrote:
>>> Hi, Sean Fu
>>>
>>>> From: Sean Fu [mailto:fxinrong@...il.com]
>>>> Sent: Sunday, September 04, 2016 7:54 PM
>>>> To: dsterba@...e.com
>>>> Cc: clm@...com; anand.jain@...cle.com; fdmanana@...e.com;
>>>> zhaolei@...fujitsu.com; linux-btrfs@...r.kernel.org;
>>>> linux-kernel@...r.kernel.org; Sean Fu <fxinrong@...il.com>
>>>> Subject: [PATCH] Btrfs: remove unnecessary code of chunk_root assignment in
>>>> btrfs_read_chunk_tree.
>>>>
>>>> The input argument root is already set with "fs_info->chunk_root".
>>>> "chunk_root = fs_info->chunk_root = btrfs_alloc_root(fs_info)" in caller
>>>> "open_ctree".
>>>> “root->fs_info = fs_info” in "btrfs_alloc_root".
>>>>
>>> The root argument of this function means "any root".
>>> And the function is designed getting chunk root from
>>> "any root" in head.
>>>
>>> Since there is only one caller of this function,
>>> and the caller always send chunk_root as root argument in
>>> current code, we can remove above conversion,
>>> and I suggest renaming root to chunk_root to make it clear,
>>> something like:
>>>
>>> - btrfs_read_chunk_tree(struct btrfs_root *root)
>>> + btrfs_read_chunk_tree(struct btrfs_root *chunk_root)
>>
>> Since root is only used to get fs_info->chunk_root, why not use fs_info
>> directly?
> Sorry for late reply.
> chunk_root is processed in btrfs_read_chunk_tree.
> Why should we pass fs_info directly to btrfs_read_chunk_tree?
> Could you give me more detail?
>
> Many thanks
Normally we should only pass btrfs_root as parameter if it's a
file/log/relocation tree which can't be grabbed directly from fs_info.
For system wide trees, which are already in fs_info, like
fs_info->extent_root/chunk_root/..., we should pass fs_info.
Which is much much safer than passing a btrfs_root.
Careless caller can pass wrong tree and cause undefined behavior.
And such behavior makes caller more aware of what they really want to do.
Cases like just to grab sectorsize/nodesize shouldn't need a full
btrfs_root.
(Jeff's patchset has already done such things quite well)
Thanks,
Qu
>>
>> Thanks,
>> Qu
>>
>>>
>>> Thanks
>>> Zhaolei
>>>
>>>> Signed-off-by: Sean Fu <fxinrong@...il.com>
>>>> ---
>>>> fs/btrfs/volumes.c | 2 --
>>>> 1 file changed, 2 deletions(-)
>>>>
>>>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>>>> index 366b335..384a6d2 100644
>>>> --- a/fs/btrfs/volumes.c
>>>> +++ b/fs/btrfs/volumes.c
>>>> @@ -6600,8 +6600,6 @@ int btrfs_read_chunk_tree(struct btrfs_root *root)
>>>> int ret;
>>>> int slot;
>>>>
>>>> - root = root->fs_info->chunk_root;
>>>> -
>>>> path = btrfs_alloc_path();
>>>> if (!path)
>>>> return -ENOMEM;
>>>> --
>>>> 2.6.2
>>>>
>>>
>>>
>>>
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>>> the body of a message to majordomo@...r.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
Powered by blists - more mailing lists