Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp377416rdb; Mon, 18 Sep 2023 19:36:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHbrpM0ybnVGAp8aSk7e7u8CF2ShuNhqI6nb9usyNBxNaUoMGbUdNeX32k2dC376LnVGpfi X-Received: by 2002:a05:6870:440b:b0:1b5:688b:5c24 with SMTP id u11-20020a056870440b00b001b5688b5c24mr10451415oah.32.1695090964222; Mon, 18 Sep 2023 19:36:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695090964; cv=none; d=google.com; s=arc-20160816; b=fl4u1QkNA3r93wkKlzu4tmbP1Mz3V7VAXWC/TpGxKaW/zxyTajMfWp9GmVikKxox4W tbuESwJiSHjLij0iNGPFRitTnSZg/CEMDzpHthgprB/h7IN0fOr7/u4sEp/4Q0n1acXI cjykra09mRHEjYhiy1m5aTpq14J0sCKShWxUEB+Kc4xsL4PjkBcV+tYQHjsn0wufPrYj nOv0Qe7EaGgmuk8A/eX/jttvYGV9LWXRqxrCJXbyy1pSYZtZUMJF6QmWqRF3KQH2Hzui YVBYvsC2dTwfAgHRgzNeqaP7FSw0x27ySkB6gLcMeul5gzuKNsIbmG8uVWJX7PNAbfhD oLmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:ui-outboundreport:content-transfer-encoding :in-reply-to:autocrypt:from:content-language:references:cc:to :subject:user-agent:mime-version:date:message-id:dkim-signature; bh=ulvQ/B+yKT51T3Hw4zTqaGx3Fysb4nqhocOLJ7cGq7U=; fh=kETqW9OnSk9LU/JLiFEPywWsTvLC2XsSH51/we49aFs=; b=AJgJbQUPhO05PYkRX5StFrL8Shi+vi5JusCrbga45bhOKuxdiwWvaVuVQts6TTbQTi WnWXrHrBYH963wftWFec/bZYQPeqSEZEIuFLw6E/9W5x8QXQndc72DIzh7JC3lQWo5EU T8Cvd3sYDIj3UO3GgRnR2By7P5/EuZIKLseAJqlZ95wLmliNFKmIrZS52gcuAS4m3Q2D tb55CutUwobLBNueNS4oECuGHuB/2ovLyccLOlLqyMxZhSkRRhddXw9Ex12CX4ZOVf16 KYdrpq6eWf8ekNyssji0keoe/QOOke9k+bx6a+viSwQHSiYXdn3xBTAxrP3BZoQQvaUM LG/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmx.com header.s=s31663417 header.b="qvph1/CT"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmx.com Return-Path: Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id a3-20020a17090a480300b00274cf8042b6si4530234pjh.102.2023.09.18.19.35.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Sep 2023 19:36:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@gmx.com header.s=s31663417 header.b="qvph1/CT"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmx.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 0B296811F26E; Mon, 18 Sep 2023 17:31:50 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230209AbjISAbL (ORCPT + 99 others); Mon, 18 Sep 2023 20:31:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229508AbjISAbK (ORCPT ); Mon, 18 Sep 2023 20:31:10 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AAB710D; Mon, 18 Sep 2023 17:31:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.com; s=s31663417; t=1695083452; x=1695688252; i=quwenruo.btrfs@gmx.com; bh=MHPq8qo9npPhpYugDittIcKIzactLJBBUJ4cBZhJd8c=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=qvph1/CTXOba9WQtzi6TdpCV3NvycVTPAYbp9UleDs4A/va8UpVWRkL7kfClEhf0i9cEUVqCbz6 /WqT7EKpCSYagZSWwbMjql1Fd6VYDRbwTD/hyk19XDzI5EPTFbJ8GTiNFusk13gtCpQuYz28+XTm0 qko9tea4QzmcDH9PHsn0F9TOlusizcz1AjnyoKDAGX+CRDxQhA8Lars0riv02EBtWF9brrO54gkeN pKynf+t/Vd0V0X3xUdFh46q2AIwfaVinG8dI7zYzRWRBHJfzj+BMV6Hv0cb0bEtJHQIV+0qdNPITs Xry0wMKmZZ59xmj5JDGASRk21l6dldtaF7eQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [172.16.0.117] ([218.215.59.251]) by mail.gmx.net (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1McH9i-1rGLsV2yqK-00cglU; Tue, 19 Sep 2023 02:30:52 +0200 Message-ID: Date: Tue, 19 Sep 2023 10:00:46 +0930 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/4] btrfs: add tree-checker for RAID-stripe-tree To: Johannes Thumshirn , Chris Mason , Josef Bacik , David Sterba Cc: Qu Wenru , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org References: <20230918-rst-updates-v1-0-17686dc06859@wdc.com> <20230918-rst-updates-v1-4-17686dc06859@wdc.com> Content-Language: en-US From: Qu Wenruo Autocrypt: addr=quwenruo.btrfs@gmx.com; keydata= xsBNBFnVga8BCACyhFP3ExcTIuB73jDIBA/vSoYcTyysFQzPvez64TUSCv1SgXEByR7fju3o 8RfaWuHCnkkea5luuTZMqfgTXrun2dqNVYDNOV6RIVrc4YuG20yhC1epnV55fJCThqij0MRL 1NxPKXIlEdHvN0Kov3CtWA+R1iNN0RCeVun7rmOrrjBK573aWC5sgP7YsBOLK79H3tmUtz6b 9Imuj0ZyEsa76Xg9PX9Hn2myKj1hfWGS+5og9Va4hrwQC8ipjXik6NKR5GDV+hOZkktU81G5 gkQtGB9jOAYRs86QG/b7PtIlbd3+pppT0gaS+wvwMs8cuNG+Pu6KO1oC4jgdseFLu7NpABEB AAHNIlF1IFdlbnJ1byA8cXV3ZW5ydW8uYnRyZnNAZ214LmNvbT7CwJQEEwEIAD4CGwMFCwkI BwIGFQgJCgsCBBYCAwECHgECF4AWIQQt33LlpaVbqJ2qQuHCPZHzoSX+qAUCY00iVQUJDToH pgAKCRDCPZHzoSX+qNKACACkjDLzCvcFuDlgqCiS4ajHAo6twGra3uGgY2klo3S4JespWifr BLPPak74oOShqNZ8yWzB1Bkz1u93Ifx3c3H0r2vLWrImoP5eQdymVqMWmDAq+sV1Koyt8gXQ XPD2jQCrfR9nUuV1F3Z4Lgo+6I5LjuXBVEayFdz/VYK63+YLEAlSowCF72Lkz06TmaI0XMyj jgRNGM2MRgfxbprCcsgUypaDfmhY2nrhIzPUICURfp9t/65+/PLlV4nYs+DtSwPyNjkPX72+ LdyIdY+BqS8cZbPG5spCyJIlZonADojLDYQq4QnufARU51zyVjzTXMg5gAttDZwTH+8LbNI4 mm2YzsBNBFnVga8BCACqU+th4Esy/c8BnvliFAjAfpzhI1wH76FD1MJPmAhA3DnX5JDORcga CbPEwhLj1xlwTgpeT+QfDmGJ5B5BlrrQFZVE1fChEjiJvyiSAO4yQPkrPVYTI7Xj34FnscPj /IrRUUka68MlHxPtFnAHr25VIuOS41lmYKYNwPNLRz9Ik6DmeTG3WJO2BQRNvXA0pXrJH1fN GSsRb+pKEKHKtL1803x71zQxCwLh+zLP1iXHVM5j8gX9zqupigQR/Cel2XPS44zWcDW8r7B0 q1eW4Jrv0x19p4P923voqn+joIAostyNTUjCeSrUdKth9jcdlam9X2DziA/DHDFfS5eq4fEv ABEBAAHCwHwEGAEIACYCGwwWIQQt33LlpaVbqJ2qQuHCPZHzoSX+qAUCY00ibgUJDToHvwAK CRDCPZHzoSX+qK6vB/9yyZlsS+ijtsvwYDjGA2WhVhN07Xa5SBBvGCAycyGGzSMkOJcOtUUf tD+ADyrLbLuVSfRN1ke738UojphwkSFj4t9scG5A+U8GgOZtrlYOsY2+cG3R5vjoXUgXMP37 INfWh0KbJodf0G48xouesn08cbfUdlphSMXujCA8y5TcNyRuNv2q5Nizl8sKhUZzh4BascoK DChBuznBsucCTAGrwPgG4/ul6HnWE8DipMKvkV9ob1xJS2W4WJRPp6QdVrBWJ9cCdtpR6GbL iQi22uZXoSPv/0oUrGU+U5X4IvdnvT+8viPzszL5wXswJZfqfy8tmHM85yjObVdIG6AlnrrD In-Reply-To: <20230918-rst-updates-v1-4-17686dc06859@wdc.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:g6bYWNdMfKvCTqkZtQwKKqBND4Y9t/29A2bhSo83BTyeQTuYVv2 f5TbTu6Li8eUBf95kmclO+PdG+r9lFXCPxx7WGQia0EERcfJI1qxrLSMia5+MY7907YFiM4 +6aQ/YRN4k9HHanw0Nn203MHif8GPtNsnT8n8P4ooBCvkHdbyFKv80rTIu7ZmW18uqs+RN1 uZBWPbfq0IaAyTTYQoPQw== UI-OutboundReport: notjunk:1;M01:P0:5bp+MoIxxHs=;5DshjgHutg/cbKh0HQrOAbxeyvR gaRehHfGmDemgufUa+wMmeYAcM++41HDSmRTdP40+Up0ctmlqULr34YKS1WyxYoXcJ/01eK0S gra2kLx+oeIkYjWf7oQ/ahtFUWlqCbqZdgtlv8Llx+ZBzhwmeCcm2vs8k6fAmQV78QcQ2Dgxe /PZuwSSBaT+bAx8k+tNOjzbqOh2Y3UYJmrUA4qOvGXaYr9f6CZ/eIIN/0FLXmTq4grHdiwPw9 7RdYqnJUIkVD5tdU1ZTepB4FofPQhYs9NYPQGG8iu/N1ddr2jvtJirag0TtOUF4+bQmuC0z6Y 1j+34+eDX8RTd1dBAI6+ZX63utuPxaGcLMUDNydv5w6es67MwZYITIrO2Y0LiXTRstwhAtz6E 8zoEmKyhUPFg/xNc2vRdyaNKx86KngOZtJnTVrv/fN/IKkCHZTAjVHSyeufMwT9Q/L433fqiM tR/tzUHQAcaGwJVeRdAYRU34qsHy4rUp9fxOh31g9b9Rzzopdg47xDKTW8eoktc3skquzdawx yZVC/DlQzmEsw/+VCfrz6rYkNb38csc4IedsL2FFhqwn0Wmybw1GwwBT+2AiNpBoALqqDqdh0 IQPE6Bh8OUCQblhook2bizEHdR8ZL38aRiJEvvkMMZ6hCLAjfpiXtv8iG+0VcON8vtlHunW4a POBKVsL1Do4WoRKqN8Y/AYIyp5rtdr4oP4SczZoPwqFV6541ZV5rYJ8vpHsUBlSIM+47LlHxH 6FkSYCq1+S+LN3DVfhW94529SSMekd+dPPS6H0UHeGlo4L/o5i2hK4laJ6fGHBWwiErF/BjvM W/qTfxI5U/FkBPdcBBfBjjkKkB0LDGb6Ep7gHVskELr5PlxTFw5Ud1D7NHlKQ1QAkn0V4by7a Y9BkGkSZiTJGG6uIk/ru72ER7LGioLiZE5mPDkak4nW63exo0kKyI2nqmyyH/NdhshIBcnYHr PCfTcF5qfYT2Ce103RUc8SvdksA= X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 18 Sep 2023 17:31:50 -0700 (PDT) On 2023/9/18 23:44, Johannes Thumshirn wrote: > Add a tree checker for RAID stripe tree items. > > Signed-off-by: Johannes Thumshirn > --- > fs/btrfs/tree-checker.c | 42 +++++++++++++++++++++++++++++++++++++++++= + > 1 file changed, 42 insertions(+) > > diff --git a/fs/btrfs/tree-checker.c b/fs/btrfs/tree-checker.c > index 01bba79165e7..ea84ca2767e9 100644 > --- a/fs/btrfs/tree-checker.c > +++ b/fs/btrfs/tree-checker.c > @@ -30,6 +30,7 @@ > #include "file-item.h" > #include "inode-item.h" > #include "dir-item.h" > +#include "raid-stripe-tree.h" > > /* > * Error message should follow the following format: > @@ -1635,6 +1636,44 @@ static int check_inode_ref(struct extent_buffer *= leaf, > return 0; > } > > +static int check_raid_stripe_extent(struct extent_buffer *leaf, > + struct btrfs_key *key, int slot) > +{ > + struct btrfs_stripe_extent *stripe_extent =3D > + btrfs_item_ptr(leaf, slot, struct btrfs_stripe_extent); > + > + if (unlikely(!IS_ALIGNED(key->objectid, leaf->fs_info->sectorsize))) { > + generic_err(leaf, slot, > +"invalid key objectid for raid stripe extent, have %llu expect aligned = to %u", > + key->objectid, leaf->fs_info->sectorsize); > + return -EUCLEAN; > + } > + > + if (unlikely(!btrfs_fs_incompat(leaf->fs_info, RAID_STRIPE_TREE))) { > + generic_err(leaf, slot, > + "RAID_STRIPE_EXTENT present but RAID_STRIPE_TREE incompat bit unset"); > + return -EUCLEAN; > + } > + > + switch (btrfs_stripe_extent_encoding(leaf, stripe_extent)) { > + case BTRFS_STRIPE_RAID0: > + case BTRFS_STRIPE_RAID1: > + case BTRFS_STRIPE_DUP: > + case BTRFS_STRIPE_RAID10: > + case BTRFS_STRIPE_RAID5: > + case BTRFS_STRIPE_RAID6: > + case BTRFS_STRIPE_RAID1C3: > + case BTRFS_STRIPE_RAID1C4: > + break; > + default: > + generic_err(leaf, slot, "invalid raid stripe encoding %u", > + btrfs_stripe_extent_encoding(leaf, stripe_extent)); > + return -EUCLEAN; > + } Another thing we can check is the item size, the item size should be aligned to a single record, or we can get garbage reading the last record. Thanks, Qu > + > + return 0; > +} > + > /* > * Common point to switch the item-specific validation. > */ > @@ -1689,6 +1728,9 @@ static enum btrfs_tree_block_status check_leaf_ite= m(struct extent_buffer *leaf, > case BTRFS_EXTENT_DATA_REF_KEY: > ret =3D check_extent_data_ref(leaf, key, slot); > break; > + case BTRFS_RAID_STRIPE_KEY: > + ret =3D check_raid_stripe_extent(leaf, key, slot); > + break; > } > > if (ret) >