From patchwork Fri Sep 29 09:53:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13403950 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 AD5D2CE7B1F for ; Fri, 29 Sep 2023 09:54:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229754AbjI2Jy1 (ORCPT ); Fri, 29 Sep 2023 05:54:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232746AbjI2JyZ (ORCPT ); Fri, 29 Sep 2023 05:54:25 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87DF0199 for ; Fri, 29 Sep 2023 02:54:23 -0700 (PDT) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9aHJ023061; Fri, 29 Sep 2023 09:54:16 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-2023-03-30; bh=eWbom9eYL0y9a6rpeLQnOYAW2IGfH7hjIZRS8GZ5zMw=; b=TUWsOGT4su9mOoj9WLDHdhzoAD+WN0FuwBrp+w9Ly2Z/l02z0MpS99tcE670ZZDrxH57 Crg1JQlpA10KgZIz5C9p3ukZJPx6oDm20sgUI6cyHvUtL5+Can7MlmZidZxt3SygBSve zYoJQbDS0T41wBmu9zmzBaCLix3o1502xx1CbHHDcze+yARE/sKHMdtZ186jCD6sD7RW T0QJnv2PGRjS81kSrCU+V5aeeB0Cf5Qu0hCTfOnlwD2SpyM+ed7+MYPzYCETs+e0azXE R03atqxDv8xl5gnxqsRXXYPUoNKKC2jPO3A+WmKF6l/siZbOdg0mC4pYBAjws331XqtP 4A== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pxc6hmq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:16 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T7bmIc025296; Fri, 29 Sep 2023 09:54:15 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2170.outbound.protection.outlook.com [104.47.73.170]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh231p-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Iswwhlnqu8NPBw2XeGdvEKsBqd+WMEZm6MLBTh9swpQPyfb/cgl5Z/2phsrVuUzXiNS/mI3lM97s7HAuUxsSZ2U20euh1nYp6nejNQm7mFdecIRsxqHlhL8muQg+z99IuRI4c4kVDtl61uUwNZ4gbdTRyoq6UX5UYz61k/6flrLgUmYJJ7BiUFqUnKt/04kefABzWeWh/6BP+1WxoA92KC7UCDUYeUVhyvXFzIb+UX15fyqPXZzgBlmRIMwpRw2XZzeKP4FoQhUEXsMge5A+r2vVn+sa04E+sXUJ7FdNwW098A1rBXNAke/1u6uYllFTUkRCaixRO2N3hez522+TFQ== 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=eWbom9eYL0y9a6rpeLQnOYAW2IGfH7hjIZRS8GZ5zMw=; b=JnTRpCNWKazdQyZBctjTsxzYzjvmkqpRo7QpFD0T6rJz2EsK9KI0T5rUxkajVcyqIV5Pqt8yX84CLHHBlGh++1nAn8WRvklFO/hvn7OmMmGgxNat1DYmGT3J0qlRbrcrhqTWEWlI1akVwh/JZCQuXT5pVJjva5XW6ycFBPARMSs7RJrFYoOGJmTqvLyjmCZbLNfmXwLrGwKbK3w1H7xWUc8kIDH3JwSIbaT+lyhxwpjP9dmTQr7+yLMZbba1/9tgMJhg1AgpcOGIs628r+CMIVSmrs93uaqrxAAd+ad1Wu0GfkAR+ZUfSQz4MG7pmWtNHM9xKjSq476DRtJX6mqHYg== 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=eWbom9eYL0y9a6rpeLQnOYAW2IGfH7hjIZRS8GZ5zMw=; b=u/qKddxQL9EP1q8Xnp731LC8PFry+PFG57AfCqXNFe17BF86d0cl3c1UvnwbQ5yqFBRvj1CeNtJ8cWfef3/5XVRPOZ1IONnzE01xkZ3bnoA8trGNqIMk+nmN0H0lcgFX0LzBAO8kNHMLuxomnGINS9lGH9/S4YD3yRGdf9Tgxhw= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Fri, 29 Sep 2023 09:54:12 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 09:54:12 +0000 From: John Garry To: djwong@kernel.org, linux-xfs@vger.kernel.org, david@fromorbit.com, chandanbabu@kernel.org, cem@kernel.org Cc: martin.petersen@oracle.com, John Garry Subject: [PATCH 1/7] xfs: create a new inode flag to require extsize alignment of file data space Date: Fri, 29 Sep 2023 09:53:36 +0000 Message-Id: <20230929095342.2976587-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929095342.2976587-1-john.g.garry@oracle.com> References: <20230929095342.2976587-1-john.g.garry@oracle.com> X-ClientProxiedBy: BY5PR16CA0003.namprd16.prod.outlook.com (2603:10b6:a03:1a0::16) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SJ0PR10MB5742:EE_ X-MS-Office365-Filtering-Correlation-Id: 6e142ac3-7b9e-4e58-eb85-08dbc0d20661 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: k7AMdGDEsM1+IwALflxQ6DfsRFZxVaeVJOuF6403ktYyCZs4Sc/VgJfzK/hjIme3aXhNmtLn4E9nwB2pl0YDkOxSLBuV6vSRBFrJBHJnKqHj0HOvq4schZM4G+u72h1oHv+WY764fCh6GyQffoccp0pI6jhjlfGQpZ8ZH1tupITSUZInPqCVoZF+DB9kD/8p6/E1C+zzgbW0JLxo9bnCxYmR1Ed8E2KKxu42qvMuJB2yA/fpF81THtdCRS7BKC0fynlxAmajuyFJ7ThMegOp4Or9SezFid8byybrPeLmcXmBGbKXcy/mUFcCFJy+qYG9XBZbthusd90apItUwsD+BdkK8eXrn1k2pHml8F0P+DUi+zuqUvYQ/jaySwoiQz0kvnT1FTrSN4CCGO5P26gfAg0Cu5RRxQxNJFWACh6XwQnPDIKMIhW7qR8CIWrDkmu7xtNG5pT556TQMrXxP/TkUYreBM+06DNiWQGtszer7fmrAfqiF6sMH8xaK98hncv7dPSNIttlz/uyZW0BbWQ1wJ8gOXEDAk/64wmOccMT83GxL+Uyo+cJstkJ+E0jL/a6 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(2616005)(5660300002)(107886003)(4326008)(8936002)(8676002)(6512007)(41300700001)(26005)(6506007)(1076003)(83380400001)(38100700002)(6666004)(478600001)(316002)(66946007)(66556008)(66476007)(36756003)(86362001)(103116003)(2906002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KaNgO/icLCc72QhRx7G10ZBt8sQ54XvRI1gQE8HdA5UENRTWTqnjGyYkEOiMmQn9J/AT4/cGSQLrBapTArGSS4LmRkQqD/kvw9JfpEAKGFk7oQGX9diDo8pc0ySZ7DsvaVpGqTdc35qGX+SCrnBfNNCYf3Gt/Bxu4h9qVBNbXgxeU/FyrC+RvAqg+CZg9lDkqgD/SgkJEZQkj3KYQcSOkE3sa2vUujGZtB6n4vMf8a9y48v7/3PrnFckeMMe5mHk5rZGYZODqOoIjnWpklV0XdIHlrXKD45rqFP1ZOb3Gcr3+6LCXvYOA4Z8S+6j8V1c5Zt9mpmpQWVQiENvMELYCMUQ+Nap7y7Blbm708PTOft7G4DMCPlgAEPjkeyl95L1o1sKjlYWsNGS+Rr04YRB3WRg1x04XTNFECw/4Bo7B+tMAxLhNdIYJof/xhjqZIai1sA1o7b2s7D3lCmap5iKaphQrWUSTyNnaw/2KguJ+pbhJQTB+NLx0R8wiKnjhmytOHFXfIzp1gPMWqHRGfXwkCKj25e3uOpdwSRggzfCt46VeCvc6Z9eEQYZGOt1D8HuGOf35VF4C5Z9U+Y30l7foEEk9UaONTFYnIL9e+qC08pGc1B3AwJWjT4ryBhppwGOKpA2hebzeW241J4lDEfZ1vpJNfpSugkf2cKckS30jdVH2bOI3XMS61t+oKECx4gFYSPO4tDdSgxPuRCS7AygBgJxzg4p1yz+67MeQc8jotrvuTgZGap5FSVnpioHRIAmuuyL6Cd9V6EktwVCHsSSHbsWAi2nwZb0mQ0FMTdl11cX2i719PG44Ug1/6I8Vv7cwlsXDsF/fwOYbIu3+o0euTw+L5W3RRAwtgJagFiBznwkqaw4BXiy+k4mWtbvzk2/Uve2CbVg5nRKsnxvVChemLXd3rfYFCS6SyTbfawLxUc96HlK9Pld4fd8+B0S8hDMmIIz4NhX2lkuYQ15A7/0mxPOzkGhQAkUOpb7Avc6fmDtWZdhuOPNyDRHl0RfFf7PC2RuTzpeuleopsJQJY+Gp/tQQXDB1i6LbvRf7BpQppVCqLYEwK9sbmjb4LXgjCRjaQamsiKoEP8j8WHZlQ8nUaxBgkq1h4W1n5+gz6eTmqoLyy/HZSQJLXiz0NMzehc1YD5Z7A5jDEkFwZ+PbJ6dLu26a9pHpeLW7qQE+fqaVEuUBL1O4Lhj7rhs6gxJj32x342s2FGy+zaH3YIL9n0qMBaB3r+VMpqmKLq/pQANSK4oW4QaCzFYv0VbDp9xksFanPLCsIHTStDJELdwXvc5emSmHZX5dRMXKrYX7EG38C9K3oJ7xc6OHDOJFWHTRgOeL/ZAt8jzMGCtdEsGju/kcw+loFFjEvl4KoF57N+RxOsr4pN86ZSxcCOIVHWOkbHDS5wLvcJw9z+ZPgALh8KwW/qPMneoXh6LvzgXfulX+Q/YT1vvSDbBoi/nIpg7WTnvQRsaLWKzcpz6QmzTcI51DSbtRfj5533mC6tBXDHRJRS/MFMddn5BK0lcZrf2x34ViniR9rzgA4PmOM8b7KXRL8lOdvV69yFEzd8tZNjkWHKWlDyedWuaSs7kNOAc0rLHBCasaDUEZ5CrOQRTF47uuw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: fnHrVdyL+/aYDh8gQFqeTXD4ysaW5h4BViTl3oHa3Wj1/oqfvxzlHywLd61b93JvamjdVuq02VypnPmlhxz2lBkkaiQMgQS8ItpE+Van2rpO6q96PZDjMU7NzZDFPg8UAeo5sT7ApgAXu9+3okRu+4DLnVf5k9pUhXwVR5zPO2nG28v9S1OI+KOqvlwYjySlgusAJfQo/rbrt0Xmx66TkwkddtRvOUZwjcUIzKAHfUAKkD8nWdRMIcEwfgK2r+6c9x7BL3nwFBy5/4Hv0YutBLfBdAfjr3o/gO3Uc6tyeqDUZ+LQeYV7emnmtETlQJu0PJoV/KSsqg/XzUEw9E3iLOeRO6EK+LJH1DEOfEEQLfjnX01ssL8quW4ZSSRQjkcZeIrqkS4bY8X1Lahzrmmk3/nRwg0guc/ZmeBDf/kh3I+L+R9HxJM6SG3tBy23wbqiP59EDtEG4idHSeuJInhgslR6WY9cvadRbdlnbf9+2MzXZ2A6XMxsL7UOnYvsMhD1vQtUJU3mZ7pPwgeZJofmw7xK1pXGrYSZNz2sEaMnIi7+7jjeECkZLS9kCeIaCZWKPkuubNwP0n8yWs+8KvfjMaXQP5UfaRJSP3xecC/BA6gumd5qQfI91KKUyWRlgKS2l50SC3vvpFNtw3l+s7UArXhO7wCijAV0jMh3R7ufb4TN6xkCnYPnnCiISSd6A5jdHeZSycbTLbJ8m+h6X4TDomh9erPXAHj3Y6ajZ/3jo2GBRkpzm0m/B2mRyVZIZmhJoKkLKDfm9n2PgxLFs0AtcRffk6NMu2yq1Ma1/r5kqAwVM+7TeGxv0ang0kfSyN2XRveeUwrfIRJWta6W96kdfw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e142ac3-7b9e-4e58-eb85-08dbc0d20661 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 09:54:08.7419 (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: h1THJKJAGHskNGBpEh5TGXixQ4WAaUB4MVmi0HrgUbr9UHI1+bc55TnbiqKy0C3DTxc5oZpwRGktN4lRx19AeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_07,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290085 X-Proofpoint-GUID: ZYNAYxBvJ4mdNzExpnh1O7ZSM36SBODS X-Proofpoint-ORIG-GUID: ZYNAYxBvJ4mdNzExpnh1O7ZSM36SBODS Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Add a new inode flag to require that all file data extent mappings must be aligned (both the file offset range and the allocated space itself) to the extent size hint. Having a separate COW extent size hint is no longer allowed. The goal here is to enable sysadmins and users to mandate that all space mappings in a file must have a startoff/blockcount that are aligned to (say) a 2MB alignment and that the startblock/blockcount will follow the same alignment. Signed-off-by: Darrick J. Wong Co-developed-by: John Garry Signed-off-by: John Garry --- include/linux.h | 5 +++++ include/xfs_inode.h | 5 +++++ include/xfs_mount.h | 2 ++ libxfs/util.c | 2 ++ libxfs/xfs_format.h | 6 +++++- libxfs/xfs_inode_buf.c | 40 ++++++++++++++++++++++++++++++++++++++++ libxfs/xfs_inode_buf.h | 3 +++ libxfs/xfs_sb.c | 3 +++ 8 files changed, 65 insertions(+), 1 deletion(-) diff --git a/include/linux.h b/include/linux.h index eddc4ad9c899..05dde8723c15 100644 --- a/include/linux.h +++ b/include/linux.h @@ -251,6 +251,11 @@ struct fsxattr { #define FS_XFLAG_COWEXTSIZE 0x00010000 /* CoW extent size allocator hint */ #endif +/* data extent mappings for regular files must be aligned to extent size hint */ +#ifndef FS_XFLAG_FORCEALIGN +#define FS_XFLAG_FORCEALIGN 0x00020000 +#endif + /* * Reminder: anything added to this file will be compiled into downstream * userspace projects! diff --git a/include/xfs_inode.h b/include/xfs_inode.h index 069fcf362ece..7aea79ab3af4 100644 --- a/include/xfs_inode.h +++ b/include/xfs_inode.h @@ -233,6 +233,11 @@ static inline bool xfs_inode_has_large_extent_counts(struct xfs_inode *ip) return ip->i_diflags2 & XFS_DIFLAG2_NREXT64; } +static inline bool xfs_inode_forcealign(struct xfs_inode *ip) +{ + return ip->i_diflags2 & XFS_DIFLAG2_FORCEALIGN; +} + /* Always set the child's GID to this value, even if the parent is setgid. */ #define CRED_FORCE_GID (1U << 0) struct cred { diff --git a/include/xfs_mount.h b/include/xfs_mount.h index 99d1d9ab13cb..d31fe38f7c84 100644 --- a/include/xfs_mount.h +++ b/include/xfs_mount.h @@ -166,6 +166,7 @@ typedef struct xfs_mount { #define XFS_FEAT_BIGTIME (1ULL << 24) /* large timestamps */ #define XFS_FEAT_NEEDSREPAIR (1ULL << 25) /* needs xfs_repair */ #define XFS_FEAT_NREXT64 (1ULL << 26) /* large extent counters */ +#define XFS_FEAT_FORCEALIGN (1ULL << 27) /* aligned file data extents */ #define __XFS_HAS_FEAT(name, NAME) \ static inline bool xfs_has_ ## name (struct xfs_mount *mp) \ @@ -210,6 +211,7 @@ __XFS_HAS_FEAT(inobtcounts, INOBTCNT) __XFS_HAS_FEAT(bigtime, BIGTIME) __XFS_HAS_FEAT(needsrepair, NEEDSREPAIR) __XFS_HAS_FEAT(large_extent_counts, NREXT64) +__XFS_HAS_FEAT(forcealign, FORCEALIGN) /* Kernel mount features that we don't support */ #define __XFS_UNSUPP_FEAT(name) \ diff --git a/libxfs/util.c b/libxfs/util.c index e7d3497ec96f..58b6a85562a2 100644 --- a/libxfs/util.c +++ b/libxfs/util.c @@ -206,6 +206,8 @@ xfs_flags2diflags2( di_flags2 |= XFS_DIFLAG2_DAX; if (xflags & FS_XFLAG_COWEXTSIZE) di_flags2 |= XFS_DIFLAG2_COWEXTSIZE; + if (xflags & FS_XFLAG_FORCEALIGN) + di_flags2 |= XFS_DIFLAG2_FORCEALIGN; return di_flags2; } diff --git a/libxfs/xfs_format.h b/libxfs/xfs_format.h index 371dc07233e0..d718b73f48ca 100644 --- a/libxfs/xfs_format.h +++ b/libxfs/xfs_format.h @@ -353,6 +353,7 @@ xfs_sb_has_compat_feature( #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_FORCEALIGN (1 << 30) /* aligned file data extents */ #define XFS_SB_FEAT_RO_COMPAT_ALL \ (XFS_SB_FEAT_RO_COMPAT_FINOBT | \ XFS_SB_FEAT_RO_COMPAT_RMAPBT | \ @@ -1069,16 +1070,19 @@ static inline void xfs_dinode_put_rdev(struct xfs_dinode *dip, xfs_dev_t rdev) #define XFS_DIFLAG2_COWEXTSIZE_BIT 2 /* copy on write extent size hint */ #define XFS_DIFLAG2_BIGTIME_BIT 3 /* big timestamps */ #define XFS_DIFLAG2_NREXT64_BIT 4 /* large extent counters */ +/* data extent mappings for regular files must be aligned to extent size hint */ +#define XFS_DIFLAG2_FORCEALIGN_BIT 5 #define XFS_DIFLAG2_DAX (1 << XFS_DIFLAG2_DAX_BIT) #define XFS_DIFLAG2_REFLINK (1 << XFS_DIFLAG2_REFLINK_BIT) #define XFS_DIFLAG2_COWEXTSIZE (1 << XFS_DIFLAG2_COWEXTSIZE_BIT) #define XFS_DIFLAG2_BIGTIME (1 << XFS_DIFLAG2_BIGTIME_BIT) #define XFS_DIFLAG2_NREXT64 (1 << XFS_DIFLAG2_NREXT64_BIT) +#define XFS_DIFLAG2_FORCEALIGN (1 << XFS_DIFLAG2_FORCEALIGN_BIT) #define XFS_DIFLAG2_ANY \ (XFS_DIFLAG2_DAX | XFS_DIFLAG2_REFLINK | XFS_DIFLAG2_COWEXTSIZE | \ - XFS_DIFLAG2_BIGTIME | XFS_DIFLAG2_NREXT64) + XFS_DIFLAG2_BIGTIME | XFS_DIFLAG2_NREXT64 | XFS_DIFLAG2_FORCEALIGN) static inline bool xfs_dinode_has_bigtime(const struct xfs_dinode *dip) { diff --git a/libxfs/xfs_inode_buf.c b/libxfs/xfs_inode_buf.c index cbcaadbcf69c..d6ad361ea893 100644 --- a/libxfs/xfs_inode_buf.c +++ b/libxfs/xfs_inode_buf.c @@ -601,6 +601,14 @@ xfs_dinode_verify( !xfs_has_bigtime(mp)) return __this_address; + if (flags2 & XFS_DIFLAG2_FORCEALIGN) { + fa = xfs_inode_validate_forcealign(mp, mode, flags, + be32_to_cpu(dip->di_extsize), + be32_to_cpu(dip->di_cowextsize)); + if (fa) + return fa; + } + return NULL; } @@ -768,3 +776,35 @@ xfs_inode_validate_cowextsize( return NULL; } + +/* Validate the forcealign inode flag */ +xfs_failaddr_t +xfs_inode_validate_forcealign( + struct xfs_mount *mp, + uint16_t mode, + uint16_t flags, + uint32_t extsize, + uint32_t cowextsize) +{ + /* superblock rocompat feature flag */ + if (!xfs_has_forcealign(mp)) + return __this_address; + + /* Only regular files and directories */ + if (!S_ISDIR(mode) && !S_ISREG(mode)) + return __this_address; + + /* Doesn't apply to realtime files */ + if (flags & XFS_DIFLAG_REALTIME) + return __this_address; + + /* Requires a nonzero extent size hint */ + if (extsize == 0) + return __this_address; + + /* Requires no cow extent size hint */ + if (cowextsize != 0) + return __this_address; + + return NULL; +} diff --git a/libxfs/xfs_inode_buf.h b/libxfs/xfs_inode_buf.h index 585ed5a110af..50db17d22b68 100644 --- a/libxfs/xfs_inode_buf.h +++ b/libxfs/xfs_inode_buf.h @@ -33,6 +33,9 @@ xfs_failaddr_t xfs_inode_validate_extsize(struct xfs_mount *mp, xfs_failaddr_t xfs_inode_validate_cowextsize(struct xfs_mount *mp, uint32_t cowextsize, uint16_t mode, uint16_t flags, uint64_t flags2); +xfs_failaddr_t xfs_inode_validate_forcealign(struct xfs_mount *mp, + uint16_t mode, uint16_t flags, uint32_t extsize, + uint32_t cowextsize); static inline uint64_t xfs_inode_encode_bigtime(struct timespec64 tv) { diff --git a/libxfs/xfs_sb.c b/libxfs/xfs_sb.c index 1e71d43d0a45..0c31cd062d63 100644 --- a/libxfs/xfs_sb.c +++ b/libxfs/xfs_sb.c @@ -160,6 +160,9 @@ xfs_sb_version_to_features( features |= XFS_FEAT_REFLINK; if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_INOBTCNT) features |= XFS_FEAT_INOBTCNT; + if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FORCEALIGN) + features |= XFS_FEAT_FORCEALIGN; + if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_FTYPE) features |= XFS_FEAT_FTYPE; if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_SPINODES) From patchwork Fri Sep 29 09:53:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13403953 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 11A87E732D0 for ; Fri, 29 Sep 2023 09:54:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232865AbjI2Jyn (ORCPT ); Fri, 29 Sep 2023 05:54:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232746AbjI2Jym (ORCPT ); Fri, 29 Sep 2023 05:54:42 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4DA42199 for ; Fri, 29 Sep 2023 02:54:40 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9Ssx022434; Fri, 29 Sep 2023 09:54:34 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-2023-03-30; bh=FwbahIUEBmvG4kdVE1iekVy0bJPwJzTPqXKm5nEROAM=; b=sgBX790qlmAlbeUGl4Bd5c7ja/mZXT0Nvp7oDVx3GigcAU94W/GcMjSQl+UKUxJoib1n ply+AWHELhcNVYoFd2pXEGGkZri2bsVYInxhKA5DXmm5O+JJ/zyHoW3n8IRoZvtQgEKs OAqSfVnYtV/u4H/6K1MChzOFzGtVcBNMHOBXc0FhYcQ46sMQcN+Xr+95Eo/6HihCIn4c H/Qs8R5to9XTgNRCLKxHkrnZ0ETQBQqzPa5nMQpTX7agUnTlVg/xfHneN1pwdRFowVZ4 V7YtYSdq1DsFFc3+ZwTh+6Y3g+6CMb++NoeWzXMiS7D6FowdPLKbqsblJDBR5+lqKqVx Ag== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qwbpa7t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:34 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T7bmId025296; Fri, 29 Sep 2023 09:54:15 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2170.outbound.protection.outlook.com [104.47.73.170]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh231p-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mZBUKx+cgPLs0cRenp1lsqWozAb0BRUnwW05hkR83SxwMnEeKg3oASA3Ta3kohd1KJmMy2pD2mejj/rgVWv7h/7ZMtz5ALXnpyXdS1t1mR3TP1G0/2jqxXUpG3YEUg0I/iJ/qpv0CGW6LvxBykf84WJ4oWS5AiKK+w22jDetNFjS3VKofs+ypnWw4cvAzvvxkF12qr3CeMEmUuIDCMWB5ziMFlWAbYnik/hjBDf5NWyv5zCHWAkDEheWCtd8kO1WAUoUQwZ/8HCx0S4GvhDuh+pSBEamoCcuuUdRpf0MFFVrbaGO/rd1j2TkPiFBh6vAFnvXBiiDbsx6rw/Ynd/uTw== 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=FwbahIUEBmvG4kdVE1iekVy0bJPwJzTPqXKm5nEROAM=; b=KmhCg5UOlNu5Tajji2SBqMMNu4FQTcZ/Up+QEZu1cStIT35hixO83OoD7spwok9MwlPR/cB+TMWQvdDH76AputD1yQn+ZQTVGrmZ0hfHUJWFGQmX38AI8dLIAGj4vZtpHw5j6t+XuhRU1AUo7a0m2s077V+PK+jt1/cQItTvtVgyNZ4zvYL6Vv0d3BZ/eSuEISDHrePv8I5XfreH6+sIZ5mSd2y+0pi5Vlxjf8QQfQIZMNZCdZLdFZm8ilk0gvXthxTw2DTDj4ASC/g5AKLJknsFVkJO9IE9fZRXNGII7e7b6u7LBPA44ukQYOedHIlr/+TJ2mx9E6d05v6B7fPF5w== 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=FwbahIUEBmvG4kdVE1iekVy0bJPwJzTPqXKm5nEROAM=; b=Fdmi3rZVViFVHQ5J80aLnHDpXHkonvC9yjrHeKc4L/MWczwsie+xfAYErKtMiWB04k6v6j1SJctBLYplpwLaIVq9a3f3sfcIQqo+/o7hzHgGfp9V9PSlK1bMPmBwkO9uawR4ZpVig8FHklB+eXJQ0u7Jhp4AqG4rvudwFfqN6vQ= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Fri, 29 Sep 2023 09:54:13 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 09:54:13 +0000 From: John Garry To: djwong@kernel.org, linux-xfs@vger.kernel.org, david@fromorbit.com, chandanbabu@kernel.org, cem@kernel.org Cc: martin.petersen@oracle.com, John Garry Subject: [PATCH 2/7] xfs: allow files to require data mappings to be aligned to extszhint Date: Fri, 29 Sep 2023 09:53:37 +0000 Message-Id: <20230929095342.2976587-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929095342.2976587-1-john.g.garry@oracle.com> References: <20230929095342.2976587-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR03CA0132.namprd03.prod.outlook.com (2603:10b6:a03:33c::17) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SJ0PR10MB5742:EE_ X-MS-Office365-Filtering-Correlation-Id: e0f6d67f-1cd9-477d-b775-08dbc0d207c2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Kkn6EYaLMnJwmTnxzjfEyBquBPBvUaHN/lzBGPo2m6s6/XxjAYLQJhAZFZWjPEhdXAyjylYqZcbdvJuT/ylWUd/ufua0yGPSVKJRrH4mbcXD2Xj3rSXtLE5KO8P3e3LfZM3KdF/nB+cMKCKlRi3zJOL0ao/tSoOoASqX5saPhgG1PltYPq1JGi9fsnTj36sAqwbwKmmWhleenRZ0IZyAFVKDUxXUzQ6MBm2ctyynJ6GUSVuQLM3CBNHLsVO9S7u8A05mqvxKnt2qGj5/c1FNiHhZAN4Su+kOk5xxvEREexHl6zpKqylJvEiobsdPKvpTFhYD6tKWSG9nnIg9cbCgBzapVrGRz8+YIQY181U2cCj0Teexd2a6oKzL7EIoKI5X5wMYgIWMJJgRmfv+96qNaQVvCGuN/ztdrNgm0SiCtkECIihXhb0nXYZFgZ6ab8xq+RyMqYWpkjX2iC7PqVu30vSrfv3Z3K2RvNkprtZhWTiJL2CJOLN5pCZMMNzvQ8OLlU/syAuBAi3YQQKMjsPsdkYT0iexrkLk/sLqyIEe0MshFC1q4d9wWE3rDn2qfhWP X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(2616005)(5660300002)(107886003)(4326008)(8936002)(8676002)(6512007)(41300700001)(26005)(6506007)(1076003)(83380400001)(38100700002)(6666004)(478600001)(316002)(66946007)(66556008)(66476007)(36756003)(86362001)(103116003)(2906002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FoO+9LPuN4fBq6ibR/FNLCp8pi9YJELBPDXzijH+RZmiZN6NKR+iCGnd1n0dBySAjiCTi967ePhpeYPgC4b7eRU4rp8Jiwa3Ytj1J6GLnfiCi87UcjD2SmqxPQAlQH6gMh41DCwMe/GgvMGL2UxZVlKjp0i4svOvgZSw8I8LKgaQ+cak8wlSv8wYZ0rnaPAnLowJ9JaYd6gPaPQTekN8lLiy/5aiDV8sMMiiHClTR1mHpqxfNogs8LoHkOGB5mURoGNQe/GNetX+duwel5eOgtqIjC3IGxMR71aDPj7lFSDEJhuvt/SO5EUs38cToZ2vVRvrFR8jL6fS3R/g5nDMpC9Xzarx+P1t2/sOQCZWZ4ELg5lZp3Zd2TGqCnQa+NWsaDibgfLL06gmh4f6reh/CueuDuNKz0romLXQxbJsK3sSFXTypC80XfLY1OVhP9OV5ssqYxNXjFqSQSOx4Kb9eVuOf/OF5GsW2BaRfSQ9tzLuJadbzM17rbAHhhrs0/c+OPRHzsL7QkV+O0+pzVAdZNd8vMcgHQMUzxaAFj28fPT17KAF1JoB1VfQndqEjS5xaWw0uKrpgZq64Sd8/9xDqL0gqnRKCCGm0dGdXnrXT0WDM22YI8bJVEdZYmgFPWrlKh92WO15ye2TeLvBEVhMlfHNVxf44lyTGGkKf4+t3tyUKqMr4rK1O6LZMcwGa5LJOQEB20B6pFuHIi19jyxTug01J8NGQaA5JkTfiMeJswBLJMrgn8lnqshJxzh4bWHXcI3wKScP17sab5TXpgfpEFpSYTzPU/Urxq8BLvjAFz6DCKlOujyKukvnt2L+drU6TjFfJlxC7Jn/2YKN8d7vFrDwMzWr/lLsorezxQIn/zqfkE+3rQe8GpFbpXC7p0aUBIaLvp5H0ANJABruFDb7YnfqEsi0lAIYcWDe07lIujTkP0bU0IQ7RZeA9pU+sd/MP3PdJl0H+5ay06+9johIBvEXT9oMWNvEFE4upEHhTNULBXq5p5KVIvHU6plDuZ4YW0C0nVbFXHue7JKjDDWR5Aip69AVQLBEgnYJZorwIYWJ+iFsonQpnYjx99skIS9oRzl86JDQqir8O5foc1I3XKMTuqM9ij5cnojXwRcFHQ6VBJIXMyw12UPfUhZgkVFfb3pAoU0azkhnQu4LQyhZ8hMsE9JEpSZbfujxWSIWZFna/h4OB6+qBct0CjkWuQ6EBhE6bGCtXqnoN4pQlbRX3hEjbCLcuS7+3UuCmRhOVFbAiFlrcdY1x6wpyeVfJ4E0S9nbaSqkMKOywdYI/K5nlweR0NnsV8b+C8jt0Q7smzpmwIN9eZ0gV8gNvWnBDWWsLPPMG3hWPV8jzCm8B+vTOmJJr0+lYf3rxpYM86Jo5gCV6+CJndDgwQuQm78+7tWM4vyfJGWUu0NPYeXDQPdUaBL99JrFbMifZVzWOQwEETlso092TU+UsnKiO6nINYJPH4xAIoFrx3RX4eOjQQ9slXyKvX1/n6/qjMRtKpO+67cNI/jCkMJ633t0KigcttT9jAZV3T+GrHjJKOEfbCJIvhZxbe7sRiTauowsfig3hUeB55AjHPCPCfONUOEOahTTXheh+EJvATcYEwTQnQ4sZg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 464AXu9i7ZHzwvV8Fr5za4iVfhJRgTh8hgyr53w2JvkTdsFSNuBUMBIp/5MWZl/yeuRq5M2Kk9nPo+AuWC1G5SNve20khtDem1/gTtjIRU5ib1uwsCLZNa75ohQcfQMkLFGoDc28ZlcZbX3wugcNEVNTtqdxXCczDevHU1qoVkR8MgJUaBEHI6gKMjRPlXiT3kg6qj7pdH7bE25+C1B7kuJw/hUriW4fPN8BBjrYJLpYwA/lMX4ry+NnS+3Xjw+w53kk0UcgVBVNbnh1C2WeUphlhzD7cCBYPEpjTF14KRgnczp9uhOJ4LauL5ODaOZ5l9vN1Aq3D/AbiieUODtxKl98ZILDxoPeTlE6Tt+Zu/8NeYQPCm3MOckPZOSZw7ywZ94ev/Y+FiVzlnpfyD0Q/qnpwPaAxcKYoXvv7yXgUuVH8jmd58b8B98DNypTWM9dVczAD+WhZ5J37UHAm+vjyibWltyaywvYZ4ypWKt52QaNxq9Nxy0/pyJLQO5uDjYSfIICdvmGEOgyjCSmRIxsP+lDj5rQ7AXXdE5n0nzJOxTLwvcoZL1SDANfX0Ts2d+vUfLRVvIvlMsmxP3SAMqS75pWFAnudkpsv4IPUn37DnGYQAW8T0HvBPmvjUP9Jrj970kA6jnaUBMpEReIAHRQrA8QxJ075uOI5O1uB6g6yVB2YSiKmK2dT/GjgOEBv+c2Vai5Mm3aifCT7qSljjn0XclMjgm1UIdwpIOYHSLzBABY+DN5a3ELVGkY3cxlw6A1eJSM+7QOoXjk/Um+RqDYlIx3jppJZ4IcjpcNPo7PPMFyHrNEm57kytsxrM0lG7PJ7R158XzTVLl+ryF+GblqTg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e0f6d67f-1cd9-477d-b775-08dbc0d207c2 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 09:54:11.0064 (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: iHxgGlDYTDvKs82imN3xO3d31RgF5GTlJoSAlDBFqpJfiGZGvCi92ghPy2mT89+hh3qf08BWAqwzPThrdO8PdA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_07,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290085 X-Proofpoint-GUID: mD0V3ozQayng4tIUsYRzMHrjcEzf4EJ9 X-Proofpoint-ORIG-GUID: mD0V3ozQayng4tIUsYRzMHrjcEzf4EJ9 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Add a new inode flag to require that all file data extent mappings must be aligned (both the file offset range and the allocated space itself) to the extent size hint. Having a separate COW extent size hint is no longer allowed. Signed-off-by: Darrick J. Wong Co-developed-by: John Garry Signed-off-by: John Garry --- libxfs/xfs_bmap.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index 2bd23d40e743..809adcf67985 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -3321,6 +3321,19 @@ xfs_bmap_compute_alignments( align = xfs_get_cowextsz_hint(ap->ip); else if (ap->datatype & XFS_ALLOC_USERDATA) align = xfs_get_extsz_hint(ap->ip); + + /* + * xfs_get_cowextsz_hint() returns extsz_hint for when forcealign is + * set as forcealign and cowextsz_hint are mutually exclusive + */ + if (xfs_inode_forcealign(ap->ip) && align) { + args->alignment = align; + if (stripe_align % align) + stripe_align = align; + } else { + args->alignment = 1; + } + if (align) { if (xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, align, 0, ap->eof, 0, ap->conv, &ap->offset, @@ -3416,7 +3429,6 @@ xfs_bmap_exact_minlen_extent_alloc( args.minlen = args.maxlen = ap->minlen; args.total = ap->total; - args.alignment = 1; args.minalignslop = 0; args.minleft = ap->minleft; @@ -3462,6 +3474,7 @@ xfs_bmap_btalloc_at_eof( { struct xfs_mount *mp = args->mp; struct xfs_perag *caller_pag = args->pag; + int orig_alignment = args->alignment; int error; /* @@ -3536,10 +3549,10 @@ xfs_bmap_btalloc_at_eof( /* * Allocation failed, so turn return the allocation args to their - * original non-aligned state so the caller can proceed on allocation - * failure as if this function was never called. + * original state so the caller can proceed on allocation failure as + * if this function was never called. */ - args->alignment = 1; + args->alignment = orig_alignment; return 0; } @@ -3562,6 +3575,10 @@ xfs_bmap_btalloc_low_space( { int error; + /* The allocator doesn't honour args->alignment */ + if (args->alignment > 1) + return 0; + if (args->minlen > ap->minlen) { args->minlen = ap->minlen; error = xfs_alloc_vextent_start_ag(args, ap->blkno); @@ -3683,7 +3700,6 @@ xfs_bmap_btalloc( .wasdel = ap->wasdel, .resv = XFS_AG_RESV_NONE, .datatype = ap->datatype, - .alignment = 1, .minalignslop = 0, }; xfs_fileoff_t orig_offset; From patchwork Fri Sep 29 09:53:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13403949 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 736C8CE7B1F for ; Fri, 29 Sep 2023 09:54:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232490AbjI2JyX (ORCPT ); Fri, 29 Sep 2023 05:54:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229754AbjI2JyW (ORCPT ); Fri, 29 Sep 2023 05:54:22 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB2FA199 for ; Fri, 29 Sep 2023 02:54:20 -0700 (PDT) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK91Uw018353; Fri, 29 Sep 2023 09:54:16 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-2023-03-30; bh=nmZx3gXorfzX5hJXn3baKWEAmVdgS+GoPoqZSJu/0ig=; b=OSz0uX0kFnjU7OBtiegGErAaikrMPkN1kXV0QsOSuREjuAHG6sYw9QrT41QgFSCAe6nL hJkT0HCc6pXG8YGK97E5l5wmeELtGb91mBTfsOYBTR9CE2r8crB246A7yQHlTfPt1XMR Isg6YliocI3YeRxGZdi5G1YSAW43CAnR/BpIdWFQ7gNQWg7DQHO1oOfYYQWl0pzEiMSy azBXPcZQUY01LolVk531i9FbO/sYiL1bFbnpwp1TGYPIuXd3QWd8LJLh7uzI6QcyE0su MnJaJO+GjuQdX0zyykeCe3DvPdD+PVGYvQJnUtKAlVQ66FLc2j3r6+kW2Xs82lrc1joJ oQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pt3xct7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:16 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T7bmIe025296; Fri, 29 Sep 2023 09:54:16 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2170.outbound.protection.outlook.com [104.47.73.170]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh231p-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c7xLHIX1RIqN57rrRYPYSDd+tpQ0uInwtaAQnkj2UuQwLqXcStxYg8fg+i2pnf/fnN1mIspNNP36FRWmOcYxVHjdhtKBibEC2YGyqsnjlMsxmWMvpEgigtZak/eh/qcgGSibBH12rKLGfewK/wRs/SGToszgcRT8up8meJGkqAYYc+pIr1mLBmtkw1dXguDNpdVbpmxjQNJzx4DvWR9+wpYlPHhvdGjKRDhrcpRojWDEav+TPDWW/Q98tXvehTMGKUzUcQHYnR51/JqJ3phJm26mMSfeyu270rRrIOfsXRmDRzPCa5YiIseQanlDxhzFTFXgF8cc6L7FuOEcaLLrdg== 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=nmZx3gXorfzX5hJXn3baKWEAmVdgS+GoPoqZSJu/0ig=; b=bKW8Tp7h3CtqJrRxkTB9XpHYPry4NYwZbCGwleIUt5p4u1ZBgtwBc1s7C+E/cexa8ZrXtHW31YkRP9zVBMSUjosPip4bnwswl3wMLJAPpb0NmrsRMcFXYs9DJcWFUHtR9F4+3DPrM18eleUMTlSOhDXrc9rSV7j8lBV4R412AIYZ4B6OUerXbA1Fo/B1OPKAE4iJ0cVeKeVm9EOND+VhkCIz7nuZDxk/BZglsn49YjqeRSCGNyqmryX+F4eBIypv3Zw5hrL8NlPvF9rjdbiUQvVAY+8kYlViHj/47j6QayML6iI+oWSYyNcDx84kv2WhLu7dXawlnrCuyhAq7nOotw== 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=nmZx3gXorfzX5hJXn3baKWEAmVdgS+GoPoqZSJu/0ig=; b=yYAX/QDKBGeOKBapbJcyXRuqMuwoGcBXjPkMONpBjMg8J33QXnzclM5DB4RsrUGW/gdgKsalZHdEHAgZOzqSyHoeSlEfWHRVNnG0tZbvWVxEmJFx5KVaDiXvzKDFvtaxFj8eBqhcQYD5m2z3PjF804dkq+FVHWpi/0pwyhPkCZ4= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Fri, 29 Sep 2023 09:54:13 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 09:54:13 +0000 From: John Garry To: djwong@kernel.org, linux-xfs@vger.kernel.org, david@fromorbit.com, chandanbabu@kernel.org, cem@kernel.org Cc: martin.petersen@oracle.com, John Garry Subject: [PATCH 3/7] xfs_db: expose force_align feature and flags Date: Fri, 29 Sep 2023 09:53:38 +0000 Message-Id: <20230929095342.2976587-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929095342.2976587-1-john.g.garry@oracle.com> References: <20230929095342.2976587-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR05CA0210.namprd05.prod.outlook.com (2603:10b6:a03:330::35) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SJ0PR10MB5742:EE_ X-MS-Office365-Filtering-Correlation-Id: a1891a27-eaca-4439-df44-08dbc0d20963 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: E7V1kDL4nGI57248q+mDRR2gSeIT6e5zYPLsLcdBh2iDF0p0PCFdCK7egvmFqygeID4g0LUjW4tOjkjpQRT8BdeT54PUE1qe7lYLGQ6EB3mTGqE9pWOm43Qau+jKXUPgGF8SLZl7NpAHdXHSHtP7JNmXDieEpZjqMYTcJB9Kl+nt/V+O/goiWI9fBH+T9v/ub2KdEzONcvV66jb0L/g8GKlmrq5yHMsmqKWoWJyY7nygGx7fXnarAwaZIFQssKdB+mrGpa6tDzPHlBizzUFtm3UzMx94QIBb0T9ItpMSDs74FAA60xOWz6mCS3cVSdtGgFc+4d/nrKSOUs/Le4/FOAgJuWs0FBYd3DKST1cOWdq35hzN5dPuXRfp2A39JCsol6JrFe0+AMDAf4pw+Be4uuhosR4JEB/PNxFzTlYA5d+WsU345uVRhZ6alWiI3sehI6APQ/2IKCJODlJWWGB0SiEva3S60UcOn8ntMjUsomR5U8Ti7AvBonfMvJuKllXRSu8m/cc4oedaCQ7tSVndqC89A3nwqDTLHdOWqmEj8D7kBItdg1e6tFb6TlKX9DKd X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(2616005)(5660300002)(107886003)(4326008)(8936002)(8676002)(6512007)(41300700001)(26005)(6506007)(1076003)(83380400001)(38100700002)(6666004)(478600001)(316002)(66946007)(66556008)(66476007)(36756003)(86362001)(4744005)(103116003)(2906002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AbsCxRai8bOqAqCs8lmwboibDz9ovglgXzeryKwz0VGjVAHENkud078yhDi4fb4siIXwcgQo2IJShEO9guZJjgfxCgIhkDtTukVQW9C4rDb46KOkN0J6KzHTY9OmuVK2GdNPPPyo4s6jVHUNzYXcIKJomEzY6qToxxfwI939BUM39vaIZC7GIo1Bqro5A0OHB8vHOCzxpBcc+lwP2SWYKSKZmFBUOgtVmLXzsMNg4javwzE8MX5Vd93D2NT+06j8Jg1DhMIiT8EAfe9iwcX5PDUETnGQm4mGkocLeMS4qMX46yurv6SdtIQFerExebNePmlktO0iRf4UHpc7Z4QModSdJvvp+3eAOv63FLDAY39KHLTbys4C/tJW93yqKNr/5EyNJ0FBOBMUZccd8X7t326nZQDrJrJ/rnFthLXAtzywY7sc8ssxN+x24TUhvlVSC7rUY/3L1Mro2B3blP7lHkShNkAXZwG8UeF1eYYieTpu6sihNMsHfjRiR9Rmk3j9JYhg3YAcP8yoDedqsTc4UxjavN/4T5jUmWe7SLdEZZHforM7PrOhCXBCZrV41OVfT9dE+yJEYKxA0wFLJhPvwul+h+3qDrha4BGAidpeh8Ns9c1RCSUky5q5Zk0sNG1CYIC42NmOyDf2hNH6XeOUkNsfkspmTGYHRnCjeWBThmhg9+ZYOqwYw/FyokZV1dRaiGgSZMLGEuLDaYMSkmz30aQQpamRk5L08g3aAGB2wMtN8pMSgIv8k2L58rMs1ksAMctoiWxsmiMuwsuF9Tu+lO9Sx9F2LQQKp13ilbXfs4szAJlTGygXOCYZ7MRo2DWpxN6jc0rpk9XFPKvRrEUQvQ4PyK3/dvEwlhJzc6ZBxlzkxnRGXtXf+6todc2E/2+HymJ0impMX/80xZTDk208Pk2+VGi5uERIKwdZoyMve2jR7RMAeysnWP/wSVLeg8smvMk5Bgbg2yuxPlmoh4/aXtTBBMzaMLkm5ENMJQEj/I1DfoWU0mV0fmD9KGrOkXg1/yRjf5xBt8S2TSoUXaMkAHX+/1n4GWPQAAYh2iIK3JcHXiCmU5tMt5DOzZg383YER7bCCya+m6Nr2Ymi8DNMW5LtQFE4bUSTGXnjSuFK9f7feawegIrpmVNoBdhKw8XZKqIrFkuPBwFQsDiBQhKty3aDqrJv9LtgEx+CwIYmltCNx/3L3LIDXRkSOaaz9ofqXOgpYCHXBe3gU1pPwCW+vFTE3V2ykHsJqfyRUHuJnkX+FT/XVBnecOdKT0esmclHyXOjEsehwEPWcwZ0zkhL70S8j+B8pxDRXS3R5p/UtlN8QQjfTVk/hku9mpoJz2smd4zbVKO1OJ22l335zgo05dnhsRKEGRFAiZmjxBZb8NYag6fWrv3bu6XMvpCeQBGYrMsemSM+Tr1mzAcSxeNJb6alfrsxfD/0zmZP2yDVYEp1uI1UCRXH3j0eI1Qiksxm9DdqKIAkkQHGLHZfZtsc4Ea6CZTsaFqoU+AqJbAsbsU4B29Io79zO1lyLLaNSQ1hKbpGfZEmLXjeWJ9YRJVefXsZB+t9KnlogvHuGFhHWeL8s5VhhkjRHW9enRkIAX3nU+IRxf/i8C4txdNLZjJwBQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: uWvVg9KiEhnro9p7eSE78T7kelgzdhwBGkZwwnwTrhwcubTlkhWxMFfbBtXAgRNNZonkAmzf9TBMfVrxSI+YyvJfXTjCOpOigTCQvNxkK8+0ls7sCOac6N0K1u6NrazIcmj2ZhkAK+MrPV2PNEDL3xfcf1Sb9swoQZJvzg0CH24/vBB1bp1VyV+GtMIwCWx7nOpu47SyFjmCvO2TRCIOFDLSrdCZMr9foZLOICC1eMYKOg7rdlZyo5rdObuzrpzjq4R3AuPbrZjyWlGIbnSvLFHUtwPejgYxjslVVpFa9dNbK0GTAEoFJu47yV2+SEfa+CrJxX/ugC3/7s58ozNnLb72pBZMminEwUyyw6TiIpTH8zZR8zCeq63vDqXaPknhL94yghKk6F4BsilW3/+RWI5VDoN6n3SSsb6x13WWir25zAv6OePaPEeimpT+R9vC/eswBKC/mKzMgkMInz97RB9HzpspDpR2fCgvCx6ORtkNHBPBDncZWwjO6vmPDr4aJPLZGbN480WwV/rzo9QKqAOlpLZH7mjiDIuk0dKrcpvjULlm0hysQZNNVPYj1+kf8eFBC+fMxkI3qPdKBTG8/MTcHL2uiY3ubVKH3v6cVtciGXQ3Dr4Osj/WPypd4Ps0uKpY+now+AAjKJ5XvD7tOjjiHYnJIfHB8eF4HleJRdd1UeFMTJ6QFmj/mjEziguE93bfF4UxFUgJrVtKXonWpAzZRlbh7xMgaMYjoGXAMMkZV7yryVx47UoWEBPi1uwcM2Z4a1abAkQv8n+t28IxPpcGARqVJtjVXd2ZSKjEO14MyWl6Ouh8BahrZc2XloHQjNb8cDcaTp9OvDu7Q3gyPw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1891a27-eaca-4439-df44-08dbc0d20963 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 09:54:13.7676 (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: YWmkFV5G5pJ39UmUq4RKAHINhkokwi0N3AHvWd50JysE6CaI7Zjqk8q7fxCPmmFfWqPyWbQWGsuHITLJYbET7Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_07,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 mlxlogscore=984 bulkscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290085 X-Proofpoint-ORIG-GUID: LnLP_Yglpm0Ndja50DrzI4yxkmkEI445 X-Proofpoint-GUID: LnLP_Yglpm0Ndja50DrzI4yxkmkEI445 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Expose the superblock feature and inode flags. Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- db/inode.c | 3 +++ db/sb.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/db/inode.c b/db/inode.c index c9b506b905d0..b674db3ca1c6 100644 --- a/db/inode.c +++ b/db/inode.c @@ -207,6 +207,9 @@ const field_t inode_v3_flds[] = { { "nrext64", FLDT_UINT1, OI(COFF(flags2) + bitsz(uint64_t) - XFS_DIFLAG2_NREXT64_BIT - 1), C1, 0, TYP_NONE }, + { "forcealign", FLDT_UINT1, + OI(COFF(flags2) + bitsz(uint64_t) - XFS_DIFLAG2_FORCEALIGN_BIT-1), C1, + 0, TYP_NONE }, { NULL } }; diff --git a/db/sb.c b/db/sb.c index 2d508c26a3b7..8b7d7c215a48 100644 --- a/db/sb.c +++ b/db/sb.c @@ -706,6 +706,8 @@ version_string( strcat(s, ",NEEDSREPAIR"); if (xfs_has_large_extent_counts(mp)) strcat(s, ",NREXT64"); + if (xfs_has_forcealign(mp)) + strcat(s, ",FORCEALIGN"); return s; } From patchwork Fri Sep 29 09:53:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13403951 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 C678CE732D0 for ; Fri, 29 Sep 2023 09:54:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232841AbjI2Jy3 (ORCPT ); Fri, 29 Sep 2023 05:54:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232746AbjI2Jy2 (ORCPT ); Fri, 29 Sep 2023 05:54:28 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50ACC199 for ; Fri, 29 Sep 2023 02:54:26 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9Qj6019170; Fri, 29 Sep 2023 09:54:19 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-2023-03-30; bh=uRezmoaW9M7/tdtG2MUFn3a20ZX+t0e4gPV172Savjw=; b=Q21iWWLfSSALa1F50GwbcHXBP7tznyVE/yKyqZNiGfkPzM3djzgUODgZsq0aXJZhJJeO PLMqtzFfJ5meV1q9DiPKii/j0eC8NdKYcj0J+ccDIs1bxUcqIsgIiktNcdBAmLpJYT2/ Xbm6nLsXlr0xEJ28lgUNxIilXFBic+yySwpiujBTXIck8kr+obpiJqnKot+dZY8+hFNz 5EzrHMfm5tClgHz4DRhKHf4xt+AObJJmnRCEVDM0ft4D8FBp8bPlDz73kollTtucngpZ Z1Q6khvNK29DeLX5+NjjPRZqoEOuIwbYIt+wesK+LncqTTTJFVbjd5F3YUAZgwjZ0NUx CQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9rjupd9c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:19 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T81nsg013858; Fri, 29 Sep 2023 09:54:18 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2177.outbound.protection.outlook.com [104.47.73.177]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfbkk6c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jEHwdsYJJcZB5pu5Zlr76j++scs5aaZ5uaaW/RAwYqkzDsl8HayyIlNUStbXTRxD+H7pOrtT20HaztuZCdn8LOXxT7z5XFYM+zjG2pYHPZLeyZWD/PWyRgvLPL9cm1bdhEelhDqaQKiCv4NdWdxnJeL3attDIfPgIibw2aibdjk+HExTvRbKGfVaZEcUv1XStiPSFp0fxeW4uqM0LILfdNt6OQ+FPOo55BidOLleoGvckZPcCKGiHJedXtUz2GueLEPAFFB7r0O663I4+XdHH4uCk+S0JfS7ZmjLYkUGEk1Nlsm96B/2qniyEOFzd4QcSmTKJSVvDcjgF+UZkFk+kw== 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=uRezmoaW9M7/tdtG2MUFn3a20ZX+t0e4gPV172Savjw=; b=keP9AMsMcman51rTRkstwvfgdA8dQ6wobVu0tLS18ir30wBC/riHaQTUAOzYvjr2mNIwMcAf0EKv4jJtmdhuZajTiAUs5RJ6joDUftyH6LaEaX54HLyCt2YbJRl77LmgrHl0TdWZ6dUA+vDCjb7M2ex3hCeikVZkXwnRILByAzIfbBxToNjuUf2jE4c50P/sy+IPASjTFDQq99gCnthp6WmwNazCfkmYtLp+wQ2kTrvpD8xKZ6Ov8P73UMqyK+RpXROvAOeV3CWEsr84CIvE7nU/XAXfVbGeK6aZ83oMqLdooshsF80lYCjrYR8IRYyHdZAhVWbPf65OlI6cdI2zCg== 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=uRezmoaW9M7/tdtG2MUFn3a20ZX+t0e4gPV172Savjw=; b=Og52bSqUPheMNaHCuvXWJgt/NTquIulKdAInwfzbO4o3gIdKekEO4CCrOyj+OmDdxHP0gpuhDrJMXgUO66mX5nL3VEKm5D3AdKC8oIAzU1qpewXvbGXAw85RnP7rYFP9us1NIhdhSTNrDPmON298lhJIzztqUGjEEP4OrW1VlkM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Fri, 29 Sep 2023 09:54:16 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 09:54:16 +0000 From: John Garry To: djwong@kernel.org, linux-xfs@vger.kernel.org, david@fromorbit.com, chandanbabu@kernel.org, cem@kernel.org Cc: martin.petersen@oracle.com, John Garry Subject: [PATCH 4/7] xfs_io: implement lsattr and chattr support for forcealign Date: Fri, 29 Sep 2023 09:53:39 +0000 Message-Id: <20230929095342.2976587-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929095342.2976587-1-john.g.garry@oracle.com> References: <20230929095342.2976587-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR05CA0138.namprd05.prod.outlook.com (2603:10b6:a03:33d::23) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SJ0PR10MB5742:EE_ X-MS-Office365-Filtering-Correlation-Id: 6efffb03-721a-4d27-bcc6-08dbc0d20ad7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oJ8KFm5NzhSzs5GzDtYYScMD4B9R6JZHQUwq4H/YcY4TBIRDj26fYaZt96g1/9fTRIUPSECmV15ito0d6MBFzVX2aY/6+Bm+4+C3Bvs/CG06zL0SNT0hwAsvxx6X/lNsptknsuBLlW35Y6z/FmM8hURIUjGZkmvJbvIaaVS+gxmIhzKdB7GElNPN7mNdb/tLRcbGx+DP6ug8K/lEJUc40JPorsK5v8Tq/wmmr2bvkxV+ww5TvqPZh+4RX2lf1ZUq8wp4/9qvY4ln/6S1PIIbvc9pl3FfIr36ZdiMMTcZUeASq/Z4xGAzqm1EZnaBrparjITTNyBzfGqNRlPRlFBCQ3Ta9jZ0sSpsmUMAnWBGaJ5WZklsBdRNel12srrlzxArp7qoBgiGtiw6/LcEG7BDnWVDP0ysD2dGixQKMDcl9UDHpNQcK2ypEFmnOhHLfCuNIdaiZk8Meny7FMWw0MjpfU8mqEPDO5VtMy+w2r4QvgfMzQDqTP+/YP7L7iLE7EZzeuh9zwUxsr4/IBF1Sve/phP2mxtJFIuyuLcQmiq2dLyaggyQq2jo+CIwV+GJOwIq X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(2616005)(5660300002)(107886003)(4326008)(8936002)(8676002)(6512007)(41300700001)(26005)(6506007)(1076003)(83380400001)(38100700002)(6666004)(478600001)(316002)(66946007)(66556008)(66476007)(36756003)(86362001)(103116003)(2906002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Gi2SNmYdU3hvN2O9Kt2KWrQrIDz9oMPTK3SvbcKiwRCJaiOKn3Lf/fyR042WF2qd37Ntje+UZ8dgdq/q1UOpBrJkhHgo9mYG91bHNtseCTr19k6ld0ThAW8u5c80ucOR9hIveG1oedOwyknTC/V4CheeYzla4IpMoglgIu60i96V3lr147ukqsw7z5z8/dDflIIN98FS97fkYG9UzbedVml5Ghjy+F80Z5/SD2W+85AKaCe9auO/LnjGGUcrsXhg9+wvOcsy8hYxnSw9TBibuVcI7bDxZbEJKvlCqshqGxrrMy50MSo0P6CWUbkA8KzIT/6iXwXHQveiyiB5fJX6DgLH7tRz4E72WxBSR7Mq9Mel+z+E1HpaY7MMH87uHhgrxNgBwSQGRMAW5u08MWXRNGmw80hnBnwkEpKWQU/V/U9SGKoo6H5kQRvVBbVDIhDl2Am9G9YCaj7Tx1mQ4vxwds0xWrLjHcEeQyOWiD8gbrgvJxjVyhpb+eVpODc3Hoa4diOT98bAdueJfomM37gy4VQcU6YjhNxP7CTJoNFFxET8lGw9pwHLa82mveJIgalQA/tsmx8CyBTVkDyDk+rK3VrMysUgP2lxLXSpfQ/1DGThc727zoChevxerEIuMN62Slz/4DVZ0ssg3Q/vqk/fj3Uy25uW1HkdIccHerV50BZ8YtUi9gNb/11qOaRH2R8ZaF++RR3qJqjkILb+xcOzJmomWvZkh5JLx8ce4OpU1+XCQpTtkdgC6hjAReECMX5BI5DKd85JvkmT7HoLePYkRMEMeW5jDhvKOHJD7tlAVavk2w4B7cubGFLcVDDXpKXBBIbiHWzQXh1sl/xwicP0HTT9kH5ijNRkTjDQL79gBm8RjmoVIU9Wp6UeD05ZijMdlXwYBs4VFjZk7FuFU1V+dF2I2WIZQ3Jm3FDulAyvefhW9H+Mm0iBe6e6nfXj+f8NW8Z7BoMwEcxATOhmmC3gi7ZoRZt/b6fzx/Fd19Zoc7qjpWFAtayDWATy9qHhwekiq63heqwhzlXYiXDIxnW6M66hoYv1HO8K5ZLcaWvqEpQYzFBwk4fKLY6SbImgg0oMPY5zkKHGZbA/HpsggQTA3yxIgEoUU/maMAKhC/QXtGNhXCB4isFVU6Vzl/ryUEhu2piz4247P+FyepUviW3d9iiZPJcI2zouIG7mFR1t1/ay9o9gtEdkg7LqkqM2rNC0nxH6RQc0mhiVwa7jom+KmfJ+7+zIS1JWlGiZ9iOIajmHb+oLdESCfKuXA6dLSzoIOnJkuP/bOVJl+EkiB0qQs5gvQAe2Sw4+4REnp4h9YBwOf6ml2cSznLfyis2Bj0I3KkkYfWUKEaNxaw3uncYzXMNM8VCXnWm/IOpnKACSa/O/Jr4qkqxQJhypUHTXaJW3+aPW8AS+n1ZfuECXJySLmuqdVxncLuX4WN1X5mhUrpV5DIrCDjk1XDqUIoNXNrro3MmapWG6J9OeAsFHEHk3b0h5fldxs3QKObQxJh8wig4yokXVaM51CNv3OuwF1zc26/7CIo/aWPRc+lrxyYEm7z1Wip+Yw20NZxZI6nov2A/CgMEsdsE9QhnX0euKFjlRGrSHCxhsC7GVmH6qzFAhsw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: AvXIIOB5nIFLX1sNr+tfLnUlziFnbseKqJbzoxrQDvJDJ3zgsNXkl36olUqNYDua0bcA0+OfTyS0GQKAmXT5MGyAXkn+sj8FERHZiHK4SWCIqPPjJzD2V8Ws/nfCdzvlfNYiCjaoPg9UQML0qti3WLgUl8/XDhY6ikf1nB/kwFWKYHXdI+IklWIaK/QFSntJNJh0n2XDGTJ0lqlq2i0aAbFT1pPg8AeFfnzsyxW8zV8b+MS5Xjxohr21oeudGS//5cEeRHMC9RQlry3KrcDS3AVMAAQIFIerS+L8rEmZ6eUdc7zuaT0ggD2U7XLxIrN96cZBv8fj3Vno+wjNuNVeCOOaJfYzWPMAJSV9f0sDts7d1fBe1n5hsNWDPvOfs/cCraKltYITX12a9LazX8HaFOFCleT0Me7nj5gYGpTS6QEgtvIC1aKvERppbPoHWuiqyVDCFt635wpSEq88QdCJrb3ZQfL+4DrFK5zxmdfGLV5tJqlsLe/FaEebi4xM176uVWT1gn6bcDVGTM5sdHC1PutPN13+d4HPLZH5FjuY3aMsYHIxHVXv9M08XngGZw3xGnSNOn1PvT1YXWcNlWh/wbtdI0vkWohUWyCIr/EE9imDCGAJPlAg8mUiGmOEMCu2HTdvSRsPuhSTiK0m3LRRKDZWO/+OsaH8gAD3FzduRivJBXl+OQ1p4CFXfwgVrjw0JAbSTQQwsJbBdTiVi3YS5uMTVFZL0nXQrJdn8w1mp6lZVKlnQpsI0ll7NyXzcVYy+CFfKSaX9G354iqiVlnqjhhJ8umA4FvyUhnv/MOAke9hxE0wMJVzo/Br2XLqHu5ufbJmqnQ9haCTcghCeoRcvQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6efffb03-721a-4d27-bcc6-08dbc0d20ad7 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 09:54:16.1567 (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: jUclPpavIxYOZ9QBpCAzIzPszyEGx6MTeLo0graJVMQeYCDWtZnVqeWv4XMpTgZPcJaHwCuDtlSKqd+S9mcFmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_07,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290085 X-Proofpoint-ORIG-GUID: 0kvPKb2ozQUcgijd5nUItxWl8zrTDJTQ X-Proofpoint-GUID: 0kvPKb2ozQUcgijd5nUItxWl8zrTDJTQ Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Make it so that we can adjust the forcealign flag at runtime. Signed-off-by: Darrick J. Wong Co-developed-by: John Garry Signed-off-by: John Garry --- io/attr.c | 5 ++++- man/man2/ioctl_xfs_fsgetxattr.2 | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/io/attr.c b/io/attr.c index fd82a2e73801..248a9c28eae1 100644 --- a/io/attr.c +++ b/io/attr.c @@ -38,9 +38,10 @@ static struct xflags { { FS_XFLAG_DAX, "x", "dax" }, { FS_XFLAG_COWEXTSIZE, "C", "cowextsize" }, { FS_XFLAG_HASATTR, "X", "has-xattr" }, + { FS_XFLAG_FORCEALIGN, "F", "force-align" }, { 0, NULL, NULL } }; -#define CHATTR_XFLAG_LIST "r"/*p*/"iasAdtPneEfSxC"/*X*/ +#define CHATTR_XFLAG_LIST "r"/*p*/"iasAdtPneEfSxC"/*X*/"F" static void lsattr_help(void) @@ -67,6 +68,7 @@ lsattr_help(void) " x -- Use direct access (DAX) for data in this file\n" " C -- for files with shared blocks, observe the inode CoW extent size value\n" " X -- file has extended attributes (cannot be changed using chattr)\n" +" F -- data extent mappings must be aligned to extent size hint\n" "\n" " Options:\n" " -R -- recursively descend (useful when current file is a directory)\n" @@ -104,6 +106,7 @@ chattr_help(void) " +/-S -- set/clear the filestreams allocator flag\n" " +/-x -- set/clear the direct access (DAX) flag\n" " +/-C -- set/clear the CoW extent-size flag\n" +" +/-F -- set/clear the forcealign flag\n" " Note1: user must have certain capabilities to modify immutable/append-only.\n" " Note2: immutable/append-only files cannot be deleted; removing these files\n" " requires the immutable/append-only flag to be cleared first.\n" diff --git a/man/man2/ioctl_xfs_fsgetxattr.2 b/man/man2/ioctl_xfs_fsgetxattr.2 index 2c626a7e3742..d97fb1b508aa 100644 --- a/man/man2/ioctl_xfs_fsgetxattr.2 +++ b/man/man2/ioctl_xfs_fsgetxattr.2 @@ -200,6 +200,12 @@ below). If set on a directory, new files and subdirectories created in the directory will have both the flag and the CoW extent size value set. .TP +.B XFS_XFLAG_FORCEALIGN +Force Alignment bit - requires that all file data extents must be aligned +to the extent size hint value. +If set on a directory, new files and subdirectories created in the directory +will have the flag set. +.TP .B XFS_XFLAG_HASATTR The file has extended attributes associated with it. From patchwork Fri Sep 29 09:53:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13403952 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 1A6A6CE7B1F for ; Fri, 29 Sep 2023 09:54:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232818AbjI2Jyb (ORCPT ); Fri, 29 Sep 2023 05:54:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232746AbjI2Jyb (ORCPT ); Fri, 29 Sep 2023 05:54:31 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E1AD199 for ; Fri, 29 Sep 2023 02:54:29 -0700 (PDT) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9aHK023061; Fri, 29 Sep 2023 09:54:22 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-2023-03-30; bh=d7LJ1P+6FhAWXlMfhnJYPM8n0kwzGFrbDFqiilwP6NI=; b=V0x5HsxpxTcA3FnBlJdr1bFKhrpoyJCMcTTXtiIgYUo3N6KftL94teZORBwVRbv/Ert0 mpDa/r+dEQobwMhgIVIz2hHO7T6oHBXaT8hGuMKgiybxJXHQ211l9gQrTUzxpROXkcPB pLa9fQS4e3x4pp8MOhPT3ySIcU2tAOYRU6+ugJIjKL5qj9lUF1E3efwRgUWrqPC8A0C4 1ORzqwLJGSM0ciFvoXDZuYL1b7G5GHiAQzyGF2bbu8XuSqfHncI/O3IWRc9eYg6jmf5O cpEQqkZXDuLK0bphufZziH99a8LXUX3Tw8+almeelrYRGXJ+NOy7/2UUHIOImd1kZ8s3 +g== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pxc6hmw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:22 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T7tjd7040667; Fri, 29 Sep 2023 09:54:20 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2176.outbound.protection.outlook.com [104.47.73.176]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfhbtjq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LW7Z0MQhrd88nwysZSBMd0X3+RlqjTR/FIQxYByIYIrbxDYP+QdwWN8a/OcnKEafXTeVBt6UC5nYW9eomB/6hryJUuv6Q9i/uKgGRz5i5++ymTWw6at+B7BQDax2nlwMezN538K4+oKrNj0W4K32bMD+VXTCE/3lWul9yj6EoT6xhYkjwUE2lKEJMIE//DATZNo+HjYkjUrQWU64LGBvY2/RGOyi7zEDIpwY9xyN7MAiypWo4Eh/VFGUZZTxtwNi8j32guDuqRmxgTkcDrGiqWnaPiXg8TFtNxhmquGuJd4DrCzTOi3Y54vWNfP/BcxdxCI3y8OwpdAsN6YYy8QFhw== 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=d7LJ1P+6FhAWXlMfhnJYPM8n0kwzGFrbDFqiilwP6NI=; b=AG+OVht1cAM3/p2JL4JXZkbMml4l71DZGzTpylwEV83JMOPuQg5/U7X8OG66zOCMEmssv4oZRoKSlQS0uY6s1rXzHcXFiT/6WG9RKYi3a7eZP3Db9aqZcJFrY7oV5hn/eY0doTHhpHgCi4lo5WemzkBvnK5rNBWWHGVNtZKlaa9Mf5z0+UItxVkBl95yZxkc2VEP67OB8Pn8qmtoAIXPU+EWAm09YaLs145YzpuJNgrvo52hOIJjH4v8yauAxYPvD2FxAKf0ZPS+IAp4zdPlH6VEm7lEn4G4NdUGhzl0flMOGcK0Zwaqb09KcZ3y1hA5/c/a0/UzmWH/MQ1g7MCVEw== 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=d7LJ1P+6FhAWXlMfhnJYPM8n0kwzGFrbDFqiilwP6NI=; b=IYd/jAiB9lAsHcHNpApcxKCT5QUndLTHiA04hmx1tadWDrs0LzXO2YDfPzLGx62taJr0y74Eb7IZWghuvQAoi/AW0Lfch0EN+cFfZ+apMm9F9zgODSU6GJfuiQDcxY8DEQtwICNkzIiN9Muzmn+B29PO0SIrqmR4xuFZXa242UI= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Fri, 29 Sep 2023 09:54:18 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 09:54:18 +0000 From: John Garry To: djwong@kernel.org, linux-xfs@vger.kernel.org, david@fromorbit.com, chandanbabu@kernel.org, cem@kernel.org Cc: martin.petersen@oracle.com, John Garry Subject: [PATCH 5/7] xfs_repair: check the force-align flag Date: Fri, 29 Sep 2023 09:53:40 +0000 Message-Id: <20230929095342.2976587-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929095342.2976587-1-john.g.garry@oracle.com> References: <20230929095342.2976587-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR05CA0194.namprd05.prod.outlook.com (2603:10b6:a03:330::19) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SJ0PR10MB5742:EE_ X-MS-Office365-Filtering-Correlation-Id: b913e536-9252-477d-85ca-08dbc0d20c57 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: g/nxd6frMUkjQm9yzLlucv6k9bFZMkJxf5RD4c/jxkzWfCfIgAhixOIX6S7ClbJk1N61RhYbVo5qoTgneCVzAjGz58DuXtQvlu8eHHeKrqRBJhjDufWg495BIJJtvEwsFc6k6Ljsne6+as5T9+RWy5OKUmb8cXB92jr6F1sx4Y970olIGx7eLFMEa8r2xoHPyV9HD8WH4PntYMw3hVPV9hUll/AuD/ACiv5KeNu19FKsUpj52RvZTkL+aOxW902PmbwqzMaQFgWVGukEI1yuKzbFKcZQ5dk1PJliB72qLoPhuu+uPk8KbeQhA3uo0JL9DBjBrS1Zkzbsbhe53yf4iTHIcbnIrP/RZLtaeBCe0EaogmzlWcusK4/8wbtZ2taVPa84N0wWNwnR9qg1bwxF4WdGB9TzesnabhyPn+xZTXB8OLgQEJTQTwWQZDLtmALZPrR7Fsh5O9mDec5r1gCCYlk9cmTdmYmUxNtvkVmzCQgGQNqwwzwvH6kmoUOHX2vDw/vqQBV+2/LMm4H774JAVv2nKIMS2IFl/43rkKUzMZLwQ+idK0lxsTIyEuvgwJRj X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(2616005)(5660300002)(107886003)(4326008)(8936002)(8676002)(6512007)(41300700001)(26005)(6506007)(1076003)(83380400001)(38100700002)(6666004)(478600001)(316002)(66946007)(66556008)(66476007)(36756003)(86362001)(103116003)(2906002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sotKm8sLm0k5bzUZxdvXAaE7SbyR7ihe+FzMmEqUG5rNdQmowJGztDzcl4/Fjm2e4PXHFlmKE0mLAr+cxhdZXkddrUkig5IdYjHMsuW7VLGivgM+S9UDc7O81+qIefanIogHCSeOYAXj9OCbqkv95Hl2mY/Hyk6ncEaWH0Kr1ofth2EmyeAhriNMVkEPNdQyH0JG30alf6bm2SOXNYEYaoHMG97HVFwERcJIE0Wmn4AFswEX2sSifhzSmIq0nZU3nBJM7dxSTFdsmKyyltKXu8fPqpkzDPngE7ynbscH9P9/wdZa3ILS0hUwSS7siUzT3P/ncr7xCKbeF28BfhVwMDPQb6+pZFSWZG6dg7OBqgy9OD9c+CQeoJrFASP5qe8D/ruTZwy5gHMzCftnjoT51n03sCpJKnkzTFzh0c53m0eQ10amt4TMFwjDQAcWNolJhmioY0oEFpV+9b1szAGjiSyikvhMNjVwe+J8sNNyBMRqy2BlRrls0cHn6+ydqw47voydqwvLrT45GGigqLrP33WS2TK2qMmff6/8BmdIN8wK/FxPsoY2QsM3saIXC7F/FH4uGsxwmZqWDg5G8563a16l6dHufAHGPGgd4zb7kP/dwPFE3txWw7gxt6MwigtFVe1I1L8NW6e1qQZ9Ted79SMMBCMJb0VqjZg6mUjPKZ3WaulL6dxt5gviletjTkwVbEs7E9T6Q60DCtNgbb4a5sFfuJR8SK8QdBKupG9c+LqJ4QQixYadodkIVNeSH3IDSweol7Ch6Qhv7VxqFk61HdbOwIgJvtuukMHs6ixmDa1DNPVgKth7gP9p6Td55MqCk3P7blQhR0dwcXyB+wUksFx9vgKfc8VDuyrOqLnvp6HdVs2qQiXTSO2BJVXpLFZJwjOFckcg7g+EbnWvIAwgsiJPt80PRB99VJZDS+LhlU2y83BHZVBNLb764AbEFF303pAQdRCWS42hDgzx1L0PCKdzdCzcdC08SAasRbEuJgS/G0m3Xwty/Hyc8VtBS8SCi4SS/Td9lfnaIjWEPm4HuARwNfWVxFGqV3kAqyY85+ddhwHaD6DDQLMrhbk3dVnDq9/TvGtvr9s9jJ+LguQyulWZzSMKKx9kGk9DyAnbxCnjTkyxQA85qn89pXLCOR6b7pHtLvU0CbYD/SqSV5tmgBMrod+aW+ksMqO9LaYQPfz4LRM/WoWk37guFyIxE0aM8VD9b0XTMTrPeHBKGioHsGHDJUTUd3mXUhF7QktY3WK1BefcgQt048FdOw4TXkCX9beidyspGSCa8jyzsXoWlIfYBQUQgJrQypgn7vymu6KnvqObE8UoQhg0kaFp9loa27zQMBm8/GGcueGbL8lxTosfeeb2Xb2azfuYrVL3pUHug5iBuBb/1Y0et149cTN7RwPjIzMCaQdWhN3bsR7U7P/YdKsMP0fnFTgf2ajCKgDQOu7W8AJnI/H9qqdCxtOMnRPnnuP4BmbHNcaIzGren4ma+YV7BJtlKy0nUlH0tKmk8h7WYtGvqd7WwRbiyOHqlbu2ojqWBKyx+lSimL+Nm05+ZDnMkUqIW/ZjtBbN4dZQ7z4f5Zrv4wMCALLSuRAtZG20A8FQpMjDdEJdqTTQPA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pKhO7UcaKRSHw6Y5Tti57gn2FTWRXmB23w38WHUwGOg5VM7TB+hSKcJeglV03ArI8bqhytEtliuuu94Z91p3ibRxMxYG+rTpFCm6xEf52ycY6hGixVWR3p8bgAVoqeqCzhEFccA9b3WYcPgJrz4CdhCa9b74ZETn8Vhw5/cQJ8pzCWYIHgI50sdx3mzVQo+k82bkwUpJ/DId0ccd6VptUFIofFEBR+VNFZHNZVtuQE6A7mYJC/Q5Bg8lRhMUZ9vTGh5rQ46mjbCNy+6XDIji+2edVjpC6Zy7Ia6fTIJKVUHzKxXKqSUs0JPH1NUu5IXCeCY/l5lwtG/Fj1vKukmbGcVyAhq6eJgO7gsbRDEv4fE0bVOIqZfpoi8a57zSFRufWxiSxjAnRTSUWDZVCyBg4+9IgFK/NJn2lhQmEzbXayIhAXPAZ4JXwPVafC10h4quRcGCmGDCfG8LX0AFJQJD/997ev/AWQ44Ygo56Vg6oCVCLB/btqchHzuL3w4Nh5yyFCNonvn4/UCbYcvFxVreKLZYjZqwi1QNmFiNVn8sjF5va0oBRjRP8C/YRiqXzb1OhKZNryucfPH/MJIsF+KrrRmwYSGpV54D7F7WU76wWcqiAD37UJpT+vhUPoUEmy1InvFC7mMmcajxmlusso+YNxIe9LoKRiKtepxkItr6GNnBf9hOgC+RNMOQLiaSYApilv5kW/cvAQyBivOjDd7qvgbngKZUvOtcRuqi5ZDqzRBP123ZYWyFMNGxbETwguYSqHHR8GjiRVZIpYjFSvYTzh3m6bHuHM4fu9CwkgqO1EO493bUxcqzij6KwzWcUXJ665LlmmvXM5SM24P1Lv2K4Q== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b913e536-9252-477d-85ca-08dbc0d20c57 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 09:54:18.6731 (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: 6GjQrFkbVOojnb2jlPPDHJUphPdCnFBaeASzYJvTTyrG45KrHAibsNftnpeiANN1dkvTtDJPiWG7EsWgx9jDDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_07,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 suspectscore=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290085 X-Proofpoint-GUID: GsHNL3cpLbmz2lipyD50PXdQnLc0JGEM X-Proofpoint-ORIG-GUID: GsHNL3cpLbmz2lipyD50PXdQnLc0JGEM Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Make sure the flag isn't set incorrectly. Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- repair/dinode.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/repair/dinode.c b/repair/dinode.c index e534a01b5009..a9de2ee73ef4 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -2262,6 +2262,69 @@ _("Bad extent size hint %u on inode %" PRIu64 ", "), } } +static void +validate_forcealign( + struct xfs_mount *mp, + struct xfs_dinode *dino, + xfs_ino_t lino, + int *dirty) +{ + uint16_t mode; + uint16_t flags; + uint64_t flags2; + + mode = be16_to_cpu(dino->di_mode); + flags = be16_to_cpu(dino->di_flags); + flags2 = be64_to_cpu(dino->di_flags2); + + if (!(flags2 & XFS_DIFLAG2_FORCEALIGN)) + return; + + if (!xfs_has_forcealign(mp)) { + do_warn( + _("Filesystem does not support forcealign flag set on inode %" PRIu64 ", "), + lino); + goto zap; + } + + if (!S_ISDIR(mode) && !S_ISREG(mode)) { + do_warn( + _("Cannot have forcealign inode flag set on non-dir non-regular file inode %" PRIu64 "\n"), + lino); + goto zap; + } + + if (flags & XFS_DIFLAG_REALTIME) { + do_warn( + _("Cannot have forcealign inode flag set on realtime inode %" PRIu64 "\n"), + lino); + goto zap; + } + + if (dino->di_extsize == 0) { + do_warn( + _("Cannot have forcealign inode flag set without an extent size hint on inode %" PRIu64 "\n"), + lino); + goto zap; + } + + if (dino->di_cowextsize != 0) { + do_warn( + _("Cannot have forcealign inode flag set with nonzero CoW extent size hint on inode %" PRIu64 "\n"), + lino); + goto zap; + } + + return; +zap: + if (!no_modify) { + do_warn(_("clearing flag\n")); + dino->di_flags2 &= ~cpu_to_be64(XFS_DIFLAG2_FORCEALIGN); + *dirty = 1; + } else + do_warn(_("would clear flag\n")); +} + /* * returns 0 if the inode is ok, 1 if the inode is corrupt * check_dups can be set to 1 *only* when called by the @@ -2833,6 +2896,9 @@ _("Bad CoW extent size %u on inode %" PRIu64 ", "), do_warn(_("would reset to zero\n")); } + if (dino->di_version >= 3) + validate_forcealign(mp, dino, lino, dirty); + /* nsec fields cannot be larger than 1 billion */ check_nsec("atime", lino, dino, &dino->di_atime, dirty); check_nsec("mtime", lino, dino, &dino->di_mtime, dirty); From patchwork Fri Sep 29 09:53:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13403954 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 1A7CAE732D0 for ; Fri, 29 Sep 2023 09:54:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232748AbjI2Jys (ORCPT ); Fri, 29 Sep 2023 05:54:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232919AbjI2Jyq (ORCPT ); Fri, 29 Sep 2023 05:54:46 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28E671AA for ; Fri, 29 Sep 2023 02:54:44 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9SMh022443; Fri, 29 Sep 2023 09:54:34 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-2023-03-30; bh=+2RGFUK74Hob4rt0egt25TmHZjkY4t9q8LsbgPTMJgE=; b=BltMKpsM7IpDfzli6mnDTWXR/yj2sv/dakIDyJturPvx/b/nSfR9k6SpG/RuDqc9YrT4 8RCaavyBPPAKcHg33USLCeAuOxWxxtzWKr+Ri2aizlzEo5JYQ2KAUOm8wsiqNjLC+b6b KjvTsn9fOg1xfH+eZ+vQhR+4ksUq+U2xExCrOtQAZ9jAVMsgzKyp0STAu8dX+1nyEQy2 5ZcfDdIAWhRki0fZVq2+MQTptSIJaAwwyDc78CLxYZM0YQHd1XP+Eg7x62CK9K1f51KN ldRXp7c63YnLWHMuic0th8xthx3wX0Jy5/OEibg6J9AvXD1DQRPtgE5WtGcMqvJiyHsF oA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qwbpa7y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:34 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T7wvle040652; Fri, 29 Sep 2023 09:54:23 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2175.outbound.protection.outlook.com [104.47.73.175]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfhbtmf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fQVkOE0LLG2meKGCkFVCg6aTcCoTFF5FmOB5L8zjjYe3pbyD7F4PvByBLYS0drV+ahFc+YWMjvWBUGv8KDDYO4djmGDTPojOcHl2zN+ssQq+OftL6VL1yxfZT1lq/odQ0Dj/9d8FUuZf1xZ/Ja9IQ7uN8ZyB939LnerZ4LDRXXJV6r0QvVk8oocnj79NsYAAecQZo341NRu9jRkU/nmD5FGDiAsWhiOpBOFYKH94guY+jY1v8RW51ZD48uUATN0wt5IhbW+4CP1Z0Mk64Y4V1M02PpC+jA40iWVwXEs+qTSTxXAs+J/En+B8UTw4TabzWdqcr0Px2BXhwT6+ygn40A== 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=+2RGFUK74Hob4rt0egt25TmHZjkY4t9q8LsbgPTMJgE=; b=Htq7Kh12i/jtypfmY2rWT5Hui+yV8Z0Fl7sE7omseVlqt3RCvsYZB/Y5VTYFJ1+KYyrd/jCmhS5NFhP6ULiqc0FXAd8aAkNMuMvwx9cKbyQsRMhds4JCxPs2ZXyM0q6o4xdA38OJ7yA1gJdf0Y+f0auIU69j+dPaOGR/TMS9oFXZq05aZO0QjE6SgQ52/xsQ6bzFcP+nfD0DKGhgrhNagRl5x9KodS4AztkWOrZHv81IuQ1jKIx4gj4uiKeZTQ60+OfRYPNAO9+fP242RnZWy4ggOaoilJjx2Cvz9Icyng3UCIOD69LzBbeUeDt1k76nErGuMAG2Hqi8sPmEeAtLsA== 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=+2RGFUK74Hob4rt0egt25TmHZjkY4t9q8LsbgPTMJgE=; b=nn7MVAZ4JvCJkfBIltSUctBe836qCavHzqV/f0JMi9ey8aaaaWZlbwN415YpZMtI1gMS+k2Qh7p2VpK65LYcphyKK4r6poPxAhwZZzYog00EmaHQNw6PlMGicBWG/M8zJ125cIAU2rNab44JVQc1XIdRilnt7UHIrlwt31H6ZPM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Fri, 29 Sep 2023 09:54:21 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 09:54:21 +0000 From: John Garry To: djwong@kernel.org, linux-xfs@vger.kernel.org, david@fromorbit.com, chandanbabu@kernel.org, cem@kernel.org Cc: martin.petersen@oracle.com, John Garry Subject: [PATCH 6/7] mkfs: add an extsize= option that allows units Date: Fri, 29 Sep 2023 09:53:41 +0000 Message-Id: <20230929095342.2976587-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929095342.2976587-1-john.g.garry@oracle.com> References: <20230929095342.2976587-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH0PR07CA0116.namprd07.prod.outlook.com (2603:10b6:510:4::31) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SJ0PR10MB5742:EE_ X-MS-Office365-Filtering-Correlation-Id: fbef5a04-3e08-48c0-1591-08dbc0d20dbd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RyWLoToB4tAHZ2HQZgBfRrKiykAYk32BvYBUWgN3HXzpljPRcnfUbGCRrlTu7Y+0QiCbntnq0LMsSDyyrGx/b1VhduIIZzQd5CiS4yBp89QfCPtZLY16ZvAeT6XDb5o9JiS66HSBsWGGPrOeuwq6hZb7lrWhu2SxDP89Gz34gFh8M+oOSQ7L/GUkn2xZbeh2exnz93qfgldTh3HBx344ohMeOYEVS7+JYxxLlIcpbKUoqZavvMc/fmPbNhX8sOfzJ9tJ0DLYxntGWHi5+rkChIiOJIMd5vhYbr5nYYf8uevQEwlfcDxhuHIGwPu3s4GraHft1jqpH+4Dhse1043XeoQOJzcx/rKTj6e3eycEqu0TGqLGIzR8lcF+p+4zcDkQ5WM3dDSUvwMslO0v/VjAisXJfKKDNE1rqv74jsv6HXA3jV51qbn6MNol244bqC2l/da/klGa/ROJIWotrggYXKrAjiMvbO0dkqob8Kng8cvS4mJi5Af5d3kCqvlG7bWJXtKYs0X6ho+1snFyIhL9+dSZO/H5Fmv28AjCnEvSvHGwb8jf8ZxVs+ues6OseTHvr8jbR2wKaP5rbx6BlSHGyqjuy0vsM5jk6WMwpfXX91I= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(2616005)(5660300002)(107886003)(4326008)(8936002)(8676002)(6512007)(41300700001)(26005)(6506007)(1076003)(83380400001)(38100700002)(6666004)(478600001)(316002)(66946007)(66556008)(66476007)(36756003)(86362001)(103116003)(2906002)(6486002)(21314003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PXEbExQfI/KrP4iHZDrzitOOubI7seW8iULVfAvobF+HQudnFiwMeoAOW/SYmtskrJcIo86xBQ+cYXAANRRimU83XGeVO0d2BK2X/LL7Ud+ylP3Qj9UyTHukRLnxMu5JJ/XXxCCveioyAUvRuFr3XaZ0ZgutlRQEEMG4+HFs5tP1qIzFjLPHMsLw94LoUfjU3L9RYUnys1E5IUuUzoEMIceycnvcHn89fvichTDHvY/6r+iU9h+PIMkk5EE7tmX4hi4jWjNDTjYH26WYGJi+L0zsWde9kCk+DFTicH3HHooVifpF4fs6NfDkq15rq3qLr8DFZVRvWPP9L8jZzrbQf/hR+QxEt1VQwNydObY8vKoUOxOOA5SCjkZ9+rgV5tcs/LJZW23ioP8UyueYF8sTEckdezipvnH/muGdUfI/4xwC5cCqUf/2JlnKP33plp+gm7TvyHtWnW/JU6JV2JxrA8XaPDXxfEtWCnUT8b7dRbVeONMrCs0GAhRQTDtdlSW4PTROGL2RYxdQ7YL8cmwQ5voECkhVOE/Guxnjx4u67ab+0R1kDKUQGFqWGHMvGVf+TpLgWtIXTLvTRCCbXCWMV4MT5e7xYXC8QNVdLVFSy3jPdpz3JC/XqWwvRm8VPoCCsDZ+Bt4gmYl2lbPHDVFlP1ZzIHvfy7j1rnhlqQQ5ZHlmFJ3QJ4Vh6faN/J3tA2+DkwrLzevzdqWiFDmxGrBjTMzTHQ56aEG2EECA888Q0x0S28eUXpoT95KVKF+qp+PzK6icbKw4m8jz/OsCagZcXoT4+MUMP8eLaBcSjrhZeMdkiApKUQlRxhknWIG1llxaXbntk3Q9hcz9Qvn3emUIjUV2/8RqbaTUxFtzWRe7wJdMeg1FMP+1NShvpn48BJk/MGXRjvh7idLEp1Nz8aJrbqhRzUzpwSl/klxkOaRR/mBM3r1MUHAhO7mTJ0s+MExwqP6dNOfmyoWNMBLpO37NKDS4dgPxvvsWJ7nBlefWQH0JC61QV9UGzncM8/DDnv695rf9SbAk7VJ9wl/+oIYrl28uH6IbzFRYXsNGL1b8PRNamAwaxSMdHCmUFqJkFTscbHyjlDKVerKeVjvVCQc1mzPPF8YqFv7/E1MYGNmfm/Krq6gdDz5xR6yOW0nowtWYFFDuqWZcS6WrrBHXmVaRLsvEw8vhQzh0oMmYmZrcIgb/n/LnV47C7C/3/bcyk3Xt1XGKFPGRz2zaAckjMAT2tEX1EqNzcjDXhHEXDZnKbD3I572OpvbdR6UviZEfyUAJJz3K9w0oO6LsP5SJpOeNpD5sxXR25YUf6MENojq40CK7gH9j/5l9LuhgGtsRX3ZUElP9pBQVKIanqWNI29y1yOOg+NnsD+Wvydnu35up4ViZZ+AEOAgu2Vg9KgbsYeYaL10LtDTexd60r2BovaDT+VICndKPlc5i7s4Z7zQmTOQkY9K6TbUDs2zOYmsG4F49kawGh4MHjpofGRM51NRjovfhRKb50CAaT0wxMvnO3cblJoPvAnVqGiydAwdEkHq0lT5epKeRoxkx0cEzzPJzXhG5DpYNtCnEEMDy0mdMnfGBJrxCzyPoytApYWGKz/pFy9r2cY9j8dARLnSnxxe5ag== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: HMke9V/Fu5UR5VHLf8w84ow7G2O3Le2WcEM2pepiO7Gc9WVx13EjEIV1VE+D8/gZ+mT4+MS15dHM3luAc0joDGarVULTkcjVPX1rZC1S20xOaH/Y80dNqOrs8NmKgTUs594CmvqoO1OkzUEtCnVcka92Wnbu0f3h2E+bYfMfdClbB1kzsRw5YfV5AayenDDpwGqpENQvaQfkS0NaaEKmernpdsz3SySn56tAKSA2Q92B/iZwWg7gQX228ipoEJAQ7BPErQHGKZyw8bxRZUn9bxniatw7i68HE7nz4GQZdKFDqVA2WKBozMh7tB1qNvQlVewDvXkM407eC1nNI6FvoEpT9E+udRfKUSDB5sN/oRihHi04rzNCb8tcpYhv2dnA0QTCX56z+YqHZGpUOnikNdwpz+67IFaqOuPhOv16ux4JxyYF0iSgwPcwBA2glnuSNiIOKT3HK0nVAXMrxpPHJYRvOxBqfMDhoFRhLOQxuDCprgEceiTaldJDrODJZgylIzB+bW9qMjG1q3oBVoNIi4vgAOIq2aSTAftaMMEA94/0Bnca4xx+67r0QYvVQkmTkF25RfgOJzHsyMsgZpxLEPHxp8SUm0n/Z9wuy6Y0DItH0UZqxshmn6xKdU2WCs+nWjuDsJ2J+TIMkNRZ1Qq2fYA4URrt/hlmmOVkEI53PDtUTe0HqS3oSv0rg5m1yh3LAotVRHZ0kKWsvMYYpb2ZdmlhuEraO3AcvMI+g8MvOeOUl0em1jM23B6FHvN3IGr5qvqOcE5tCOxZgw6BRodi5N4vXS4MfvoOj/sy92aAXzO2Q5GR3lkE6g1oeWJE5CHUHJQFkLwnAJOzfYMHkh4W+w== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbef5a04-3e08-48c0-1591-08dbc0d20dbd X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 09:54:21.0095 (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: czcP71KQ/SoUWmSEKXA5GqbE27XQHj7SHnIvTooeE5RN0NLwZy7PkfX+WLMBtgZrXDHb7wApdJ7k5hP2TdKjUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_07,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 suspectscore=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290085 X-Proofpoint-GUID: GCyPA7O3edKj-OnOIJI3hIUMNhK7wada X-Proofpoint-ORIG-GUID: GCyPA7O3edKj-OnOIJI3hIUMNhK7wada Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Add a new mkfs option that allows the user to specify an extent size hint with units. This removes the need to specify the option in filesystem block size, which eases the computation requirements in deployment scripts. # mkfs.xfs -d extsize=2m /dev/sda Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- man/man8/mkfs.xfs.8.in | 15 +++++++++++++ mkfs/xfs_mkfs.c | 48 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/man/man8/mkfs.xfs.8.in b/man/man8/mkfs.xfs.8.in index 08bb92f6522d..9742482dcee9 100644 --- a/man/man8/mkfs.xfs.8.in +++ b/man/man8/mkfs.xfs.8.in @@ -482,6 +482,18 @@ will be assigned the project quota id provided in Directories will pass on the project id to newly created regular files and directories. .TP +.BI extsize= num +All inodes created by +.B mkfs.xfs +will have this +.I value +extent size hint applied. +Directories will pass on this hint to newly created regular files and +directories. +This option cannot be combined with the +.B extszinherit +option. +.TP .BI extszinherit= value All inodes created by .B mkfs.xfs @@ -491,6 +503,9 @@ extent size hint applied. The value must be provided in units of filesystem blocks. Directories will pass on this hint to newly created regular files and directories. +This option cannot be combined with the +.B extsize +option. .TP .BI daxinherit= value If diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index d3a15cf44e00..bffe0b7ea8b0 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -74,6 +74,7 @@ enum { D_NOALIGN, D_RTINHERIT, D_PROJINHERIT, + D_EXTSIZE, D_EXTSZINHERIT, D_COWEXTSIZE, D_DAXINHERIT, @@ -315,6 +316,7 @@ static struct opt_params dopts = { [D_NOALIGN] = "noalign", [D_RTINHERIT] = "rtinherit", [D_PROJINHERIT] = "projinherit", + [D_EXTSIZE] = "extsize", [D_EXTSZINHERIT] = "extszinherit", [D_COWEXTSIZE] = "cowextsize", [D_DAXINHERIT] = "daxinherit", @@ -422,8 +424,17 @@ static struct opt_params dopts = { .maxval = UINT_MAX, .defaultval = SUBOPT_NEEDS_VAL, }, + { .index = D_EXTSIZE, + .conflicts = { { &dopts, D_EXTSZINHERIT }, + { NULL, LAST_CONFLICT } }, + .convert = true, + .minval = 0, + .maxval = XFS_AG_MAX_BYTES, + .defaultval = SUBOPT_NEEDS_VAL, + }, { .index = D_EXTSZINHERIT, - .conflicts = { { NULL, LAST_CONFLICT } }, + .conflicts = { { &dopts, D_EXTSIZE }, + { NULL, LAST_CONFLICT } }, .minval = 0, .maxval = UINT_MAX, .defaultval = SUBOPT_NEEDS_VAL, @@ -881,6 +892,7 @@ struct cli_params { char *lsu; char *rtextsize; char *rtsize; + char *extsize; /* parameters where 0 is a valid CLI value */ int dsunit; @@ -993,7 +1005,7 @@ usage( void ) inobtcount=0|1,bigtime=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\ + sectsize=num,extsize=num\n\ /* force overwrite */ [-f]\n\ /* inode size */ [-i perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ projid32bit=0|1,sparse=0|1,nrext64=0|1]\n\ @@ -1601,6 +1613,9 @@ data_opts_parser( cli->fsx.fsx_projid = getnum(value, opts, subopt); cli->fsx.fsx_xflags |= FS_XFLAG_PROJINHERIT; break; + case D_EXTSIZE: + cli->extsize = getstr(value, opts, subopt); + break; case D_EXTSZINHERIT: cli->fsx.fsx_extsize = getnum(value, opts, subopt); if (cli->fsx.fsx_extsize) @@ -2084,6 +2099,33 @@ _("Minimum block size for CRC enabled filesystems is %d bytes.\n"), } +/* + * Convert the -d extsize= option to a number, then set the extent size hint + * to that number. + */ +static void +set_extsize( + struct cli_params *cli, + char *extsize, + struct opt_params *opts, + int subopt) +{ + uint64_t extsz_bytes; + if (!extsize) + return; + + extsz_bytes = getnum(extsize, opts, subopt); + if (extsz_bytes % blocksize) + illegal_option(extsize, opts, subopt, + _("Value must be a multiple of block size.")); + + cli->fsx.fsx_extsize = extsz_bytes / blocksize; + if (cli->fsx.fsx_extsize) + cli->fsx.fsx_xflags |= FS_XFLAG_EXTSZINHERIT; + else + cli->fsx.fsx_xflags &= ~FS_XFLAG_EXTSZINHERIT; +} + /* * Grab log sector size and validate. * @@ -4251,6 +4293,8 @@ main( blocksize = cfg.blocksize; sectorsize = cfg.sectorsize; + set_extsize(&cli, cli.extsize, &dopts, D_EXTSIZE); + validate_log_sectorsize(&cfg, &cli, &dft); validate_sb_features(&cfg, &cli); From patchwork Fri Sep 29 09:53:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13403956 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 5440CCE7B1F for ; Fri, 29 Sep 2023 09:55:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232746AbjI2JzE (ORCPT ); Fri, 29 Sep 2023 05:55:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232874AbjI2JzB (ORCPT ); Fri, 29 Sep 2023 05:55:01 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 457F21A4 for ; Fri, 29 Sep 2023 02:54:59 -0700 (PDT) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK8wVk013176; Fri, 29 Sep 2023 09:54:55 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-2023-03-30; bh=0EXGAwtJi+K8NzvaNF8jSTvf7tBf9mrTNKhAfRmctNU=; b=vrR+pKBEusQWYrhtgSREVzJ7sSdbtmubUbU0Jms/0D7xGkk0ZVN8NebwwprBCLDp1UN/ wm8ZuZsKHJxkvifhv0CRDOMudTJjICRWsGzhSXdk27cXmYzp/6H+4CJ369yiEveWZIgB TEI0KBazOIhC3l2OSdU7DkQ3hZTboyJ+GlCDC47dQTFimdJjL1QzvJFwE723i86Inlhq yGhBfmvk2+jCACdHIxifIH3aSaRFJ2AqN6DVLP6MJ+mrQoUivr0BRAmpeMLCOq5H2UuV QqqyPPSwl0JRwU8EZxE+LsTNcN70R9DXrfmklLYc/PCMvSkqKugSdGxOxKPHPXWMnzyM sA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qmupceh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:55 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T80Vob008498; Fri, 29 Sep 2023 09:54:25 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2176.outbound.protection.outlook.com [104.47.73.176]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfb6wvq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 09:54:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cD7HBm+eT/fSUTV1l6aUVdWlfryTUvcuqgUCfelu1PFUhioha+hFVwKOsK7hbcCA3ZygrxuYDX82FfPGVNmSLvfan8+OZAyGrvPaBcn62RAFuyqEqZFNOY3z3jC8rw5RHYK0+rkYhrcXcD6K+w0cHxlmTay535yUsNTrYPv99ziRS1iLCZiNmI5zbhJYfAlxn0NE+4St+7WoU7t9iWHcWb88wZIiooEygvO9yfbMIOZ+SOWklNjSpsZo/47Rhe8e3XoAZUaEJawm73SlOiSYd47hr2mT7XTCuMarSzuqhzNhD1nfKF04KUSLz5y3DBR/BUvfUnqexOb1OxFpHy5LUg== 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=0EXGAwtJi+K8NzvaNF8jSTvf7tBf9mrTNKhAfRmctNU=; b=LASvJsdj2AQtwQaqrfzepMJdelPOaQD5+Lic0oBJkbDR4WJci6Inv5eNTBfeN10cQoQi0n5Pa/5rhlEdvLocYBireXUhCqtYjfCRo40Ys1jdmgLZjdVrazMZ2ObWeQU50r7qDrmzI31sY1XG2ZqTbqXt8Q9cB5Wq1b8eJSy7XVWbFiVhK3P1wiNz3blexmZHNE0YPEWTScSVh+O5oquOgTdwZVXuyNd9x02YlNgBxBIq5lgqqP9zXyMsPlwEnHmeJBWBycfgbU0NmgDWm7JogDlzmKiqND7Fls3rIoIG4FtLx33ICF57LclMjM6i0yKarcDfZeolHtb0c4/bB7suSg== 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=0EXGAwtJi+K8NzvaNF8jSTvf7tBf9mrTNKhAfRmctNU=; b=t5DfyOBm2dyr4RSLCleYsUiqF19pkZmL1uPGyKZMpEOLeC9w678UcpcIlAVr3clZU4wBMGOJgjj08Y7TDGnmbZ7RLEC/omQ3jEInoXog3JWGb6KWjEdwMusUJCZe4U4XZ0hHbIaStaxkzXtvs84Ja4Iyf7onMFtn6IiQ4ir6Q5c= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SJ0PR10MB5742.namprd10.prod.outlook.com (2603:10b6:a03:3ed::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Fri, 29 Sep 2023 09:54:23 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 09:54:23 +0000 From: John Garry To: djwong@kernel.org, linux-xfs@vger.kernel.org, david@fromorbit.com, chandanbabu@kernel.org, cem@kernel.org Cc: martin.petersen@oracle.com, John Garry Subject: [PATCH 7/7] mkfs: enable the new force-align feature Date: Fri, 29 Sep 2023 09:53:42 +0000 Message-Id: <20230929095342.2976587-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929095342.2976587-1-john.g.garry@oracle.com> References: <20230929095342.2976587-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH0PR07CA0104.namprd07.prod.outlook.com (2603:10b6:510:4::19) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SJ0PR10MB5742:EE_ X-MS-Office365-Filtering-Correlation-Id: 511b04bf-c3dc-4e65-93bf-08dbc0d20f0f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M1litEo6m7xnZkQ/Wfg47XGaJob5vgz7H5tWROu0xdb7W5dSp6SZ2/uGUT1YGMtUXnJFysz34C4CwUOrTlzaRVwKiNWo4T4TCqZrAIFCwq0em1Zm74e/MtTCXAGhtiuzghkmOFUl9u5oLNRMw72NJN4LSL1qk3xKI2qn+fuhb0smmwXgRk3MnXjeMFFurdsVuSqqqZmxK2RF2uQESstiaNyvRH8y7Z71SiDoCEJhEJzj9XDJLNkJn55YBGm/ooscOj8Xph01Rk+J7spgvOJDMN3+mo/y0qljQsSxU1m1Hy8CvnhHTBU8i66hGRogHULuWJH2SrV2y/TgP+uPdrElq/GxB4f93TwE1rn80qc6LMYyZSoud/oV1603Jb+o/rjfiBOke1g6DswNV4hqA52qcQ307NlxNQE5Kjw1BeFLgb3Yy4HCfJ767gnYPGlpxta5C9UWCerY7GBQI4mtlPMPp9Lq3R6irEeUKuIBOZdwisQT/HmOd2JcLCmRJKdz+tp8G/PZSPUm7yOVFnBBaP5di9W8bcGkMkDFDXN6EWY0IqPqKKW/5IL/qfTdPbwyXrgiOC6mZqs836pWlC8C+jcLmrZdCY2v2V7IiudSG5/bBio= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(2616005)(5660300002)(107886003)(4326008)(8936002)(8676002)(6512007)(41300700001)(26005)(6506007)(1076003)(83380400001)(38100700002)(6666004)(478600001)(316002)(66946007)(66556008)(66476007)(36756003)(86362001)(103116003)(2906002)(6486002)(21314003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rvMMr0yzmDrcUBfHif68JxJokxBXekzAians4Rf4pZrpL2BV6+DTypmBiqUyGbf/szVfk76AXvfcszaBw4mAbKx9/x0N6MBgpSE0F7BbrMvp41Ie46CBMd9ykkwsOyxvc0qNvKDvU2grJJ0x8NBrwGnKCHEX8H3X2knRHypnXcn1RZIZxPE+FD0D3Mq1Ym3WjQNJjW0suH/fpx+uS/XIj4SohqQk+tT5Iv4FrF2wP3pqfaSFpUOd5C0jUBHn489ewUY0puBAGPVilgyrgUUllpy2mSF0TpjpSeRzOIf/MGAVLWqDA7URCK/x/8dDcjpjZD8H/U0kD3oBuvBjDKehnyM1O73v6DG1nSebTya10AbeG5gYllCf9ECbgT6DK59bWVg5tzu9DCk+TPUHAazUX0DoTlNt8Odz7LsVKh2hmJrgl0YCwhc2nfpD8j3TbYwiApTIlmYG/sQGmYcXXRnuTwef+Yi/trTX0CwOVE/ddF65OvS1xsm0JWRhmkCahAKfrnjlNnW6G6PtlinAS5X/H0PEaEL/useBX9lSlce70PjiQV/cwF0Vg9AfQw3BkEc+n88cfV1U6SmaHXkmqh95cacDwBbYSGSvn3TD+TJo7HP9C8+NK1jv/K4LVAfjzgsJx+WIzhwSoBlMRAT68DFoXmbMUKElNSLuUCmnprW7SCTka5MTkZ0pkQMUckRiItugh4ayCx/QVHHUQxSlc3MLeSEA4JFQsxDaEclhZbhNpW75HiEdwWrU3Jw/MVQlMQB1eRxnaRI/4oy8gIpAgcuNSfNGURtx79RfFphb/yOw+Y20OTYFDoFFTE6aLaw+HR805FWCGERlFwE7vbKUO0nWeT/icR3B6wes5TIWbMsP70AE3/gycDGSQh0isjCMB7goaYuoWgiA3T1jmFw5dWFZcEGnbO2fXHfbcD+UD0p5B/lpenq5aFl1MtSsA8DjKsXvswITCKnRsf5A//cpYw+OUpBTOXjC1JWQZzbBD6WOuvT3uVIKagvSiPbT4pqny8jhs7EArkfQp8Oee/vfHCZrk4iFA7Zq+nHbHAHT7xXRe6SG53yEcFkcrkLdxf92ZK3gdOyC7efjxMXfOXs+pFyNR2ZhppMlz3PhPpoxA+XzyTo+aZimGMNKZQepIoiVixsvU9hN8sDHXgtYqUhVQm615AqSYZQYpl9fKPYsXd/UGbcoHTaj3SjQGtfmMAo8FpA5MK9QwLNuZ15akAektBuOmM9iCnNRQ5/wf0ZW+P9IoMaWSSj8huaAbu91+j/rmLjVAcaD5NaQQ4cecLCtt4qCGsXLciDxqXi0gBaGCLNjIrigtbM7t/YCS4ISJKWT9QBma6CM4/BWzRqrZ+tqMrI/xw+tFvoHW6VqykWLgcVie27tVMuOpnTvnGf6Rhx1aSJop2pd9nlc8NZTdLI8l4Tan77xSYrNsfqZI3dJ2e57dtzqoJmedQEMeNsN1B2HfbG6ZWUC1hLPpamryxVGa/nZW9n8cWMcx8pnF/J32aSoZGdoxsnkCK2p4e2Br36XUx0EC7nLt2cbSRwPNKpoxL3Yq286xNzgJDQkwW3/Qgch74DSwasV5Rje69hUQ8sewj5MvDGCmhSI8yT7BPv0BmDAbw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: /SRwafBA6wGy7oaVZGdDZzRHqySuME61vi23IVP21GhbDwek3hrrTOdSKYLKqlWT1/YXq6jB1S/tfJjDWVqxzUVO9qVr4GUdo0iukegvdEgSrKysYHpbZv5PptqdNzH28iZmo7nBpKnGVuqfOk1U7+8gkhMSU/gyvSL6JcFmgIL4sZ71tM/aAMFyWmtom63BG7ofDWDTPZ7BLe4Kq1iBczBInBwu7N0tFXSsSzHgENw5zu8NwbUhCsdQ+dwM9Am3boJkHoerfkbivltn3UFNJFlfF8rK/+bydo3jJhSfZSTkrqCwBbUFRESNGwfqLcfoCG6320AIiyClddQpIqDQZej23MqNS3q7aeYcDmL3B1DghCWjhWGcevi21ZiKWCrinFlFpRkdVn9X9/2E7suaF9WF/XoXauEk/RVJ7exS86fLlh2lB/qkOFeZTGIJree9Eq4gg2VO5BlHL5+E7RcozgLGePF5/hlZ0cVFGRT8BWUeGGzEuV2Ut+7LNM9nrxQVm12lYkIWXCmPHuONWHe7NWHAuxiKNIo4Q2+UsfEzcxp+sJa6kPjfSYACI82DZWEhO1SDiP3sAv6zLG7Yt6O/nGHyEmfZihKWau4ODZhhdyevAT2i4pZVSi/Cc2TUC+/OgQ3mNA+k9OjgTYslkvuTRPNvp2L26JJ6gFWf6B8MicP1piKrfDCERduHJ9l08zveG6WUZqqgNfX+PR4lOQyjyOvPOHPnLtb9hFGsuqHr1XW/OBpHNNRJTmMaldYfwUEq4yh32Orx95wirr6orDd1t6doU37OOv/rI93cVg74WkoWk8Y/WPIHA94n00M5ceZZrvZB7L0Z5rXi3sfW5o8sCA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 511b04bf-c3dc-4e65-93bf-08dbc0d20f0f X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 09:54:23.2866 (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: z3UsIfnDNZCAB0SzflXGkKQxWA0JOwhwRBNohTGbo9c7OnFSZTX3MDxIh/uyC7tZPuD3kMsP6p1ZUk/BsAwArA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB5742 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_07,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 phishscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290085 X-Proofpoint-GUID: IJf6ADORO9m11xzeoi-z16k-7MCvJ5-D X-Proofpoint-ORIG-GUID: IJf6ADORO9m11xzeoi-z16k-7MCvJ5-D Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: "Darrick J. Wong" Make it so that we can create filesystems with the forcealign feature turned on. Signed-off-by: Darrick J. Wong #jpg: set .forcealign = true in SB Signed-off-by: John Garry --- libxfs/xfs_format.h | 3 +- man/man8/mkfs.xfs.8.in | 14 +++++ mkfs/xfs_mkfs.c | 127 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 139 insertions(+), 5 deletions(-) diff --git a/libxfs/xfs_format.h b/libxfs/xfs_format.h index d718b73f48ca..afb843b14074 100644 --- a/libxfs/xfs_format.h +++ b/libxfs/xfs_format.h @@ -358,7 +358,8 @@ xfs_sb_has_compat_feature( (XFS_SB_FEAT_RO_COMPAT_FINOBT | \ XFS_SB_FEAT_RO_COMPAT_RMAPBT | \ XFS_SB_FEAT_RO_COMPAT_REFLINK| \ - XFS_SB_FEAT_RO_COMPAT_INOBTCNT) + XFS_SB_FEAT_RO_COMPAT_INOBTCNT | \ + XFS_SB_FEAT_RO_COMPAT_FORCEALIGN) #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL static inline bool xfs_sb_has_ro_compat_feature( diff --git a/man/man8/mkfs.xfs.8.in b/man/man8/mkfs.xfs.8.in index 9742482dcee9..b86ee4794206 100644 --- a/man/man8/mkfs.xfs.8.in +++ b/man/man8/mkfs.xfs.8.in @@ -657,6 +657,20 @@ Extend maximum values of inode data and attr fork extent counters from 2^31 - omitted, 1 is assumed. This feature is disabled by default. This feature is only available for filesystems formatted with -m crc=1. .TP +.BI forcealign[= value] +If +.B value +is 1, mark the root directory so that all file data extent allocations will be +aligned to the extent size hint. +These allocations will be mapped into the file range at offsets that are +aligned to the extent size hint. +The +.B extszinherit +option must be specified. +The +.B cowextsize +option must not be specified. +This feature is only available for filesystems formatted with -m crc=1. .RE .PP .PD 0 diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index bffe0b7ea8b0..292d0cbad31a 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -90,6 +90,7 @@ enum { I_PROJID32BIT, I_SPINODES, I_NREXT64, + I_FORCEALIGN, I_MAX_OPTS, }; @@ -467,6 +468,7 @@ static struct opt_params iopts = { [I_PROJID32BIT] = "projid32bit", [I_SPINODES] = "sparse", [I_NREXT64] = "nrext64", + [I_FORCEALIGN] = "forcealign", [I_MAX_OPTS] = NULL, }, .subopt_params = { @@ -521,7 +523,13 @@ static struct opt_params iopts = { .minval = 0, .maxval = 1, .defaultval = 1, - } + }, + { .index = I_FORCEALIGN, + .conflicts = { { NULL, LAST_CONFLICT } }, + .minval = 0, + .maxval = 1, + .defaultval = 1, + }, }, }; @@ -874,6 +882,7 @@ struct sb_feat_args { bool nodalign; bool nortalign; bool nrext64; + bool forcealign; /* XFS_SB_FEAT_RO_COMPAT_FORCEALIGN */ }; struct cli_params { @@ -1008,7 +1017,8 @@ usage( void ) sectsize=num,extsize=num\n\ /* force overwrite */ [-f]\n\ /* inode size */ [-i perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ - projid32bit=0|1,sparse=0|1,nrext64=0|1]\n\ + projid32bit=0|1,sparse=0|1,nrext64=0|1],\n\ + forcealign=0|1\n\ /* no discard */ [-K]\n\ /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ sunit=value|su=num,sectsize=num,lazy-count=0|1]\n\ @@ -1674,6 +1684,17 @@ inode_opts_parser( case I_NREXT64: cli->sb_feat.nrext64 = getnum(value, opts, subopt); break; + case I_FORCEALIGN: + long long val = getnum(value, opts, subopt); + + if (val == 1) { + cli->sb_feat.forcealign = true; + cli->fsx.fsx_xflags |= FS_XFLAG_FORCEALIGN; + } else { + cli->sb_feat.forcealign = false; + cli->fsx.fsx_xflags &= ~FS_XFLAG_FORCEALIGN; + } + break; default: return -EINVAL; } @@ -2329,6 +2350,13 @@ _("64 bit extent count not supported without CRC support\n")); usage(); } cli->sb_feat.nrext64 = false; + + if (cli->sb_feat.forcealign) { + fprintf(stderr, +_("forced file data alignment not supported without CRC support\n")); + usage(); + } + cli->sb_feat.forcealign = false; } if (!cli->sb_feat.finobt) { @@ -2363,6 +2391,13 @@ _("cowextsize not supported without reflink support\n")); usage(); } + if ((cli->fsx.fsx_xflags & FS_XFLAG_FORCEALIGN) && + (cli->fsx.fsx_cowextsize > 0 || cli->fsx.fsx_extsize == 0)) { + fprintf(stderr, +_("forcealign requires a nonzero extent size hint and no cow extent size hint\n")); + usage(); + } + /* * Copy features across to config structure now. */ @@ -2612,6 +2647,34 @@ _("illegal CoW extent size hint %lld, must be less than %u.\n"), } } +/* Validate the incoming forcealign flag. */ +static void +validate_forcealign( + struct xfs_mount *mp, + struct cli_params *cli) +{ + if (!(cli->fsx.fsx_xflags & FS_XFLAG_FORCEALIGN)) + return; + + if (cli->fsx.fsx_cowextsize != 0) { + fprintf(stderr, +_("cannot set CoW extent size hint when forcealign is set.\n")); + usage(); + } + + if (cli->fsx.fsx_extsize == 0) { + fprintf(stderr, +_("cannot set forcealign without an extent size hint.\n")); + usage(); + } + + if (cli->fsx.fsx_xflags & (FS_XFLAG_REALTIME | FS_XFLAG_RTINHERIT)) { + fprintf(stderr, +_("cannot set forcealign and realtime flags.\n")); + usage(); + } +} + /* Complain if this filesystem is not a supported configuration. */ static void validate_supported( @@ -3155,11 +3218,63 @@ _("agsize (%s) not a multiple of fs blk size (%d)\n"), */ static void align_ag_geometry( - struct mkfs_params *cfg) + struct mkfs_params *cfg, + struct cli_params *cli) { uint64_t tmp_agsize; int dsunit = cfg->dsunit; + /* + * If the sysadmin wants to force all file data space mappings to be + * aligned to the extszinherit value, then we need the AGs to be + * aligned to the same value. Skip these checks if the extent size + * hint is zero; the extszinherit validation will fail the format + * later. + */ + if (cli->sb_feat.forcealign && cli->fsx.fsx_extsize != 0) { + /* Perfect alignment; we're done. */ + if (cfg->agsize % cli->fsx.fsx_extsize == 0) + goto validate; + + /* + * Round up to file extent size boundary. Make sure that + * agsize is still larger than XFS_AG_MIN_BLOCKS(blocklog). + */ + tmp_agsize = ((cfg->agsize + cli->fsx.fsx_extsize - 1) / + cli->fsx.fsx_extsize) * cli->fsx.fsx_extsize; + + /* + * Round down to file extent size boundary if rounding up + * created an AG size that is larger than the AG max. + */ + if (tmp_agsize > XFS_AG_MAX_BLOCKS(cfg->blocklog)) + tmp_agsize = (cfg->agsize / cli->fsx.fsx_extsize) * + cli->fsx.fsx_extsize; + + if (tmp_agsize < XFS_AG_MIN_BLOCKS(cfg->blocklog) && + tmp_agsize > XFS_AG_MAX_BLOCKS(cfg->blocklog)) { + /* + * Set the agsize to the invalid value so the following + * validation of the ag will fail and print a nice error + * and exit. + */ + cfg->agsize = tmp_agsize; + goto validate; + } + + /* Update geometry to be file extent size aligned */ + cfg->agsize = tmp_agsize; + if (!cli_opt_set(&dopts, D_AGCOUNT)) + cfg->agcount = cfg->dblocks / cfg->agsize + + (cfg->dblocks % cfg->agsize != 0); + + if (cli_opt_set(&dopts, D_AGSIZE)) + fprintf(stderr, +_("agsize rounded to %lld, extszhint = %d\n"), + (long long)cfg->agsize, cli->fsx.fsx_extsize); + goto validate; + } + if (!dsunit) goto validate; @@ -3380,6 +3495,8 @@ sb_set_features( 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; + if (fp->forcealign) + sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_FORCEALIGN; if (fp->bigtime) sbp->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_BIGTIME; @@ -4184,6 +4301,7 @@ main( .nortalign = false, .bigtime = true, .nrext64 = false, + .forcealign = true, /* * When we decide to enable a new feature by default, * please remember to update the mkfs conf files. @@ -4334,7 +4452,7 @@ main( * aligns to device geometry correctly. */ calculate_initial_ag_geometry(&cfg, &cli); - align_ag_geometry(&cfg); + align_ag_geometry(&cfg, &cli); calculate_imaxpct(&cfg, &cli); @@ -4357,6 +4475,7 @@ main( /* Validate the extent size hints now that @mp is fully set up. */ validate_extsize_hint(mp, &cli); validate_cowextsize_hint(mp, &cli); + validate_forcealign(mp, &cli); validate_supported(mp, &cli);