From patchwork Mon Oct 26 23:33:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859065 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 54B891130 for ; Mon, 26 Oct 2020 23:35:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 378AF20872 for ; Mon, 26 Oct 2020 23:35:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="UoospNJc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406899AbgJZXfZ (ORCPT ); Mon, 26 Oct 2020 19:35:25 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:55278 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406870AbgJZXfY (ORCPT ); Mon, 26 Oct 2020 19:35:24 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNOqgc164732; Mon, 26 Oct 2020 23:35:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=CirmuzRLP4XMykVGAKcESQs0ysv0rONPduAnIOIEBzQ=; b=UoospNJceENSqJi1yKIJ22Nl4yfQpCjwGuQubtb+qKhb0LBAUDp1t6iVFvaF9+V/ZZ38 u1D8xCRpvqhiluRFvEl89VCx5qXJ5HMG4W2ceGJaB5R7YZaxpYkEQCiA/u0gwmR41OWN DeMe42z/IY/OXC1uzuz8doZklI7IZvq+5ZkOcpkfiKYvFxMIYtLHiIKVEGVhQc0efiVA 8lG+FgbXq/8Y2hRTPVvF8UHgjZBH/CEUiAeD8lvtO1VwcCvarRhm5w7vPvoxj1wlmZVi yyVapqSy1NBlSOpjSFuys3TXAcABBP7A5N9fJo6eoegPkIxiDAG/88QjljJIj7mCnfFE KQ== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2120.oracle.com with ESMTP id 34dgm3vus4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:35:20 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNQN7i058358; Mon, 26 Oct 2020 23:33:20 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 34cwukr7xb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:20 +0000 Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 09QNXJWd007042; Mon, 26 Oct 2020 23:33:19 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:14 -0700 Subject: [PATCH 1/9] xfs: store inode btree block counts in AGI header From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:12 -0700 Message-ID: <160375519217.880355.11973101156874824577.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=2 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxlogscore=999 suspectscore=2 clxscore=1015 mlxscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Source kernel commit: 2a39946c984464e4aac82c556ba9915589be7323 Add a btree block usage counters for both inode btrees to the AGI header so that we don't have to walk the entire finobt at mount time to create the per-AG reservations. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster Signed-off-by: Darrick J. Wong --- libxfs/xfs_ag.c | 5 +++++ libxfs/xfs_format.h | 18 +++++++++++++++++- libxfs/xfs_ialloc.c | 1 + libxfs/xfs_ialloc_btree.c | 21 +++++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/libxfs/xfs_ag.c b/libxfs/xfs_ag.c index ceaa7e5e4640..af8a0afdda93 100644 --- a/libxfs/xfs_ag.c +++ b/libxfs/xfs_ag.c @@ -333,6 +333,11 @@ xfs_agiblock_init( } for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO); + if (xfs_sb_version_hasinobtcounts(&mp->m_sb)) { + agi->agi_iblocks = cpu_to_be32(1); + if (xfs_sb_version_hasfinobt(&mp->m_sb)) + agi->agi_fblocks = cpu_to_be32(1); + } } typedef void (*aghdr_init_work_f)(struct xfs_mount *mp, struct xfs_buf *bp, diff --git a/libxfs/xfs_format.h b/libxfs/xfs_format.h index f0ecd064ff14..01544f9d5a57 100644 --- a/libxfs/xfs_format.h +++ b/libxfs/xfs_format.h @@ -449,6 +449,7 @@ xfs_sb_has_compat_feature( #define XFS_SB_FEAT_RO_COMPAT_FINOBT (1 << 0) /* free inode btree */ #define XFS_SB_FEAT_RO_COMPAT_RMAPBT (1 << 1) /* reverse map btree */ #define XFS_SB_FEAT_RO_COMPAT_REFLINK (1 << 2) /* reflinked files */ +#define XFS_SB_FEAT_RO_COMPAT_INOBTCNT (1 << 3) /* inobt block counts */ #define XFS_SB_FEAT_RO_COMPAT_ALL \ (XFS_SB_FEAT_RO_COMPAT_FINOBT | \ XFS_SB_FEAT_RO_COMPAT_RMAPBT | \ @@ -563,6 +564,17 @@ static inline bool xfs_sb_version_hasreflink(struct xfs_sb *sbp) (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_REFLINK); } +/* + * Inode btree block counter. We record the number of inobt and finobt blocks + * in the AGI header so that we can skip the finobt walk at mount time when + * setting up per-AG reservations. + */ +static inline bool xfs_sb_version_hasinobtcounts(struct xfs_sb *sbp) +{ + return XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5 && + (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_INOBTCNT); +} + /* * end of superblock version macros */ @@ -765,6 +777,9 @@ typedef struct xfs_agi { __be32 agi_free_root; /* root of the free inode btree */ __be32 agi_free_level;/* levels in free inode btree */ + __be32 agi_iblocks; /* inobt blocks used */ + __be32 agi_fblocks; /* finobt blocks used */ + /* structure must be padded to 64 bit alignment */ } xfs_agi_t; @@ -785,7 +800,8 @@ typedef struct xfs_agi { #define XFS_AGI_ALL_BITS_R1 ((1 << XFS_AGI_NUM_BITS_R1) - 1) #define XFS_AGI_FREE_ROOT (1 << 11) #define XFS_AGI_FREE_LEVEL (1 << 12) -#define XFS_AGI_NUM_BITS_R2 13 +#define XFS_AGI_IBLOCKS (1 << 13) /* both inobt/finobt block counters */ +#define XFS_AGI_NUM_BITS_R2 14 /* disk block (xfs_daddr_t) in the AG */ #define XFS_AGI_DADDR(mp) ((xfs_daddr_t)(2 << (mp)->m_sectbb_log)) diff --git a/libxfs/xfs_ialloc.c b/libxfs/xfs_ialloc.c index ce73feed981c..8adeb10e5d2e 100644 --- a/libxfs/xfs_ialloc.c +++ b/libxfs/xfs_ialloc.c @@ -2468,6 +2468,7 @@ xfs_ialloc_log_agi( offsetof(xfs_agi_t, agi_unlinked), offsetof(xfs_agi_t, agi_free_root), offsetof(xfs_agi_t, agi_free_level), + offsetof(xfs_agi_t, agi_iblocks), sizeof(xfs_agi_t) }; #ifdef DEBUG diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c index 41c308c2e54c..3ed87d1c7251 100644 --- a/libxfs/xfs_ialloc_btree.c +++ b/libxfs/xfs_ialloc_btree.c @@ -66,6 +66,25 @@ xfs_finobt_set_root( XFS_AGI_FREE_ROOT | XFS_AGI_FREE_LEVEL); } +/* Update the inode btree block counter for this btree. */ +static inline void +xfs_inobt_mod_blockcount( + struct xfs_btree_cur *cur, + int howmuch) +{ + struct xfs_buf *agbp = cur->bc_ag.agbp; + struct xfs_agi *agi = agbp->b_addr; + + if (!xfs_sb_version_hasinobtcounts(&cur->bc_mp->m_sb)) + return; + + if (cur->bc_btnum == XFS_BTNUM_FINO) + be32_add_cpu(&agi->agi_fblocks, howmuch); + else if (cur->bc_btnum == XFS_BTNUM_INO) + be32_add_cpu(&agi->agi_iblocks, howmuch); + xfs_ialloc_log_agi(cur->bc_tp, agbp, XFS_AGI_IBLOCKS); +} + STATIC int __xfs_inobt_alloc_block( struct xfs_btree_cur *cur, @@ -101,6 +120,7 @@ __xfs_inobt_alloc_block( new->s = cpu_to_be32(XFS_FSB_TO_AGBNO(args.mp, args.fsbno)); *stat = 1; + xfs_inobt_mod_blockcount(cur, 1); return 0; } @@ -133,6 +153,7 @@ __xfs_inobt_free_block( struct xfs_buf *bp, enum xfs_ag_resv_type resv) { + xfs_inobt_mod_blockcount(cur, -1); return xfs_free_extent(cur->bc_tp, XFS_DADDR_TO_FSB(cur->bc_mp, XFS_BUF_ADDR(bp)), 1, &XFS_RMAP_OINFO_INOBT, resv); From patchwork Mon Oct 26 23:33:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859023 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 15D3B1130 for ; Mon, 26 Oct 2020 23:33:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E202520809 for ; Mon, 26 Oct 2020 23:33:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="sMaEHlLG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406475AbgJZXda (ORCPT ); Mon, 26 Oct 2020 19:33:30 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:35930 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406472AbgJZXda (ORCPT ); Mon, 26 Oct 2020 19:33:30 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNP0Sh157925; Mon, 26 Oct 2020 23:33:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=a1NO4cng35BRNT/s5YlGOjzKpDkAssMR9dqnWzD/0I0=; b=sMaEHlLG76KRVzlkmaOSdnmwEYhMTERuQLc44P53XtPFYCbAD1ZW7YYIsKTv5z6TbpI3 kuTD1mcItbgxP0lQlzpZUvTQnUn2cVXLtMyiKqDniYROuHlE8cBAMt5ALrcqUd14nxw3 38OevCt90sqhhvyg96hWXKTBmuB/1FyFd5zcyAUli0gBR9vdKXAfUlud8jbyL7X2y4WS rDSscS9XgS2bNEbJaVX4MfDvEujuNGalzEgZa3CUstI90o7dnZTmRFtkEwew/7pdbJdQ umZ88pMBLFjKS1BAYDsbhpzOBvKnTYTdmmmTEOTqfnDCc2iO1GLqKu912R0e7KcGDnHS sg== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2120.oracle.com with ESMTP id 34cc7kq8g8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:33:27 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPxI6110453; Mon, 26 Oct 2020 23:33:26 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3020.oracle.com with ESMTP id 34cx5wfrd9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:26 +0000 Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 09QNXQU3007054; Mon, 26 Oct 2020 23:33:26 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:20 -0700 Subject: [PATCH 2/9] xfs: use the finobt block counts to speed up mount times From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:19 -0700 Message-ID: <160375519943.880355.16533167901394366067.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 adultscore=0 malwarescore=0 spamscore=0 clxscore=1015 mlxscore=0 suspectscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Source kernel commit: 1ac35f061af011442eeb731632f6daae991ecf7c Now that we have reliable finobt block counts, use them to speed up the per-AG block reservation calculations at mount time. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster Signed-off-by: Darrick J. Wong --- libxfs/xfs_ialloc_btree.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c index 3ed87d1c7251..1edf69ffa96b 100644 --- a/libxfs/xfs_ialloc_btree.c +++ b/libxfs/xfs_ialloc_btree.c @@ -693,6 +693,28 @@ xfs_inobt_count_blocks( return error; } +/* Read finobt block count from AGI header. */ +static int +xfs_finobt_read_blocks( + struct xfs_mount *mp, + struct xfs_trans *tp, + xfs_agnumber_t agno, + xfs_extlen_t *tree_blocks) +{ + struct xfs_buf *agbp; + struct xfs_agi *agi; + int error; + + error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); + if (error) + return error; + + agi = agbp->b_addr; + *tree_blocks = be32_to_cpu(agi->agi_fblocks); + xfs_trans_brelse(tp, agbp); + return 0; +} + /* * Figure out how many blocks to reserve and how many are used by this btree. */ @@ -710,7 +732,11 @@ xfs_finobt_calc_reserves( if (!xfs_sb_version_hasfinobt(&mp->m_sb)) return 0; - error = xfs_inobt_count_blocks(mp, tp, agno, XFS_BTNUM_FINO, &tree_len); + if (xfs_sb_version_hasinobtcounts(&mp->m_sb)) + error = xfs_finobt_read_blocks(mp, tp, agno, &tree_len); + else + error = xfs_inobt_count_blocks(mp, tp, agno, XFS_BTNUM_FINO, + &tree_len); if (error) return error; From patchwork Mon Oct 26 23:33:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859025 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 18C60921 for ; Mon, 26 Oct 2020 23:33:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F030520809 for ; Mon, 26 Oct 2020 23:33:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="gyqeOjc2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406479AbgJZXde (ORCPT ); Mon, 26 Oct 2020 19:33:34 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:54058 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406478AbgJZXde (ORCPT ); Mon, 26 Oct 2020 19:33:34 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNOqga164732; Mon, 26 Oct 2020 23:33:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=PwgcSs21vrztNq6eyIkDNDg67NlH36y4MkDdfOlGPCg=; b=gyqeOjc2JUyfXKarXzIYhRJzVSK6akCzSSNwLLj9h2dnDYQO6ez6Fcp/6pq3nNl3Onfw YeBs228wAGHXnItI5EhtKmKoQ2qUbPAazqnLa9/Pj9vXnx+sACkS0FHF6z7V7ZrobKIQ vEVnUatarNN3hsb0z+J90Aa/g/81HaWMgmJJzB/h4qsql6JVmGMkLthIZkNVJMfMGAB2 Iq2FKJ+pn3sz9zqWEVKGi7hPeap3jhd6dsraM2DZZmYIoAd3GYFJM+aBJNJlLxrX+BxG ugI20pKFUtJRFa/m3d7f2K56sZmsb3GmCiPKMAW2gHkqtUs729WoeMuBgLXlebrUH0y7 YA== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 34dgm3vumy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:33:27 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNQE2g032468; Mon, 26 Oct 2020 23:33:27 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 34cx1q2at5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:27 +0000 Received: from abhmp0007.oracle.com (abhmp0007.oracle.com [141.146.116.13]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 09QNXQ7Z028466; Mon, 26 Oct 2020 23:33:26 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:26 -0700 Subject: [PATCH 3/9] xfs: support inode btree blockcounts in online repair From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:25 -0700 Message-ID: <160375520560.880355.17375467362387234849.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 bulkscore=0 suspectscore=2 malwarescore=0 mlxlogscore=999 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxlogscore=999 suspectscore=2 clxscore=1015 mlxscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Source kernel commit: 11f744234f052922db4ed77dad35862b3d3164cf Add the necessary bits to the online repair code to support logging the inode btree counters when rebuilding the btrees, and to support fixing the counters when rebuilding the AGI. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster Signed-off-by: Darrick J. Wong --- libxfs/xfs_ialloc_btree.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c index 1edf69ffa96b..953417151820 100644 --- a/libxfs/xfs_ialloc_btree.c +++ b/libxfs/xfs_ialloc_btree.c @@ -500,19 +500,29 @@ xfs_inobt_commit_staged_btree( { struct xfs_agi *agi = agbp->b_addr; struct xbtree_afakeroot *afake = cur->bc_ag.afake; + int fields; ASSERT(cur->bc_flags & XFS_BTREE_STAGING); if (cur->bc_btnum == XFS_BTNUM_INO) { + fields = XFS_AGI_ROOT | XFS_AGI_LEVEL; agi->agi_root = cpu_to_be32(afake->af_root); agi->agi_level = cpu_to_be32(afake->af_levels); - xfs_ialloc_log_agi(tp, agbp, XFS_AGI_ROOT | XFS_AGI_LEVEL); + if (xfs_sb_version_hasinobtcounts(&cur->bc_mp->m_sb)) { + agi->agi_iblocks = cpu_to_be32(afake->af_blocks); + fields |= XFS_AGI_IBLOCKS; + } + xfs_ialloc_log_agi(tp, agbp, fields); xfs_btree_commit_afakeroot(cur, tp, agbp, &xfs_inobt_ops); } else { + fields = XFS_AGI_FREE_ROOT | XFS_AGI_FREE_LEVEL; agi->agi_free_root = cpu_to_be32(afake->af_root); agi->agi_free_level = cpu_to_be32(afake->af_levels); - xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREE_ROOT | - XFS_AGI_FREE_LEVEL); + if (xfs_sb_version_hasinobtcounts(&cur->bc_mp->m_sb)) { + agi->agi_fblocks = cpu_to_be32(afake->af_blocks); + fields |= XFS_AGI_IBLOCKS; + } + xfs_ialloc_log_agi(tp, agbp, fields); xfs_btree_commit_afakeroot(cur, tp, agbp, &xfs_finobt_ops); } } From patchwork Mon Oct 26 23:33:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859071 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 27909921 for ; Mon, 26 Oct 2020 23:35:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0E74220872 for ; Mon, 26 Oct 2020 23:35:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="L2x69u4I" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2407090AbgJZXfo (ORCPT ); Mon, 26 Oct 2020 19:35:44 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:37348 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406419AbgJZXfn (ORCPT ); Mon, 26 Oct 2020 19:35:43 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPLiW158051; Mon, 26 Oct 2020 23:35:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=urbrMZchH55rMFt5lBaVBoMVYWpITr0s0Jkc9XBlQ2g=; b=L2x69u4IaIXPkysCPhKwR601VLYHCowOTWLROtrDm80vAnrVXQkC3A1u6dNCZTQUFEW1 aefSJdTKYcVBlf+bwGoZbFa3WrZJqVMre16Yef2SYinTaSS2+KV4CXrcaSW9MVu6s9J0 ty5aOHJb84Ev7PtUHFg7xOgJoFOVTGv6rSvKMSpYfM+q4KQm/zWFYf0oHGR2lDV8BlEx WlK3mDTVC7E2XLuLhJzhiz1IiFRoFzdqRYTr3S50EsYA77n+IXsep4LqcOT6W9LkZFcZ 70soE9n7XWDP6yfixZMmM2dgdGQoXhc9LlmSlGgzOyV377IlwyfI2jklnQIfCqpHScar Iw== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2120.oracle.com with ESMTP id 34cc7kq8mp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:35:40 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNQOrd058479; Mon, 26 Oct 2020 23:33:40 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 34cwukr83r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:40 +0000 Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 09QNXdfo007141; Mon, 26 Oct 2020 23:33:39 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:32 -0700 Subject: [PATCH 4/9] xfs_db: support displaying inode btree block counts in AGI header From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:31 -0700 Message-ID: <160375521177.880355.5574700800853381205.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=2 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 adultscore=0 malwarescore=0 spamscore=0 clxscore=1015 mlxscore=0 suspectscore=2 priorityscore=1501 impostorscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Fix up xfs_db to support displaying the btree block counts. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster --- db/agi.c | 2 ++ db/sb.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/db/agi.c b/db/agi.c index bf21b2d40f04..cfb4f7b8528a 100644 --- a/db/agi.c +++ b/db/agi.c @@ -48,6 +48,8 @@ const field_t agi_flds[] = { { "lsn", FLDT_UINT64X, OI(OFF(lsn)), C1, 0, TYP_NONE }, { "free_root", FLDT_AGBLOCK, OI(OFF(free_root)), C1, 0, TYP_FINOBT }, { "free_level", FLDT_UINT32D, OI(OFF(free_level)), C1, 0, TYP_NONE }, + { "ino_blocks", FLDT_UINT32D, OI(OFF(iblocks)), C1, 0, TYP_NONE }, + { "fino_blocks", FLDT_UINT32D, OI(OFF(fblocks)), C1, 0, TYP_NONE }, { NULL } }; diff --git a/db/sb.c b/db/sb.c index 8a303422b427..e3b1fe0b2e6e 100644 --- a/db/sb.c +++ b/db/sb.c @@ -687,6 +687,8 @@ version_string( strcat(s, ",RMAPBT"); if (xfs_sb_version_hasreflink(sbp)) strcat(s, ",REFLINK"); + if (xfs_sb_version_hasinobtcounts(sbp)) + strcat(s, ",INOBTCNT"); return s; } From patchwork Mon Oct 26 23:33:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859073 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4C31514B7 for ; Mon, 26 Oct 2020 23:35:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 31E2D20882 for ; Mon, 26 Oct 2020 23:35:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="UJpLc5o0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406419AbgJZXfo (ORCPT ); Mon, 26 Oct 2020 19:35:44 -0400 Received: from aserp2130.oracle.com ([141.146.126.79]:43922 "EHLO aserp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2407035AbgJZXfn (ORCPT ); Mon, 26 Oct 2020 19:35:43 -0400 Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1]) by aserp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNP91i177061; Mon, 26 Oct 2020 23:35:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=YK+0EidTrv5tI5/lMwL41iatm0NDYdjM+gncL6lk8x0=; b=UJpLc5o0ufYVLM5cfDApC3rn2gi1cTuHCkgCi4OFKxNeKINK4yWGvJL9x1i46RyKqPUW g2FxCNuDQb3X1k2+lfRFxjFOSEt/bVfH4mibf0ELuULQ0Rhkx/VQJtmgAXfs/r+6PLTN LDCYYVvi5F9LJcKJeJziqjpnnL7oj328xN3pT6/al2YuOsiumLjiwjGkXrPJxXmGoiHo siHXtm+ElSw649tdE21rO9AY5Iw3JHBmZaG8b++e5Y98mGWezSzbkItOgLCdXMw/VaUO xRkrGGsOHkAEjIyDfnCOMOee/A/kmf3rgBblryuznJdLnLoU2D43N+HZfHCyPXOEns/6 Zw== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2130.oracle.com with ESMTP id 34c9saqd5x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:35:40 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNQNJH058412; Mon, 26 Oct 2020 23:33:40 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 34cwukr83q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:40 +0000 Received: from abhmp0002.oracle.com (abhmp0002.oracle.com [141.146.116.8]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 09QNXdhC007137; Mon, 26 Oct 2020 23:33:39 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:38 -0700 Subject: [PATCH 5/9] xfs_db: add inobtcnt upgrade path From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:38 -0700 Message-ID: <160375521801.880355.2055596956122419535.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=2 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 impostorscore=0 mlxlogscore=999 malwarescore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 spamscore=0 phishscore=0 clxscore=1015 suspectscore=2 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Enable users to upgrade their filesystems to support inode btree block counters. Signed-off-by: Darrick J. Wong --- db/sb.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++- db/xfs_admin.sh | 4 ++- man/man8/xfs_admin.8 | 16 +++++++++++ 3 files changed, 94 insertions(+), 2 deletions(-) diff --git a/db/sb.c b/db/sb.c index e3b1fe0b2e6e..b1033e5ef7f0 100644 --- a/db/sb.c +++ b/db/sb.c @@ -620,6 +620,44 @@ do_version(xfs_agnumber_t agno, uint16_t version, uint32_t features) return 1; } +/* Add new V5 features to the filesystem. */ +static bool +add_v5_features( + struct xfs_mount *mp, + uint32_t compat, + uint32_t ro_compat, + uint32_t incompat, + uint32_t log_incompat) +{ + struct xfs_sb tsb; + xfs_agnumber_t agno; + + dbprintf(_("Upgrading V5 filesystem\n")); + for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) { + if (!get_sb(agno, &tsb)) + break; + + tsb.sb_features_compat |= compat; + tsb.sb_features_ro_compat |= ro_compat; + tsb.sb_features_incompat |= incompat; + tsb.sb_features_log_incompat |= log_incompat; + libxfs_sb_to_disk(iocur_top->data, &tsb); + write_cur(); + } + + if (agno != mp->m_sb.sb_agcount) { + dbprintf( +_("Failed to upgrade V5 filesystem AG %d\n"), agno); + return false; + } + + mp->m_sb.sb_features_compat |= compat; + mp->m_sb.sb_features_ro_compat |= ro_compat; + mp->m_sb.sb_features_incompat |= incompat; + mp->m_sb.sb_features_log_incompat |= log_incompat; + return true; +} + static char * version_string( xfs_sb_t *sbp) @@ -705,6 +743,10 @@ version_f( { uint16_t version = 0; uint32_t features = 0; + uint32_t upgrade_compat = 0; + uint32_t upgrade_ro_compat = 0; + uint32_t upgrade_incompat = 0; + uint32_t upgrade_log_incompat = 0; xfs_agnumber_t ag; if (argc == 2) { /* WRITE VERSION */ @@ -716,7 +758,28 @@ version_f( } /* Logic here derived from the IRIX xfs_chver(1M) script. */ - if (!strcasecmp(argv[1], "extflg")) { + if (!strcasecmp(argv[1], "inobtcount")) { + if (xfs_sb_version_hasinobtcounts(&mp->m_sb)) { + dbprintf( + _("inode btree counter feature is already enabled\n")); + exitcode = 1; + return 1; + } + if (!xfs_sb_version_hasfinobt(&mp->m_sb)) { + dbprintf( + _("inode btree counter feature cannot be enabled on filesystems lacking free inode btrees\n")); + exitcode = 1; + return 1; + } + if (!xfs_sb_version_hascrc(&mp->m_sb)) { + dbprintf( + _("inode btree counter feature cannot be enabled on pre-V5 filesystems\n")); + exitcode = 1; + return 1; + } + + upgrade_ro_compat |= XFS_SB_FEAT_RO_COMPAT_INOBTCNT; + } else if (!strcasecmp(argv[1], "extflg")) { switch (XFS_SB_VERSION_NUM(&mp->m_sb)) { case XFS_SB_VERSION_1: version = 0x0004 | XFS_SB_VERSION_EXTFLGBIT; @@ -807,6 +870,17 @@ version_f( mp->m_sb.sb_versionnum = version; mp->m_sb.sb_features2 = features; } + + if (upgrade_compat || upgrade_ro_compat || upgrade_incompat || + upgrade_log_incompat) { + if (!add_v5_features(mp, upgrade_compat, + upgrade_ro_compat, + upgrade_incompat, + upgrade_log_incompat)) { + exitcode = 1; + return 1; + } + } } if (argc == 3) { /* VERSIONNUM + FEATURES2 */ diff --git a/db/xfs_admin.sh b/db/xfs_admin.sh index bd325da2f776..0f0c8d18d6cb 100755 --- a/db/xfs_admin.sh +++ b/db/xfs_admin.sh @@ -9,7 +9,7 @@ DB_OPTS="" REPAIR_OPTS="" USAGE="Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device [logdev]" -while getopts "efjlpuc:L:U:V" c +while getopts "efjlpuc:L:O:U:V" c do case $c in c) REPAIR_OPTS=$REPAIR_OPTS" -c lazycount="$OPTARG;; @@ -19,6 +19,8 @@ do l) DB_OPTS=$DB_OPTS" -r -c label";; L) DB_OPTS=$DB_OPTS" -c 'label "$OPTARG"'";; p) DB_OPTS=$DB_OPTS" -c 'version projid32bit'";; + O) DB_OPTS=$DB_OPTS" -c 'version "$OPTARG"'"; + REPAIR_OPTS="$REPAIR_OPTS ";; u) DB_OPTS=$DB_OPTS" -r -c uuid";; U) DB_OPTS=$DB_OPTS" -c 'uuid "$OPTARG"'";; V) xfs_db -p xfs_admin -V diff --git a/man/man8/xfs_admin.8 b/man/man8/xfs_admin.8 index 8afc873fb50a..65ca6afc1e12 100644 --- a/man/man8/xfs_admin.8 +++ b/man/man8/xfs_admin.8 @@ -6,6 +6,8 @@ xfs_admin \- change parameters of an XFS filesystem [ .B \-eflpu ] [ +.BR \-O " feature" +] [ .BR "\-c 0" | 1 ] [ .B \-L @@ -103,6 +105,20 @@ The filesystem label can be cleared using the special "\c " value for .IR label . .TP +.BI \-O " feature" +Add a new feature to the filesystem. +Only one feature can be specified at a time. +Features are as follows: +.RS 0.7i +.TP +.B inobtcount +Upgrade the filesystem to support the inode btree counters feature. +This reduces mount time by caching the size of the inode btrees in the +allocation group metadata. +Once enabled, the filesystem will not be writable by older kernels. +The filesystem cannot be downgraded after this feature is enabled. +.RE +.TP .BI \-U " uuid" Set the UUID of the filesystem to .IR uuid . From patchwork Mon Oct 26 23:33:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859075 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8ACD41130 for ; Mon, 26 Oct 2020 23:35:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7191F20809 for ; Mon, 26 Oct 2020 23:35:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="ALQDQpJ0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2407105AbgJZXfu (ORCPT ); Mon, 26 Oct 2020 19:35:50 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:37436 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2407099AbgJZXfu (ORCPT ); Mon, 26 Oct 2020 19:35:50 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPxqL158474; Mon, 26 Oct 2020 23:35:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=tj6HR0Rxv+LVKDeVRzWqtypgOAubfMlVVk9Qyui2Fzw=; b=ALQDQpJ081hFUEq4hkON4Lo9VIKn0d2qk1/nOlNNqC8exvRqOMqPb3HyPmOAQaQWVMwW OMb59Qow8UvK1cpKqCY2XnIPtlPG7sjOeMufNU0vAGdYBccnmnG6vIoAOU115Y59Y/40 ldCeefH094tMKSsf16p8zXLLzBZFa1FnEc5Kf+xfAZHXPL1iFrLC7QS2Te8Jj+lpktqg i7Vg6hUPQ3v2nmkOmpReQnZTJswqDyRXGMlp7eFUf6ZL+NpkF5o5Wa3H7Hk5nTRnqs7Z 9F5vY7qnuHIdjE/C+7I4aVWMEKD+1utFpIy0WE6XHqFhVQJmMe6xvRAlHzBPmybwDeYM Eg== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2120.oracle.com with ESMTP id 34cc7kq8mw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:35:47 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPxuZ110524; Mon, 26 Oct 2020 23:33:47 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserp3020.oracle.com with ESMTP id 34cx5wfrkm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:46 +0000 Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 09QNXjtL028649; Mon, 26 Oct 2020 23:33:45 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:45 -0700 Subject: [PATCH 6/9] xfs_repair: check inode btree block counters in AGI From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:44 -0700 Message-ID: <160375522427.880355.15446960142376313542.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 mlxlogscore=999 suspectscore=2 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 adultscore=0 malwarescore=0 spamscore=0 clxscore=1015 mlxscore=0 suspectscore=2 priorityscore=1501 impostorscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Make sure that both inode btree block counters in the AGI are correct. Signed-off-by: Darrick J. Wong --- repair/scan.c | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/repair/scan.c b/repair/scan.c index 2a38ae5197c6..c826af7dee86 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -1948,6 +1948,12 @@ _("invalid inode count, inode chunk %d/%u, count %d ninodes %d\n"), return suspect; } +struct ino_priv { + struct aghdr_cnts *agcnts; + uint32_t ino_blocks; + uint32_t fino_blocks; +}; + /* * this one walks the inode btrees sucking the info there into * the incore avl tree. We try and rescue corrupted btree records @@ -1976,7 +1982,8 @@ scan_inobt( void *priv, const struct xfs_buf_ops *ops) { - struct aghdr_cnts *agcnts = priv; + struct ino_priv *ipriv = priv; + struct aghdr_cnts *agcnts = ipriv->agcnts; char *name; xfs_agino_t lastino = 0; int i; @@ -2022,6 +2029,17 @@ scan_inobt( return; } + switch (magic) { + case XFS_FIBT_MAGIC: + case XFS_FIBT_CRC_MAGIC: + ipriv->fino_blocks++; + break; + case XFS_IBT_MAGIC: + case XFS_IBT_CRC_MAGIC: + ipriv->ino_blocks++; + break; + } + /* * check for btree blocks multiply claimed, any unknown/free state * is ok in the bitmap block. @@ -2363,6 +2381,9 @@ validate_agi( xfs_agnumber_t agno, struct aghdr_cnts *agcnts) { + struct ino_priv priv = { + .agcnts = agcnts, + }; xfs_agblock_t bno; int i; uint32_t magic; @@ -2372,7 +2393,7 @@ validate_agi( magic = xfs_sb_version_hascrc(&mp->m_sb) ? XFS_IBT_CRC_MAGIC : XFS_IBT_MAGIC; scan_sbtree(bno, be32_to_cpu(agi->agi_level), - agno, 0, scan_inobt, 1, magic, agcnts, + agno, 0, scan_inobt, 1, magic, &priv, &xfs_inobt_buf_ops); } else { do_warn(_("bad agbno %u for inobt root, agno %d\n"), @@ -2385,7 +2406,7 @@ validate_agi( magic = xfs_sb_version_hascrc(&mp->m_sb) ? XFS_FIBT_CRC_MAGIC : XFS_FIBT_MAGIC; scan_sbtree(bno, be32_to_cpu(agi->agi_free_level), - agno, 0, scan_inobt, 1, magic, agcnts, + agno, 0, scan_inobt, 1, magic, &priv, &xfs_finobt_buf_ops); } else { do_warn(_("bad agbno %u for finobt root, agno %d\n"), @@ -2393,6 +2414,17 @@ validate_agi( } } + if (xfs_sb_version_hasinobtcounts(&mp->m_sb)) { + if (be32_to_cpu(agi->agi_iblocks) != priv.ino_blocks) + do_warn(_("bad inobt block count %u, saw %u\n"), + priv.ino_blocks, + be32_to_cpu(agi->agi_iblocks)); + if (be32_to_cpu(agi->agi_fblocks) != priv.fino_blocks) + do_warn(_("bad finobt block count %u, saw %u\n"), + priv.fino_blocks, + be32_to_cpu(agi->agi_fblocks)); + } + if (be32_to_cpu(agi->agi_count) != agcnts->agicount) { do_warn(_("agi_count %u, counted %u in ag %u\n"), be32_to_cpu(agi->agi_count), agcnts->agicount, agno); From patchwork Mon Oct 26 23:33:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859033 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5EED51130 for ; Mon, 26 Oct 2020 23:33:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 424EB20872 for ; Mon, 26 Oct 2020 23:33:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Sx0uV4yB" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406506AbgJZXd5 (ORCPT ); Mon, 26 Oct 2020 19:33:57 -0400 Received: from aserp2130.oracle.com ([141.146.126.79]:42580 "EHLO aserp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406482AbgJZXd4 (ORCPT ); Mon, 26 Oct 2020 19:33:56 -0400 Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1]) by aserp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPOPu177120; Mon, 26 Oct 2020 23:33:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=/lDMMuf19pkPwalcpYnbJOLa9uMieT610+hZqZXat8k=; b=Sx0uV4yB9zBby72Atq8Fyc6If/Mbm23x16eEvxrBDYMdr6W7V5JJpzHK4r2mkeF/Bb8T lZveizZyogjVJe8byghm+bZZHPpiVsmqhfT/zIzo1Bh2Q8hH7XQdTk7Tz15ZoOMwaOTK 1g4UUQ3OH7RLA3PYczlosg0YLae6vF+MOduqiTjqX8MygokbQzD4zRLKr2lm393SqfzA umIqStVzKEHOJrCHCk40pdfx9Os0SNfgyy4EO3X9QGNIqIT0OSL1ZDbOLb6CT7Dw7Yx8 Dw6ha41xievFDvsZZBHuoLL32LwnJQ2FxQ/WmsW+xXzO2xMxCSFQpkj7gW8uyMADzrZV 0w== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by aserp2130.oracle.com with ESMTP id 34c9saqd0r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:33:53 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPxGd110443; Mon, 26 Oct 2020 23:33:53 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserp3020.oracle.com with ESMTP id 34cx5wfrms-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:53 +0000 Received: from abhmp0003.oracle.com (abhmp0003.oracle.com [141.146.116.9]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 09QNXpqA005415; Mon, 26 Oct 2020 23:33:52 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:51 -0700 Subject: [PATCH 7/9] xfs_repair: regenerate inode btree block counters in AGI From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:50 -0700 Message-ID: <160375523066.880355.14411170857056218197.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 malwarescore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 impostorscore=0 mlxlogscore=999 malwarescore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 spamscore=0 phishscore=0 clxscore=1015 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Reset both inode btree block counters in the AGI when rebuilding the metadata indexes. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster --- repair/phase5.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/repair/phase5.c b/repair/phase5.c index 446f7ec0a1db..b97d23809f3c 100644 --- a/repair/phase5.c +++ b/repair/phase5.c @@ -172,6 +172,11 @@ build_agi( cpu_to_be32(btr_fino->newbt.afake.af_levels); } + if (xfs_sb_version_hasinobtcounts(&mp->m_sb)) { + agi->agi_iblocks = cpu_to_be32(btr_ino->newbt.afake.af_blocks); + agi->agi_fblocks = cpu_to_be32(btr_fino->newbt.afake.af_blocks); + } + libxfs_buf_mark_dirty(agi_buf); libxfs_buf_relse(agi_buf); } From patchwork Mon Oct 26 23:33:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859035 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B78AE921 for ; Mon, 26 Oct 2020 23:34:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9B83D20872 for ; Mon, 26 Oct 2020 23:34:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="nl9E3pNM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406511AbgJZXeC (ORCPT ); Mon, 26 Oct 2020 19:34:02 -0400 Received: from aserp2130.oracle.com ([141.146.126.79]:42676 "EHLO aserp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406509AbgJZXeC (ORCPT ); Mon, 26 Oct 2020 19:34:02 -0400 Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1]) by aserp2130.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPZ2x177137; Mon, 26 Oct 2020 23:33:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=7zwIo757IjhrqhUJIVccqVMDhQeq6sRMMaG00yXrz1I=; b=nl9E3pNMI5lsLTRRyKLgZaY73qD+trT67/gloYf1MTb/mZQ0/LGtLC+qCy4d3HMK1GcX bfAl21pFIm5jv/IA0knKXS+s8BqQ4qf0KFFmApNDrql5JKug8r7Hd0jImrCmOJcuL1eY 1SJKEYgM79XE/i9JAzZZPo18Xg2gb9Sml1DmEfjoKgNF/EP7e7rz4KL+aBPNeNVumqh5 YANb7OuViQRIemI9V6xvvkRIrYG1SfTOoTzGL3sBAwZ1Hfs5/rMX3M3PXvLuyUS7auoi vdEDzAiQbRdFUOv3d0n0d73qXlZjgRqrFXF3+Xbb7/9SEbEwlTCN6/OPJY0TnsmCDnbV 7Q== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by aserp2130.oracle.com with ESMTP id 34c9saqd0y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:33:58 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNQNJI058412; Mon, 26 Oct 2020 23:33:58 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserp3030.oracle.com with ESMTP id 34cwukr87m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:33:58 +0000 Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 09QNXw5B007261; Mon, 26 Oct 2020 23:33:58 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:33:57 -0700 Subject: [PATCH 8/9] mkfs: enable the inode btree counter feature From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:33:56 -0700 Message-ID: <160375523682.880355.16796358046529188083.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 impostorscore=0 mlxlogscore=999 malwarescore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 spamscore=0 phishscore=0 clxscore=1015 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Teach mkfs how to enable the inode btree counter feature. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster --- man/man8/mkfs.xfs.8 | 15 +++++++++++++++ mkfs/xfs_mkfs.c | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8 index 0a7858748457..1a6a5f93f0ea 100644 --- a/man/man8/mkfs.xfs.8 +++ b/man/man8/mkfs.xfs.8 @@ -184,6 +184,21 @@ option set. When the option .B \-m crc=0 is used, the free inode btree feature is not supported and is disabled. .TP +.BI inobtcount= value +This option causes the filesystem to record the number of blocks used by +the inode btree and the free inode btree. +This can be used to reduce mount times when the free inode btree is enabled. +.IP +By default, +.B mkfs.xfs +will not enable this option. +This feature is only available for filesystems created with the (default) +.B \-m finobt=1 +option set. +When the option +.B \-m finobt=0 +is used, the inode btree counter feature is not supported and is disabled. +.TP .BI uuid= value Use the given value as the filesystem UUID for the newly created filesystem. The default is to generate a random UUID. diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 908d520df909..23e3077e0174 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -119,6 +119,7 @@ enum { M_UUID, M_RMAPBT, M_REFLINK, + M_INOBTCNT, M_MAX_OPTS, }; @@ -660,6 +661,7 @@ static struct opt_params mopts = { [M_UUID] = "uuid", [M_RMAPBT] = "rmapbt", [M_REFLINK] = "reflink", + [M_INOBTCNT] = "inobtcount", }, .subopt_params = { { .index = M_CRC, @@ -690,6 +692,12 @@ static struct opt_params mopts = { .maxval = 1, .defaultval = 1, }, + { .index = M_INOBTCNT, + .conflicts = { { NULL, LAST_CONFLICT } }, + .minval = 0, + .maxval = 1, + .defaultval = 1, + }, }, }; @@ -740,6 +748,7 @@ struct sb_feat_args { bool spinodes; /* XFS_SB_FEAT_INCOMPAT_SPINODES */ bool rmapbt; /* XFS_SB_FEAT_RO_COMPAT_RMAPBT */ bool reflink; /* XFS_SB_FEAT_RO_COMPAT_REFLINK */ + bool inobtcnt; /* XFS_SB_FEAT_RO_COMPAT_INOBTCNT */ bool nodalign; bool nortalign; }; @@ -862,7 +871,8 @@ usage( void ) { fprintf(stderr, _("Usage: %s\n\ /* blocksize */ [-b size=num]\n\ -/* metadata */ [-m crc=0|1,finobt=0|1,uuid=xxx,rmapbt=0|1,reflink=0|1]\n\ +/* metadata */ [-m crc=0|1,finobt=0|1,uuid=xxx,rmapbt=0|1,reflink=0|1,\n\ + inobtcnt=0|1]\n\ /* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,\n\ (sunit=value,swidth=value|su=num,sw=num|noalign),\n\ sectsize=num\n\ @@ -1565,6 +1575,9 @@ meta_opts_parser( case M_REFLINK: cli->sb_feat.reflink = getnum(value, opts, subopt); break; + case M_INOBTCNT: + cli->sb_feat.inobtcnt = getnum(value, opts, subopt); + break; default: return -EINVAL; } @@ -1988,6 +2001,22 @@ _("reflink not supported without CRC support\n")); usage(); } cli->sb_feat.reflink = false; + + if (cli->sb_feat.inobtcnt && cli_opt_set(&mopts, M_INOBTCNT)) { + fprintf(stderr, +_("inode btree counters not supported without CRC support\n")); + usage(); + } + cli->sb_feat.inobtcnt = false; + } + + if (!cli->sb_feat.finobt) { + if (cli->sb_feat.inobtcnt && cli_opt_set(&mopts, M_INOBTCNT)) { + fprintf(stderr, +_("inode btree counters not supported without finobt support\n")); + usage(); + } + cli->sb_feat.inobtcnt = false; } if ((cli->fsx.fsx_xflags & FS_XFLAG_COWEXTSIZE) && @@ -2955,6 +2984,8 @@ sb_set_features( sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_RMAPBT; if (fp->reflink) sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_REFLINK; + if (fp->inobtcnt) + sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_INOBTCNT; /* * Sparse inode chunk support has two main inode alignment requirements. @@ -3617,6 +3648,7 @@ main( .spinodes = true, .rmapbt = false, .reflink = true, + .inobtcnt = false, .parent_pointers = false, .nodalign = false, .nortalign = false, From patchwork Mon Oct 26 23:34:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 11859087 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B9B0B921 for ; Mon, 26 Oct 2020 23:36:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 944AC20809 for ; Mon, 26 Oct 2020 23:36:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="CD8e0NOY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2407135AbgJZXgK (ORCPT ); Mon, 26 Oct 2020 19:36:10 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:55714 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2407121AbgJZXgK (ORCPT ); Mon, 26 Oct 2020 19:36:10 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNPIcd164850; Mon, 26 Oct 2020 23:36:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : from : to : cc : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding; s=corp-2020-01-29; bh=KhXQBoE2w1vKGR/d5aZsMXWN3rcgmC+N4pG8nBh/RvM=; b=CD8e0NOY2vqhex15kN8vpWCzmSOTxGa0qi/pNhBkbx2VqcbYclpSgZCqCm/H4hBHnOx4 10Av1zlLTfFV1iEZ+B2tmVrfrfV2DB3WO3XUtpCICd1cCui4uxnR7cOoDZRbYXi5DzhH PzUcpNFCKawz3FSSU/fsGD6+OTz3fsqStdt4WKUvaJFL8MuRvmrOWzZvcaDQkl6tviXQ ESl6GYjRZU9FC4kXlhkwx/7zg8Ftcn9BEW8405xgqYRnPpZeEbV+CYAeXrbfV3Tv30t+ XddcLeqf9DemQuU7G//oQ0Chf/wH9pFSNaIcP4x3ayi7LZzh0IuBkL55u0apm4dDwaEK Dg== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2120.oracle.com with ESMTP id 34dgm3vutf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 26 Oct 2020 23:36:06 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 09QNQNUT058408; Mon, 26 Oct 2020 23:34:05 GMT Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by aserp3030.oracle.com with ESMTP id 34cwukr89g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Oct 2020 23:34:05 +0000 Received: from abhmp0018.oracle.com (abhmp0018.oracle.com [141.146.116.24]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id 09QNY4rT005459; Mon, 26 Oct 2020 23:34:04 GMT Received: from localhost (/10.159.145.170) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Oct 2020 16:34:03 -0700 Subject: [PATCH 9/9] xfs: enable new inode btree counters feature From: "Darrick J. Wong" To: sandeen@sandeen.net, darrick.wong@oracle.com, bfoster@redhat.com Cc: linux-xfs@vger.kernel.org Date: Mon, 26 Oct 2020 16:34:03 -0700 Message-ID: <160375524304.880355.8724068973017769929.stgit@magnolia> In-Reply-To: <160375518573.880355.12052697509237086329.stgit@magnolia> References: <160375518573.880355.12052697509237086329.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 X-Proofpoint-Virus-Version: vendor=nai engine=6000 definitions=9786 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxlogscore=999 suspectscore=0 clxscore=1015 mlxscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2010260153 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Source kernel commit: b896a39faa5a2f97dadfb347928466afb12cc63a Enable the new inode btree counters feature. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster Signed-off-by: Darrick J. Wong --- libxfs/xfs_format.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libxfs/xfs_format.h b/libxfs/xfs_format.h index 01544f9d5a57..5a183b6658e6 100644 --- a/libxfs/xfs_format.h +++ b/libxfs/xfs_format.h @@ -453,7 +453,8 @@ xfs_sb_has_compat_feature( #define XFS_SB_FEAT_RO_COMPAT_ALL \ (XFS_SB_FEAT_RO_COMPAT_FINOBT | \ XFS_SB_FEAT_RO_COMPAT_RMAPBT | \ - XFS_SB_FEAT_RO_COMPAT_REFLINK) + XFS_SB_FEAT_RO_COMPAT_REFLINK| \ + XFS_SB_FEAT_RO_COMPAT_INOBTCNT) #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL static inline bool xfs_sb_has_ro_compat_feature(