From patchwork Wed May 25 05:36:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chandan Babu R X-Patchwork-Id: 12860705 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63630C433FE for ; Wed, 25 May 2022 05:37:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241230AbiEYFhG (ORCPT ); Wed, 25 May 2022 01:37:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244010AbiEYFhE (ORCPT ); Wed, 25 May 2022 01:37:04 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 655F62B1A0 for ; Tue, 24 May 2022 22:37:03 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24ONo5sd018277; Wed, 25 May 2022 05:36:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=VsIW5PY4qMQZU2XhUEhn+gwqF1TmKOdnwPzfVw70PQQ=; b=NxOBD2mb2HtKuFJ3DbCNSrd4cQIJwGHi1YBbYe+biy/QE6sV4gIuj5pnY3QwLOnx/+PX DM2sRl3mz1KN/ZSASeFKE1abn5Za8nVR+ji8T+aq1Gt4/ZQuMO4BzVKC9cxnjx+NdkT5 gKSEAj16+V8b54m3ycwYEPthqabbFFgA9h5viQvGSqGPYDdsEDFH8eBsOvYpSsN+0ut/ wqSaXf/a1ypFVyvRifE4/kZxgT9hGhMAb8sDgX48dIdsttzB48Uk5ucKdag61+2Yrvgf EuH/aoFk3zhsk00Jno/rdrECxP6Jl7YEpiG2iJRBDHixR3TEmxKY2FWee+U1fO52wfl8 Hw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g93tas47g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:36:56 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24P5a5sS034931; Wed, 25 May 2022 05:36:56 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2045.outbound.protection.outlook.com [104.47.66.45]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g93wux642-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:36:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yg3rNWwKMbz5tRmaHJINXwSaUmyfAE7kCAbrFa/gS6JPoZksGjkk13dhwzuSYgx/eL6HTgnOnA/ApvsJzUaZHpJW/INePy9l/L670meSYUfQSTgvyP4rInBdzvJCNftKg8W4rJvKnz/V/6f79tg11n3SiH+6OjSGHwTHlSKA0IXAct71MmarglLVNsRJh63thCDXN/E64/UMjARbnUGOGECZZhCgSTkVfiprX95RMB5EXByYhlSElKAkamDM8LVaji8C7pyV7WeJQefUWWuDrmKg5wAshZiGtQ+OlH4kXVZG6JMse++MmGCP7h5DKDO0TBRroThxeAH7lWIaVGLQUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VsIW5PY4qMQZU2XhUEhn+gwqF1TmKOdnwPzfVw70PQQ=; b=Z243o3IhrwFviF1Q60aji8gAjleLNMmdPGFzPyK6d9wcd6ROSh9xgwuBmdSImO7dg7tle2po4SycWeitkYLQyByHTJvGqP4F0f0375E9vStNfGcjxo8IND4SQzOG1P/cKnX1YSrDtV/BMAoPCYlZZJvoHWdPluXr6Lhsxzpap74EaMTL1XiK9HmHfFBslTA9dsOCJvV5FMQ08815PhdcHaOgGfYJr939ZTR/M48KnRU2aoGvoCbl5KWtuPSd4DqwfUF9/QNp/wd/n6qk6ZVM4WxraPLFDvRtsUNCH7B+WXSCoIFLGmK/XUeG30UXFCRYWrfWHD9la6EK9GFXvzftWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VsIW5PY4qMQZU2XhUEhn+gwqF1TmKOdnwPzfVw70PQQ=; b=puaOAhOmb1JZ0rs/y9Glj28FwKBYQ+HIrrsGfcv2oS7Yc04mdJY41tbOzs7HVv194uGwnVy2hEnQrdxmpbi9Gxe+t9cSgVU7A3OyqHP4SZ5KKdlGbI0RXdewocO3OFmRuLW48/Bq2YGEk4QztHozZ6qDM4UT9RClMA8RV6dYUNg= Received: from SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) by BLAPR10MB4817.namprd10.prod.outlook.com (2603:10b6:208:321::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 25 May 2022 05:36:54 +0000 Received: from SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62]) by SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62%5]) with mapi id 15.20.5273.023; Wed, 25 May 2022 05:36:54 +0000 From: Chandan Babu R To: linux-xfs@vger.kernel.org Cc: "Darrick J. Wong" , david@fromorbit.com, Chandan Babu R Subject: [PATCH 1/5] xfs_repair: check filesystem geometry before allowing upgrades Date: Wed, 25 May 2022 11:06:26 +0530 Message-Id: <20220525053630.734938-2-chandan.babu@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220525053630.734938-1-chandan.babu@oracle.com> References: <20220525053630.734938-1-chandan.babu@oracle.com> X-ClientProxiedBy: TY2PR06CA0047.apcprd06.prod.outlook.com (2603:1096:404:2e::35) To SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c79376fc-947b-4f3b-9156-08da3e109358 X-MS-TrafficTypeDiagnostic: BLAPR10MB4817:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VOVURN2IanvxTdfHReJJIBQpH7zejapcC9IDo7dEFzx+FslosJPlpB7ciSrWksoQ0PxvHVP9lgNGJ27gRhFi4xXt4PWCMEVh8YCKUtX3SSLXnD0rusXhBDFdf35XruvaoyFtUqS/kLTtjHGzU3ECudfAbYRsAlHYs0W6Q8jK3sc/OvNEdQ35jdCu2KshHjiOjCGNsL2QvbBwHJFzwIy7YBLK37wCqL792suw+jQoNniKkowBs1Pxkwbgfi+eZFHaVb+0gsfTGZIJlbx2RaDf499QPPh0ngHh7ojlIa8P0c8p5I9OZaIV0QzzNUVZpCkM8/Z2Gb3nQ46ijSmm6pU13dqjNjKAP+1HwQlVmm9rQ+IjscvbouaWjVuFPJ3hYhYLyguGd3+NiKeZf8Q4YPmwg4yq9RhEeDDoPmdtprolrfqxAWHsUq3UAjh/aO9atC+LVZ86bPC5oSaJhSK41GiGGstpqWWUEtViAzOq2KjEWNUSYh2ka0+Wft7pB4IZ7I12Xspy83fN9/xkHghrQRJf+BqEWWcaQ41pFKUhls6vLx38Ve0WXnpyFKsSjIymUfukG4xjMJuo+vx/a+Yvk6q88Tn9bLDNqV3z58EvPyMHKWU0q3DtEONSK4rPG6JMKglEAB55BWVT3u/ETen998gG7t6fynEk5ZCALO+DYdOU1fGHkJ6s6EcimNI8IUhGSgkbC29YI2P5xrniPxhi1JUDAA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4587.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(66946007)(66556008)(6512007)(4326008)(8676002)(66476007)(83380400001)(8936002)(508600001)(6486002)(6506007)(1076003)(316002)(38100700002)(6666004)(52116002)(86362001)(6916009)(186003)(54906003)(36756003)(2906002)(26005)(30864003)(38350700002)(107886003)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HO39mHyyXmTD2ZJJ1LGmWyxqMsQAlbcEs2yc1YG3UNNcWr9c+f+x9oSk0W/2/Te3UQBdTVVv9zET7HtGxFFHD/sAim+mMAeLhNeibJajrWi0ScsXhRsIsLVnQR63oKQtPRYFJVRglNzEWTwd/UTRdGFGhYuKNXDrjjaYkzeiY6Umyhn1LQOoiSS3VItSLO1lzbTjPOJtzuMgji5BaF8Z+QH7hkwLig7OOucNexts3sg8mWyCS7g4IObNPIFiAKonk4UwRXlygyJLkSuw7G6bq6PXj5s57xAvf9BbNz12MsrybrVUK6g0gOnNh3WFEsDw4LGHaa2gmWK4TG7h8Z8vHXURx2tGaAe4nO6S1Jystxn8kKH5XV8HB+nUN1hX8Fml4DBdKQU9zP+f1jlokI5uAQDPoZ5+6TLwNCUAH94rBlq04r1XoC2HhQmx8FMsbf2zW+B/5C8q3XjpqYc+BH4okJTUBQe5h0+/CT71jBq/APPHqUmH86CTDd2hzeColiTa5JLXe+Bssk6gFo8Xu4M7uLfLZ4NcwMezbTc1MsqhvchlZNlIZLHSdLaHBzRxOZCq9q8oWT1al9WGbc8ycxj/9e6h864G2VEngIzaRH7J0M7oDwVKnWtDYp7i9UmSkp64DXvxhmQrGLG2wvKAhZbXecgGXbtHUAORhFlsIZl/vvTMp6skEwSG2m11361TgUD6oJpGgAfOR3wbwScYI/mSeVDsHxnpxLVW6R65ZUVT44gm5micLF7HvcATliHbwSz0tOz4jvMmByI0sklgTQvcKPgx+HMzhfToDeKJX+OktJQ/TrV6KoqwYXqJ35trDXKAAV8Hcesxm7RA5KH0olKY+dHXhMbpr/XZpLr9BG1Xgsy0bfmCxne25W5ohzBRsUGjQ+yZNcUB2MczBxacjqcgPq7kDJM5oJGczP9NGFQzERh1jKRA5aGn9XQrAJcYNCdjrs9nsop6NaQBmXtDPL8oNLlNCkhyc43M+5PtIeEDK4oiLmg9vRs9jNjMnqQF45bLtAkBCe2iirs2sWsncjGx8HWvofB8MkEUnykEFEQ6GS7dg2Un9SUC7yoP6Zifql7nBiVTcBr0lbwJ4tmmnKf5K/Ao8MtPuagiceI3Cm9Crs2veFPR56ZfiX83EE4MDbnwQhlVB2aUI3NfdDYZVGseSsXp3DNbcG8O4sKHVmqpMxc8qt8fWtrT0YVUbwDIHFYU0JKhndBQep75eGqGK/h8hYgFElOVekw0KiR3bgz7KmF2inrT5NekUZ+Hq0I0qCse5xrf7YhxeRCYCeYOk5YhI7KFe08G37VKukqG/Ol5jN/2XpxH7BrCRInxL2M0Qe8GVtlxDJi0nfYtaEoJd4Q/K57UxZ0KTVTMXu8HjvV6fo8T6SYg1vWIRQXkZjAi/u2246rNRfr3z7d8U0F58gCd5ASAr9iewtuK9+UaA57eqZae0vhnZ+P6VkHxT5dv2sjkQ2liRVFKLAAMt50jj5WOVX0Px7BOo40B17NyjUu6f9IjXnbwFBVU+DVFTyN7cFTwmE4HsYQH71WHyS5vYoGyH6m3VidkG55dRVcpEz8TrFPaUbkqOIfjuQh6WJ4NOSqbDK+ri+gCSHvbOcAuyDGWaO4X60WK7KlPVBdMNWz37IBmOKtUKzLvAFST27jx5WRQzNSmOifi5Rxh5hydTKUkm2D5mjEAj8lSOFOhK1XKr8kIBTPdM7ODMN2WNJxkpb3eXq05GeOHTo6H5pTwhRWv4HCz4x0QUwtXcD86NWFcHtM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c79376fc-947b-4f3b-9156-08da3e109358 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4587.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2022 05:36:54.0518 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WgxlK6wPXVxNVz0FNEICBBUEfAdCpbjObs1fljiYIO0zW4Gg4/LvLjrLGfyG+lr1osN6y3RFKa4KEtkAYipY7A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4817 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486,18.0.874 definitions=2022-05-25_01:2022-05-23,2022-05-25 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 adultscore=0 bulkscore=0 suspectscore=0 phishscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250029 X-Proofpoint-GUID: 38jRrQmityFauYdglNsxidLiDtkWW2jJ X-Proofpoint-ORIG-GUID: 38jRrQmityFauYdglNsxidLiDtkWW2jJ Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Currently, the two V5 feature upgrades permitted by xfs_repair do not affect filesystem space usage, so we haven't needed to verify the geometry. However, this will change once we start to allow the sysadmin to add new metadata indexes to existing filesystems. Add all the infrastructure we need to ensure that the log will still be large enough, that there's enough space for metadata space reservations, and the root inode will still be where we expect it to be after the upgrade. Signed-off-by: Darrick J. Wong Signed-off-by: Chandan Babu R [Recompute transaction reservation values; Exit with error if upgrade fails] --- include/libxfs.h | 1 + include/xfs_mount.h | 1 + libxfs/init.c | 24 +++-- libxfs/libxfs_api_defs.h | 3 + repair/phase2.c | 206 +++++++++++++++++++++++++++++++++++++-- 5 files changed, 218 insertions(+), 17 deletions(-) diff --git a/include/libxfs.h b/include/libxfs.h index 915bf511..7d6e9a33 100644 --- a/include/libxfs.h +++ b/include/libxfs.h @@ -77,6 +77,7 @@ struct iomap; #include "xfs_refcount_btree.h" #include "xfs_refcount.h" #include "xfs_btree_staging.h" +#include "xfs_ag_resv.h" #ifndef ARRAY_SIZE #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) diff --git a/include/xfs_mount.h b/include/xfs_mount.h index b32ca152..011f395a 100644 --- a/include/xfs_mount.h +++ b/include/xfs_mount.h @@ -259,6 +259,7 @@ __XFS_UNSUPP_OPSTATE(shutdown) #define LIBXFS_BHASHSIZE(sbp) (1<<10) +void libxfs_compute_all_maxlevels(struct xfs_mount *mp); struct xfs_mount *libxfs_mount(struct xfs_mount *mp, struct xfs_sb *sb, dev_t dev, dev_t logdev, dev_t rtdev, unsigned int flags); int libxfs_flush_mount(struct xfs_mount *mp); diff --git a/libxfs/init.c b/libxfs/init.c index a01a41b2..15052696 100644 --- a/libxfs/init.c +++ b/libxfs/init.c @@ -728,6 +728,21 @@ xfs_agbtree_compute_maxlevels( mp->m_agbtree_maxlevels = max(levels, mp->m_refc_maxlevels); } +/* Compute maximum possible height of all btrees. */ +void +libxfs_compute_all_maxlevels( + struct xfs_mount *mp) +{ + xfs_alloc_compute_maxlevels(mp); + xfs_bmap_compute_maxlevels(mp, XFS_DATA_FORK); + xfs_bmap_compute_maxlevels(mp, XFS_ATTR_FORK); + xfs_ialloc_setup_geometry(mp); + xfs_rmapbt_compute_maxlevels(mp); + xfs_refcountbt_compute_maxlevels(mp); + + xfs_agbtree_compute_maxlevels(mp); +} + /* * Mount structure initialization, provides a filled-in xfs_mount_t * such that the numerous XFS_* macros can be used. If dev is zero, @@ -772,14 +787,7 @@ libxfs_mount( mp->m_swidth = sbp->sb_width; } - xfs_alloc_compute_maxlevels(mp); - xfs_bmap_compute_maxlevels(mp, XFS_DATA_FORK); - xfs_bmap_compute_maxlevels(mp, XFS_ATTR_FORK); - xfs_ialloc_setup_geometry(mp); - xfs_rmapbt_compute_maxlevels(mp); - xfs_refcountbt_compute_maxlevels(mp); - - xfs_agbtree_compute_maxlevels(mp); + libxfs_compute_all_maxlevels(mp); /* * Check that the data (and log if separate) are an ok size. diff --git a/libxfs/libxfs_api_defs.h b/libxfs/libxfs_api_defs.h index 370ad8b3..824f2c4d 100644 --- a/libxfs/libxfs_api_defs.h +++ b/libxfs/libxfs_api_defs.h @@ -21,6 +21,8 @@ #define xfs_ag_init_headers libxfs_ag_init_headers #define xfs_ag_block_count libxfs_ag_block_count +#define xfs_ag_resv_init libxfs_ag_resv_init +#define xfs_ag_resv_free libxfs_ag_resv_free #define xfs_alloc_ag_max_usable libxfs_alloc_ag_max_usable #define xfs_allocbt_maxlevels_ondisk libxfs_allocbt_maxlevels_ondisk @@ -112,6 +114,7 @@ #define xfs_highbit64 libxfs_highbit64 #define xfs_ialloc_calc_rootino libxfs_ialloc_calc_rootino #define xfs_iallocbt_maxlevels_ondisk libxfs_iallocbt_maxlevels_ondisk +#define xfs_ialloc_read_agi libxfs_ialloc_read_agi #define xfs_idata_realloc libxfs_idata_realloc #define xfs_idestroy_fork libxfs_idestroy_fork #define xfs_iext_lookup_extent libxfs_iext_lookup_extent diff --git a/repair/phase2.c b/repair/phase2.c index 13832701..4c315055 100644 --- a/repair/phase2.c +++ b/repair/phase2.c @@ -133,7 +133,8 @@ zero_log( static bool set_inobtcount( - struct xfs_mount *mp) + struct xfs_mount *mp, + struct xfs_sb *new_sb) { if (!xfs_has_crc(mp)) { printf( @@ -153,14 +154,15 @@ set_inobtcount( } printf(_("Adding inode btree counts to filesystem.\n")); - mp->m_sb.sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_INOBTCNT; - mp->m_sb.sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR; + new_sb->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_INOBTCNT; + new_sb->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR; return true; } static bool set_bigtime( - struct xfs_mount *mp) + struct xfs_mount *mp, + struct xfs_sb *new_sb) { if (!xfs_has_crc(mp)) { printf( @@ -174,28 +176,214 @@ set_bigtime( } printf(_("Adding large timestamp support to filesystem.\n")); - mp->m_sb.sb_features_incompat |= (XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR | - XFS_SB_FEAT_INCOMPAT_BIGTIME); + new_sb->sb_features_incompat |= (XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR | + XFS_SB_FEAT_INCOMPAT_BIGTIME); return true; } +struct check_state { + struct xfs_sb sb; + uint64_t features; + bool finobt_nores; +}; + +static inline void +capture_old_state( + struct check_state *old_state, + const struct xfs_mount *mp) +{ + memcpy(&old_state->sb, &mp->m_sb, sizeof(struct xfs_sb)); + old_state->finobt_nores = mp->m_finobt_nores; + old_state->features = mp->m_features; +} + +static inline void +restore_old_state( + struct xfs_mount *mp, + const struct check_state *old_state) +{ + memcpy(&mp->m_sb, &old_state->sb, sizeof(struct xfs_sb)); + mp->m_finobt_nores = old_state->finobt_nores; + mp->m_features = old_state->features; + libxfs_compute_all_maxlevels(mp); + libxfs_trans_init(mp); +} + +static inline void +install_new_state( + struct xfs_mount *mp, + struct xfs_sb *new_sb) +{ + memcpy(&mp->m_sb, new_sb, sizeof(struct xfs_sb)); + mp->m_features |= libxfs_sb_version_to_features(new_sb); + libxfs_compute_all_maxlevels(mp); + libxfs_trans_init(mp); +} + +/* + * Make sure we can actually upgrade this (v5) filesystem without running afoul + * of root inode or log size requirements that would prevent us from mounting + * the filesystem. If everything checks out, commit the new geometry. + */ +static void +install_new_geometry( + struct xfs_mount *mp, + struct xfs_sb *new_sb) +{ + struct check_state old; + struct xfs_perag *pag; + xfs_ino_t rootino; + xfs_agnumber_t agno; + int min_logblocks; + int error; + + capture_old_state(&old, mp); + install_new_state(mp, new_sb); + + /* + * The existing log must be large enough to satisfy the new minimum log + * size requirements. + */ + min_logblocks = libxfs_log_calc_minimum_size(mp); + if (old.sb.sb_logblocks < min_logblocks) { + printf( + _("Filesystem log too small to upgrade filesystem; need %u blocks, have %u.\n"), + min_logblocks, old.sb.sb_logblocks); + exit(1); + } + + /* + * The root inode must be where xfs_repair will expect it to be with + * the new geometry. + */ + rootino = libxfs_ialloc_calc_rootino(mp, new_sb->sb_unit); + if (old.sb.sb_rootino != rootino) { + printf( + _("Cannot upgrade filesystem, root inode (%llu) cannot be moved to %llu.\n"), + (unsigned long long)old.sb.sb_rootino, + (unsigned long long)rootino); + exit(1); + } + + /* Make sure we have enough space for per-AG reservations. */ + for_each_perag(mp, agno, pag) { + struct xfs_trans *tp; + struct xfs_agf *agf; + struct xfs_buf *agi_bp, *agf_bp; + unsigned int avail, agblocks; + + /* Put back the old super so that we can read AG headers. */ + restore_old_state(mp, &old); + + /* + * Create a dummy transaction so that we can load the AGI and + * AGF buffers in memory with the old fs geometry and pin them + * there while we try to make a per-AG reservation with the new + * geometry. + */ + error = -libxfs_trans_alloc_empty(mp, &tp); + if (error) + do_error( + _("Cannot reserve resources for upgrade check, err=%d.\n"), + error); + + error = -libxfs_ialloc_read_agi(mp, tp, pag->pag_agno, + &agi_bp); + if (error) + do_error( + _("Cannot read AGI %u for upgrade check, err=%d.\n"), + pag->pag_agno, error); + + error = -libxfs_alloc_read_agf(mp, tp, pag->pag_agno, 0, + &agf_bp); + if (error) + do_error( + _("Cannot read AGF %u for upgrade check, err=%d.\n"), + pag->pag_agno, error); + agf = agf_bp->b_addr; + agblocks = be32_to_cpu(agf->agf_length); + + /* + * Install the new superblock and try to make a per-AG space + * reservation with the new geometry. We pinned the AG header + * buffers to the transaction, so we shouldn't hit any + * corruption errors on account of the new geometry. + */ + install_new_state(mp, new_sb); + + error = -libxfs_ag_resv_init(pag, tp); + if (error == ENOSPC) { + printf( + _("Not enough free space would remain in AG %u for metadata.\n"), + pag->pag_agno); + exit(1); + } + if (error) + do_error( + _("Error %d while checking AG %u space reservation.\n"), + error, pag->pag_agno); + + /* + * Would we have at least 10% free space in this AG after + * making per-AG reservations? + */ + avail = pag->pagf_freeblks + pag->pagf_flcount; + avail -= pag->pag_meta_resv.ar_reserved; + avail -= pag->pag_rmapbt_resv.ar_asked; + if (avail < agblocks / 10) + printf( + _("AG %u will be low on space after upgrade.\n"), + pag->pag_agno); + libxfs_trans_cancel(tp); + } + + /* + * Would we have at least 10% free space in the data device after all + * the upgrades? + */ + if (mp->m_sb.sb_fdblocks < mp->m_sb.sb_dblocks / 10) + printf(_("Filesystem will be low on space after upgrade.\n")); + + /* + * Release the per-AG reservations and mark the per-AG structure as + * uninitialized so that we don't trip over stale cached counters + * after the upgrade/ + */ + for_each_perag(mp, agno, pag) { + libxfs_ag_resv_free(pag); + pag->pagf_init = 0; + pag->pagi_init = 0; + } + + /* + * Restore the old state to get everything back to a clean state, + * upgrade the featureset one more time, and recompute the btree max + * levels for this filesystem. + */ + restore_old_state(mp, &old); + install_new_state(mp, new_sb); +} + /* Perform the user's requested upgrades on filesystem. */ static void upgrade_filesystem( struct xfs_mount *mp) { + struct xfs_sb new_sb; struct xfs_buf *bp; bool dirty = false; int error; + memcpy(&new_sb, &mp->m_sb, sizeof(struct xfs_sb)); + if (add_inobtcount) - dirty |= set_inobtcount(mp); + dirty |= set_inobtcount(mp, &new_sb); if (add_bigtime) - dirty |= set_bigtime(mp); + dirty |= set_bigtime(mp, &new_sb); if (!dirty) return; - mp->m_features |= libxfs_sb_version_to_features(&mp->m_sb); + install_new_geometry(mp, &new_sb); if (no_modify) return; From patchwork Wed May 25 05:36:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chandan Babu R X-Patchwork-Id: 12860704 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 01044C433F5 for ; Wed, 25 May 2022 05:37:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231952AbiEYFhF (ORCPT ); Wed, 25 May 2022 01:37:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40854 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244009AbiEYFhE (ORCPT ); Wed, 25 May 2022 01:37:04 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 112FC28725 for ; Tue, 24 May 2022 22:37:03 -0700 (PDT) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24P01xtN023380; Wed, 25 May 2022 05:36:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=BT5QaUbIM1djCy3EtrYKTZs9qJIHBq8ECVUF7GLuxSU=; b=RInnCsWWTOWnTMkI649p+PozMRq/X0rWN6Zbk2KwMziUhd+xG7hcO2WS9adAK0fwlBm8 r4yoQHe/dlImcu5b8JpWhUsR04l4VZkSpQArvF2jBRqTAcHhHoGC9cj4yRJ8bXU4CCUu WVRe0/FQpLn+4UUOwqL8RRJSdPRSxolXZ6+1FKfYhTuMEZZCLDqfd6n6yhL8y/YIoW9b PIVQHFAtcrBvKS6tlZ+F8K5C+UU+xUy+Fe1YiuzTw6jG8su0amqTETcg7YvRM+K+v5f5 qsywD3zHcf99h868Cv9LRF/j3N8mh3HLyphIvDvQ9Ikle8F7rsuiHjd4N+EdjirtguP7 tg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g93tbs3u7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:36:58 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24P5aNiO021496; Wed, 25 May 2022 05:36:58 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2048.outbound.protection.outlook.com [104.47.66.48]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g93x05ru0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:36:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M4v5YX/1NHoGgKg5XMgqff4p1djuktnGScg3sXEzK/zVCZmuaegXd68qqX9JGVbl/TaYJoCkGko0JwcTkNPpe/lHZ8fGHzmkj0tg8joscoiGWOEl5qMWcTDo+48liHYvlteFvxnLyZr7Q3hBis21K5FXrP/r53S2zZFVcNIGKubTNXqYxdYPWAiXX0vL/ryb+8Q2uE99oPQ/q2dpYn6nmFBXTled3slX1iCpEb7J0Oo5hMq89IxQoXMpT/PSCtV4pGlOra6ljpC/JmPA5/1yviBosvCJU8+lngr/lLixQxQXcLDh7/PI/82cdGw/wk+/veRBtmy9xloLT0AqQgmlNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BT5QaUbIM1djCy3EtrYKTZs9qJIHBq8ECVUF7GLuxSU=; b=IlGiP2+6Ul4zr0lG7AlKozjBnYGkEc+r+vkv3EUiCFsefi3JiSHWeMxplHf0sdRPiBW/KiKc84+cOTD7drkHmlVlsGPYeS2zySF+ViT3Cbn7TBdwkcLec4Jsvn+6t5WDGPJeRp80IeIQWf+lYFaVRJr5lYQ+zscY6RXLZuHEsYeEq4W49qvWiyhyA19XTuy6tgZe3EZzQMsOG6yCsO+9wASYkE/sUe0G+IMhPbvSBr4zvVwe/wIjuX4hmWmdyW8JWmLVE/XnF+qmUhUBKu0ZHMEjV/YksCxp37hiiYPi8xE8xX5Rwj75LD0g1vvx7zLYHsj/rbixzVf2eqwlHTfMOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BT5QaUbIM1djCy3EtrYKTZs9qJIHBq8ECVUF7GLuxSU=; b=SYSouodqzL++OFSDAUP3rxjinCJF1CuVU5DiDNXHC/iPWMu+axUuYK2QZuOENJ1fLTIpSVJlFq+VeVoPghrLzxr0hbbzh6g/hUZxEWq9KsIXT3hAf19sCZkCfCuB4UjfDrHNtkb6tcTBBP+kAkH9n0v8Iai7SnZzeaT9teNA4/Y= Received: from SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) by BLAPR10MB4817.namprd10.prod.outlook.com (2603:10b6:208:321::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 25 May 2022 05:36:56 +0000 Received: from SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62]) by SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62%5]) with mapi id 15.20.5273.023; Wed, 25 May 2022 05:36:56 +0000 From: Chandan Babu R To: linux-xfs@vger.kernel.org Cc: Chandan Babu R , david@fromorbit.com, "Darrick J . Wong" Subject: [PATCH 2/5] xfsprogs: Invoke bulkstat ioctl with XFS_BULK_IREQ_NREXT64 flag Date: Wed, 25 May 2022 11:06:27 +0530 Message-Id: <20220525053630.734938-3-chandan.babu@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220525053630.734938-1-chandan.babu@oracle.com> References: <20220525053630.734938-1-chandan.babu@oracle.com> X-ClientProxiedBy: TY2PR06CA0047.apcprd06.prod.outlook.com (2603:1096:404:2e::35) To SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6b46b452-bbe2-4442-0ae4-08da3e109491 X-MS-TrafficTypeDiagnostic: BLAPR10MB4817:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NkGZ+rvcheQzgTh0d6FzilNQWE/4bz4uXaoMtExqc8gzMDfEeQ0jiuUy8lFIlDCikKRl8djv+Moay97a+jivtJbfuBEh1x7dnDJTmrVe/0LbseMikkcLTejHDAWZ+3JO+7xtfiYSxghVj9Q6BSdys3kyiOTZ7WgbC+jZ/DisREQZJWD050vaXRTTVZSkvEai4jo2jIq61GzNHJFE7dqXTWGi87zgkA5bO7Izztisuz9JjOZjAOpgO/rew+i+Z29mSHHzDvUK1E4COJBJXUAFJYv+XIEoIcVgOUpl8K/4Vj2N6T7VzK1BW2KiooujlVUnFqiv/IjaeCtmAW97Dlm35SPVSKkdZImFyPNXaX/Rq7GpzerfOVv4RVGBbab16bFI5rMmhAMNJzfa5s7MBWxVhTFxmjJoLRvlG+lI805c4w4GF9SIt7kWyHJsWb3YE9pW9aHyOOjv1IxZ3ZbomkLCm2y6USauu+rZZjnpTbZGlVQ29OOLYRiktx1t3mtfmNmakGnC+9zQmPKVVepK742vflIFfQNFb71nI/XjsYIpoGtKNbwI7kycImTYnOgIOtSA1KQ+Zb31kdu8PTS/TaOTZO0Xi3dib//MgIs4/MMgu3LhsbbDsfJFkDjZwmB3g4Sfswh3NbC5mfhWpVdH2WvJjU1cnk0l3+4zCiwaYk0G/GDizmW7H7P0xGOVucIy8vijMUBmHlFzSoQlttsNhfMZTA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4587.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(66946007)(66556008)(6512007)(4326008)(8676002)(66476007)(83380400001)(8936002)(508600001)(6486002)(6506007)(1076003)(316002)(38100700002)(6666004)(52116002)(86362001)(6916009)(186003)(54906003)(36756003)(2906002)(26005)(38350700002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AZbluQjsE6WbbArwoG4rPo4u272pOpsdqEjC+L6BiNEQYMRB6dPdUmqLzzSvBpBe+IaI1tyHXwDCcNQ+ISCQG0e6Yq+/QD/G08qhrneLGAaWaOaFWlJYGWQXwzVvlejPvQmZK33EMw3dway26ksZgaftTf6E5QDjg7WtJyh6rIHYqkrkZYKDD4KIK2kqRj7K+9iu6ejIMBnkh0ctsCHpTRkn8vGpyZmQgwDLXvLytDx50Ztf37SP8oeHr4QaLL9eHiHQjENjgXa34uFlNIh46wiLPUQLXtS33jxMwu5rThHFavexV/R5Iuvm69Il2EHv+0Sh1iBwEkhF5PnXN4Uz3cw5toe/ZcjJ1j/LVABSO7IqqdejoRw+yxR/PEx68ZqCWxGb++wGXSgPumBENSkqPo8jg95CtMmWapluKQnKKdSWqooVPa8cB+zSuYirtZYMQtYpsEhtpO2Rz+3WapYkckAozg5SKSx/0XRtE8B9xdGuZc1o2klGFObro1UiqHuSNgZQVMbLEEF26yzcoATDAbfVfEqR1mwvtr19QZaZGqWfuUsYiL3D15gd3jWoH8f/Mg0hktEA4IdkdAzCQ9Fseb/lB0xLvIx/pzOXl3rI4bbYBmRP8k3dVG/tI+5IFvbQRCg0MS0PWbR7HLTf7BQzdr/lV/+iE2X7vGy6MGrs5dAEqaHGXagtwJRAElFEXxt5EC0jvvPHDrdRSltonexNkJpsrxVgZIT0Ejyyvuv/TFDsglbU8VlclVzmFFq6ObGG9IulBD87CiXnRK9cmjuT0yqz1Tj/FJOHiesBT2NvM4TWPZmPXj8FNzzVjfxn9mrKr2KjImNVGNwOAtsgAYXEGJ+MZPGJWsC3tD9ivXJgFJ4Dh+CI0VeyZC9MgTP9AOROCurDdpZvELJILOPZ7j+BcE6adMK3LnkaEiu/EHGizmuJwny9oJdpRC13UT8YRZ+6p/b99QXTinaGlYv+d5KkATYJuQjPlBtrj9z6eGaMZ2dFjTIM+8LlQotYQAyKUvQ/JvDGA8ApkUk2odgk6mV2o1beEvt46LzU3wQRClHfluoQZfPvzlf1JFOYup5k4VWzoncxT4NRitUSmP1cUgzoIvLbJCmFNrz9lLbZJwVIkLQQ1fER3bpVBTrawXepQjVFUvKxPagzy+2hZJU3KAi1I57O4cWUwLBmU8H1ptMXjTUUgvI+ma90ucDD7jxUwbnkHyU0Wb6vhf1jniO7QSzW8N0MZ/QMpnKq0kVUDN6X7kUHmPvPGJxFtdRQLc5JKR7pVCTlIBNg385e4YVUascHX7ivtn93AcHH0GMlkOqN7sPvGA9hnWdHtOKjTYdcTciKrJwEC4Bzned+rbzYFsjpdezFer/5YT+O1PBdd0n+JAsFZLl2mIVcr76f5vFr6j/dj0ybghLR9hOdgKRdvBv9bxYaRjEOe49q9T3xWxhQbPnqCNgawhj6I/HKMMWm4K1DIFH1tgnCkPDSlGUdMqA8P70srC8qGR0nKYn7qB7cqyBJpq3a9zLEIvAVIAz27Qq7eUvtNN4MKlYKomwjcc27RDSdRxgExvxz7P6Z+PtrtaOYPGpzfJTjb5SUWhu3XK7GXdXWtrhjFC15XuEV6nlu5Eo6k7XfAhpzKEC3d+sb1CZ8+O0PsYJYZg5IrmMrWh1jzOsa4hnAt0hmJ6fNnduS65HVul+/jAN6sc60hpsDXP/QfnJjRA5z0KjmHF28xJJrD8hex/0i4jAjkiHbYGg5+oNFNm11RNGikBHutDVfCbo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6b46b452-bbe2-4442-0ae4-08da3e109491 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4587.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2022 05:36:56.0997 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: T3HjppKlWImKaseGUAl8hmT9yZlCCZYUGhcDu3n7jF5J4y8fBOzT/Kkiay03jppsJfWmdzNrWGwJYK5Xi16sjQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4817 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486,18.0.874 definitions=2022-05-25_01:2022-05-23,2022-05-25 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250029 X-Proofpoint-GUID: 8X8quxO21xeCykTf00jGPIOJO69J9j0d X-Proofpoint-ORIG-GUID: 8X8quxO21xeCykTf00jGPIOJO69J9j0d Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org This commit adds support to libfrog to enable reporting 64-bit extent counters to its users. In order to do so, bulkstat ioctl is now invoked with the newly introduced XFS_BULK_IREQ_NREXT64 flag if the underlying filesystem's geometry supports 64-bit extent counters. Reviewed-by: Darrick J. Wong Signed-off-by: Chandan Babu R --- fsr/xfs_fsr.c | 4 ++-- io/bulkstat.c | 1 + libfrog/bulkstat.c | 29 +++++++++++++++++++++++++++-- man/man2/ioctl_xfs_bulkstat.2 | 10 +++++++++- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c index 6cf8bfb7..ba02506d 100644 --- a/fsr/xfs_fsr.c +++ b/fsr/xfs_fsr.c @@ -590,7 +590,7 @@ cmp(const void *s1, const void *s2) (bs1->bs_version == XFS_BULKSTAT_VERSION_V5 && bs2->bs_version == XFS_BULKSTAT_VERSION_V5)); - return (bs2->bs_extents - bs1->bs_extents); + return (bs2->bs_extents64 - bs1->bs_extents64); } /* @@ -655,7 +655,7 @@ fsrfs(char *mntdir, xfs_ino_t startino, int targetrange) for (p = buf, endp = (buf + buflenout); p < endp ; p++) { /* Do some obvious checks now */ if (((p->bs_mode & S_IFMT) != S_IFREG) || - (p->bs_extents < 2)) + (p->bs_extents64 < 2)) continue; ret = -xfrog_bulkstat_v5_to_v1(&fsxfd, &bs1, p); diff --git a/io/bulkstat.c b/io/bulkstat.c index 41194200..a9ad87ca 100644 --- a/io/bulkstat.c +++ b/io/bulkstat.c @@ -57,6 +57,7 @@ dump_bulkstat( printf("\tbs_sick = 0x%"PRIx16"\n", bstat->bs_sick); printf("\tbs_checked = 0x%"PRIx16"\n", bstat->bs_checked); printf("\tbs_mode = 0%"PRIo16"\n", bstat->bs_mode); + printf("\tbs_extents64 = %"PRIu64"\n", bstat->bs_extents64); }; static void diff --git a/libfrog/bulkstat.c b/libfrog/bulkstat.c index 195f6ea0..0a90947f 100644 --- a/libfrog/bulkstat.c +++ b/libfrog/bulkstat.c @@ -56,6 +56,9 @@ xfrog_bulkstat_single5( if (flags & ~(XFS_BULK_IREQ_SPECIAL)) return -EINVAL; + if (xfd->fsgeom.flags & XFS_FSOP_GEOM_FLAGS_NREXT64) + flags |= XFS_BULK_IREQ_NREXT64; + ret = xfrog_bulkstat_alloc_req(1, ino, &req); if (ret) return ret; @@ -73,6 +76,12 @@ xfrog_bulkstat_single5( } memcpy(bulkstat, req->bulkstat, sizeof(struct xfs_bulkstat)); + + if (!(xfd->fsgeom.flags & XFS_FSOP_GEOM_FLAGS_NREXT64)) { + bulkstat->bs_extents64 = bulkstat->bs_extents; + bulkstat->bs_extents = 0; + } + free: free(req); return ret; @@ -129,6 +138,7 @@ xfrog_bulkstat_single( switch (error) { case -EOPNOTSUPP: case -ENOTTY: + assert(!(xfd->fsgeom.flags & XFS_FSOP_GEOM_FLAGS_NREXT64)); xfd->flags |= XFROG_FLAG_BULKSTAT_FORCE_V1; break; } @@ -259,10 +269,23 @@ xfrog_bulkstat5( struct xfs_bulkstat_req *req) { int ret; + int i; + + if (xfd->fsgeom.flags & XFS_FSOP_GEOM_FLAGS_NREXT64) + req->hdr.flags |= XFS_BULK_IREQ_NREXT64; ret = ioctl(xfd->fd, XFS_IOC_BULKSTAT, req); if (ret) return -errno; + + if (!(xfd->fsgeom.flags & XFS_FSOP_GEOM_FLAGS_NREXT64)) { + for (i = 0; i < req->hdr.ocount; i++) { + req->bulkstat[i].bs_extents64 = + req->bulkstat[i].bs_extents; + req->bulkstat[i].bs_extents = 0; + } + } + return 0; } @@ -316,6 +339,7 @@ xfrog_bulkstat( switch (error) { case -EOPNOTSUPP: case -ENOTTY: + assert(!(xfd->fsgeom.flags & XFS_FSOP_GEOM_FLAGS_NREXT64)); xfd->flags |= XFROG_FLAG_BULKSTAT_FORCE_V1; break; } @@ -342,6 +366,7 @@ xfrog_bulkstat_v5_to_v1( const struct xfs_bulkstat *bs5) { if (bs5->bs_aextents > UINT16_MAX || + bs5->bs_extents64 > INT32_MAX || cvt_off_fsb_to_b(xfd, bs5->bs_extsize_blks) > UINT32_MAX || cvt_off_fsb_to_b(xfd, bs5->bs_cowextsize_blks) > UINT32_MAX || time_too_big(bs5->bs_atime) || @@ -366,7 +391,7 @@ xfrog_bulkstat_v5_to_v1( bs1->bs_blocks = bs5->bs_blocks; bs1->bs_xflags = bs5->bs_xflags; bs1->bs_extsize = cvt_off_fsb_to_b(xfd, bs5->bs_extsize_blks); - bs1->bs_extents = bs5->bs_extents; + bs1->bs_extents = bs5->bs_extents64; bs1->bs_gen = bs5->bs_gen; bs1->bs_projid_lo = bs5->bs_projectid & 0xFFFF; bs1->bs_forkoff = bs5->bs_forkoff; @@ -407,7 +432,6 @@ xfrog_bulkstat_v1_to_v5( bs5->bs_blocks = bs1->bs_blocks; bs5->bs_xflags = bs1->bs_xflags; bs5->bs_extsize_blks = cvt_b_to_off_fsbt(xfd, bs1->bs_extsize); - bs5->bs_extents = bs1->bs_extents; bs5->bs_gen = bs1->bs_gen; bs5->bs_projectid = bstat_get_projid(bs1); bs5->bs_forkoff = bs1->bs_forkoff; @@ -415,6 +439,7 @@ xfrog_bulkstat_v1_to_v5( bs5->bs_checked = bs1->bs_checked; bs5->bs_cowextsize_blks = cvt_b_to_off_fsbt(xfd, bs1->bs_cowextsize); bs5->bs_aextents = bs1->bs_aextents; + bs5->bs_extents64 = bs1->bs_extents; } /* Allocate a bulkstat request. Returns zero or a negative error code. */ diff --git a/man/man2/ioctl_xfs_bulkstat.2 b/man/man2/ioctl_xfs_bulkstat.2 index cd0a9b06..3203ca0c 100644 --- a/man/man2/ioctl_xfs_bulkstat.2 +++ b/man/man2/ioctl_xfs_bulkstat.2 @@ -94,6 +94,13 @@ field. This flag may not be set at the same time as the .B XFS_BULK_IREQ_AGNO flag. +.TP +.B XFS_BULK_IREQ_NREXT64 +If this is set, data fork extent count is returned via bs_extents64 field and +0 is assigned to bs_extents. Otherwise, data fork extent count is returned +via bs_extents field and bs_extents64 is assigned a value of 0. In the second +case, bs_extents is set to (2^31 - 1) if data fork extent count is larger than +2^31. This flag may be set independently of whether other flags have been set. .RE .PP .I hdr.icount @@ -161,8 +168,9 @@ struct xfs_bulkstat { uint16_t bs_checked; uint16_t bs_mode; uint16_t bs_pad2; + uint64_t bs_extents64; - uint64_t bs_pad[7]; + uint64_t bs_pad[6]; }; .fi .in From patchwork Wed May 25 05:36:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chandan Babu R X-Patchwork-Id: 12860707 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B723CC433EF for ; Wed, 25 May 2022 05:37:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241450AbiEYFhJ (ORCPT ); Wed, 25 May 2022 01:37:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244010AbiEYFhI (ORCPT ); Wed, 25 May 2022 01:37:08 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1032234646 for ; Tue, 24 May 2022 22:37:07 -0700 (PDT) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24P01xtO023380; Wed, 25 May 2022 05:37:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=CIpRG4ywLeK9X/+IB5tP/Sn9k9R4coXp6k+d5RGIcys=; b=X9YL/+8l/sj8V05sjwnsuATmzLLO+eGJPfj79ncpROUUw1wzdikWohZs2+aZC5q3A/EA vxjbnTOSEaBhxli7OlfylBmBeLT/3ugOv+4XrtoTkm9GbS7G+elhpJN0DiCpXup6hiSz x4ktw4sIpxfh1q4pFGVXeNnA8b5xDmo1TUW2i2cgoUHK9QceYCzTAhErbjv4dCZjfXPi 3hZPWDJfypMflTyO0pyM1ZW3dgdNIMDO0UL3jsaimocNK8fKP3aqFxn7qbWrZKdL8QWC nRLQM0pcDZ3+daRjlBISyHvzb8KhktMMhORk5b2BdgBdsZ9lduXUOCiF1SbvKC5POcjT lQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g93tbs3u9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:37:02 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24P5ZteM025257; Wed, 25 May 2022 05:37:00 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2041.outbound.protection.outlook.com [104.47.66.41]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g93wydk9e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:37:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hudeASbxdamKd4ZRS3rtMPAoFLeKSSR30tzqDWlBqj5+r1lhHcSLqjkq+3YBzrGYo0twW1HO/qdiY95CMXgdrs7bZI/dzhbhAzV2gDp115H3Oi+s43nVPAvnJuqdbbY0Mb/cK0YYc9dQRFBbrVE9sOvbkaZ+QeWMbFSK8yJWFGDlCQtvpl3v6tAf8thbeQVPT9/VqwgSc0Ydpxa2q25Qc7Me1vQUrm9vpcP0823ts+ke6GbKUneylnMU5SEZinUfRpf5XvhOBn1bUk6LOS5VEUfz93gBVFrVt/VKrZRIl0DBHHPOP5te7KvN3WyB7NbMbPXAQraWzAkMLvodtm+SMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CIpRG4ywLeK9X/+IB5tP/Sn9k9R4coXp6k+d5RGIcys=; b=h4XHusVnjDZv4MLEhB5N2vdMlH4LSgK2BgT/8DRx7cOMJFzIyxT7RH2BbJ5xUddQ1pGhs7EnHBDqJgk8LE10w/c5MFizBmEibcWiXrrEecNnqRlSzwlgvnaUViKZI34FBOI6kHKDl2uSfF9pv8U/uXjzlsPMS4Z2FwfPYFA1P2ptskOL8FptuwbbGH+8byK3bH+iFJJjBG+NZPNo8oHCAMS2EoMYKRxeE3tCwdZiU7gfAQ08egQAZlXSZ565BlgYAVEmJTl90M1Hezo28aVZ1iKpZdMdUdOfCNf3xGS5QeztIOa+d3/v1zRhCAsR+RZhzcepK5BZ5l0CkSxj2fKVFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CIpRG4ywLeK9X/+IB5tP/Sn9k9R4coXp6k+d5RGIcys=; b=lldJ2kMT8gq9D7FEev5gRW1Nzwa7r8Wc9ld2Wd14mAfWBQf/hm2u5kOshbQ1q7hcjEjKhqIwa1wY55N7VRNiEUVPLI536jESxxwEuONw6owpwLtKblkTyowEgz7BlTW+9tRaN+EiNgR84QdrPR6+lU+YEbKiQXjIFM/JtXTYCWM= Received: from SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) by BLAPR10MB4817.namprd10.prod.outlook.com (2603:10b6:208:321::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 25 May 2022 05:36:58 +0000 Received: from SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62]) by SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62%5]) with mapi id 15.20.5273.023; Wed, 25 May 2022 05:36:58 +0000 From: Chandan Babu R To: linux-xfs@vger.kernel.org Cc: Chandan Babu R , david@fromorbit.com, "Darrick J . Wong" Subject: [PATCH 3/5] xfs_info: Report NREXT64 feature status Date: Wed, 25 May 2022 11:06:28 +0530 Message-Id: <20220525053630.734938-4-chandan.babu@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220525053630.734938-1-chandan.babu@oracle.com> References: <20220525053630.734938-1-chandan.babu@oracle.com> X-ClientProxiedBy: TY2PR06CA0047.apcprd06.prod.outlook.com (2603:1096:404:2e::35) To SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 57464212-0703-4bf6-c67d-08da3e1095bf X-MS-TrafficTypeDiagnostic: BLAPR10MB4817:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GDSyKeuUl3Zzflzc0C6lOaCZT5T+AQu3YhbjdoJnsebYj+s7RnEokRBvBE9MtcAEvrIoF5mjqT5N2vquZoVoSr1YsHnp9z5eWpE410lzjdNY/WP5+ecSALHNB3lHqme9OHRyKUJPKbeb44wF5jaW0CoQrULSlwfGa4/kDXk3LsyCPU+Uxe/bq6addK1wTnDciSCxODONzxnxSAz1zI3EhB3Cs/VIDZV8zeTh4m/2tiSh5ftzVE1fcQP3N5IXbvOyGXPBUwpYhvw6j/OcrepnEZd/W9/MUq9KtfhMklEwDWlrQJUlXCxQpNRDvvokExDfHMtpVx7R47KcvSJvOs1/7c5EJe/7D0ckRJt10AfPT9nohq5A9BHr3x422VzryQilVYetarqhvCN4msUtFF+l+G7d92D0hvRnrC5hTchbbiY4Yr0Rg9OV2Y9Usb1kYJO/is8RhHRvykBFfzIKSTZo/syrwEUN9DIf+LMw8YO7kHWfLNvWsAYRQzYQqYcJj9JEcqHFVrQYVmMi51xdMKc6UvwP82FZc1rueGoGqiVPTpY3uyLMpZ4U3cWkzvxgRyuS816kBXA7HU2IkFom5al1xGxPXHtIGsDL+MzmtaR7p+1/Pi4X9UDNnKxamjAeJstivrwTrRV75alU0aehlvsLt1klU1md+OiwsArxSLw2oQAZAl7Y9iRmaMX3RMuKRx/tbuFGI9YMxqEkMNnwD6hJwg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4587.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(66946007)(66556008)(6512007)(4326008)(8676002)(66476007)(83380400001)(8936002)(508600001)(6486002)(6506007)(1076003)(316002)(38100700002)(6666004)(52116002)(86362001)(6916009)(186003)(54906003)(36756003)(2906002)(26005)(38350700002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +Wk3+e2w+GAV6MsxOyx7msbrb0xC+Z4Qhu84p5q4VlMZKoiwEl7lSdWaCypgZFJsrjkxhl3agSO471Wg11GwUyVeHZ0eOsuTrNltMgkObk5K302BHqSNaWPPzUfkrKkMpuJaTKIbrxpfxfQI8dodNv9PMx4B20dgXlDFHcHtjdbjZJDPBD7RbBE7yZIOyPXmr/EgzHlqGNfbezafnsa9uKTjfdTtApMyElqMp5l0pp0Nj4dVcu6Y7Jsewc3xL3BeCXqOtQIghrPb7IJqpOwpbpLKB7ItzVrFSFD3HUI8eYtDuFaQPJQYAJ5PUHkJ1l9leu1Gx83oH5FYeHBK2mt4nODi+HW4TWvqErBol4Qx2eLBUOhXZpCsLsEBo4U42welpkPx7wm5xh7V06xSNigFkIVZ/9H2vJdTlwOgLC52D0Itf2GdBanEcaYuwg214LdKeizO+TxBrckjGANE8YF6pM34l54EoZJZs6RMd4JpF/UnKogu06J0n5YgybbbLSPWXCLvRwcSPSJIgbXrMtXMBC5I50ue8E5FjqLMjZ2t+nZ/guyEWRpcUcjbQnwg/FHfcN1ksyfKfBx/+NoKfpbOlU4Rzw3Fc/R1dPNcqQCVd1kZIQfqIoCyU9ORBC8t9506bcbzMoIDuUFTL4pgOpsj9XtgqlLyYURe9GocSvHsico56Cr4Lz6jR2LNJot3G43MtQyNVgYgfo6Dxn9ZafFk3FfnMArlawXexwl1z9HZSD6ekvgHCuEEY6dYtnpJqsptbc1Y3R/RpBsQg27ymMPlbD16KZT34TwWU71Yk4gOGJpUWl/Sx9i9aLbFCISFVuybOJWmwR4xI/jHGEIQrc68nbaRvf+/9mJ/3nzD1lPGKbk75QEF0ZAIiBS55HeYh9iHk3/a5MbxXgFZXC858BffwMROIusgc5XRHT1ZR+KzLVSxRwVCpdS2w/ztwkrtWP71VzQ7x3oM+T7SJGJVOHbDIIlIGVqP3pJceI49RLe9a81M12HfnvwK4qZ9mno0ekCdzdS9li7uvWIu5TYKAU3FXXrU9c6/EmrmxoseeX9G4ESCrB7dWHrr99+GkCF+rmaDRGt6ZaYGSAT6bqoBU8CqmKnx+lawMJ+ruBFfrYaf5jej6A8xZjppPLFZVfjcxYFqox6Pi0e1DIFv3P5TrfOTsOabDwOTztsfr4flbvUymgk44EuMs4wZtyCaeMcWlrzWC/H4cPB1piykNeX+4TmyuDW5qBgNvOYxRDfD7huGUh9U9VNDbIHrf1rKo2m69yEatmbSfFqpyrO/NE0agJqxt4YoWz1ohgnfM8hlRsx0gRP7rNEohSAkrAvDJnMUYt39/BpChOzM/1g3ZazhnK8Emj4+uTBVSlJr9fvMJK9hVwKqhWYsCJdBVUMcb8yDVM3fBXGx/pSsiIdn3elxgIwkySFQTz2Q7Ie77SwNh2G++rOcbrrW2W6mJbVek6xVrmWKMA21vGikgYxj/zMPpFpRPrq3I8XmRs28z127KqHGlMZHdbglw6zhwT8XZwB1qk17QKy4FwK2WmYg7eklbsNgaP6kLxW5ujEQVtfMlT5k8ozoxNVJgTlkka1vjlOtaxwnxKkHTTvrNzLDuVWdeQF8u/oHRd0uDZ11KrPWqe0svgTDXWUNl+tSIjWxF+9X1TNFAajUP0oC5gHtHm0zYgoja5KlcvvMChaiRaukAKHDPyzstC1TRj/wjWs++42we5L2xk2uEBTce+Q11enfT2i2m7WPKSmVfISCdxlDu2lsqAI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 57464212-0703-4bf6-c67d-08da3e1095bf X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4587.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2022 05:36:58.0836 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xQSLPlezdP2ShE1NPy2/Qtmnjw414lmbHGR7SnSa9GWJAYKPSVCBDvDDpE8e7SmjB/iJNqutI8IXbZBHOn2T2g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4817 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486,18.0.874 definitions=2022-05-25_01:2022-05-23,2022-05-25 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250029 X-Proofpoint-GUID: QVWRteVSqv_7-c8u7ga5PaeHeOvVTYT6 X-Proofpoint-ORIG-GUID: QVWRteVSqv_7-c8u7ga5PaeHeOvVTYT6 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org This commit adds support to libfrog to obtain information about the availability of NREXT64 feature in the underlying filesystem. Reviewed-by: Darrick J. Wong Signed-off-by: Chandan Babu R --- libfrog/fsgeom.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libfrog/fsgeom.c b/libfrog/fsgeom.c index 4f1a1842..3e7f0797 100644 --- a/libfrog/fsgeom.c +++ b/libfrog/fsgeom.c @@ -30,6 +30,7 @@ xfs_report_geom( int reflink_enabled; int bigtime_enabled; int inobtcount; + int nrext64; isint = geo->logstart > 0; lazycount = geo->flags & XFS_FSOP_GEOM_FLAGS_LAZYSB ? 1 : 0; @@ -47,12 +48,13 @@ xfs_report_geom( reflink_enabled = geo->flags & XFS_FSOP_GEOM_FLAGS_REFLINK ? 1 : 0; bigtime_enabled = geo->flags & XFS_FSOP_GEOM_FLAGS_BIGTIME ? 1 : 0; inobtcount = geo->flags & XFS_FSOP_GEOM_FLAGS_INOBTCNT ? 1 : 0; + nrext64 = geo->flags & XFS_FSOP_GEOM_FLAGS_NREXT64 ? 1 : 0; printf(_( "meta-data=%-22s isize=%-6d agcount=%u, agsize=%u blks\n" " =%-22s sectsz=%-5u attr=%u, projid32bit=%u\n" " =%-22s crc=%-8u finobt=%u, sparse=%u, rmapbt=%u\n" -" =%-22s reflink=%-4u bigtime=%u inobtcount=%u\n" +" =%-22s reflink=%-4u bigtime=%u inobtcount=%u nrext64=%u\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" " =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u ascii-ci=%d, ftype=%d\n" @@ -62,7 +64,7 @@ xfs_report_geom( mntpoint, geo->inodesize, geo->agcount, geo->agblocks, "", geo->sectsize, attrversion, projid32bit, "", crcs_enabled, finobt_enabled, spinodes, rmapbt_enabled, - "", reflink_enabled, bigtime_enabled, inobtcount, + "", reflink_enabled, bigtime_enabled, inobtcount, nrext64, "", geo->blocksize, (unsigned long long)geo->datablocks, geo->imaxpct, "", geo->sunit, geo->swidth, From patchwork Wed May 25 05:36:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chandan Babu R X-Patchwork-Id: 12860706 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 79652C433F5 for ; Wed, 25 May 2022 05:37:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244009AbiEYFhI (ORCPT ); Wed, 25 May 2022 01:37:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241450AbiEYFhH (ORCPT ); Wed, 25 May 2022 01:37:07 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16A4433347 for ; Tue, 24 May 2022 22:37:06 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24P0K0QY018266; Wed, 25 May 2022 05:37:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=gST9qa3/vgR28wAMbGSMCc2nMCrVHKknFKslyevj0lI=; b=dpqDaUiJDoNp9t/cPDjgSmfsXrAssdfVtioP25IuQsUipbkCSwOq27uJdzYJD2H7q07k PCD3Q5ovRsxV3bQCmRKo1GbJvxpvszdVqNPaY+OJJOu54LVTuo5cdK6LeGzkjdInzSlo ghDPQ8s3rEwhuf3nBvocSnLkQfj9iWxNXL2dUy8vJBbjSKlTE9P9S3f1p4KD7M3RIGA7 FYUmpoJjBpVJLPOo0+UaR76FklYZbK2pWUIGWCozFcCl5Zey2La5O0JCIzcSsZZCq/6R m0HC1ox0U/N+Jr5+chLoDe8aLWmwvdHcteNJuW+5ReujpbSuPzgcaipemD/iz10GmUZP yg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g93tas47q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:37:02 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24P5a5IU034921; Wed, 25 May 2022 05:37:02 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2041.outbound.protection.outlook.com [104.47.66.41]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3g93wux659-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:37:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FvQtbpNMVIMGcEsk7Tw8nNLSebzpqGvQgMJ7fAXNTIBi6OMjig4I4wTozOytNMqwrxEgw1K5W9zQjJeyOTWTBigEU9R2MMbdY2Uafw1TCpzGgKlGjEDUGdvMwZN6BVEDUWCGB1pjhCibfHS+nfj193aGpbAyDgmp//ciWNYnQkSkc26gNnzsH2Uyww2EZGwdqomVqBgXYANQpXHks7fFrQdXQYITcdA0fgQfVIORzOckFoXg8rbBeCxBBoX7rgpnAVNEHOHOgXqXgSCVWRFCUR+KXAw3ua+kz/5x/8lzAlQTZzBQxX22gi1qzgqDMEIq8mBKzlrrcuGUIeX96ykYuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gST9qa3/vgR28wAMbGSMCc2nMCrVHKknFKslyevj0lI=; b=SaZkSobNrW3cKv7JM+Ie+1GMtTIMHQf53r5ZQ8r0nhh8Rnr6p2sFuQ8SUuagaCvEfCrfCd2sNyKx/2z6TP7qZ2qFBik8q/buiWsmb6m69FEjXAeLn44qScx2ycZkZwhJX/vapUjRW0Yk8HMH6qIg8SZsWCQrLUdPeCLWMezaLqetMEg2b6EI4+6ES4q90Qs8+GTYVJohjV812lueODy698iM9lX7zk7HTKyVNADJ2Mgpk6OhW4APOnkz407wSLUkAzV0Xwi6z1bW8On+L8FDjLlvnO8VDqqmcllDwKqGx7ch5u9BtDJmbb5ismZosLzkQI0gLK7LzhsDK5w88+pYUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gST9qa3/vgR28wAMbGSMCc2nMCrVHKknFKslyevj0lI=; b=LdF+9DtZmvtXLOT/7IZwDie6vWWk/uDse2IgvDwnYI2WfybwZZX9AF/djOOlCQWt06RiNUR1O02ZCzXJhV0sXj8YJOMmuDHaNBdMx97eFZ/KiVPC9eEWftDH6hhVhUeDNAJmIfT2E3IRUv/LX4jcFZVJTvfLKu3gmwvf+IErpAg= Received: from SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) by BLAPR10MB4817.namprd10.prod.outlook.com (2603:10b6:208:321::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 25 May 2022 05:37:00 +0000 Received: from SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62]) by SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62%5]) with mapi id 15.20.5273.023; Wed, 25 May 2022 05:37:00 +0000 From: Chandan Babu R To: linux-xfs@vger.kernel.org Cc: Chandan Babu R , david@fromorbit.com, "Darrick J . Wong" Subject: [PATCH 4/5] mkfs: Add option to create filesystem with large extent counters Date: Wed, 25 May 2022 11:06:29 +0530 Message-Id: <20220525053630.734938-5-chandan.babu@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220525053630.734938-1-chandan.babu@oracle.com> References: <20220525053630.734938-1-chandan.babu@oracle.com> X-ClientProxiedBy: TY2PR06CA0047.apcprd06.prod.outlook.com (2603:1096:404:2e::35) To SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bbb046f9-0f10-4460-54bc-08da3e1096f1 X-MS-TrafficTypeDiagnostic: BLAPR10MB4817:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8/LDSp+jmuyweKJoux/GPIZ7IfjjvqpvsQ7UglF9Gz7F2p3f+iQZoOWlqIKqEc7MuaAHRKHi4f/awmqY7mMYfIspA6MdWns+7XcAWljyzvCgz8Vvm4ndDA65rogE5lnTOtx6mYq2zj0bG+KFUkkEhbBH6i8Pn3IDhBEqyOAQrAekdr+dTHfnyHLTac2fl8RXkkpTLzKsPRpEUPdLUuHs0At8koXOeUBivmgol3geGZ9w5pt5NvUdlmyzkoNxz+0EHE9LDE21jUyH92WBqC2NO46sqMeNNmgXl+dx2Ch2UCA2A8n9/FNMRZjLkv1F4OvzwVtcZjDIXHMh+U6DQGlI81te+RMhPAbZRIx+M8F1UguPqnYxk4scvXBJeBaVBZvhW9QhksMsIhA2luwKl13WnF8XEL2n8axc5cM3OBrB+wuEql/I5w0HyNkVJqT8hxR7XSqLNa1iyuwP3oQfZVx80fIgPnBmom1fR4A+b6k75bYR1MoRudMs+39+psnUUzTMDM1d+y548xBoFo/5xWyL+Rf5Fmxcd2eGoWPiXxFRSM9vrrv/fM7+SgjnVqhzpsePlXOggqF3/D9hAKQ89qQEy2bn5t28W3bGrQeo8lgoGjOo8synGocl6cg1hXNl2+whARQx+8Xwq3aaaSodhOuLrcBtoj2xO5ZIBoBfUjAP6wGJaZMMb6jiMlB1ktS0PKgwSCUJZRvp11WSfdRXiwvSaw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4587.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(66946007)(66556008)(6512007)(4326008)(8676002)(66476007)(83380400001)(8936002)(508600001)(6486002)(6506007)(1076003)(316002)(38100700002)(6666004)(52116002)(86362001)(6916009)(186003)(54906003)(36756003)(2906002)(26005)(38350700002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Te39vUcPDStVN99kd3PNCBjKuF8Dhd7qfsQvvvZRcwT35VxTEX49jDlnxCPNaw5U7nWVg4KGzQn9mTdXLdkYGN55zaXjCHiHS7407Wr/jsKy70e+gO+7Z0KVkQb9EacHZ84dgHYcGSYhK/KRD5aRWX+wHi+4ZLlOkmTXtizHfRZL7YQaIR1qIq+LoFAEj7rYKsj347jc+cvXGbNtGHhLrWplBvFsXEIuDpp/48GmVQCj5SJ8Y4MzDQ4zv9aFwEc3jAF71/CJUSRw7BuKO7rCUhT+731qTUUsgMKRoFWivk5ZKg8dCCYRMxYNfwXepnx/pVrmAMFizJZM3F/H99mmPRrIjJmFiac2zwXEA5d9OTZV2eYKKe6sP3UyflqBrL5g6B/nzKh2dseSuHjujopgoGLoVKOAoYCyHS1e4DlUTHG6lQDK60z9byn4fd5qM0HTdlgpTp/VLD9T72RjaJMhHS2HWZw6dagkXZ5duFP30jyAB+3/KchlD5cvYAza1BMHpOayldj5JuqMJdj4P2hP3z8rBkVANx3D1wspqmJQZg8XGFa19ftIoxkA17AJ1jkdt7XvLxi6BA4XoxzPOHMbIZZJBq0l8qxuxGG+Cob1sDBZ80l+3gz4lpuQG70xhq+OO2t5XRd7LjWYm5zJbzOR76blNfq2IPTogdMQJ/L4iZY2JH4GyVrDu7KG4YggYnEKw7BHAxBi5jI9RitF0qx1SGnoHbUlV7nlcCvHz9Xb9I+jiLcpu3ZleQM06Vik9TK5y4gXmN3u4xS4Xaa1lD9lCurtAoxgzvjLhWROUyCz77XTbxoUiCThVp+dC9j0HXwx8YqIM73umNijCldf54Slei8PH+YlQwAZWpuwGFxRNI+KcsxsQ86sN7orjCKoYrDWcMsnUxLE9UtrxRHzKrnrLyVWYOdMzML0jdLDE0RmW/bVACFsWohpIJtO0GSVCxEgsoBAzwLPAgaIcLzchE8YZrvWNryzB+GHPAluQ1eH65JHLLgXlIzGbelbPqgndfvIkL/r5298W621arZoipUIAj5RtOaZ5cjzh2b6xauVE34R287mtVjU4xTsBlx/j19NAp2kNwknF7KBWrZ5gNGjCwDT8lxFVtc7WqjsxjevE50w++x2zGnDYKLueKGVroE1+sUwLLPkEfNOv8nSmwbGPW73wlgFrAb9L2MXLp4YU19SqqvHZmg32FSgNdbfsB+XMNicm/ZAld3pdojtLHYnxwVgOjMOfr9lU/o2kiEAUDJoQ+nIu4M+C9uAcxn5CsDKk8Z1B/xnEtlfQtXEIcXdRXqzkViFUItrs+RJhNv/7B/BMON1j0eBJnMPEW0elHXByeYKWoBedAc7G/BeNNHUzcMCZGImhd0/1+6rMViXg6liCPnntxIF7lA3vMu0zhr3D+GIM7xzDw0vEHfu/xTQpauRGYonK9daoHGBXi9A0s289PHwtLQNPjUdj2RN0hNLRvoY7Fh0COS0q4aY0TXrGRKPTBlqUMNQ+G4ZkNlWsH68NNidU0JTujvLi+PHR1avQgeZbK0gJbdy959eR85MayO5KG4Uvq6QsfSKwXhy0NlVaLfQnb4TkUy5FpxgVLArtKV4DTBpILKdvc+D1PSop56hQt9kDIqMozVZNh9264fFti3jKeNEuHO+eKMwK1MN7fyvKVM2mpXViXCPbshMO7nLLGffGIyMNpA920AlIgf4kBLsIRdjKw0pUfkIyPQNK9Tet/l9GZJhn6uUZLzbh4/VgrYCZv2E5WTN/hUAtsA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bbb046f9-0f10-4460-54bc-08da3e1096f1 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4587.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2022 05:37:00.1017 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zCd+mbbsoJdaXqmZgtXewiHirbjkUvYlWFT4GcM7UMfzfH60D8YR7UyFd+NvjlYDvIADUEgq4Vj3pHtoWf1clg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4817 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486,18.0.874 definitions=2022-05-25_01:2022-05-23,2022-05-25 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 adultscore=0 bulkscore=0 suspectscore=0 phishscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250029 X-Proofpoint-GUID: N7hPYSTEyS654dF2bJS_aeATictS7tH3 X-Proofpoint-ORIG-GUID: N7hPYSTEyS654dF2bJS_aeATictS7tH3 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org Enabling nrext64 option on mkfs.xfs command line extends the maximum values of inode data and attr fork extent counters to 2^48 - 1 and 2^32 - 1 respectively. This also sets the XFS_SB_FEAT_INCOMPAT_NREXT64 incompat flag on the superblock preventing older kernels from mounting such a filesystem. Reviewed-by: Darrick J. Wong Signed-off-by: Chandan Babu R --- man/man8/mkfs.xfs.8.in | 7 +++++++ mkfs/lts_4.19.conf | 1 + mkfs/lts_5.10.conf | 1 + mkfs/lts_5.15.conf | 1 + mkfs/lts_5.4.conf | 1 + mkfs/xfs_mkfs.c | 23 +++++++++++++++++++++++ 6 files changed, 34 insertions(+) diff --git a/man/man8/mkfs.xfs.8.in b/man/man8/mkfs.xfs.8.in index 7b7e4f48..1d8c55f0 100644 --- a/man/man8/mkfs.xfs.8.in +++ b/man/man8/mkfs.xfs.8.in @@ -640,6 +640,13 @@ space over time such that no free extents are large enough to accommodate a chunk of 64 inodes. Without this feature enabled, inode allocations can fail with out of space errors under severe fragmented free space conditions. +.TP +.BI nrext64[= value] +Extend maximum values of inode data and attr fork extent counters from 2^31 - +1 and 2^15 - 1 to 2^48 - 1 and 2^32 - 1 respectively. If the value is +omitted, 1 is assumed. This feature is disabled by default. This feature is +only available for filesystems formatted with -m crc=1. +.TP .RE .PP .PD 0 diff --git a/mkfs/lts_4.19.conf b/mkfs/lts_4.19.conf index d21fcb7e..751be45e 100644 --- a/mkfs/lts_4.19.conf +++ b/mkfs/lts_4.19.conf @@ -2,6 +2,7 @@ # kernel was released at the end of 2018. [metadata] +nrext64=0 bigtime=0 crc=1 finobt=1 diff --git a/mkfs/lts_5.10.conf b/mkfs/lts_5.10.conf index ac00960e..a1c991ce 100644 --- a/mkfs/lts_5.10.conf +++ b/mkfs/lts_5.10.conf @@ -2,6 +2,7 @@ # kernel was released at the end of 2020. [metadata] +nrext64=0 bigtime=0 crc=1 finobt=1 diff --git a/mkfs/lts_5.15.conf b/mkfs/lts_5.15.conf index 32082958..d751f4c4 100644 --- a/mkfs/lts_5.15.conf +++ b/mkfs/lts_5.15.conf @@ -2,6 +2,7 @@ # kernel was released at the end of 2021. [metadata] +nrext64=0 bigtime=1 crc=1 finobt=1 diff --git a/mkfs/lts_5.4.conf b/mkfs/lts_5.4.conf index dd60b9f1..7e8a0ff0 100644 --- a/mkfs/lts_5.4.conf +++ b/mkfs/lts_5.4.conf @@ -2,6 +2,7 @@ # kernel was released at the end of 2019. [metadata] +nrext64=0 bigtime=0 crc=1 finobt=1 diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 8c9ef6fd..52f25e53 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -87,6 +87,7 @@ enum { I_ATTR, I_PROJID32BIT, I_SPINODES, + I_NREXT64, I_MAX_OPTS, }; @@ -441,6 +442,7 @@ static struct opt_params iopts = { [I_ATTR] = "attr", [I_PROJID32BIT] = "projid32bit", [I_SPINODES] = "sparse", + [I_NREXT64] = "nrext64", }, .subopt_params = { { .index = I_ALIGN, @@ -489,6 +491,12 @@ static struct opt_params iopts = { .maxval = 1, .defaultval = 1, }, + { .index = I_NREXT64, + .conflicts = { { NULL, LAST_CONFLICT } }, + .minval = 0, + .maxval = 1, + .defaultval = 1, + } }, }; @@ -813,6 +821,7 @@ struct sb_feat_args { bool bigtime; /* XFS_SB_FEAT_INCOMPAT_BIGTIME */ bool nodalign; bool nortalign; + bool nrext64; }; struct cli_params { @@ -1603,6 +1612,9 @@ inode_opts_parser( case I_SPINODES: cli->sb_feat.spinodes = getnum(value, opts, subopt); break; + case I_NREXT64: + cli->sb_feat.nrext64 = getnum(value, opts, subopt); + break; default: return -EINVAL; } @@ -2180,6 +2192,14 @@ _("timestamps later than 2038 not supported without CRC support\n")); usage(); } cli->sb_feat.bigtime = false; + + if (cli->sb_feat.nrext64 && + cli_opt_set(&iopts, I_NREXT64)) { + fprintf(stderr, +_("64 bit extent count not supported without CRC support\n")); + usage(); + } + cli->sb_feat.nrext64 = false; } if (!cli->sb_feat.finobt) { @@ -3172,6 +3192,8 @@ sb_set_features( sbp->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_SPINODES; } + if (fp->nrext64) + sbp->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_NREXT64; } /* @@ -3937,6 +3959,7 @@ main( .nodalign = false, .nortalign = false, .bigtime = true, + .nrext64 = false, /* * When we decide to enable a new feature by default, * please remember to update the mkfs conf files. From patchwork Wed May 25 05:36:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chandan Babu R X-Patchwork-Id: 12860708 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0E952C433F5 for ; Wed, 25 May 2022 05:37:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244012AbiEYFhL (ORCPT ); Wed, 25 May 2022 01:37:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41400 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244010AbiEYFhK (ORCPT ); Wed, 25 May 2022 01:37:10 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71E8333A0C for ; Tue, 24 May 2022 22:37:09 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24P01wlF018271; Wed, 25 May 2022 05:37:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=e9oUSW1hSfOVzMG13JneSY7wUdU3yeDQGV/9zNpSavw=; b=i3pQD/aQpCJ/jps6KQm2nWMwoxV2NlIfRC1uFUvBe+csebD+gwEvwzBSO05rpYWV9ubH XU+VqIx0e74sj37y7K5rpLAydYpjpQ+u4XJwXsSfWXZWz2rIBL0A1rAERbOw1JjzEZt6 qCQ4fu0KhavFDkpLXXzAIZRU9a00U06VdgFLIRh9IE2+vH24UwTnL09Nu5hy5mM6Kmds vBNQVNthzoH80RwsoiIYE1mUJhYkX9sm04LFPHCxDD7pzGg/As4dzJJ0ncUixdfniS6t bKZtZAwocVYSWMBA/6OwFqrb5e/iNeyKa1To4C0dNgX9GCWE9HCrlGZV0D5VgBQ90qBH fQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3g93tas47s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:37:05 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 24P5Zt1T025272; Wed, 25 May 2022 05:37:04 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2047.outbound.protection.outlook.com [104.47.66.47]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3g93wydkaf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 05:37:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fof6j/6GpR5V68/BOqumW287jA3MY3Wdbx45wedvhihjWC1CGUk4MJtbOCei5i7YAPvjeGpE83k0ArWpzobGi+WW8JtIR1uC3S5D4csKW+TZI09PzCMVZnHcgpyDZqRwV/Z4WPOQiNvjU/ZSIOzKJHsRxjANLFOHDd15MxODPGKNSsbAtPGiD86VLtqEoODgm6mv9byWh8ayu6zD79Ek76aAjkW03GsQTdNFWHbr3KTL+Jf/b4xGAXyuwMlowoNogef0L/lFEECUS7BvhAewgN/NgVw/iNjvchtqY05vcANXbFFWOv34Z8gU1UgAGRbFgiicz0rtsbbRYoMUG/mHHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=e9oUSW1hSfOVzMG13JneSY7wUdU3yeDQGV/9zNpSavw=; b=KF56pDrqtM1b7fyz5nGs+1xxJ7mA9soZZ6s4cRodNf9tVJDfvSpnR9wO0vDXHQpQSUYeYp3qw22hxomWRYWWPLkYrNfMmFGbSXAIY8uklDvBF6ViazlKqBl22FMZK/CSFUUL+4N9b51MAs7bPizppTWTBvkugJwPY1OIAWqCgPBIf1839efz0B/qH83GFjJBdxt81slFm0rWXIMHPZauGD/aN3bTSYJeYukAGeHF3JubclVMx1g2WbkA8BGC09B5uqsU2f/nKVVTayx2lMPVfEH/vHBrFCL5x+TvzR1vm1sIF+vd33/cel4P1DUulafaxIHJijGf53xsuTk/Noxj3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e9oUSW1hSfOVzMG13JneSY7wUdU3yeDQGV/9zNpSavw=; b=vLOAi+EbLEpoiDtmFm7JRnggs+CUzQwABlXVWHFkPwH7Jo2IconUPBosV1Ep9Zb+XM8CBgGgr/4y2kWzg25fipqvKGH7NU2QXKRZB/bJkESNGe86xfF9VmXLGdLs3HxHHr+Y/bxH+0jaxbHgawkVfpjibVIC0DHQ/sAVr2lmlag= Received: from SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) by BLAPR10MB4817.namprd10.prod.outlook.com (2603:10b6:208:321::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 25 May 2022 05:37:02 +0000 Received: from SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62]) by SA2PR10MB4587.namprd10.prod.outlook.com ([fe80::5476:49e9:e3eb:e62%5]) with mapi id 15.20.5273.023; Wed, 25 May 2022 05:37:02 +0000 From: Chandan Babu R To: linux-xfs@vger.kernel.org Cc: Chandan Babu R , david@fromorbit.com, "Darrick J . Wong" Subject: [PATCH 5/5] xfs_repair: Add support for upgrading to large extent counters Date: Wed, 25 May 2022 11:06:30 +0530 Message-Id: <20220525053630.734938-6-chandan.babu@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220525053630.734938-1-chandan.babu@oracle.com> References: <20220525053630.734938-1-chandan.babu@oracle.com> X-ClientProxiedBy: TY2PR06CA0047.apcprd06.prod.outlook.com (2603:1096:404:2e::35) To SA2PR10MB4587.namprd10.prod.outlook.com (2603:10b6:806:114::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f3afa340-bee2-4b60-d877-08da3e109824 X-MS-TrafficTypeDiagnostic: BLAPR10MB4817:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KTddyC/7XCIUbDrnXfeNTXUgPJQABj/WqyDewOG84GQJdkOjhau8PIeiafMZSammhb1GLdj7jB0uMAT748cikece0cr8GHPqn3m5Xm6kiZK/N3eDFrZkPkZrrHLP6CdKPsKtC9LPV5vi/5J1ZbN6g04lPME75WCb9BcDMorKXQwHTgvYUJeIspn+uGL92XGv4bk1s6ernrBolZk29D/QQ17NZQIi3uk+uH2Hf4aTcVJ/EPd7jjo7tvSoH6LdfX1uGz9mrjwPb1oJyXnH2x0ExNaCCZkGuQliPB7MjT8P3lV7CiZNjmkdlwIUxmqhfnrxP4NkALnNDLIeWlSbMXEDvkbbu1PUi02Te9y6op/+6DGm1YzxtQym9FoRXU6DYfWF2ExoPa1LDwKyIBIvZDcGzKG/NBeHFopu/u8ZqoVhh8aHsNc8ZNy69MUBL7QOSFhFIjrSmbGLF8kFRljgsbSBDYUt03A4uUolv8bG8JjJqmxScJmCbKdSzdQhswVbOMPAyxypkGhWmr56Bef/IXZ84OZ55UR+y7owAHCtMN5FBMdUVPppHgu5ZOWtxNHHcIpy5WuvINxkhdWJFu0czxo6nuC0KOoldASPjRj1fpynZOdbO3ylsNAXcz8YzpB7I3/e9Vx716pJSkXwZ50wblEL5YFE+3Zav+gCqAWWK0pPovP2l1H64I22P/bf+anmYvPlNRuUKsgeZC8g3weXtrT0WA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4587.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(5660300002)(66946007)(66556008)(6512007)(4326008)(8676002)(66476007)(83380400001)(8936002)(508600001)(6486002)(6506007)(1076003)(316002)(38100700002)(6666004)(52116002)(86362001)(6916009)(186003)(54906003)(36756003)(2906002)(26005)(38350700002)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rlM30xffBETvtSDtxc/+vx4o2yI95WG63FLdVYHJtVdPMFklQhs7ln0MeyMZNsMT/z8qL2OyplZXkLQ5wYp4ShQl4OQ2W8cuSO2G6nuyEP8LUQW3PQEdVIyvK17Pw/X+U3B2gwDtyTBtAH2DPw05w6MbmQgBnoLXl0OYaN1xO+iZg7fQVtEY78YbvoDMYDlb8mOn+ifOzR9n791XSGVXy57/soNg+M3gxzIHKRL4BW/J9DhwbU3K/9vKEqC8c/icxY01Pt0ZJEM2Enha/qOWLUr/ohvALfz9NB3N0tC8YYSfdjUTNMZjiljvEZQS3vJrJuX1DtnXFyMChRU4I/HPaNaaAtcu3aE8pIWT/JZH4EfPZTWi10yTMKP7GNeXdl5DLpgqU79wOjsDYVGL0TL8RCmcgFpwLXgK9yq7ypAPoTYSumVAvsBFGdZFAuBjMqmuE+GV1HQ9Z1paPLO8DI4mc5CmuOQ+OrtH+dpRVR+hlddEi3xoXz0BZTlKnybpZfB6XwWJLsQfSWWuK+NHnp1AK1ijGASkyMZSBJhZJ7II2vkkjtKITgFqqFo2zOtvrMZiigNJYyXdKmdkj0Jk4ecBFzO8UjZsRnZTqhJL0JJtf6k9MVA8V6jnVp9RxALfUC7Fz23Cazd9qbNeAfpDpAknSF4h7iHNoAp+ZFOk7VhTyF8/cPWhC9OpZdsyYXxkYmv77AyGCDo566B0P8pnAMud+bwvhcChd+LW0KN7/n8geHphNjp2hrph3ri+2PqPFf0mS9+bY1VBpIFC3e/2EllAIWX8CaUhSpIYCsPNDfmeUoaJmqF5YeOd4TPgm6/++KrjtHzPci575xARNon/Z8Wmt6LrIwmHwfJ1gXUcaeTulxp7TDuGnk7aUZm1BRdJYuPm75Bdh9IxmPBOzRe5WKRHbFBb/agt3w+2NBE1LbMZbcvoltem0Gb8cd5CnhIIq2m/a3i/1i9Wsx3Y7eU2LYc870itFbSE0NFngyk1pRv58fFFsVcYWRuCPAtCWCSwp+YGd1sSLgmpFHGaWRVPEQ1ARJUugM4e+M6z4SUnQ3uMMzo1JZvpXmKB/e7/rRyQTJJ50eiun9jTMb24WyTcrTOd9Qx/oAwzn6IcusMPc5R3bVWpd22ryP1mnhTe5V8jgXGC8QEQOR5K7AYrEKLwGpU1Q0kznjIccpV2AVH2D9O1qd/19PSlsYR/7Kk01a+rTq4bGZiBkaDhAR0zf04Yr+bMHj/TF3F1jDk4YWP8ELY4uFnaC68p1wetcxXndvOHMWPVY+tA0sGY+r6sFx/ck3wH7pu30EuZFJPGaX2GGnPEmeNJdIzYlOoUZHYfdn3srmcFuEkMM3gYBzEieBUJUye3+xfkCl5B+ucqFUaUPZ71SZf29ZgQLsC5d6nUqCyoMcKLZsm7K8OLwajKq/q4L+yHxNuB2uQGHdSCnnj96eoEoY8fpFHzSAokzJsBA4+V6Fqq4i/NmC+ENWbBJuoI6EPDwnDNT4JkAA2fcCxPp6WX0eOnq3u7lQiIqgdw+8ViXADeGKQyCFvi0H9+YIa9lY/ythTIfFWt2dqvB4kWt4SnTYdXw1R52eZUISP+kUWeJczAhMy37Vms1GCb83TeJvy0s2XfQXrrqQyjkOlrlK3id13eOfv0e/k5q4caySMgGOFn3cMNSJc1+fGfGaTKU0SnjGvo+UlXwNbuagsgIANfyQTZ6a52He34zxmCHmAN1FppmEwl5OC/D0vddrVs8BIO8j/4DZ0GhVzE+7nywVy7suI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3afa340-bee2-4b60-d877-08da3e109824 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4587.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 May 2022 05:37:02.1172 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ileag4sE6t21KeTAjnj69tSj0VlL49/5/9hD7iu8pJ96ZjyubYAeMsyeAg/sYZYwK7ixDLc5MTf0juXGqeoALA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB4817 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486,18.0.874 definitions=2022-05-25_01:2022-05-23,2022-05-25 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250029 X-Proofpoint-GUID: Tjq3RgPHR994SKEkSQ3uPi84-_GUMI0j X-Proofpoint-ORIG-GUID: Tjq3RgPHR994SKEkSQ3uPi84-_GUMI0j Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org This commit adds support to xfs_repair to allow upgrading an existing filesystem to support per-inode large extent counters. Reviewed-by: Darrick J. Wong Signed-off-by: Chandan Babu R --- man/man8/xfs_admin.8 | 7 +++++++ repair/globals.c | 1 + repair/globals.h | 1 + repair/phase2.c | 24 ++++++++++++++++++++++++ repair/xfs_repair.c | 11 +++++++++++ 5 files changed, 44 insertions(+) diff --git a/man/man8/xfs_admin.8 b/man/man8/xfs_admin.8 index ad28e0f6..4794d677 100644 --- a/man/man8/xfs_admin.8 +++ b/man/man8/xfs_admin.8 @@ -149,6 +149,13 @@ Upgrade a filesystem to support larger timestamps up to the year 2486. The filesystem cannot be downgraded after this feature is enabled. Once enabled, the filesystem will not be mountable by older kernels. This feature was added to Linux 5.10. +.TP 0.4i +.B nrext64 +Upgrade a filesystem to support large per-inode extent counters. The maximum +data fork extent count will be 2^48 - 1, while the maximum attribute fork +extent count will be 2^32 - 1. The filesystem cannot be downgraded after this +feature is enabled. Once enabled, the filesystem will not be mountable by +older kernels. This feature was added to Linux 5.19. .RE .TP .BI \-U " uuid" diff --git a/repair/globals.c b/repair/globals.c index f8d4f1e4..c4084985 100644 --- a/repair/globals.c +++ b/repair/globals.c @@ -51,6 +51,7 @@ int lazy_count; /* What to set if to if converting */ bool features_changed; /* did we change superblock feature bits? */ bool add_inobtcount; /* add inode btree counts to AGI */ bool add_bigtime; /* add support for timestamps up to 2486 */ +bool add_nrext64; /* misc status variables */ diff --git a/repair/globals.h b/repair/globals.h index 0f98bd2b..b65e4a2d 100644 --- a/repair/globals.h +++ b/repair/globals.h @@ -92,6 +92,7 @@ extern int lazy_count; /* What to set if to if converting */ extern bool features_changed; /* did we change superblock feature bits? */ extern bool add_inobtcount; /* add inode btree counts to AGI */ extern bool add_bigtime; /* add support for timestamps up to 2486 */ +extern bool add_nrext64; /* misc status variables */ diff --git a/repair/phase2.c b/repair/phase2.c index 4c315055..2c0b8a7e 100644 --- a/repair/phase2.c +++ b/repair/phase2.c @@ -181,6 +181,28 @@ set_bigtime( return true; } +static bool +set_nrext64( + struct xfs_mount *mp, + struct xfs_sb *new_sb) +{ + if (!xfs_has_crc(mp)) { + printf( + _("Nrext64 only supported on V5 filesystems.\n")); + exit(0); + } + + if (xfs_has_large_extent_counts(mp)) { + printf(_("Filesystem already supports nrext64.\n")); + exit(0); + } + + printf(_("Adding nrext64 to filesystem.\n")); + new_sb->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_NREXT64; + new_sb->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR; + return true; +} + struct check_state { struct xfs_sb sb; uint64_t features; @@ -380,6 +402,8 @@ upgrade_filesystem( dirty |= set_inobtcount(mp, &new_sb); if (add_bigtime) dirty |= set_bigtime(mp, &new_sb); + if (add_nrext64) + dirty |= set_nrext64(mp, &new_sb); if (!dirty) return; diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c index de8617ba..c4705cf2 100644 --- a/repair/xfs_repair.c +++ b/repair/xfs_repair.c @@ -67,6 +67,7 @@ enum c_opt_nums { CONVERT_LAZY_COUNT = 0, CONVERT_INOBTCOUNT, CONVERT_BIGTIME, + CONVERT_NREXT64, C_MAX_OPTS, }; @@ -74,6 +75,7 @@ static char *c_opts[] = { [CONVERT_LAZY_COUNT] = "lazycount", [CONVERT_INOBTCOUNT] = "inobtcount", [CONVERT_BIGTIME] = "bigtime", + [CONVERT_NREXT64] = "nrext64", [C_MAX_OPTS] = NULL, }; @@ -324,6 +326,15 @@ process_args(int argc, char **argv) _("-c bigtime only supports upgrades\n")); add_bigtime = true; break; + case CONVERT_NREXT64: + if (!val) + do_abort( + _("-c nrext64 requires a parameter\n")); + if (strtol(val, NULL, 0) != 1) + do_abort( + _("-c nrext64 only supports upgrades\n")); + add_nrext64 = true; + break; default: unknown('c', val); break;