From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDC9A267B02; Tue, 6 May 2025 09:05:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522331; cv=fail; b=Y9vQaZ2xut3AqDW+JtLsx2IZ60Pog1MTfxQ/x5iILrtJTFYs/vcCfQGXFs+7iEiEDI0s+LcJHgq17VjUOjqhxxq4NvpMs6SdObbGjBoBpCrmTuMyKGAyqOGFZ2LhJIFwSRZGnYsy5VXCjFXmqzs7CFvQ7SUIm2leBiy3recH4MM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522331; c=relaxed/simple; bh=s9umRKRFfgTIQlD4/bOES5+0zQw8uME5kwsNul37vHI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=PrwBes4yXsM2KL6rf4sWHXlJrMtLncbxjhNoZoQrJq5hBOk8AFNL6wv5Mdu43lCGRJHBcB5rTw2Sqvq+cafo+N2ufYzf/ZTefiPuX0IaP1lv5XbkXVCJwaZHHpHq2lgwaFVH5er5Zd43lRNLaWlXFkASo2FBzH3/tzAYYPVIYJE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Rt1pfyOb; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=0KajI5jL; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Rt1pfyOb"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="0KajI5jL" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54682CI1003142; Tue, 6 May 2025 09:05:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=rd6C5ey/l+sEGTPpaZvEmNeGhYfJukcUhgGdg2fVxfg=; b= Rt1pfyObK2ABPDmzZSPgWaXGW7HYzyzamEJ8hZlNFd8BN5wgtrDnYHmuluzsFWD+ C2wIlSAdoG2QLUqhqxuhOtoYQexqp+qxGMpoMaX8BsNcuGv9fYfRqs6aHyZUpEov V6p0RPCnr1GZ/IBKi09IKZQegfZ3ngnXkfHDt7D/eb2BBsOiw3Gj41Mwf6Rcg6qW 1uTobOhbHQ3GEWZlykBdJZFLyPDbBGJIvKomPz8tueRvE1/NAwtmg++rsbE5Wyaz lJSw+WtGnNBxHqCFzrQ3SQA3RmgDkw9vP0HQkm9sfSmdQm1S5BAPAwiwVu3FIqke TyEXu5Zj/h+o2pvMpvcfpw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46fejbr4w4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:17 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5468CAR3035353; Tue, 6 May 2025 09:05:16 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010007.outbound.protection.outlook.com [40.93.6.7]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k8rmqc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V9UUE9i49iHNWTDPs53KHxFQMsf3tX4vvfZr11qBIxs5Y0yib0Xsq5E2tHyK9O1CRu2RQ5IE0SBKNkafj8EmX29KCWlOq5cuBOGRtjIb4enVKHRgXuMvrgjvMR7JddNlEsmeqavPNqTACtsQFdq/PzvxJrJWlKPqatQStudjvIISz7Xn2IiRkBoDbszEJIhFkTZ2vCms8QXyV43RKavNQ4xL6fASqUDYi2BHOYjJT9W//Aaji0Fa+7g0/8C6lAKRWz7SvoNI3Omwdi0kS6tM9B8uQGVY6zjGxzZOCLIHGT6FjxJxnJ85m1mTfDvzBZfsCCHryfPI6aQTK7obW5ydxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=rd6C5ey/l+sEGTPpaZvEmNeGhYfJukcUhgGdg2fVxfg=; b=c5OdRZ4ad2EX9T5GjB2j3j3+u6T/YUnEPyjUH7TV6XRMcoAOolVY8KC4pWGgTAKGqlAIihAGoechyNaGHs9jkiXS7YpWa8pNadyJdZ5W8b92p6CPH6FI0wsaGJve/Un+BLmt5xaln94S1D4QDkmJNWmq6a+B6AAF2CcDNui2A2WJsxpB5kldy306EJIKCEGh0vd35qbqA6etGbvrmfIv2gNLcEyE/c4pF45cKZYNaeJTKQqMFat9Nz6WY50zl8obZwKonT3rDv5c5cdjJ2NHKYLKoO1D7yljjUtLenrzoSZouMSD6Y84T6UF1pMyogYI0Ffts2lej3gP9SxRNZ3zCw== 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=rd6C5ey/l+sEGTPpaZvEmNeGhYfJukcUhgGdg2fVxfg=; b=0KajI5jL5GsOHbou9vsFTO/QvuQkHvYYjsaS7S+HEBZfSjhDnMrBD7n3kZSp307JOYrlZGmkl25WNTt80np1jsgMFsyQ9InOTxaRavOcKZfAZQUGbscrgQ798PV1ubGDIBNmaRH0Hs7DH5Knx4DfwIERkc8zsHTEA8PNtOLCOvg= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:04 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:04 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 01/17] fs: add atomic write unit max opt to statx Date: Tue, 6 May 2025 09:04:11 +0000 Message-Id: <20250506090427.2549456-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR05CA0052.namprd05.prod.outlook.com (2603:10b6:a03:33f::27) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: bad0ed4a-dc46-4020-e597-08dd8c7d1735 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jYHQO8PoFxvjezHXOQPceDI3a3aXkhCf/Fhal/W3PVIYHtnW6frwt8N7udYT?= =?us-ascii?Q?Tf90FEGU0W1lOj19fpCgOqPJAl9P+BmWQWHWPU4UqgxTgE1jcz1oE4Y+viIy?= =?us-ascii?Q?ihaOmgjyQABoFmoqeNYJ8AW5BneDGk50FF6L9M2ZpYvOJsU57fnWAJwnXW2x?= =?us-ascii?Q?+bEbggX7CEA2P3DofuQiojtFK/bN8o/QS89BEy10IWr6BhtQl3XmO0unX1tv?= =?us-ascii?Q?M6qoJbQJTq3h2df7ar9CZQaueaHJqsRgtZo7F89L+KiyUsQqx00CA3/OC1q+?= =?us-ascii?Q?ErznSqaEobE3e5d6n+ePyIQnrEOq4v6nWZavRuNh8k62kalbjD6N8j2GQKmj?= =?us-ascii?Q?Q+Q0qfoR4lkF8cvVsvQP5GgIZlwU7hngVbgxYM8YS/i2PoQHMNACVq7F13/a?= =?us-ascii?Q?woXLOTMSF1R4ZWdrOX9ltJGDi6HxWGbr/tJU7raFZgleviJGJ0Eb9DmcjZcC?= =?us-ascii?Q?dn46sAxc8o+jEZ308wvYWlcB5/b85W/04ud+YyDO8Nu+pOWU0DEkW5m1ICFk?= =?us-ascii?Q?A7M2gP0GAQazhjkLbex//D2swn3YK+POMWVtStR0+mENBxH1Z48KzwzYm8VL?= =?us-ascii?Q?gQuSFa1+mhQKnXNOtWonuSX3f378TqRTG5V4B6YlyXXA2LteQCfsaMxX4B2S?= =?us-ascii?Q?atJqVj40pAIHtyTQpAvhAdrmiDU4Ktt51TrEG8n6mmtv5nO8+Aa6TwdiFTrM?= =?us-ascii?Q?2djZS3CdNqhKBJTuDHElpDH0FfhFzjU0G3oQJUUhxu1x7AFTyN0x0VPlX9/1?= =?us-ascii?Q?smf207HssBGGE6W/eW+bJP5Wms8+tYTmhq0Cw2Bnx5ZDmwGW1d3ziJaHAzUp?= =?us-ascii?Q?JDwM+XfWUCKIQyY3qXREaFp1JI5Skllb1c/nebGDmaeClPdhWjIaAJ9r4KhJ?= =?us-ascii?Q?dne+J1AzrsXVIlUY8HEpm/0RtWLsQCdsBBI6ubnLUAdZHMGi1lW5N8zSFifI?= =?us-ascii?Q?L5mEF7efzE1CbiW+KYL0OwUokd4fb1l4/Y7eoPIyMLLoRHrLGhMkuxXGJ+xW?= =?us-ascii?Q?b4qB4x4SWTvyzo2KLSzUumQkSpwQ3DP+Po0ennPn/LBrr4oZIKwP2EBAm9I3?= =?us-ascii?Q?3AiwhBd2c3aTAKjmQuuih1Ke5heBWLYMbA6Kpiq+uXx/0n5XfOvgQ/6pkecp?= =?us-ascii?Q?JL5woL8LarXGENX9bowmRgQetKUKD5gnjnqBoFqdCc/flceGlOGmZu3cUnRX?= =?us-ascii?Q?R+QLFGI5EybP9U2nuVJ2DDkvlM0moAN5dwEf/lIKRHOhKkRclMy+FmrEV4W5?= =?us-ascii?Q?MuTdAzDLpMJ1r9SY5QlPEwjCQYYgRPZ2VhH/enmXXZtx9iV4TJFyAItC6cxr?= =?us-ascii?Q?GdVwEgeZnzAEpwJS8w4HEm22Yzqfrkeuq0rktNbmTXj0aA/AqFwjaBOoV/BN?= =?us-ascii?Q?1ZgAWPcnS0k6wuUZQ+4gsEZ8eIcLBYKPAkrbJxRvUjDfkv2Lx8Q67ZHwsCZ3?= =?us-ascii?Q?H64geYWThlM=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iMWw0TFjeEiap1H7zWZoRGUO09GtALfhcj/3aZbH5LZgPJve/JINwmPLEkvo?= =?us-ascii?Q?MAnhfsxD7FN8sKYUvz9QHoW0MrMlzg5SlvE4+gmEXQCbQq/T7WfDm6OjjHDu?= =?us-ascii?Q?NKYfVSYAXJmbpruYQNVcwEDgpOWQDDrLi2AwDT3q3ol63yuypC0cOtnhP2DG?= =?us-ascii?Q?dCOSnChUMC9XvKnKSLbGeDRz+c9NxEWRijsCwDDOCSrSxnZ4u6gIoWaDudTy?= =?us-ascii?Q?qKoG2VR9yHvTEXMfD15iww6KYUk4/9HxaXRmBfl6sEpAsxWxm0IWkjeYsQ5a?= =?us-ascii?Q?SX0Zv1B55AajGD+019g1psxJCuZQi2ro7GnQeIWJJYiVWuRIRUdE0YkXXqTy?= =?us-ascii?Q?cZh9EKMIRqdPHyqbDB0fzwqBKn1XEDApJrl7S+fB+MS8tdsSNW4+RFZdbeti?= =?us-ascii?Q?uKz+DtHuZDySu1hdcM4O9eAs0ZuQ+E4ctzBkKvZNyVICe/VSucthScYEe/xn?= =?us-ascii?Q?frUz+vZ+hy/oRqCbwc/uZUDs/wFEEfLLEI2NdjOzeaB8m0DP2h2Ls2LT/JbA?= =?us-ascii?Q?Gh33P/luyCgqXl14ETSxqjn7t+7yM9PRV+JsZ8B6muLW+Tl61pRIQ+ItzU1c?= =?us-ascii?Q?xkgWuCUemDG64b/H3GiqK/E/l8Dp1K3TINaS5UVuE4ENnchzbfnwUTGgbCgn?= =?us-ascii?Q?xjsJskwBtYLRP7mKGmPPDgSLk1a8OcXXAmF6KEShvbvhU4Tken6LCxb228uQ?= =?us-ascii?Q?6Wz268W18LOaap60yJlCwGYEDZIJKUt9x4XXmSHN7RQBdqLMVUvS8Va/iXhI?= =?us-ascii?Q?Q+OFbmVNJJGnqtcJ5tfTTpUh7Pm3C/8DJk1/cHtx9xPeWsNgxhpSjGRhgOdn?= =?us-ascii?Q?PJiufmtemORXujE6A1H+aQVf0dL7nVXFMHCPKDccXjpypZ5wbd+T+hdDexNb?= =?us-ascii?Q?YwwECC8efYFm689tmp9f+dZvJiFfbI861LLZuQv8vIB0zugbibuzZX6zOOGb?= =?us-ascii?Q?5hh8PXVVesg/+NZZ8tXbhT6dPNCHu2j/j6bPmsxu11Jn0QPvXaNBw2778gp5?= =?us-ascii?Q?u1fJhTzUE60YE66Xac610qVH/M9WKLj9XMmGVZgb49ACLadlT3jmOyzItGuT?= =?us-ascii?Q?ZMJF29ibfR8L2mhEmm/76Lh3An/NyZghu9K0eS9bu6Y3yqjVlo0ODUE/3SN/?= =?us-ascii?Q?z/JA5ViGzG9xJYycAMPSBv9bQTJgDytRez4viOVqriL3xj5HJ4yYmY9gjyRx?= =?us-ascii?Q?idaiGMJp8qckrt+91ZUGmXzEkaibingC3RCPGPc7WTzLcVIqfwCGMI2bI6nK?= =?us-ascii?Q?CRTfr1lT0iwvKZ9i4jpL4jRtXWvZ30kJkspAzzpnFzACqSAhHBHGx9QiS+SB?= =?us-ascii?Q?Tb4PSB0juenlx1EhP79GzLZlY1K85ZLMRvXb4El7nSFo+dKlc5rdeIwBB9dQ?= =?us-ascii?Q?h/gMBZwS/cxYXy58OEBYpoqHFt1xtGLhDXRKJyJYZ38hP9JmSqfFVy/n4cjn?= =?us-ascii?Q?h5yk5ux/ckzWJWxLybuUAcHonB85yR3eOV7yDCYnd4La//YYNKmdsSTskuKp?= =?us-ascii?Q?07VaA2NDhkvlw7Zc72ifQ+NkJ3gLuSxYlCVN7wzfdsGj1NA/Jn88iLlYDSWl?= =?us-ascii?Q?7UqzvTNztm4fgAvXrwTFMK658aI/LYEmjCDEFF+CKHAt55Sh3NNaamJbSmxq?= =?us-ascii?Q?lQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0q7mWFenJkdhYCswJumsB0Mw4ERFn0nnyzqYQDVG+n5F/LOeWLAX25UHdNKChy5tSBc8RN73DM9jnFT3mpdHmOaPgClgmZSRjLkCUYxmvJsitIU0F2EQFd24TDboX6sNRYxHf9q2vVwtOiSkeCWjAW5SKo/tt+fwT8Z60seImxbDInBLzRN5vdiofrd1Nnm4gPpPptddhdYrnGA4GSjRLGG2d9w5+pzCiu7H7P1QiVtyFlr/1QYx9+D9vmyC2YeJSClUnnL4tlE+ysQRVjNw4oUbM9rsrovSRpe4fZ39LLA8b5EXv4xe9UBK1qZcyfvYsd7IGu7xeCHIhS07qLPW3CaxTCvAsJeEW1xoAzpbQM2/hRPQbuu38XI+vYlyRYAjvLmGd5yJH695YLOMWLlF7tyrRdvNa4b9CPovIbrbee7NjZhcIh44CXLX2OHkza8mv+NtGi8Bb6GErjUDGkgYuiWbq968bK7pAm4eMxtr3gEUG4ckzqFZzoIFMPZJh8XDqeOtHp9HV3xUYrDhpgnI8weE2VKEbP2sxpdgdUFZmy+2qDLmCqkjl6tZTV+cYhhpnat3VIT/JPpxFWVhi+XeN40Jg5H3vl8NBa0S/AmVVg8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bad0ed4a-dc46-4020-e597-08dd8c7d1735 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:04.6071 (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: Xq88098Ay4yMN29Mt4yf8q2Ue9nFOIQMrFCNhB0hnuCs2sWwtxMFL9E/4TejLuGZxw+VejcUi4ueec3s5roLVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-GUID: nKP6bicrdlggxku_lsQqzFXFWHJ-Kcdv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfXzOubu86h/VGp Tr/Ciil+jB5ksvLnMyUBenCjRd3bCQFFCNMfDkGHTvvhZwxY7e8knlZKOWoYDP6pqlTxihsj0ZT Hwpr7BlQx2RLs7gcrURHBuRpEM2IHzalDNw8U/B9Q/teSQfdSv/b84WSmql5FsNjusiVkbT9+N5 7q6yuGhyUjHPBRjIiGIrc2SF1x/jDV4Y1vQq7bD5p7Fa3qrfaeDb8FS/3y2kPoLM+o2zdHnN8q3 LOncFAxXm0ZdPjfwf2NJ+3f+MnfTMPcyBnfBOnpBfaM+3Gp1rbG/lrAZ10GD3qC0+SRYxoFzSoQ JO39kdDYsMU1LuzHTPAmDD0Lo2nUja7DF7VRcs5U8CwVA8YlENET5m9MoQffvP9zvNnwHgKzfUu yYBzH8Jig+EDsZNV9rZf6hXMA6JpeZviirn0j4y5d0vwxsrLnrYIgi7rdg/1HY/JKe4kPTRf X-Proofpoint-ORIG-GUID: nKP6bicrdlggxku_lsQqzFXFWHJ-Kcdv X-Authority-Analysis: v=2.4 cv=PoOTbxM3 c=1 sm=1 tr=0 ts=6819d0cd b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=ihQL3A0VzzIQ68P4lnIA:9 Content-Type: text/plain; charset="utf-8" XFS will be able to support large atomic writes (atomic write > 1x block) in future. This will be achieved by using different operating methods, depending on the size of the write. Specifically a new method of operation based in FS atomic extent remapping will be supported in addition to the current HW offload-based method. The FS method will generally be appreciably slower performing than the HW-offload method. However the FS method will be typically able to contribute to achieving a larger atomic write unit max limit. XFS will support a hybrid mode, where HW offload method will be used when possible, i.e. HW offload is used when the length of the write is supported, and for other times FS-based atomic writes will be used. As such, there is an atomic write length at which the user may experience appreciably slower performance. Advertise this limit in a new statx field, stx_atomic_write_unit_max_opt. When zero, it means that there is no such performance boundary. Masks STATX{_ATTR}_WRITE_ATOMIC can be used to get this new field. This is ok for older kernels which don't support this new field, as they would report 0 in this field (from zeroing in cp_statx()) already. Furthermore those older kernels don't support large atomic writes - apart from block fops, but there would be consistent performance there for atomic writes in range [unit min, unit max]. Reviewed-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: Darrick J. Wong Acked-by: Darrick J. Wong Signed-off-by: John Garry --- block/bdev.c | 3 ++- fs/ext4/inode.c | 2 +- fs/stat.c | 6 +++++- fs/xfs/xfs_iops.c | 2 +- include/linux/fs.h | 3 ++- include/linux/stat.h | 1 + include/uapi/linux/stat.h | 8 ++++++-- 7 files changed, 18 insertions(+), 7 deletions(-) diff --git a/block/bdev.c b/block/bdev.c index 520515e4e64e..9f321fb94bac 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -1336,7 +1336,8 @@ void bdev_statx(struct path *path, struct kstat *stat, =20 generic_fill_statx_atomic_writes(stat, queue_atomic_write_unit_min_bytes(bd_queue), - queue_atomic_write_unit_max_bytes(bd_queue)); + queue_atomic_write_unit_max_bytes(bd_queue), + 0); } =20 stat->blksize =3D bdev_io_min(bdev); diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 94c7d2d828a6..cdf01e60fa6d 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -5692,7 +5692,7 @@ int ext4_getattr(struct mnt_idmap *idmap, const struc= t path *path, awu_max =3D sbi->s_awu_max; } =20 - generic_fill_statx_atomic_writes(stat, awu_min, awu_max); + generic_fill_statx_atomic_writes(stat, awu_min, awu_max, 0); } =20 flags =3D ei->i_flags & EXT4_FL_USER_VISIBLE; diff --git a/fs/stat.c b/fs/stat.c index f13308bfdc98..c41855f62d22 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -136,13 +136,15 @@ EXPORT_SYMBOL(generic_fill_statx_attr); * @stat: Where to fill in the attribute flags * @unit_min: Minimum supported atomic write length in bytes * @unit_max: Maximum supported atomic write length in bytes + * @unit_max_opt: Optimised maximum supported atomic write length in bytes * * Fill in the STATX{_ATTR}_WRITE_ATOMIC flags in the kstat structure from * atomic write unit_min and unit_max values. */ void generic_fill_statx_atomic_writes(struct kstat *stat, unsigned int unit_min, - unsigned int unit_max) + unsigned int unit_max, + unsigned int unit_max_opt) { /* Confirm that the request type is known */ stat->result_mask |=3D STATX_WRITE_ATOMIC; @@ -153,6 +155,7 @@ void generic_fill_statx_atomic_writes(struct kstat *sta= t, if (unit_min) { stat->atomic_write_unit_min =3D unit_min; stat->atomic_write_unit_max =3D unit_max; + stat->atomic_write_unit_max_opt =3D unit_max_opt; /* Initially only allow 1x segment */ stat->atomic_write_segments_max =3D 1; =20 @@ -732,6 +735,7 @@ cp_statx(const struct kstat *stat, struct statx __user = *buffer) tmp.stx_atomic_write_unit_min =3D stat->atomic_write_unit_min; tmp.stx_atomic_write_unit_max =3D stat->atomic_write_unit_max; tmp.stx_atomic_write_segments_max =3D stat->atomic_write_segments_max; + tmp.stx_atomic_write_unit_max_opt =3D stat->atomic_write_unit_max_opt; =20 return copy_to_user(buffer, &tmp, sizeof(tmp)) ? -EFAULT : 0; } diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 756bd3ca8e00..f0e5d83195df 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -610,7 +610,7 @@ xfs_report_atomic_write( =20 if (xfs_inode_can_atomicwrite(ip)) unit_min =3D unit_max =3D ip->i_mount->m_sb.sb_blocksize; - generic_fill_statx_atomic_writes(stat, unit_min, unit_max); + generic_fill_statx_atomic_writes(stat, unit_min, unit_max, 0); } =20 STATIC int diff --git a/include/linux/fs.h b/include/linux/fs.h index 016b0fe1536e..7b19d8f99aff 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3475,7 +3475,8 @@ void generic_fillattr(struct mnt_idmap *, u32, struct= inode *, struct kstat *); void generic_fill_statx_attr(struct inode *inode, struct kstat *stat); void generic_fill_statx_atomic_writes(struct kstat *stat, unsigned int unit_min, - unsigned int unit_max); + unsigned int unit_max, + unsigned int unit_max_opt); extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, uns= igned int); extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned = int); void __inode_add_bytes(struct inode *inode, loff_t bytes); diff --git a/include/linux/stat.h b/include/linux/stat.h index be7496a6a0dd..e3d00e7bb26d 100644 --- a/include/linux/stat.h +++ b/include/linux/stat.h @@ -57,6 +57,7 @@ struct kstat { u32 dio_read_offset_align; u32 atomic_write_unit_min; u32 atomic_write_unit_max; + u32 atomic_write_unit_max_opt; u32 atomic_write_segments_max; }; =20 diff --git a/include/uapi/linux/stat.h b/include/uapi/linux/stat.h index f78ee3670dd5..1686861aae20 100644 --- a/include/uapi/linux/stat.h +++ b/include/uapi/linux/stat.h @@ -182,8 +182,12 @@ struct statx { /* File offset alignment for direct I/O reads */ __u32 stx_dio_read_offset_align; =20 - /* 0xb8 */ - __u64 __spare3[9]; /* Spare space for future expansion */ + /* Optimised max atomic write unit in bytes */ + __u32 stx_atomic_write_unit_max_opt; + __u32 __spare2[1]; + + /* 0xc0 */ + __u64 __spare3[8]; /* Spare space for future expansion */ =20 /* 0x100 */ }; --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F46D264A7A; Tue, 6 May 2025 09:05:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522334; cv=fail; b=bpunIIJ9UsKTd+t5VHiazLTozCRYqtqyTYGiHekNV2W/1SNahzStP0oHLKnFLe7jUOi7N5GLeFX/tE+Ahak/SBP5sD6iiKqb8kO8S6caG1cWNz8F+Jqb81gEkGJhdkUW3CiPUfdGh49DvBS4emC6NW79NEbwWikYduFw0CopusU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522334; c=relaxed/simple; bh=kVSqAeWDu8ziqRxQQdgsgIOGdhMwthyM/ociEtJJwSs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Iu+YTJx3NBT4n4gxQn8WrZi9qO6+CEBTrVktBsTtmpZhaVZX0DuMgKMwAY5wsdfvZpcAqcen8Pa9IeAMe5BFQliCYqJKX6L+U5/1d4ebt8N4rz5ripMMTV1n1EaDcjpaBij2Kd0eAa+fVRJeVoFteAsrdsca849CiRuQvcOwVqw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=EeWbd07k; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Iaqr4nKC; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="EeWbd07k"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Iaqr4nKC" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468bbn1027344; Tue, 6 May 2025 09:05:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=YCritS9m2Q6aF5Hw2sqkjF6hPr3QDEKNBZmkOs3fKkg=; b= EeWbd07kZNFmBtvr+tgR+vtGzqxaKHuKi3uzKYWeUhZoDNJnWwmpZHujA1MfqREk e5nEqJP6jS6cQkW7s2PvZuwhVNetYw06XqqkZHTs0ZCuxMweMgDP2l3sR3E9dwqB upODsKpN2QLohtE6UqTtPnnAgPA5qymjcKJouLF5VbPhi0hCXAw1CNHsKrUS3Rew LtFtORI9l1DsC5Z7LJ4zFJqQCh9CezFOXBk8hf5cqexA/AofR1PD9WoaFJ65iCZl WHfOcZtrYjYmFZd05jTRgKelFa7QDAOgxYW1f+TgYINK3hXvKRwtKVSpOBbVKL/A HklBHyIjZ2vQgP9dBfB0Ew== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff2t02k2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5468CAR4035353; Tue, 6 May 2025 09:05:17 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010007.outbound.protection.outlook.com [40.93.6.7]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k8rmqc-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O+ugqXbeB2cfHJRqXcd8YaNnKrjyjQ/fDLoKN5Ke1KbN0kM+uClZ7LN8nkdG+2l9vG1kciQUTbY7MQTBNP+UNxixrjRQLMGc3y40gxdpFEN377C8uLXlHy3wHurhPPQ3QRnVqe/oc3nZxOikyAF9yH8981EvwpI2gnn0Rcr+B1PLcaS9WQbxtlUmisZmUb3WvtoX3lX6u2Xsj1bK0jq3jGBQQ/fe8U+WLvhmSDnTf11aiaoh1AatXRqdZvGde3N+3S+8mdt59mHH45YBO6lbcG3UlJBBizCPzVBwUgD46d6IOP0b5G6CgwxDmNscQFW3d0SRq9bcueFbmnVv2l71nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=YCritS9m2Q6aF5Hw2sqkjF6hPr3QDEKNBZmkOs3fKkg=; b=FWQoEEUGOEpFCPQkQiq/TwgQljP0ljHy/5ep8RwMW9Id9p2F2HXgamD1TYIekY7szkrt4mHXX7SL3YQTrEQ3LaN8v7ZYUNw+InzQyaRWOX1TdhwUKQyAybERQttB6dFLt61SLokBKQH5vXm9pE+T+BPO7/2V0KboMIGx0YX/X7/QjhWngGATZ6WeWE8qL+Kmi4Cxz40oE116mldXRrnkLxNVZsBFxdcD2/Zx9RMsvGPu0DvTM6ZsOMPeR0vyYK0Gi4uW55mndSfbLgvgbJ3RBV0jc2/SCdFl0d8qDIXPa+UMaLbc6JTUbCSFRRxbTwq1IvupbEY+JppI/SR9OxX2HA== 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=YCritS9m2Q6aF5Hw2sqkjF6hPr3QDEKNBZmkOs3fKkg=; b=Iaqr4nKCuXgt6r4KQ5Ovv8RSgSz3dx9Ktn6K39z2bJlUUbOW2vDmqAvUWGVQxSGDxPJdhEGob8BEHwI2W7eEIbG758x615iozjkXpVemMFbmDOH+aUWcUK+ZXPwT4quniDtXJIpd1Zae1sUyBrTpHM/f3jUy5wb3FIiHZRWLB5E= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:06 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:06 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 02/17] xfs: only call xfs_setsize_buftarg once per buffer target Date: Tue, 6 May 2025 09:04:12 +0000 Message-Id: <20250506090427.2549456-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR07CA0091.namprd07.prod.outlook.com (2603:10b6:a03:12b::32) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e364bb4-5152-498b-6dd9-08dd8c7d1868 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NPW+ld1RNsWVwneBNpjVPpcCMxMPXB9Gx+0lfnI9jY2B3vyTx/PNL1/CfLCk?= =?us-ascii?Q?rODjT1Wf27SNskx2sBb7fLOp7qYvi4ZmiG/xbayzNdw/Ygw5nHkCFY0WFtdk?= =?us-ascii?Q?tTVLoG0kU2LgK2OEkiz6hNsDJ75K6JvJ0FiDxGTv0QMHUUaDWV2+zmN8FGtW?= =?us-ascii?Q?0c5OH9amD1CRcCuQHzeFjiTuJ3SjK+xXUi5EbuyoKHMjiy4RaR/W9nW7zEkx?= =?us-ascii?Q?QKuuC8GL17FTMP8ZihmOkI7hqMvzqvfjpySRfonFp97FjKAjfjab3ysuwrIj?= =?us-ascii?Q?D1n3BrYVfMxRlHcHcQKVbyZczVYCQ9b4qov6w8iJWQEQGyzkZBUHwZglDb4Q?= =?us-ascii?Q?uUltb9hxSZ1I0UDFEungrQCxi9aWDgz6cmruwX728rpj0dbBsZmWHBi8qc+4?= =?us-ascii?Q?tdbW7SuDwhpjCOQO9b9XAMP41iwPNICmajZU+M6uWeFnBO4mUYqF94CBizzY?= =?us-ascii?Q?4an9eum/8zqyUeaC9WRJ3S39negYow8FiNLrnWqygbrTBBshMrk51N1T1s6K?= =?us-ascii?Q?IIRE0nlxi+MAIl+AqkQFcvc4QbOJ8F4q7CJryIQAtLeVyoNMf7H+NkQLpmOL?= =?us-ascii?Q?Slk1bdt9qWaT0P/PkiX+sCCaSLW4GAehAKNOsE0j1jVE3kv+P1t5IwmwTVFl?= =?us-ascii?Q?JGwkGSWcRvb6jElKvfujwEcOuRk9fLrRjeOmHV9VtRfcDXSKPMkNiOSfefLb?= =?us-ascii?Q?hc1FP75FrH9QM6YaCGUBeg3MrGsIt3Saxf5CcPXu0xCERlw37Nuqhe+BNXlv?= =?us-ascii?Q?Kc8UWTJd8p16FmUeClA2IqsQp5CklXxhLmC1DkFlZKsdGBEG53vt9QYih8oZ?= =?us-ascii?Q?inA0NulZLh2y5efb4Vh0gO5pakdjdndAgpWbloGLFubTZVsJ+Jl91E9R31hG?= =?us-ascii?Q?9I/+fHn99i96jGFFHPAR7G4rx0Tg+NBfqX1NxuENT5Dkx+4gCZ9AwQ/R7kbn?= =?us-ascii?Q?+rDsK0hyH35DTMo8dMqWOGFY1lL5no6tteMcyel6HRvbJf0cxEoooCLrM1LV?= =?us-ascii?Q?H9vEB5+dS3PHRDsCgFf9UCfTvLFyD4+b2phToAk85axlV52pENr+AT2gzdM3?= =?us-ascii?Q?9+rNric3GwiV8nfvkyO1TM8MCzwS34E4JaiaHoI9AjPpSkn4q+MU0juzIRVM?= =?us-ascii?Q?om+03J9Z9kReLx1LHJ9o5q8rc5LRVMGZhyh3vi4yQ0MJ3IX5fRgtEda6UIZf?= =?us-ascii?Q?xHuMCjomA5QiZvByI4TTtvubsAqMO/w5OU77Ncr5Qqibi+601Cjg14++ZoYK?= =?us-ascii?Q?On9ZIRmgFWnrn055WLzeItxFCpZNbfhnvhQzpsYcvmKFrJ2panWEqVkv4zxM?= =?us-ascii?Q?p2optQ3FxIrkZPo+3aVcGMjDF0HkHxEDnAjg8gW9slJD64Mk/dqxVZy99hVm?= =?us-ascii?Q?8Jl9oQTt9p+o+m2RWYaGCGMl5gCUUvVlm5UZbRYJa9FI/Pl1ruybe+l1R9pD?= =?us-ascii?Q?skxgtC7weE8=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LZKsMyPRuR+95lxF+y+z7jllS5wZRdRIztbDiiHSxN+mhbgiCypaZZUtDltP?= =?us-ascii?Q?Qi0d/pplIXoQthOTB1sVTlqR+PSmRiZsecK7+T7vTRw4+f3OKwbuD4gJNFvB?= =?us-ascii?Q?JkWMJlRf/S1xmCzpNHLuJH27NHqvbX/KbUTLZLvpcP/wp7aTKV7a6VChW8dK?= =?us-ascii?Q?B4GsPID8NQrrz6eawUuIM1cD179nvzcq+5jAsZ1qXRy6PxOd51fp2qKjchiG?= =?us-ascii?Q?cBbbUhW46lp0DzksMrsolOeivPF/dhJLdbRgCn993SGADlUpS+ASEGgOdSMr?= =?us-ascii?Q?4AnrGCSQtQ2W7Ur/Sb0MC0IQZju1BAoviqD5QirAN87Fg1ZA4ZD9EoQUMDXu?= =?us-ascii?Q?rDbDPCbd9O8rQTrkofilk2tola6ayzEBwMOaGSuJLrIoUHhMJ9uEH2yefdtx?= =?us-ascii?Q?/PzGmi4l7byNm8vBkne4z35SRHij5H0BEoqtI4PQpxKbiGM4VGoqAxJnCCXI?= =?us-ascii?Q?MgxuX+0xs8/pC3+CmeoVvDXXNldpTbDakGzvEoPkjAonvaUK1eC6FhDGHUh/?= =?us-ascii?Q?rlp3pdcAOe3qcdPeBm0qHw5KWGUg8ms4xQI07DAeYvZ2Gr6dbHf+h3fSDXrT?= =?us-ascii?Q?U3qTe1Es0ud07mv8WLc4qZyeBcA/aEPRvtjMTiWvERCOlcYGnisbsHvIubVE?= =?us-ascii?Q?DUwdcbc57CQZgAYOywAyivkfIg9hs8uYxXEG7sn692xg+6PPiJZTtAz46ccG?= =?us-ascii?Q?qfLNspR3ngjnBIeEuWvBNhNu/rXpUI+hxRaxqKThxRS8SLGXzONShTOwR+xb?= =?us-ascii?Q?2fSWDtF3vAJK7aztH0QMGK+HvEtDh/YuOetVN/aWJWhUQ1N3mkIXnXoBblPP?= =?us-ascii?Q?5dkUqjtbCIY+NTJ6AN2981gt441wgqiWEfTJ3UlZbsdPvv8UFO6v+MLRHa2s?= =?us-ascii?Q?p1tU6deMtf7I4DMxUKmH8R6jHbWPottBR4NGVtdB6J1THGeQRKyqG6WOYqI5?= =?us-ascii?Q?plUYV6Tfssx8swfdTvLv+/P0/bPGVV/PTtGhHnUYSxQxyKVEIPMW5fd+4z7s?= =?us-ascii?Q?xgBhDa6vK3abFAi8CLg/wwO8C35LGgLA2km8k2l64J+p8FmtHBfg1GkYrNra?= =?us-ascii?Q?8Sjm08yAStxczwp0pPrGx+KHd3k6sa2jV+N/rQzt70g9BqeNScMeaIG9REFV?= =?us-ascii?Q?HWqEtC3YdEh9dUNoihTUqul0q7n7kv7kJpBQzsBnTnpz5bwCifEkwp0LGkdN?= =?us-ascii?Q?4pJ5qcJ92kLNUQeydFUoQUKeDbI0SEjdLVMuwLaJR3ne3PZZ3VAEiETMyNkS?= =?us-ascii?Q?PbL6/ToGA7PufTvzhVN5Klk/1DtMagpYpFBrOeGt/tQmGNHcregSRnJbv4tj?= =?us-ascii?Q?fTrgZIxq1eIO6KsqyIfysW59FEDvzKMkJKq0vbvxFyMgJbjm3Q92Ofmitwkl?= =?us-ascii?Q?/WssdKvbNZG1NUlgmQX0KpODpPTzit+8IV6egxuUM9RxEDxikAiKNCRYMUvF?= =?us-ascii?Q?PNU4cX58k4K9oRPboSg80Dt1MQhMplxAiO+IZEcD5VauS1QV3SzXViHbqPNW?= =?us-ascii?Q?Ic3Jk60hxTPaih11oULwK2zelrX02uNZqoA7bdHvXepbc4yUsNaq5cbHeNaU?= =?us-ascii?Q?KdDsLyq2huIlxqtQxVmAD3RMszwyJl5I3M2GPXXx7H8jzgZj/G9OO7GJmXOW?= =?us-ascii?Q?dA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: rUezrOtZyMmSCH7at+Ae2TfOkehcOhZlp+TW3THcviVEO0eyPX+OluyeGb58yk0JTVpcm5scXDftodk87FDejtyG8GCwjKXAX7lJRmGABw26/BX0gNSjaxWx65XIT9S5NBRpeBdHtg+XzkpUzAeEIaj4KmfwjVFoaocZaZj8hw1QVBQdQqj4ZCvM35ir2AFe/peX1bPtD7/SVh3oqq0uQu2Ofe+yZd8VeD/xK/vchYHV4V8OPlNolHqgSBAXfzs6+H22qMoZOI+AslTvwdolQWHLiDdLxSua2RGgpdSQdaLsUh1ePlUOMePs+3dEVoGuXTozjFxWj4XI8O1+HB7qBFdCn0AAvUd1BqEeEgw3/ThJdFNxeqlzw2Te53Kb/Oyi/wWYpfSA3M+yAcrgvI99DErp51fu2TOd1l1ODh68gqV67l3YqEyDK0YiVVrnD0aY5urujZiJ3++XKN//TpzlMhwtUjEXGJ15zZl/TSz3QoZ+fH9Krv/AF5XxOQzu/NgrIMsNJ04yIBmrmL51Q1QGT5mcvoeakvhgqAfc/BU4bScKyskSjM8OUcOTUuJqHFBJ4rRTcb545yn9tSMxQPtzEUGi6nj58oYLlmnufzwlBHQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e364bb4-5152-498b-6dd9-08dd8c7d1868 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:06.6132 (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: gc45kxYO6QQb4/BxmFbi5dXSga+z5NLcoHXJ+r3k4Nut/GNy74J6znpTvehVz9e5+i80NfpyqmKnQ6X6UQHGpA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX9eM3G0VyF0kC jZNphH4z7+u6ZL5XfQ9w1JHOgvLKMd/P+vu5cM1riO91usZk00dlPT7yMQJGWi6akZHFb+58Ktk neXy+JgME1HcxekL99o8Bj0a2LgNl0eqosFlAGK1I5omV8ZaodccXRImHvSLn3IlSbCv+76D46O wBUEEqkrRW1GXWjb2dV9H9ZSILnD7N3NV3E4cZxpMfajiZ3Bl3GC3rmn4TuuO4dYphxuVHbovf8 dcP6OOuKRmzIWCUxRkNg0cnmfG9dLvtYITpaL5ZceLT9QxeLty6cG0B3C3FAMdEnL2DMqodywtt d+haNQuw9mQsTNKEqTpZiFYFOTdtikbVUCQeeRfc2DiJTtPT4qAuH0jj8Id8WsudZBxbC44Ucbn u2p7C8Ua2I0mzlBQ1GJeiPc3xBWbxuGE2vfvqRdNZ/N24cxmEEBKyNaWKy16zY7q8gVSnD/F X-Proofpoint-GUID: LE2UgoEtf-pjvR6jMYO261qdxQ87qf58 X-Proofpoint-ORIG-GUID: LE2UgoEtf-pjvR6jMYO261qdxQ87qf58 X-Authority-Analysis: v=2.4 cv=Xr36OUF9 c=1 sm=1 tr=0 ts=6819d0ce b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=RKwlAWmLcNA2bNi2txsA:9 Content-Type: text/plain; charset="utf-8" From: "Darrick J. Wong" It's silly to call xfs_setsize_buftarg from xfs_alloc_buftarg with the block device LBA size because we don't need to ask the block layer to validate a geometry number that it provided us. Instead, set the preliminary bt_meta_sector* fields to the LBA size in preparation for reading the primary super. However, we still want to flush and invalidate the pagecache for all three block devices before we start reading metadata from those devices, so call sync_blockdev() per bdev in xfs_alloc_buftarg(). This will enable a subsequent patch to validate hw atomic write geometry against the filesystem geometry. Signed-off-by: Darrick J. Wong Reviewed-by: John Garry [jpg: call sync_blockdev() from xfs_alloc_buftarg()] Signed-off-by: John Garry Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_buf.c | 28 ++++++++++++++++++---------- fs/xfs/xfs_super.c | 16 ++++++++++++---- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 5ae77ffdc947..d8f90bdd2a33 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1733,11 +1733,7 @@ xfs_setsize_buftarg( return -EINVAL; } =20 - /* - * Flush the block device pagecache so our bios see anything dirtied - * before mount. - */ - return sync_blockdev(btp->bt_bdev); + return 0; } =20 int @@ -1786,6 +1782,8 @@ xfs_alloc_buftarg( { struct xfs_buftarg *btp; const struct dax_holder_operations *ops =3D NULL; + int error; + =20 #if defined(CONFIG_FS_DAX) && defined(CONFIG_MEMORY_FAILURE) ops =3D &xfs_dax_holder_operations; @@ -1806,21 +1804,31 @@ xfs_alloc_buftarg( btp->bt_bdev); } =20 + /* + * Flush and invalidate all devices' pagecaches before reading any + * metadata because XFS doesn't use the bdev pagecache. + */ + error =3D sync_blockdev(btp->bt_bdev); + if (error) + goto error_free; + /* * When allocating the buftargs we have not yet read the super block and * thus don't know the file system sector size yet. */ - if (xfs_setsize_buftarg(btp, bdev_logical_block_size(btp->bt_bdev))) - goto error_free; - if (xfs_init_buftarg(btp, bdev_logical_block_size(btp->bt_bdev), - mp->m_super->s_id)) + btp->bt_meta_sectorsize =3D bdev_logical_block_size(btp->bt_bdev); + btp->bt_meta_sectormask =3D btp->bt_meta_sectorsize - 1; + + error =3D xfs_init_buftarg(btp, btp->bt_meta_sectorsize, + mp->m_super->s_id); + if (error) goto error_free; =20 return btp; =20 error_free: kfree(btp); - return NULL; + return ERR_PTR(error); } =20 static inline void diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 5e456a6073ca..6eba90eb7297 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -482,21 +482,29 @@ xfs_open_devices( /* * Setup xfs_mount buffer target pointers */ - error =3D -ENOMEM; mp->m_ddev_targp =3D xfs_alloc_buftarg(mp, sb->s_bdev_file); - if (!mp->m_ddev_targp) + if (IS_ERR(mp->m_ddev_targp)) { + error =3D PTR_ERR(mp->m_ddev_targp); + mp->m_ddev_targp =3D NULL; goto out_close_rtdev; + } =20 if (rtdev_file) { mp->m_rtdev_targp =3D xfs_alloc_buftarg(mp, rtdev_file); - if (!mp->m_rtdev_targp) + if (IS_ERR(mp->m_rtdev_targp)) { + error =3D PTR_ERR(mp->m_rtdev_targp); + mp->m_rtdev_targp =3D NULL; goto out_free_ddev_targ; + } } =20 if (logdev_file && file_bdev(logdev_file) !=3D ddev) { mp->m_logdev_targp =3D xfs_alloc_buftarg(mp, logdev_file); - if (!mp->m_logdev_targp) + if (IS_ERR(mp->m_logdev_targp)) { + error =3D PTR_ERR(mp->m_logdev_targp); + mp->m_logdev_targp =3D NULL; goto out_free_rtdev_targ; + } } else { mp->m_logdev_targp =3D mp->m_ddev_targp; /* Handle won't be used, drop it */ --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDC3026771B; Tue, 6 May 2025 09:05:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522332; cv=fail; b=RrLt9x/5blNZMoertGrDjcgOtJ+LKDYTwqDIn0EUZyE11U6UwwF/M1ZaCLNLnL499Ve8H/7RIY7+6MqjEtejkdpsZhp1wielA58YpnV4Y6OJF904jmnrZWZ7ez/V0LOIYOp974dqws79Maurk6kEq0bdbkCLOHmsOkVti+7pVd0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522332; c=relaxed/simple; bh=Gt86B67ma/3VOL5nB2EHvDqAICS+2kUXqIoSWorB2nw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=KYK5LMnZ7Cv6+i2MvnaNYLFZbmks0Byozk0rcGgSRu1OBu4hxF3E1bSbmdPlQnRJ7vlF29SBv492Ma3zF2T3bDA9gJ6UBfSKv4kcd487xrybqGOc5Wj+uy2Qple9cRgmcWO3Eo/eA8exhgbjhrq2HDoE/Eeeegb4HOExVcmKC7M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=XzSxW65F; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=p3+FU/Uo; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="XzSxW65F"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="p3+FU/Uo" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54682DVZ003145; Tue, 6 May 2025 09:05:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Dv0t/22YJP2ALF5ZPQOIRvcKH44Dz9YaJS5xdbj5Big=; b= XzSxW65F17ZG11KboiULMi3MibbsG5v40XFxdQuFullR+LHCIo+abv3Ci47m1rlF 4YyW1EbahupgQ0jYCV3u0ym3gNBsfhwH3bzyiomCQ37v76MlhPwcURF+BQ3XJbG2 h+0pMgmKv8hxHhahWh/RlrxVFU3UbxXgLndIGXlo38Cd4g1gKoDb5NLXXWtoFDTG oYuLsx0ReplguUBIun43MJUN3//kjeN0cQEc+Xv8hf/f05raHhUgjXqu47a8ef1i jcarw8pXunALhyLVpw82DWIxyhPKrGqm/7R5/TNZE9WD48xtRudYGKwDuw7aL/V0 fAUOxyfZpEXjuLDyNbBTpw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46fejbr4w5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5468CAR5035353; Tue, 6 May 2025 09:05:18 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010007.outbound.protection.outlook.com [40.93.6.7]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k8rmqc-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JsByen7KTaBODhjVfxqIFsHtWuv7ikq75t6Ia0vriAGCd9WfhyUI3m+TWq2HE1qg2fFy6ONY+4NqQz0horf8fYosKug83nV/TkC1AzqjJKIW34nRZ8TnG7VjQknClojaD38OuWEgVJr3cTpLLyGEUEgoxIcuvuoItEIc9izvkBOYI+asa3EekcrVxHOMHZO/xmjuhxbYWzkJJiHdogJywpJ/RFSle9jX8I0q+RLWUMMiW3MITuIn2/o6OKDqkUkeCdmPrd54aZ6HVHtzy0q2vwmZP2ktoHUPdxshw6sjhaJxgFzLpbtBTQBU85Cf88mNHU4k9aQpi6EYByZCsaZ3+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Dv0t/22YJP2ALF5ZPQOIRvcKH44Dz9YaJS5xdbj5Big=; b=uu1J3hkDdV3TqziuTWaIGWGeADs48XyNfY7r5wXq4YH0Mm1leQj2owStyCzPCaAy9j0PDxG0blnbOY5LFRKDkDx8fmENl/bbus+BiKthb9FETQGKnD+cizEZcYDbsTb9f6DDvL9VvdFxKTygsOS00y+zbUxU7DtL78AhPrFk8nJU0WxFuGB471SqWwOPlK1p1eeelr+0wkE3Gxa0IUXOPalh786uzS72ll6dj1JdFmw48aINQl6lvTEUFKS8pbBRHuf98fMJCr82Somcmq2lWJLaTzV3gDVB4XaGM/DPXW6ylrmmoLqbKnedmuTBuVsm5tuaHWS+3VOXrUHcYXN7Cw== 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=Dv0t/22YJP2ALF5ZPQOIRvcKH44Dz9YaJS5xdbj5Big=; b=p3+FU/UoHViM2WopObbX29WqRKcjvrIFBk1t/Rdsh7QGO1gsjaKTa6f2MJtxfLv30fzRafxjMR+AEAz7jn3rN60S5kMFHEkTLS2dh4IrjnCSPaDjS5SS2tOmWI3GfAPSTXIOM+q2dClBi+NI8w1Qaq+b+fHN3wWhXFHYOhFoUcU= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:08 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:08 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 03/17] xfs: rename xfs_inode_can_atomicwrite() -> xfs_inode_can_hw_atomic_write() Date: Tue, 6 May 2025 09:04:13 +0000 Message-Id: <20250506090427.2549456-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR07CA0078.namprd07.prod.outlook.com (2603:10b6:a03:12b::19) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d8a545c-1666-4c40-ce13-08dd8c7d1982 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yUHw0VqY83VtqjAAtqaNge84Ylz0C939vh4y29Emoev9j16Vk/5YMMvcmeaJ?= =?us-ascii?Q?Cz6i/zVi1ftTjA0U98ExDEOulCZveoYH9lTcnF7nIC9R/UJXDt5SKRBD1bvO?= =?us-ascii?Q?Y61fFYIKUy1zJLTgmck0FllZV9JVx72D1hn7XwN8KB/EnG4QGxnee6YOEFTY?= =?us-ascii?Q?5N8PqyHejzcUdMfo7j2Oh2uV82gT8zXZY6qoInuApuS1k6YoYiKjI53cZibu?= =?us-ascii?Q?p/TrV9EFBcatUCItrD0oVawyJ9cLv6RW+oJ59wJiyU1AGuMyOUb4jnhDtqGQ?= =?us-ascii?Q?lYJuZRvn45S1A6cHDnyYmEla8UmVL/rssckGy03AdNAMGuyGqvge+Gd4zEDk?= =?us-ascii?Q?516WSyowEnTpIxHNUL0auiPBdG+FJy5vQrtdW5BwchJjWHxKtiC+f9NrQ0iU?= =?us-ascii?Q?Na7/xcw871APkmgW+8oP3wOV2pOOl66WS5AVCf5y/eVtuoR2o5ShtjeqtE3D?= =?us-ascii?Q?ac1k0kNqfEGbXimb/D+/XPdh4MkS4Tbv7AIPUJ1LTgn//Og1gKJH14IL2bo0?= =?us-ascii?Q?7U2Z51JwyW1aClJXnuHnDEOL9Rka5/FYR8BS+UAXDjwYVPi2Hu6BT5SkofRf?= =?us-ascii?Q?Qg1+gFsGljI0t86OEDUQWo1obNGCllIsAQEmAj4/Fh5YADms5JD9W3bb/uqk?= =?us-ascii?Q?ontCjCohBQwV5VdtUa/Qq/a0s+2X2szkLfSPYwyQOx3tAh2Ot1PN2I9RjvZC?= =?us-ascii?Q?KUBB0MrjvWDaq7jW4bqMWGAeNzW+et8ZuKLrLUxvRaPPYKgdZ6V01x3xB6mK?= =?us-ascii?Q?R8Q0m9G8xHiMoDWN1IzmNZBaoGxrRkCJKT1Fdk2f4PeAo1xaDMOTYVzrrC+8?= =?us-ascii?Q?1xlK5IgHd4S3J+AliUCOEx4cZezMO3MYhT5NRUYBlSeyF8ss3PrS2F+uyf1S?= =?us-ascii?Q?y6DqUt2VthOL+pH3NglpOG/KqcgxDH4jli7JXZ4MpTvfUPprLRd2vLD0z0X0?= =?us-ascii?Q?mSHW4rwTOcELUsdGeF3UlgkD/TSGM7AvXau1L7atFES00OAoz/vqZLsaxXL2?= =?us-ascii?Q?l5gCczW3XuSg5ZohfTg8WI2cUWx4UHIkkd5IAMvvCa/DL+Fgafl4+1X03unx?= =?us-ascii?Q?bnE6ZaE7E3YzBAZIjOoP0RvO3niD2kjqzrLdWU1/+YOdFzp78YiCgSvH7xxl?= =?us-ascii?Q?9t5+qJmsOi53HMl2WIqBY4KwTCR+2/RjFMk9vWeh8Tdp/qziNed5WEI3I/ZR?= =?us-ascii?Q?7narpfDiQlZ2EL1kxyehvHFyGbOx8HHYCTe3II2UxmaNlT4CU1t6D6ZxcaRj?= =?us-ascii?Q?1anNiaNFat0nhLWK1tnCpGeErPZdOFH1E6WyUBSYA+jB4vzvLD6OWimu9ay7?= =?us-ascii?Q?cWIdigWLb/PSNH37U+ZvyNugRRAHhqR94wx+kk917pcDt8HA8vKgE2ewnIn/?= =?us-ascii?Q?6ZURStfhy9izpERYoDdjgdj6h5omm7D9QV5Z7em23erfvyiWWw=3D=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xgvzRlxiC0vLhVDJAFCTjmzSrMXzE79peClDOk+CorlpzckAmWpo8jdCNeGV?= =?us-ascii?Q?h4eaNGYG/MZV23oLziRWVBcH8nh4tZhzYYV6Da7QdWWU4l3OZfTU6mwYGaVQ?= =?us-ascii?Q?Pda/49fKxxtm380RtutSzAvZmEjYZc1fGFiSkUC5e9x9xCrNxjCpTNshlcpj?= =?us-ascii?Q?J0KWCbb2FpieV4eFYyIqQIf0/6VwSLNRZ4JGvr2oI9aC6JMOlB8H5yzYwHpv?= =?us-ascii?Q?E5hDfLCPpELUQyjbECY+PDyK3nsbXAwNzK8RJln7qMeLFyqA+BXQf/VIo7Ag?= =?us-ascii?Q?U/oJOVgrKRhI3bheBIg4I+jOOcjc39smfU/7V2zzHBwZEinaFPTYZcxwIMl8?= =?us-ascii?Q?IWzfyAoT0x93FPlGU7eYWnEy2O++QU+WJGT5omkkC7Eq7J5pvKS+hWa5ygqX?= =?us-ascii?Q?XoKaRlpbjQWlzGJ4nYAAhaHTiWkeujGme+ig2Vn5lq4qCtKKm5DyjiSQ8lLs?= =?us-ascii?Q?PLF9gRBESAb+uIhrUJPM/2JX66Hms+oxohbJ3YkzxAQa3UQe62E/CwQab7B4?= =?us-ascii?Q?4q4ZLS/KZIVwBD204u7ryLCKxKMOmC5ycOB9J8f1Ftp6XE7GqvFGcN72F4+c?= =?us-ascii?Q?N2T8+vTu6LPam3HmtnwekZ1A1s0uMUVU8KcDme4/VNWRJoncFcYKH84qZRJL?= =?us-ascii?Q?jtlBwbAyEccOb6hJJhVkdRY/Pdotvp7jOqlKPAeIIIW4bp1hRf7ENKzQmaHU?= =?us-ascii?Q?pJae+hNnXiK78U383Q5Akx0xRNRlVDgfT1dQ/+ZTUDfZg6QGOcChpH1G4k/x?= =?us-ascii?Q?X4thZqcvWgS457JsaMmV15ljqVOieFUkMp+GW5sjTeJcO44ncQvJwR5xVSSW?= =?us-ascii?Q?tS5PhkCQbUk4mvnb+gSNm2TDYEXwQBgiKP3eW12hgI5r5amUwAJPI9B3Qw0s?= =?us-ascii?Q?xmSFn9AU+8x1cz6VD4dmCVtN8Fh0DnucD8fYWpImBZ9J/gM3I5E60uA9zsTB?= =?us-ascii?Q?GgOZNtrHg2guocxl38kvy3KZ/ABy3Z1XZabSRtaVasFvGXM0a06dVWevohMP?= =?us-ascii?Q?LQZXcLYMhQ63Jvlasc1jvQU1yIYED1OhIOaRQMa6SFsePHMPMJdSzOfXFHMt?= =?us-ascii?Q?zFA4SkcBTNOj4aeT04OduOQDAgMrpRZsf7iwBjd/4KwEj5Ly11eQHNVsDODQ?= =?us-ascii?Q?hcdBpafW6aNchfqcY1uB5cMn0Y+hA0u0QOOMg7yL2hIl43vWiHTys9juFMjb?= =?us-ascii?Q?5nTniSW4Tw/qY18FLXOsM14IpgLTPQ6oPM90X1ITf4i+2sfUwFa7GUI+Sri+?= =?us-ascii?Q?cep7FQCfKn9peXY9jkWvGkh7fuuCRlHX4uxAUbtHqvYyxsOcfcRfiiPrWfvZ?= =?us-ascii?Q?oKyJ5sQ4T6BjmcE3nyH2GO4fMDW9nT86AvMsNtA9RLPVuzChdXAZt+7wpL3Y?= =?us-ascii?Q?vdhDK5Lhp/Xl0L3jdTcvM2MGgJ+F1BYz3djEdTwdpmvEDBsmKR2CTVCYsTpV?= =?us-ascii?Q?xNH1/qoR6fX17+27db63gSytbRiSXVo88Ki3uhj+6hE+NQ0e6bOYlR8sFeHq?= =?us-ascii?Q?7ojTTDHcS+mFytmjpdrlPWxpHykhWlPc1yTFVmWp4VOq443kP8zC8t5SK8R4?= =?us-ascii?Q?V9jX55PZlxXBNhGcb5m6iaJPnplXNLYI+VK/+7bx2Opjik/0diF1qI49+4gP?= =?us-ascii?Q?AQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: f6G48mr/drZQV1/FdJjCajRPSpNLeAiq2o9R+moextflQeB4Dv/1LKNQomuVffbOBIjh8g4Iajl8UeSrun2m8o3gVH3tYeBjYs1TbWotTRSF0FUws3J5Du4ccsCF7OTDJ48FJvnnz7TK/YK/JHm/gjXzqu68V8ulxhiWGV2KEy0rIi01mZPrTr9JkAVH9tkzeCuh7luR6wZ9GwMg6nEjlRDaha9yQjH9cPBCZDsjgo6Jh6OpIDbD+jH62/NMCqJtpB15GXXviMB2d6s/umTzd/1jbQoE4EWa8VFpgIJL5Z5XPEhEfjhoMbPnyrbk52kkXVGFGvpdKQwqgYAPDb0AI6kzTsWqvCZdBnIGie/wsXw/eOvceclxvmBpbVkZE5PENLIfgPwOybXw5Qfnloo8UVqx4xaFNFmbvjr0dZcZnIpmTiKlF30bIA74FQYvfu6JIF0QL+FSRO+q1ClJ6qlJnIhaYuYQmBZ13D4sVOsFC07HDXKHC/bXY9Yci7l7+dNIwe7Dxqq7A/2dwtT2MLpDHtGC9KDVfFfg19LJGj/4t4p3HBtmGST5Ei+/z4Q6flY7rFyUZt3sDWDFSJAT+Z26AeKK8QZssYy/GRvaMQTvJDk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d8a545c-1666-4c40-ce13-08dd8c7d1982 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:08.4497 (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: A0EwLTq+sR5pwG5xL6DJ+7SxjJdORehyp17WZGf3iAGC8nATlElv7Ouqk6JK1l4pMU89ByWYMyJf9l3Kj8J4Jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-GUID: pAVkZF77J2faTkF0CVOeF_MkisCfQNrZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX4l8BmBfAPij7 NeGbFR6Vu01JD8a1290HkNtLQDm9UHx1b+r5M8O+SZFUhgtjcPdiqTbfRBD6zyyH/kS9VI85HHf ai72S1S8SbRUOzrbH8LkPlTJLEDntOA8SGi9BlfMgSWuT9cMaCyawUFnGqGhIUOVa6nF5RdZWNy X196pwe7NVNaqKrCx2f6aWfrBGcRc0JM5bqSGBNpnd1YG3AnQEJICvLdFcsz4TCrVBuh9zi0d5e nevhfl8PU15OYiFXNJh4rXP8mbjXY6dz2UHI3VCBYxoHcYp6ma9PWZP9Cjc5LHBNZNnu1535hXM CTHn6QWmSGiydcGlUetbjcxLnE/Frw2OTj+G5b3QxSyC55OlCkAl2NtSitFD8gqcRQKglZVJzMk mM6lIEdr0c28U5OmoONir+DWC5rHadx/Pr9nEN2h+wsOT5EOQ1tDJ+wqNzIxQpdHPCfH0ztI X-Proofpoint-ORIG-GUID: pAVkZF77J2faTkF0CVOeF_MkisCfQNrZ X-Authority-Analysis: v=2.4 cv=PoOTbxM3 c=1 sm=1 tr=0 ts=6819d0ce b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=dsZ8xDv__DIBmhsdlCwA:9 Content-Type: text/plain; charset="utf-8" In future we will want to be able to check if specifically HW offload-based atomic writes are possible, so rename xfs_inode_can_atomicwrite() -> xfs_inode_can_hw_atomicwrite(). Reviewed-by: Darrick J. Wong Reviewed-by: Christoph Hellwig [djwong: add an underscore to be consistent with everything else] Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- fs/xfs/xfs_file.c | 2 +- fs/xfs/xfs_inode.h | 4 +--- fs/xfs/xfs_iops.c | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 84f08c976ac4..55bdae44e42a 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -1488,7 +1488,7 @@ xfs_file_open( if (xfs_is_shutdown(XFS_M(inode->i_sb))) return -EIO; file->f_mode |=3D FMODE_NOWAIT | FMODE_CAN_ODIRECT; - if (xfs_inode_can_atomicwrite(XFS_I(inode))) + if (xfs_inode_can_hw_atomic_write(XFS_I(inode))) file->f_mode |=3D FMODE_CAN_ATOMIC_WRITE; return generic_file_open(inode, file); } diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index eae0159983ca..d3471a7418b9 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -356,9 +356,7 @@ static inline bool xfs_inode_has_bigrtalloc(const struc= t xfs_inode *ip) (XFS_IS_REALTIME_INODE(ip) ? \ (ip)->i_mount->m_rtdev_targp : (ip)->i_mount->m_ddev_targp) =20 -static inline bool -xfs_inode_can_atomicwrite( - struct xfs_inode *ip) +static inline bool xfs_inode_can_hw_atomic_write(const struct xfs_inode *i= p) { struct xfs_mount *mp =3D ip->i_mount; struct xfs_buftarg *target =3D xfs_inode_buftarg(ip); diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index f0e5d83195df..22432c300fd7 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -608,7 +608,7 @@ xfs_report_atomic_write( { unsigned int unit_min =3D 0, unit_max =3D 0; =20 - if (xfs_inode_can_atomicwrite(ip)) + if (xfs_inode_can_hw_atomic_write(ip)) unit_min =3D unit_max =3D ip->i_mount->m_sb.sb_blocksize; generic_fill_statx_atomic_writes(stat, unit_min, unit_max, 0); } --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F4D6267B8D; Tue, 6 May 2025 09:05:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522333; cv=fail; b=HzLhzs1/gOdc8XfXhEI9cGpRyuZFOPjiPR2apC03QyOsX+9x0oO2Er9RHC/q5RoVaf4dMCXa/VX/EelEuarJMSu4iInGr5qngFSWq9SK9DMt8lubWV0L6QJSx9RwFGw7LOtTez4Pqe0u0SHljIR2s9D/xGSwHv6yTs1tG4uiHdU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522333; c=relaxed/simple; bh=PyW45OKwGanOYCvSS1Yvelr9Zeim9V4wvt+xM8YWKWQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=CNc6yuBuScn2NpRBT2o0HMNdzCTvubLJbx2FyzXOuBOcy+7HKpSLwsuNeoGP7UVns3D1mXlK0Cf/BTyW7zyLBy670D15bGsjto0VJS8cKXwr8yEStFV5ECouW46OPqrfKD8hY5EdLh1bdTQMx+00pjJ9eGd4YneO97lzT5WScF4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=jvLqVJsI; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=O+Q8RajU; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="jvLqVJsI"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="O+Q8RajU" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 546923vR010822; Tue, 6 May 2025 09:05:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=3U2mAt5O3v4f8lJ5WkKfRKX7RqXASpX2c5OnaGLU1zc=; b= jvLqVJsINUpthTY397tT+zEmoAmxpHgidVw9czHJ4OyyCz825NViFhr/hSOk8aB6 KfFUZRlVrLQyaSg5V29nI8J/Bwld67eKYm9+dRNr/yurGnmohBxnGriIl5Zhba+6 /kwRz5wxOibOdS9T1wQPzdZzt/sEef2s1SlOrfVo+VDfOVX3pEwaECSOKDXFABW6 6KTKVsfH4DR1v0zpEPi63II1Zs+dHxaWm9xrxYL9GrxXgE5+01WTdcPkoqSJAjx0 zzp2AeQ4yRBVkq6rjCn4n2AZTYWGlP0Jmmmu+JzHaPy9tPIVHM0XcSC/IWx+TfB4 e7XFbW0S7yUUWLHHXOcjkw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ffefg06d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:19 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5468CAR6035353; Tue, 6 May 2025 09:05:18 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010007.outbound.protection.outlook.com [40.93.6.7]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k8rmqc-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R3kqpHBoAkALy5ueEgmNiU39rsVJh8ZIZNqqln1F2ii4gVc3cQNMfDXXW4NKwV4gMFoJz5bSznzMBja8vJZvxgYO0wPi5b+S6KSgSfuND5QDX+cySqxj3/7bop1sQIyWy/5MiP32fPnB9eUy0qGd1hcY4wWs+jJNzu0V4ueuzq35/IBH5kpFGc/2pftLQc6K/G4VhX+pkfMvBuGyYGnkH+MK3J/Lx6PpHmmM3xrqPfEdBnFnl/hGAgih7ds7Y2+c5sNSPRPEc1DRkw+bZI2Uyi0SGAIgUO3cIaIgbdgnR6r3W1qwIlQJ6OXHT/H4sjbhjwGrIO/3UKQcGDchdH4ZgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=3U2mAt5O3v4f8lJ5WkKfRKX7RqXASpX2c5OnaGLU1zc=; b=mdXVwQlsH8ngIRsVR79HXhxy5ZeYNHxQk47YITn0jutmqxkWjqXwk+ntrX5/WNpDpKOm7vCTLdOMRPzpExb8zGAdtzS/woZYSmKXZNaGgtOqp6NxIe/GrpbBJnhWVbPMNY6zF8uhyQGSBAhB8at7m/hpCOlswdARvmC3VmsjNLEy6NLJQqizQgwJjXQKOoeAH6hEvBZOOwnkVnvP21aF9EwJeEWJ7jjnRKE27g36B2UJq6KfhiVjKkHIlWy22wpQWVfndmRUccqUI2jI4+8ydpjCuqD+pc79egFF2nkxg1ZH6KFrv61QsEeTqmp2T55BFlm9lR4hqEyX0IcSG0pqfg== 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=3U2mAt5O3v4f8lJ5WkKfRKX7RqXASpX2c5OnaGLU1zc=; b=O+Q8RajU5ZxvtvFfwM30EHemn6sgT2dxN9pC/wkypv21MjB+RsSJWgDDnNqzJpaEVMnvAAUbyQAdOZ/fp5tOydhlfzkLBBGiFXamPDNZ7DxQbaGkcxPmLMqMUGMthOSBNuEvrmrgp4JTcS+UyZWmbES6fCbjpYdOEggNubk1jDA= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:10 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:10 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 04/17] xfs: separate out setting buftarg atomic writes limits Date: Tue, 6 May 2025 09:04:14 +0000 Message-Id: <20250506090427.2549456-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR13CA0006.namprd13.prod.outlook.com (2603:10b6:a03:2c0::11) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: 76d57f51-ba53-4186-4439-08dd8c7d1aa8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5ZK5g61/x4fn5sMmVtPdmEIBT6QNjen2Mu912mXWZumaPki5moB2kCoxuroS?= =?us-ascii?Q?5hzxAnEtCCT8uoNgNHWqF8yg15mEDzoCUlQDsRRb3gtUhQSTOk/WI5XgiyiY?= =?us-ascii?Q?ouPcSLwdbFmWBYqLwqfRAMwd2AnD4gO+3b/WZoZyYMdVsHUkyhVY8P1FON7l?= =?us-ascii?Q?scqHVq8GA4fAp/rtc9WfzV0rkDXhg0NG3Hfb3T8Q3G3I3sSsNWV+7bCsOv0c?= =?us-ascii?Q?adHu5TLeSxKl8aXJwQLoJiF+doFstr5ZqAMSFYpQXSmObUqTDvnJ/YIQc/37?= =?us-ascii?Q?vMfHgJt9tWMqIHa/b5DxW+jqne5F0zPbiIN0TVSNeOART3F5ftzh0F1XbYUi?= =?us-ascii?Q?3shQ94iA963hX0uADaPUXLvZlvY6cSe6aaMQDYzCvCSg7A7UmgOWpIdy94sV?= =?us-ascii?Q?CATi9zPA+LA+ilzISD8pwug1JB4YF1/gVyWyYIiLB3M4yNDUAIGpe1pLpb9w?= =?us-ascii?Q?cMB7tW0XRuahlay+ZzrG7LyTw/fCHsK/PnwTsjEy515GrlD97UvNAFzOS9KG?= =?us-ascii?Q?tuqCFw3T8BQoB6LX59heacWUyfOyylUVj6CF2vk5LlTMorkxVe9limOyaBrq?= =?us-ascii?Q?U/9l2/QekoLAUO22TjUrMBqamZ9HgDY2oFgr/mBPHZ8LUuxzQoWVRErgfQ/u?= =?us-ascii?Q?VbEaV8Lq4WCBZ/d1lkFQdixbyJFHciQ+iFaaXLNs2IxTLdaG3RscsDD4Tr/o?= =?us-ascii?Q?WgdB7aD4aVw1HbZmWoWwsarVcdwVGDbzzBJQHr7llPX8Fw0PKtQbHLP7u5gC?= =?us-ascii?Q?8LwRLarxB/JmcTFaWcz3jk0Zn1ah+aoWPn7WZcE4AfyYVJxv2iks568/GBNL?= =?us-ascii?Q?H3dOx1GoXSHLz8TyhXbAplSxDV+ojWvpeluW4BQH2/C6yF2pwZI8dNmAhwZH?= =?us-ascii?Q?3lee5NDRZzpHD7xE/CqqPz15NQqjcdf+iKM9HahaPzGCk3zswsPhCliCsRwp?= =?us-ascii?Q?IE6p6Cf+N3AsRUediRagWZ0JTZfJ6JN2RySobDifcsrRC2cYHYZijirEz4VP?= =?us-ascii?Q?17HrrRy7DnBZ7auj9GyingTvL06S310Olla7/1V5bmY/Z3g/GBExuEv2b4jQ?= =?us-ascii?Q?r/Mp90cPTaisilxqD2gCmM16OpZDBRaT/6SRuzw71CeGS1wFRIFBH7DWS76M?= =?us-ascii?Q?i/tiUjzXb+cOFMwvcoKz30e3OtrFQokwJt6NW0njg594wRrl8oSrkVFknYft?= =?us-ascii?Q?74rjB9S5LN+ejec7pRTYx7rZ5q5hLCmVNYDPEdaHILhPZuKMlw9XzLc46oOX?= =?us-ascii?Q?vx4UQzNrcfBlMcDGsvxjXB2LsYCE1TthzwqIww8dy18S2yHTP11of1kYQire?= =?us-ascii?Q?0PnZkrgC8X8O2vLHGTkY4jGiv3+ZRry7pRbIcg7dtcRh1h2XU0rQ96bfvnyw?= =?us-ascii?Q?JcLBGwUQnO3ZDhsRfQQ79jkTZWcApniIU3X7gp63C9XwnLkPTiEvq6K11jkN?= =?us-ascii?Q?hdfbV584Tbk=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Gt5BgpwuxWa6aW5mP7qFSyAFN5qepLugL1aGyt9QM7B4kV9j7B4udYnvnJx1?= =?us-ascii?Q?ZmfW3QhNUAgtWypHJzASeAM/dpEpbKCTRBKi2quLl3uOEbSo8cArmy2TvjvO?= =?us-ascii?Q?cTJzkjdQue5b0m7XeC2CB4aem3cQVJcX254hXwEqxWrCZROkp/SXUQqz35Gl?= =?us-ascii?Q?aD4jNcIXeEbRuqZbqaW8HaU40MGIm5YbwMcA3ivVWVVW3KTlupcmt7L+hF4U?= =?us-ascii?Q?tsepQJFXPgEbmDDfp0DFRPe7GuuTUPW3VYxnT+EEZJcNEf5JTf2urlrqWR8/?= =?us-ascii?Q?LXSO5P7Z8nfR1AfVqatiEkN2kJ1hYQBh4wOmO8l0KIe40jJ8e2NheAq8MCCC?= =?us-ascii?Q?CgWrGixrqBqaQgk8ULm29nk0PyIotmbiDx8y+j5a2mfy326bcyT30hTwtykP?= =?us-ascii?Q?kNm/pNBdaHM5EgCdgyBiX96/+VEx+HRlnBmAGLEAfpsa2PtdHCaNuQWpDB75?= =?us-ascii?Q?CW9Zk33R14nVa+YGgfD1q2DK1z6Eboh8ggEpG+IIacG3nDjcPwfH++Uso2Z+?= =?us-ascii?Q?tAUDj8c6hxtQhX8hHz2svQ7+xoP5wl3CXxsdtfBcyp9J8P/74CpRGFXdlIgw?= =?us-ascii?Q?fTuf9KA5casQb8SIZFdOvgzP4tllIhTfPsyr/8c3j5Sq1egDub4F84x+wZ3A?= =?us-ascii?Q?hlmPbJzWY67MvxtupccDIYJ2Y7cfO0EPBTpOohh83T0aMzBweoj1XHotRJgZ?= =?us-ascii?Q?obrJpBziOHPhFyEzycExfW6kjRImsDi7s7ZaDyKNQC9zx22zGtjdMFrdqWmH?= =?us-ascii?Q?HmBB0r0qLObgXfcqVAgDSuwAEqXchgj9TncH6Jxa7Ypv8sFMnPIElnB4ZwmH?= =?us-ascii?Q?NahT62lco/Tkk6Q8CTbcSUSMZUCjUMvHicFvyhabEGejEDELEdxhHIL7e28A?= =?us-ascii?Q?QlRaoyuxS5dBTzNi/vlyX4oeY0ldT/b/+VHzN2wOltOWjoS6UdzWMEeWZTvF?= =?us-ascii?Q?+okQ02fe6yg86epqdOW5pq1lHRM5va+f6q6BwtZB8MrZKgLB83bEYPx5PdKu?= =?us-ascii?Q?EY9LP1O1BMMDENLvmkebjys8JwS5KubZK9ASgfVLfBpTTV3+zytx0EBBIdDs?= =?us-ascii?Q?yNaC4beTPnGGpsGU2IBIo3Kw6FJ/ZvajeeXe+yMP3MGO3vQ1zJ1l8srMvAze?= =?us-ascii?Q?eTwN61gQgmFQ8Mu6iW0xEbj9bTxpDwHp9NIjST4Sr4Qju8BnrpHra1kMgsCt?= =?us-ascii?Q?GdAAmC5Wt7TnR29Lx84sHlGK91dmG8eODc/Hx8wToS9vZxKhUfU/E41IzIJ6?= =?us-ascii?Q?kKYNfo1xDbJOp5GzOSQqwr8v1WE7iPd3SXL3NRrZFYHzvbMjVmLWUP7440K7?= =?us-ascii?Q?aQfSxhaJjfDtibNqYPBzrAIY1VAc+9UOGapMmaYpjtQnu9XYwi5QzpZVzllg?= =?us-ascii?Q?4H07PF9MQRery5SnEdkrv3DmRNp0gS1HtCzsNb3JRvN9we0E1rT03ZOm0xZL?= =?us-ascii?Q?i10YFXYk0srURmIZwHMYus85WU9RSyP8C7FKmeGWnp4/41PBkRnRJZ5pPZ7e?= =?us-ascii?Q?RS9+AJ+g78k7B+xx3AzqNebk0sj0uMM+KXA3dLGZtdR87J74G8sOiMnlozEE?= =?us-ascii?Q?z/TNXaaWK9Cf4+YLpx1iPUmS1Aa2ydtWSesuvDaDCERNgiAa6YbPD4ZHPhNX?= =?us-ascii?Q?PA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: VNn3cimoV4BXDoiiA9rYsDkKxOL9SQKnztsUyK5aX4HuzyuNshdgjFWNtK2625T4mu5F/esd1EB6snmjDrK91UrSFDrqgI9GabKbrnPBoY5+goxthSMkHNCWSXHkQjW42FrZeTAsjoIRXQXDoTVcjFYiTDW6AtXn/nTEsJw3bAIVfTz3I/T3klpeMkjPTchhMqEDSK+anCmDcW0ZALFZuHl3VbBRTI66Wv0T24g7A8tn8b8b1Q3zx1OS7X1yzheuJtcFWG6e72Vl4j2ATGhm9UrEZoi4o/3w/vYfRh/V5Ycpz5nqWpFc1PwdLEghLpMguZRuEa2gWoDvaMaXxsdRExFAJIdRelzquD4HVZnQIri5OpDvzkRo9E6lMVTRjbzQ9Lxt4Bo+H7pp7RO1/Q27/5YwLYyvsJQ/KM1ZZUrmBxLbES1KySLwV8C0lmNj36G88XMtpcunFjL528Vll54dOfhgSoE+2qMmV+kp32QXIhGNu05Br0jvVxfJ1LI8dlstDB7cZ5jliyjaOD5CR7ehJhj/YMn5LxU10TcprkyPdbVQX+AJL+uTMpBY39RTFnJYX+6+g8kh5Y8RLlm2he/4c33MGypZfToe5x9LGs5ByPE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76d57f51-ba53-4186-4439-08dd8c7d1aa8 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:10.3546 (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: 7zqP72X1sLZHyLJtlzNlcvwdbV5Ven45G8fJkWrhBqXwTwajxP72AEYrpR6QIdsSopClGAN8ev7qNNSki39OHA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfXxWU3pkND18RQ HuXZfv9WqbIz855ogZkVXE8Qd/ABg/3w6t/0VRY1djboLF4NrXyPzfWlumyP4NMYYEhnoC1UedB jpIW/3au6oMklEC92ypdNNz5N2Tl78Qs10F7QjTDXmuqlMM/CVBBpPte6F6P4dqbCtmQiHG4FdD V5n/V8bOdfTnaNxvELhoWJLA+8cfrfBxbsGjFBzI+XTGfXmx6H2CnS7kgtq6DO6H70zPnBV7yiA q9xJTxfC0yg8wSF87OMG5eae04sddPh5WFbkH5KgqlOUb1jpi6UIAJ20av7gvCS0HQVYzPV+XKB I8f3XSPDj95J90xZLAVpDG34w1asO5iS/fcsYauLLY166Hbkjvd4qO5MGwvgJ7j0U4llMqj4hh4 uGJ451uSYxLFKMEn8mCoalyvwnrguASuwXh506W9KoeyzCcryMfntFS/HDG6swANjF4ZOPF4 X-Authority-Analysis: v=2.4 cv=V+t90fni c=1 sm=1 tr=0 ts=6819d0cf b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=dqqy4keaaASm8ESglB4A:9 X-Proofpoint-ORIG-GUID: YlaOwQ5Feq5kUbaQM0rP3AlQV-Dg7MBq X-Proofpoint-GUID: YlaOwQ5Feq5kUbaQM0rP3AlQV-Dg7MBq Content-Type: text/plain; charset="utf-8" From: "Darrick J. Wong" Separate out setting buftarg atomic writes limits into a dedicated function, xfs_configure_buftarg_atomic_writes(), to keep the specific functionality self-contained. For naming consistency, rename xfs_setsize_buftarg() -> xfs_configure_buftarg(). Signed-off-by: Darrick J. Wong [jpg: separate out from patch "xfs: ignore HW which ..."] Signed-off-by: John Garry Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_buf.c | 32 ++++++++++++++++++++++++-------- fs/xfs/xfs_buf.h | 2 +- fs/xfs/xfs_super.c | 6 +++--- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index d8f90bdd2a33..e2374c503e79 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1714,13 +1714,33 @@ xfs_free_buftarg( kfree(btp); } =20 +/* + * Configure this buffer target for hardware-assisted atomic writes if the + * underlying block device supports is congruent with the filesystem geome= try. + */ +static inline void +xfs_configure_buftarg_atomic_writes( + struct xfs_buftarg *btp) +{ + unsigned int min_bytes, max_bytes; + + min_bytes =3D bdev_atomic_write_unit_min_bytes(btp->bt_bdev); + max_bytes =3D bdev_atomic_write_unit_max_bytes(btp->bt_bdev); + + btp->bt_bdev_awu_min =3D min_bytes; + btp->bt_bdev_awu_max =3D max_bytes; +} + +/* Configure a buffer target that abstracts a block device. */ int -xfs_setsize_buftarg( +xfs_configure_buftarg( struct xfs_buftarg *btp, unsigned int sectorsize) { int error; =20 + ASSERT(btp->bt_bdev !=3D NULL); + /* Set up metadata sector size info */ btp->bt_meta_sectorsize =3D sectorsize; btp->bt_meta_sectormask =3D sectorsize - 1; @@ -1733,6 +1753,9 @@ xfs_setsize_buftarg( return -EINVAL; } =20 + if (bdev_can_atomic_write(btp->bt_bdev)) + xfs_configure_buftarg_atomic_writes(btp); + return 0; } =20 @@ -1797,13 +1820,6 @@ xfs_alloc_buftarg( btp->bt_daxdev =3D fs_dax_get_by_bdev(btp->bt_bdev, &btp->bt_dax_part_off, mp, ops); =20 - if (bdev_can_atomic_write(btp->bt_bdev)) { - btp->bt_bdev_awu_min =3D bdev_atomic_write_unit_min_bytes( - btp->bt_bdev); - btp->bt_bdev_awu_max =3D bdev_atomic_write_unit_max_bytes( - btp->bt_bdev); - } - /* * Flush and invalidate all devices' pagecaches before reading any * metadata because XFS doesn't use the bdev pagecache. diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index d0b065a9a9f0..a7026fb255c4 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -374,7 +374,7 @@ struct xfs_buftarg *xfs_alloc_buftarg(struct xfs_mount = *mp, extern void xfs_free_buftarg(struct xfs_buftarg *); extern void xfs_buftarg_wait(struct xfs_buftarg *); extern void xfs_buftarg_drain(struct xfs_buftarg *); -extern int xfs_setsize_buftarg(struct xfs_buftarg *, unsigned int); +int xfs_configure_buftarg(struct xfs_buftarg *btp, unsigned int sectorsize= ); =20 #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev) #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev) diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 6eba90eb7297..77a3c003fc4f 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -537,7 +537,7 @@ xfs_setup_devices( { int error; =20 - error =3D xfs_setsize_buftarg(mp->m_ddev_targp, mp->m_sb.sb_sectsize); + error =3D xfs_configure_buftarg(mp->m_ddev_targp, mp->m_sb.sb_sectsize); if (error) return error; =20 @@ -546,7 +546,7 @@ xfs_setup_devices( =20 if (xfs_has_sector(mp)) log_sector_size =3D mp->m_sb.sb_logsectsize; - error =3D xfs_setsize_buftarg(mp->m_logdev_targp, + error =3D xfs_configure_buftarg(mp->m_logdev_targp, log_sector_size); if (error) return error; @@ -560,7 +560,7 @@ xfs_setup_devices( } mp->m_rtdev_targp =3D mp->m_ddev_targp; } else if (mp->m_rtname) { - error =3D xfs_setsize_buftarg(mp->m_rtdev_targp, + error =3D xfs_configure_buftarg(mp->m_rtdev_targp, mp->m_sb.sb_sectsize); if (error) return error; --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E334272E72; Tue, 6 May 2025 09:05:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522337; cv=fail; b=l+h6zfj3uzEgXE4sdD758gSADY+yOjEj2tnYGKhcELPbFhI1s+aiSy7ir0b/B1oISPnuIZdN6ky5FB9C/iOdNAyQFsLNLKr+vzYzpF6FJ0gMdEMt3riYgcjS8wVK5yOZL6Bd2M6VaZIMo/JhJmJ5DLUpiBiaEvcngyNAw+XzDh0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522337; c=relaxed/simple; bh=wm7rSgXjAJHQhi8ehc1aU3KcZ144tJmRrGCHWg7nJCQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=rwDaqU8R2hqXcFxv1J5fJC+tt9wobb9FoLD/01DXkdqtimPoBrLOMPhlxGjusoQvJJaQXBv3LinqNsmytpV5EuddZc5Xxx5Vmui0qUXLejF5Z6ByVmE0+Wlzq4HVqYOzHhCsH4jnKhQHAWVlQz5GK5+q7i3gWg1xEoVxELeaEP8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Z+5Qt6g3; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=s59UFlXY; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Z+5Qt6g3"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="s59UFlXY" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468bdwR027357; Tue, 6 May 2025 09:05:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=QBdxx6TL6c/ibAyxGBc81pYFfbStco1TPCLf4whYrW4=; b= Z+5Qt6g31HvyOTebJhxMQCgqx6AhPtDxr/XbyeXzsvYOq3NgWskia3EmF301YtnW nlZvbGKuK2a/Wvh8t7tCwDaffRWMwwak6pgf+JfzAe+2gDNPJMFkfdTo3losixlz 8q1BH6ZCWguxbGp2/3t0s+XZ24x9EAXmwsu3QS7izDrZKnBs4dnZvsZyhT6qbxQS kK/FAO2WtebuCEQWa56EDh0wTEb9WN1unYgb4645NYHVGG6uCfnhAt1sliRcNV6e lPtrESs+FcT1eymqo9RkyudrobYRfx6YS1NwHS33OsXBHxVSP8FqeX7vewVIA41d 3B7Zd74l0Ozj2FEb2R7adw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff2t02k5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:21 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5467hOB5024461; Tue, 6 May 2025 09:05:20 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010004.outbound.protection.outlook.com [40.93.6.4]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf062x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xuyqg5XlGa+I3TRVeslpXL/xzsQgCjTIfK2AIds+bWjl92iRf9n+JcIc/9tWmyzMiSPVUhB4mD83uQat5mYw6QXPrCX5sbHD4aLmnvj8wScIH91NEfD/Yb5J2pTYZN6rqqmX8JpdAelpCBOnJc1G8vI7X7a7weqsuDyukQEZrGeSQHQSNSnXBB9oTDFga9uQnlvNb1OMnnYOaoZHniavWHgJFm1t7xzMHmj66SkP2Q3EYFyI46CQj9kqsuF9g3b+VsvX47mB9ZYuS+BUTHaUb/V/cjhvgz7LvLH/gdSEigpR8vQE2Z16DDNDRcy8PNqBiXZvidT7kWvXeIGqWmrEow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=QBdxx6TL6c/ibAyxGBc81pYFfbStco1TPCLf4whYrW4=; b=ahqmd2O3d6R8116Wt6q0HLqKNtOKT4pCVa72MQa4koW8MALvG28UEX2cUVZz+4N7s/Rpx2KJIpK2Du1IZi3ni0cqEI7EI975Lh0oM4t6ZfOV03ExUXlKgoi6zgbbq47P2RAY7zjm+QBIo9Q/2ldBzp27sGrciIYrguBOLgLYSv5NA+xbnbCtlNSacUWHNYZX6Euy9itAJ8/Fz64hrODmQFc+Q4qDBvg1VspaVW0SGsNDCUNBv2AYGctAiZ+mmO28Y5lOeusir9Od+N3yOftakmTtWk+fPBqsgR24Oxhcp0KOH6SgDFcSS5gQ8i0rvMq32xXuQTaaFoR6jj0KWEloSA== 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=QBdxx6TL6c/ibAyxGBc81pYFfbStco1TPCLf4whYrW4=; b=s59UFlXYU5e/+RNWw7ddiYopVvVROvtGeLG1MFaMsin1U2Sb1CTXzhqlcqmca6FtvEOAoKj7zN4SYnMS9HZAxYC3DBzOvX46mIKzMW6ysyiZimfQrTCMYo4dyRB00dY12L7hwohj90DDVQBX5X7le87Ogh4ABiT59S2we6LlB6o= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:12 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:12 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 05/17] xfs: add helpers to compute log item overhead Date: Tue, 6 May 2025 09:04:15 +0000 Message-Id: <20250506090427.2549456-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0223.namprd03.prod.outlook.com (2603:10b6:a03:39f::18) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: 1fd69058-6e6e-4697-116f-08dd8c7d1bcb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AW/GkSkKfeI2XVscEHbjO2p7YbTj9BHUc55uxmfIw0a8lxq07incCzK3cOGq?= =?us-ascii?Q?QWw9esR4QFo1A7ieam5wNbFIWh8FDQ7Xc3MxNFuUAkF9IAAFDdYVTmr3gn2Y?= =?us-ascii?Q?7i16hE0hTnuYfSIex3nGvhKFXHeF1voaFG1rWTKJ3Q9Lvy+J85VNoaSpbDvu?= =?us-ascii?Q?xwOics2EhUzFwsB7vsPu5PZVznVEZTVO88v7dkRVQ8O9FdU0lAzNZAXvMmxQ?= =?us-ascii?Q?VE9G0b9KLznfNUo5IgxNOSdG+a0ChLFgWciYQlCXTx2LP7oaLo4yvdYt1Y5Q?= =?us-ascii?Q?dtEYPaiEGfgm3fmO3xgyTLqpsO2EDCMApnMPu37mvEh7G2TpX+LFYJTM5a/s?= =?us-ascii?Q?W17KpBOAgDhm+MXk7C/3caxwvztDjTUhfkd4CvK6Uvt76j/e+AeW3+hR4O8P?= =?us-ascii?Q?zGK6YZufaY9Ejy7cmwd/emb8W+ZLsgog+HwcJVtiyZ8tkqGDspTLTorWU5Ln?= =?us-ascii?Q?CB8RcqWaMstIp9LqZMOiincyVnd7SKKFsqyiAt5hST4YErKPCimx8P58NrTB?= =?us-ascii?Q?p6goQm1kSGWnooAb/pQ1TAF3BrJ7W0lQ8kvwhk/dgR7atXCZX+zoB9VwVTud?= =?us-ascii?Q?rdF3o6lQoO2vqJzcLpAzj5HfxCZbY6x29I3oBv4PuzJVgjPZWNo/8LJDHYMq?= =?us-ascii?Q?0ItqCwZsC/jk/KPplnnTVX4snIpV9pXwlF3XFqySAdY8Dpy42P6eR/Uh8hfr?= =?us-ascii?Q?NQpe/D83kt/2UB+Y/ILAPB1jRIcEQn1zjdWFfCDyOkCAIvV/a/tBgXKMFeRc?= =?us-ascii?Q?VxI7oyMYnizTdRyEuXCNeFFxx4qKllT08ZnXJtvdOiojRuMNc0qf0Yl/DTgd?= =?us-ascii?Q?nY6Aqq9R604kF6sBK9NAE0Dy1PYx6+VQ2MwFIZA+Na6SeegGVWVEGVTCvHFu?= =?us-ascii?Q?ps9THNWLPZonrdlrbJDq/YFSpV+/EADIYEYc+D+b8TDNAuAK1bQHcQJiEwnb?= =?us-ascii?Q?1v6Hqd9XW7zaZORyXe7rVEkXxwDeSTe1OpssG1qtTKvxGPoFsV6oD06ZDwV4?= =?us-ascii?Q?19g03vnhyXmnwbxjP0P1c44vd99dkxV94QN4wUpG2y8dddl0Ys4z0jG6H8AA?= =?us-ascii?Q?gVS39xMS05gebXZmpRbThONE1T27J/ZnGGdojwvUDMYlE2c4xkEjoVp1kJFn?= =?us-ascii?Q?9hmR3yLdlLkKod8u7gy0+9DAC8rJSqiqidzmqMTNwjIjoEDBSIgLWdALiwg3?= =?us-ascii?Q?rsStLiP3+P5Mu2Ttg6mKpIBmlhOm4uiAdcZZvNFGUcNU2G+S9aOyx5xVy3Dp?= =?us-ascii?Q?LZhaxiGO53IXKYzpd6waVk5ui4zM6cmhh7Pu314gTd5ECAvg65/D8NFORAun?= =?us-ascii?Q?ts23bqUOeCFI/320XlIHkroodw+hfMn55XEtdcu2KYyMMLbTcdAQPrnswRJu?= =?us-ascii?Q?hpT2X2Htg335CVrE5mhdty8aNE6rVTqjm7lBnaAFgH/HVZAdxX0iXL1d39GV?= =?us-ascii?Q?hvpXFpXzAQg=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?A3cCftc2ibY7jZxWBi6incpgAXVOKE/pqGvQVzOPpxSCKONzUX7VaAPTQxoM?= =?us-ascii?Q?ORghu30UauvEUgWxxhD++p297zQ7bkqMKaCUAQFSwxYX2acOzu4eZy2iaQtr?= =?us-ascii?Q?hGUp9wXzUWreTlFyA08vOcgtbOydg5lJJ8RAXfQHYqQfsQMs9Ar5EryRy6kR?= =?us-ascii?Q?LHIX9/+gXeDfpH3KptX/kjK3TFYxy1Y6cHhOAXXGrdNGEmkaQT1T7Ltl0WMu?= =?us-ascii?Q?5mZ66laThkwGHSJj/E8No5oPEg/3Q9rhiiAstWnZGOiCezW0Kk7CvHoUnuV9?= =?us-ascii?Q?OSM0+ZNNr6V7+huXh+nwf7wU3ylg5VTEDCnqHAovHFpYXXyDe84pyYRKf93L?= =?us-ascii?Q?uIfugfiHXAxb4LSa4aU9WPBfJ/G9QqC2q6e8ppBRS9sMogOE5Le77H1P+FPn?= =?us-ascii?Q?lfJx/W6ZpHbOWKL8L7xdYMd4kCd+sbRIqLBQEUtWZfJoBfwsqujlwMMqT7Lo?= =?us-ascii?Q?C0Hk5PM3LedoWANZwGxTWWCO/L2Ear+1Q/bN00Sx4Jcv/zVsjT+1VD1yB3b3?= =?us-ascii?Q?ivdl3jJdeOHsYVqOSWepNq+IEymWaoa+ioW+pprJlAN0g9R0VJxh4FR8gszJ?= =?us-ascii?Q?mHRawxF03WOoVJehzzxFt4+Bad21wY9iFsPt7+KbgfEi8Kmgqk43ozzz/saF?= =?us-ascii?Q?uf9oEZWJqDFCKgSRajFLd3w+QgKF8AHKolbgMf7328Agqs4vmh4ai2ZMn5y9?= =?us-ascii?Q?kaC5wjz+yfswSv0VmGTVurUND9yyCXIXd7We14vgCGtBmifmcGsuBgusNFiV?= =?us-ascii?Q?mHlWm9SER4aub6GMvuR9YTn6DRnlG8MshmEMoXDQKRnk2sv3ReZSln43q8yt?= =?us-ascii?Q?5slmk/QffiwCRJAGtuMfSYv8SvU7bKc4P7/9WBfsQNIJCA26333tEWBrjOhu?= =?us-ascii?Q?I2MD7EBgwL4T+zSdXev4poO2CzoD0Blcp4nfF1UZrYbzdho334eQfRMHBPzW?= =?us-ascii?Q?By6GP5/WKhRjcARusl1izgw5nxp5mq273+/aB5dolT+koYTpvjPEB6ScBQvg?= =?us-ascii?Q?wQq7dLUnTxlut8bkNzFSMclK/KyKlgRBaWmBGKgkavFHKS2eupK6NVF+0ZUY?= =?us-ascii?Q?6XPnxaBlpSmLTfNatf2awaa5l0jp2apr9IYsyDvYMrmSuPFcym26EFWqd9As?= =?us-ascii?Q?NCdD/WkuMySqiMC15Tf/6N6ooZC/KXm0YLfKOUHWFrR+uPCrvcNNGZchhuC9?= =?us-ascii?Q?93Xw9x8lhBiVHXcMiEQVl+pU1bGQkiVPSZ5tSm6qb6fh2igVr0LjDuFQTvU5?= =?us-ascii?Q?WgysWQRzWxS0zRm8cHC86+w6V/6uywgGOdNmO6YmQAWfPMjSt/7lC7j4HZT+?= =?us-ascii?Q?mG7puC2FNETI4qKdAwjIvgWqwfWa/duK9aDEuUsmLn+a8KtGp7AXXBkIp25v?= =?us-ascii?Q?3Gw0dpf8dB/76howOeac64AsKBZsI1/UFbo3BpXVKXTLZZt+3QajmT708H5C?= =?us-ascii?Q?x5cfwybCH7TuMIrqF4SEc5ckGoSWKiqWowLi3/sNILbHWebK8M4DnajG3ABc?= =?us-ascii?Q?FV0cY3kiIBZFbAKM+Gd2dJdsGK7AHFsu55N6dX70hJctxVimMEW3dnmT6E8r?= =?us-ascii?Q?VyMpjJcP9mwJrlt0ofP3d/0JFahCcywsaNzHYoeQEfw0n4HKYVW5bonRbxWT?= =?us-ascii?Q?Ww=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: mgSdIT/0GuAt2fAi0bEXRB0Qr5q63TSWbE7ygpGOafvAPQiBPYBIpZjfRkvvQvSgUr4K5K+HBzVOFvNivty7vtKjSOTY2xo1bm1g7rPUhXWVmqw1DwJbO6l1f+dQPPoP2/snTberu/134wAAQ9tsCTvKYseQUEi/AabsHT1j9zhMVukek+dQDZMgAI8iH6YvUz09S0FaDXH3i3t9cSv0Ydzrde76HlLeP0q10Va147kiYsZqmCYNmI/1sfLEJwlnLYz8DNzCwzx4zM81fIA9zm33w9HuhPT8fegJ8gHi0dA8+ujjbBzDY5GUzHbuqcTkc2CaqWrBrl7JvQcGc5Y4/GfKuzf4DWxAMuhMQv5OUH1s5MK4mbvs5FtgQvVlvtcAEKUPaytgxQ3nnmZobq8FaH5HxM6aENr6wx2EUw6zBbJJi/ZFgJC3h4u8VYs3lZvHmYEv2UI8IWUttJ67Gvxxr92QkjTn00/7K4kjem54BF6EcvGOG0j1oz5BhlpQzzgvAo8iIA2LohkZAnwOH1ARJyChkOLu8nmX8vtupRa6c8tPIk76K+In3xXpfG4rjU867pwbYsIfOfNHcPLJx01/3Fn9z1c/1kamFi5F67okX90= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fd69058-6e6e-4697-116f-08dd8c7d1bcb X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:12.3285 (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: ZNtydR11N0R2PXh+8y/J2vYMusETJyAKSg7ic78e0uVnsHRuK8/NyRUWVNeHYIBx9XkFFclrFcmkxmVcCciacA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfXzothLmw1XoOE hasZrpr5EZ9RvoaY+fFYiRb6t2nQ3AuLlwo6m9qI6ys5eLGWscvaKY7ewJn/Umu6kEcftXvpGaQ 8U4bH51PK+ektZY9vttO1oAmH4jFg/J+3eMMyu8frePYGqfxXJzgnEZRQAY+v0iGTdSQd8jZJyS avSbADNZ0Yh53PVEuIb6AOaUlY9Fj9F3aW8fAJ2IusOMHaO7wY4G1FinWSgFGh6YN3q74kq9kkp zHIf05FDwgBeSWYEOnhlp8D6mcDBt4K7xlA9kbWegbDFjP0FHlQc8zBFLWnf3EIrdDwB7UhSJPR xQ0JYj+09VWqpJQdB21XWzIOUDhYArJXHuOfdCR080woK/OGoTUThWHjLTfBJk6cF/1FQbIECJk hZjSK76H7/2nCMhzN8rS+BSpgmYE9r1CiNTE63bCryn26sEmVu4k0St9pWKNaqPKmjlZOxEM X-Proofpoint-GUID: 8DNplI7PAIKCXh8XnzMr3oLSkCsV3VaU X-Proofpoint-ORIG-GUID: 8DNplI7PAIKCXh8XnzMr3oLSkCsV3VaU X-Authority-Analysis: v=2.4 cv=Xr36OUF9 c=1 sm=1 tr=0 ts=6819d0d1 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=6KFWBsMsv8NWCX33yDQA:9 cc=ntf awl=host:13129 Content-Type: text/plain; charset="utf-8" From: "Darrick J. Wong" Add selected helpers to estimate the transaction reservation required to write various log intent and buffer items to the log. These helpers will be used by the online repair code for more precise estimations of how much work can be done in a single transaction. Signed-off-by: Darrick J. Wong Reviewed-by: John Garry Signed-off-by: John Garry --- fs/xfs/xfs_bmap_item.c | 10 ++++++++++ fs/xfs/xfs_bmap_item.h | 3 +++ fs/xfs/xfs_buf_item.c | 19 +++++++++++++++++++ fs/xfs/xfs_buf_item.h | 3 +++ fs/xfs/xfs_extfree_item.c | 10 ++++++++++ fs/xfs/xfs_extfree_item.h | 3 +++ fs/xfs/xfs_log_cil.c | 4 +--- fs/xfs/xfs_log_priv.h | 13 +++++++++++++ fs/xfs/xfs_refcount_item.c | 10 ++++++++++ fs/xfs/xfs_refcount_item.h | 3 +++ fs/xfs/xfs_rmap_item.c | 10 ++++++++++ fs/xfs/xfs_rmap_item.h | 3 +++ 12 files changed, 88 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_bmap_item.c b/fs/xfs/xfs_bmap_item.c index 3d52e9d7ad57..646c515ee355 100644 --- a/fs/xfs/xfs_bmap_item.c +++ b/fs/xfs/xfs_bmap_item.c @@ -77,6 +77,11 @@ xfs_bui_item_size( *nbytes +=3D xfs_bui_log_format_sizeof(buip->bui_format.bui_nextents); } =20 +unsigned int xfs_bui_log_space(unsigned int nr) +{ + return xlog_item_space(1, xfs_bui_log_format_sizeof(nr)); +} + /* * This is called to fill in the vector of log iovecs for the * given bui log item. We use only 1 iovec, and we point that @@ -168,6 +173,11 @@ xfs_bud_item_size( *nbytes +=3D sizeof(struct xfs_bud_log_format); } =20 +unsigned int xfs_bud_log_space(void) +{ + return xlog_item_space(1, sizeof(struct xfs_bud_log_format)); +} + /* * This is called to fill in the vector of log iovecs for the * given bud log item. We use only 1 iovec, and we point that diff --git a/fs/xfs/xfs_bmap_item.h b/fs/xfs/xfs_bmap_item.h index 6fee6a508343..b42fee06899d 100644 --- a/fs/xfs/xfs_bmap_item.h +++ b/fs/xfs/xfs_bmap_item.h @@ -72,4 +72,7 @@ struct xfs_bmap_intent; =20 void xfs_bmap_defer_add(struct xfs_trans *tp, struct xfs_bmap_intent *bi); =20 +unsigned int xfs_bui_log_space(unsigned int nr); +unsigned int xfs_bud_log_space(void); + #endif /* __XFS_BMAP_ITEM_H__ */ diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index 19eb0b7a3e58..90139e0f3271 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -103,6 +103,25 @@ xfs_buf_item_size_segment( return; } =20 +/* + * Compute the worst case log item overhead for an invalidated buffer with= the + * given map count and block size. + */ +unsigned int +xfs_buf_inval_log_space( + unsigned int map_count, + unsigned int blocksize) +{ + unsigned int chunks =3D DIV_ROUND_UP(blocksize, XFS_BLF_CHUNK); + unsigned int bitmap_size =3D DIV_ROUND_UP(chunks, NBWORD); + unsigned int ret =3D + offsetof(struct xfs_buf_log_format, blf_data_map) + + (bitmap_size * sizeof_field(struct xfs_buf_log_format, + blf_data_map[0])); + + return ret * map_count; +} + /* * Return the number of log iovecs and space needed to log the given buf l= og * item. diff --git a/fs/xfs/xfs_buf_item.h b/fs/xfs/xfs_buf_item.h index 8cde85259a58..e10e324cd245 100644 --- a/fs/xfs/xfs_buf_item.h +++ b/fs/xfs/xfs_buf_item.h @@ -64,6 +64,9 @@ static inline void xfs_buf_dquot_iodone(struct xfs_buf *b= p) void xfs_buf_iodone(struct xfs_buf *); bool xfs_buf_log_check_iovec(struct xfs_log_iovec *iovec); =20 +unsigned int xfs_buf_inval_log_space(unsigned int map_count, + unsigned int blocksize); + extern struct kmem_cache *xfs_buf_item_cache; =20 #endif /* __XFS_BUF_ITEM_H__ */ diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c index 777438b853da..d574f5f639fa 100644 --- a/fs/xfs/xfs_extfree_item.c +++ b/fs/xfs/xfs_extfree_item.c @@ -83,6 +83,11 @@ xfs_efi_item_size( *nbytes +=3D xfs_efi_log_format_sizeof(efip->efi_format.efi_nextents); } =20 +unsigned int xfs_efi_log_space(unsigned int nr) +{ + return xlog_item_space(1, xfs_efi_log_format_sizeof(nr)); +} + /* * This is called to fill in the vector of log iovecs for the * given efi log item. We use only 1 iovec, and we point that @@ -254,6 +259,11 @@ xfs_efd_item_size( *nbytes +=3D xfs_efd_log_format_sizeof(efdp->efd_format.efd_nextents); } =20 +unsigned int xfs_efd_log_space(unsigned int nr) +{ + return xlog_item_space(1, xfs_efd_log_format_sizeof(nr)); +} + /* * This is called to fill in the vector of log iovecs for the * given efd log item. We use only 1 iovec, and we point that diff --git a/fs/xfs/xfs_extfree_item.h b/fs/xfs/xfs_extfree_item.h index 41b7c4306079..c8402040410b 100644 --- a/fs/xfs/xfs_extfree_item.h +++ b/fs/xfs/xfs_extfree_item.h @@ -94,4 +94,7 @@ void xfs_extent_free_defer_add(struct xfs_trans *tp, struct xfs_extent_free_item *xefi, struct xfs_defer_pending **dfpp); =20 +unsigned int xfs_efi_log_space(unsigned int nr); +unsigned int xfs_efd_log_space(unsigned int nr); + #endif /* __XFS_EXTFREE_ITEM_H__ */ diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index 1ca406ec1b40..f66d2d430e4f 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c @@ -309,9 +309,7 @@ xlog_cil_alloc_shadow_bufs( * Then round nbytes up to 64-bit alignment so that the initial * buffer alignment is easy to calculate and verify. */ - nbytes +=3D niovecs * - (sizeof(uint64_t) + sizeof(struct xlog_op_header)); - nbytes =3D round_up(nbytes, sizeof(uint64_t)); + nbytes =3D xlog_item_space(niovecs, nbytes); =20 /* * The data buffer needs to start 64-bit aligned, so round up diff --git a/fs/xfs/xfs_log_priv.h b/fs/xfs/xfs_log_priv.h index f3d78869e5e5..39a102cc1b43 100644 --- a/fs/xfs/xfs_log_priv.h +++ b/fs/xfs/xfs_log_priv.h @@ -698,4 +698,17 @@ xlog_kvmalloc( return p; } =20 +/* + * Given a count of iovecs and space for a log item, compute the space we = need + * in the log to store that data plus the log headers. + */ +static inline unsigned int +xlog_item_space( + unsigned int niovecs, + unsigned int nbytes) +{ + nbytes +=3D niovecs * (sizeof(uint64_t) + sizeof(struct xlog_op_header)); + return round_up(nbytes, sizeof(uint64_t)); +} + #endif /* __XFS_LOG_PRIV_H__ */ diff --git a/fs/xfs/xfs_refcount_item.c b/fs/xfs/xfs_refcount_item.c index fe2d7aab8554..076501123d89 100644 --- a/fs/xfs/xfs_refcount_item.c +++ b/fs/xfs/xfs_refcount_item.c @@ -78,6 +78,11 @@ xfs_cui_item_size( *nbytes +=3D xfs_cui_log_format_sizeof(cuip->cui_format.cui_nextents); } =20 +unsigned int xfs_cui_log_space(unsigned int nr) +{ + return xlog_item_space(1, xfs_cui_log_format_sizeof(nr)); +} + /* * This is called to fill in the vector of log iovecs for the * given cui log item. We use only 1 iovec, and we point that @@ -179,6 +184,11 @@ xfs_cud_item_size( *nbytes +=3D sizeof(struct xfs_cud_log_format); } =20 +unsigned int xfs_cud_log_space(void) +{ + return xlog_item_space(1, sizeof(struct xfs_cud_log_format)); +} + /* * This is called to fill in the vector of log iovecs for the * given cud log item. We use only 1 iovec, and we point that diff --git a/fs/xfs/xfs_refcount_item.h b/fs/xfs/xfs_refcount_item.h index bfee8f30c63c..0fc3f493342b 100644 --- a/fs/xfs/xfs_refcount_item.h +++ b/fs/xfs/xfs_refcount_item.h @@ -76,4 +76,7 @@ struct xfs_refcount_intent; void xfs_refcount_defer_add(struct xfs_trans *tp, struct xfs_refcount_intent *ri); =20 +unsigned int xfs_cui_log_space(unsigned int nr); +unsigned int xfs_cud_log_space(void); + #endif /* __XFS_REFCOUNT_ITEM_H__ */ diff --git a/fs/xfs/xfs_rmap_item.c b/fs/xfs/xfs_rmap_item.c index 89decffe76c8..c99700318ec2 100644 --- a/fs/xfs/xfs_rmap_item.c +++ b/fs/xfs/xfs_rmap_item.c @@ -77,6 +77,11 @@ xfs_rui_item_size( *nbytes +=3D xfs_rui_log_format_sizeof(ruip->rui_format.rui_nextents); } =20 +unsigned int xfs_rui_log_space(unsigned int nr) +{ + return xlog_item_space(1, xfs_rui_log_format_sizeof(nr)); +} + /* * This is called to fill in the vector of log iovecs for the * given rui log item. We use only 1 iovec, and we point that @@ -180,6 +185,11 @@ xfs_rud_item_size( *nbytes +=3D sizeof(struct xfs_rud_log_format); } =20 +unsigned int xfs_rud_log_space(void) +{ + return xlog_item_space(1, sizeof(struct xfs_rud_log_format)); +} + /* * This is called to fill in the vector of log iovecs for the * given rud log item. We use only 1 iovec, and we point that diff --git a/fs/xfs/xfs_rmap_item.h b/fs/xfs/xfs_rmap_item.h index 40d331555675..3a99f0117f2d 100644 --- a/fs/xfs/xfs_rmap_item.h +++ b/fs/xfs/xfs_rmap_item.h @@ -75,4 +75,7 @@ struct xfs_rmap_intent; =20 void xfs_rmap_defer_add(struct xfs_trans *tp, struct xfs_rmap_intent *ri); =20 +unsigned int xfs_rui_log_space(unsigned int nr); +unsigned int xfs_rud_log_space(void); + #endif /* __XFS_RMAP_ITEM_H__ */ --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C05AE2701AC; Tue, 6 May 2025 09:05:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522336; cv=fail; b=XXe2X3p7Yy0lJmaLUwdQmSzrFTtavBgqTybK6WTrhdhlYPK1BkNyhF+mTOXKJ9geRHgp0/2TDfOoyS8pK/Ed3qg64omGnF8HOXccetHF4SIs5ixEznD4RY8h2kCKvMwuErzYI7QCSAAFQomdpQFSRjIjJ5g3fEd6Qv9pD8aGVls= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522336; c=relaxed/simple; bh=Y+h0SeI/WhZZN7iLnPC7D4DvuhV4YxHgH5qJQhdZCUg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=VxPxkiiuxT63Xb0DOJ8alY+9I571fbmIUkFE0s9lcO/xmxuKlYH7184PwCxzBDAGfKsE9goeJwLEXkohbSAbm4dyrm5zuDmErI1ekTArr4AvkUYoyxJJL2DyryjZVES0kM5bPG0ZJvLn0J53a5GkIhRvzo5NYJ70R5t/azyWKZE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=nnbaC1eT; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=aRBoIbqF; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="nnbaC1eT"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="aRBoIbqF" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468bboL027336; Tue, 6 May 2025 09:05:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Knrw86SB2+FjQtTS7zEUket55dWzKrgXBuOYNwpvZuU=; b= nnbaC1eT6XjTLnoRoHroWPyEe6CdTPD5jo4zAM42/XfmmZxdRtTUWePII8U28grk klir7w6fjW6jF9EpGIzgQvOO2zHJhJL/FXay1LglP56YbadbhJRwNYWrq8q0IqX+ dCAVSFCdIL7GVYynV8H1i4Yk8WNyw+sBJKimFnrdFGlnLx7Ff7t9nlHg+VB1qwb0 OXQrs8cSd/fI4R3UBAal6vX0Btmv0sauOqRXMp4qa9OMXxcE+geEzsNV1/uVnuiO 39L6rldIVAR076c5wjNyPisHGLd+emyi7OBhiAzJTRE40UQcnLieMtqtbLIXckWl ud3rcVSirwmwp4nB1uTI4A== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff2t02k6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:22 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5467hOB6024461; Tue, 6 May 2025 09:05:21 GMT Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010004.outbound.protection.outlook.com [40.93.6.4]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf062x-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qON02cns/233MbjACj1MBhW584hlOjZqh5N6Gp6nGY8boWSwJ7BH233Iihhy/i6581/idx/l70WDlanslc1SNpVF3tuM28Uj37MY/UKIuej2INo1RoJNZchtadqglRz6W8qP8iH3PuB/6cS4HkPzd/nolTOmfoTmo676eoRQNJ1K5SnDwyMRIaWl3fYvE7SqsnTt9Bf/Zw4SnVLkQC34CcDfdhjn0Fo0102rIQuSG3xUd9930GKOdlSUQ6wh81KG/WYmZU6lSLzPz9rkHeWY2A+vm5osUFPf1HyEmytHW9NcChOqZGMTix0iaSDMMC4tcu9xyDD35Md1vI+Wos3aUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Knrw86SB2+FjQtTS7zEUket55dWzKrgXBuOYNwpvZuU=; b=ljdtobG90JF+VaKwx4U6g0dX1WdHL4BXnz+ZQ7w8RIaU8V4ZQTThVGcvzbYDWvmpwKDbCvzEpIzKNgCNmzff+BvzPgUFeiZgsLvfULbHUwC1817B6yznojyjV3eXKhfIY1CMkNbr57WaOqUXCMRNq5mNn4yn16X+XWEbxbvUAIYtZ0mFqMALQMfSXjfiIEUP42oBTppm6ZkWNMepaYVnFiPW0qngsLhIcM9TeuG5nVSFTOfLIoRCRRBp3QTn/Xs8l43od/Gj/9bL+ki8b0lfKrjTH4/3Mgo1CGLs7/rf+wPgFeZZbb96nulAwJos3IIR+JNlzj5p+7/zxOrCePnAIQ== 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=Knrw86SB2+FjQtTS7zEUket55dWzKrgXBuOYNwpvZuU=; b=aRBoIbqFuoXn+luyFEvTrF5L4VIZwMyGu0SpGFkHVEWHGU8iIZN64EdxOoigNl/Bgq2Ag808ASj1FVeDngZMPkUGfrfHaZJeu/QZ9eFDqyfUgTcIYqyB4d6NEIfUMWWqBs87wZL/BXEIyjwHbe5GrW7B/p03h6fyLtwouuIi7vU= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:14 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:14 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 06/17] xfs: add helpers to compute transaction reservation for finishing intent items Date: Tue, 6 May 2025 09:04:16 +0000 Message-Id: <20250506090427.2549456-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR05CA0013.namprd05.prod.outlook.com (2603:10b6:a03:c0::26) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: 1de180bf-c6ff-448d-fa4b-08dd8c7d1d16 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?avqYrNWZMlWJrYNAlCyUuEb7BHoxrHmW2qlqGweucj/PzYVHiMGFqN00l8kq?= =?us-ascii?Q?JRzESW1lCln+vB9z9EKf/mS8654XZTXF3YhpYuMpa/Cc9fphh+okwR629n+X?= =?us-ascii?Q?gW4O1aTvOh6GhcaWtUYJzzk6LMaQ2deEtAGc8FzsZZGwimSdOssABEewGgO+?= =?us-ascii?Q?IdySgPX8rEUP6Maz9RMCdiZrsjfGdUewv/h6QoClB2TNJt1O2J5PRhst0TE6?= =?us-ascii?Q?IeQwStCw9qgjKU6ikxtaLi3P9MNbNfLDzop2LzB7qnL8pSisHqShHLIIBYJM?= =?us-ascii?Q?VygD5WtjfjGbT54uQnadRXjoIHOwQ3S+6hjEpLaZ+auWUdzC554NpGRl6rT2?= =?us-ascii?Q?HvS3jNr6vdKfQDYmfW1J4KQ/IgDBGjTVnZqVP9VQHKxYFh991IlZJACx4Knm?= =?us-ascii?Q?mOJgM+MGkGV0yh2vHFUE4AgmmZ+QQQb9xEjVcV711x5U3np4ZI5rYD5iSd7M?= =?us-ascii?Q?MschnaKDANBubIV34Ewd1Us3Lu2IGxxdwm5cIbOsjf+ZZww1vc8ccA5g2wqe?= =?us-ascii?Q?y4ZIfuEdLdWvbR5yuk8k02gwiFdp/uuvkWKFCGsCNqMIMjZ/2xK9jA0NUzf8?= =?us-ascii?Q?xn3chie18S22q73QXwKJJhTRwMMUYiNl8Ug/ELoCRQu6Ns6VLvjoYTkM65oE?= =?us-ascii?Q?gsAbuFLZCYjCru/b0baOPLQltt757CCxmtir2uT0+4LVoXdhOCSNdwkKHk88?= =?us-ascii?Q?mWT30qhD8DpuDiq+ZAw3LAGYSMeGHbccZZXykxcAOtOgDPoDbH6v5mlCNIKF?= =?us-ascii?Q?dZMjFCuiXp5kOoytX+ViC6sWTf1MCHBrTYHSJcho4TkZo2JQ524+p1z2ilH5?= =?us-ascii?Q?9g83Qfg23HECwNb6pLom6JqSd5BiM+pBsMCnEFO2ML7YEeuMe9vSrHTL1jd0?= =?us-ascii?Q?uOrT8ReM3qpDaxHbFwpNwILxRMw3FSHcQDq+g1Eqm8RLpYEPYgGc03uQ3j0O?= =?us-ascii?Q?TCZ8qZqVCRqh6zh0dUn1bg1cXshy65hLYY3MvlHeL0puAjDIoOapDrrxQNS6?= =?us-ascii?Q?Xz54qOMcZDXY07p9gmFAzQpSS1AMoOu37rWsRtHD9NimEMAQVBorSS0MIA/n?= =?us-ascii?Q?l8TQPVJ46SQ65YR3uDMdQRrn/wd/sVy85RA3w//KxDGkNsz3kj5IVzPdT+j4?= =?us-ascii?Q?IM+hz8XpPiEEMLeYFKxXWbapxhXmgHP1lUYeRC2Lfy2uV3OGUcWg0z70T/65?= =?us-ascii?Q?w1VhekP+UZg+cRMJXdwRjurRBPGs2nSfiZpOdYVYekH21vKdAjVED00bxWvv?= =?us-ascii?Q?P8cO7FwK0eXcj0WN+mKrvzsxGar6+Ms0vmsZUVKtOOISSFB8LVdcAiiM8jtv?= =?us-ascii?Q?6EK/S03rrpn/I8MLB9K5BMic3NXdv+g9xtbgfBk2T5a0ikcUP39u5DPH8NGx?= =?us-ascii?Q?u88gD5XoWpQyprccnscV7no0TnfRNCWH1szuSIaO1MsjwnLRyKuc+H2loPK5?= =?us-ascii?Q?Yuu8sZhqe3I=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fxV+XpYnqAp/uSFDNsYwyQWi8xe8NlE2S2UQUKcOrQgXz2wCF6va6kEzmTjp?= =?us-ascii?Q?5ircoyl5NLKZrQkn50QJWc9kn94qJ2noSGDrol9dL99wTB3IvCpxP45dgkJj?= =?us-ascii?Q?GjflzMKt0Y39psvnM7xQDlSAQT4iLrZyS4p4S1CoJZO8yKBr7NCTDAVToFZ4?= =?us-ascii?Q?EFp/CJkeicfNRMZmKJMsBjunqWseeQ3Vkm21RrkMiobfQ51PRCl9wBy0N8sb?= =?us-ascii?Q?Jcy0soz2ZtPyIi8peZ7Lws6isnWE0lA2b5j81QUIZDLjCUGwFkWDmcSxD2nY?= =?us-ascii?Q?f5+DyYrPRJHZGtenwy2Ce6vUFcsBdGSHWuzSon3f0tNJ7BCaqRIRNyam/iPH?= =?us-ascii?Q?AXukBvUXAsDPxj97qRYTbihUH5ehBSAOoKPx7RcVJyTf78m05wUoupiG6sdr?= =?us-ascii?Q?5COCzmBcLiUE2DA4XGDQDxBgzIw3jkaa2lpWfqPCTVaoekRfe/ObdwGX3axT?= =?us-ascii?Q?VkRGzS9G3LoTcn0BR+aL3Ed4GCNivEzqHxBDtzftWqKMunvYRIG6XP+ag572?= =?us-ascii?Q?8BBUrSo1LkI+R+wOykvMeD4+WNVpkPR/wVBJwTm4/fYZxVMiG3+zU5thBKYU?= =?us-ascii?Q?gsjAUgQCiGi9sP4BATYyzyxvVXc5coMexGAm7aEG+hJ55qFaSjg91uQCJAjX?= =?us-ascii?Q?PIBKVN6quy6fSpJcK8z2JAtMhtLqLo6wryeGHzZ7fIaRXlHIt3VI9iCvCdZ5?= =?us-ascii?Q?hxsLGYi29TsdYVguawscCzPV0k3JaDeXO3gNilMHQ/thYeoemgH7lomCpfs3?= =?us-ascii?Q?r33qgjAQyPNsQE17LwfhregK53tiavIhc8YxGH753yHUh4rr/P9Saqck6zDG?= =?us-ascii?Q?XN/46mw8hogjaE5TOHZCd2JoSWGpJEDK3j7lOwjBsHfBte3+biLiTBcoiKGi?= =?us-ascii?Q?hnAX1LrkuNS1bMXZG5Y8HZBpgDA/PEDjTMyHvUW9A75bsc8+rjSbJJh6CHQ2?= =?us-ascii?Q?Pt0IHP57Lgr/1YfC0icBAV/5FV15rw7DG1QcgR1pKih+Q5Y4XVZIJh8VsiNW?= =?us-ascii?Q?7MOMC1IFrSw46w/bso6gH3U9twzj+sxP2OevxmDCBCn6qzjwCEJMy7lMG4Fz?= =?us-ascii?Q?9ypdvN4L4iXIFSNqtS9ohyEP9+MU/J/XpHI2ApfaGlB2RrU/cbt0TdM0BQKU?= =?us-ascii?Q?/LYpRvc/SDr+MHyBMc+bc6yIx64fohwPUW/bEM+JJoUNI81WyWhTFkRNgQK+?= =?us-ascii?Q?YvfTrBT+zFXYbY8YFTyE9MpHHvL252ujghN7Udjl2KLnxrpTKOIhJVzO8EGs?= =?us-ascii?Q?L6bC+Zw+knacMAL4F1oDXeH6tVw6kj38nWajt/nylgeQ1G15tR7IYF5GqU0G?= =?us-ascii?Q?ZmXAvQxA30kN9SirhEk/KMtm+94T+mNYL8m3ZZjN89WiHn4I+GZcyk8+KWC0?= =?us-ascii?Q?zL71pAPdILXPj31AfLPzYbIAuP3GN1PgFrlQtQbFw7MOiqYlZM81ccQ5TsRb?= =?us-ascii?Q?zUMQp76/5/xUU0JPwNwNpZM2sEx85dtsEEk98ltul9vzVdI36y+0bEhA1yf5?= =?us-ascii?Q?H4rFiWAo2BWcVFbzR/bPbiF9G9F4p3qAbaoKj4lQ3ocHt2YeFKu09AfZMpSX?= =?us-ascii?Q?9D9XceOrL5q12sq9XVhwehKUFS/+M9PzdxQhAoHUKUxX9A7dCgkeRTkVY3yY?= =?us-ascii?Q?Xw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4uhjLcSG1klQgYGSvtPh/XP+Mxrgho1B2pAZT/OW7TX3qcJCNP2r90O88xNOezE1bzeeMkJIH+7oNx7A5l/WM/MPlLM6y32I8pxnNmf6Qbr0jiKMGE3/8P87cnH+I83ee7Fp+bY+5eR3O3SOD6J5kpVNvC+lf9vjxnrkkOzYJM8Enp4urYMz2tmu5sdNAYUM0Aebow6Brv3MXAWV+qWnIEHohEKNwBPknw5avMPSsxMoxPuwdsab//ByainCKa7grARfcLdbuMpBGGt/v9bdceBk7wuFROUD9MH0AHMXM9vx1HGdYMyfAontgQeNepJi0ZjWTR4N0CRJOHMuartWf6VNq6oHEgiiWIW7ViyZmNG9U87HDf4ULBfRSrD07bbutRTJCw+8QYgLZr2mlYQr1RVK4TVJG4pCbRYLC2aZIPnnfsAtiOWzN4r8Uhi77vQa1ayXsd/lEhRHslisGwnGNt3m/VOitqe0OMWY4KYlJeH9mYQKbLn4tIbNvNGFaFrA8xvhaOz+A+PqTu+/F6nOh8+zVl+bOvsjyOALKbuTm8Nng+x24jMGr/DURPH7SrieD4O7+ucqUlWg8Y0BONmAnmyMNHPF54JRReqQDJOr4U4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1de180bf-c6ff-448d-fa4b-08dd8c7d1d16 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:14.5054 (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: YwNBCm15N/8y08yEmsO4ckZkNTD6N7Ox62Bxn6PgAMAA0SWnyLfQhwbpSUGAhGfiJN0SJLfwm5NZVsEM/A22Yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX6aZPf7oAV4zk 3+nkOUOwRhVER2nh6kpzGLIhG7f7Lb9qzuLbr1vs+kyKe1noRNHDToFo+dOV3gGGO0sCVAqRwZW PVGOyUAypxuxZUW/RmAbCiZojNQdhqmOmEmH7Z+LU1Rm4/rPpZAXslBqWf3znPM7cwHtKc29erf p7e+36+tPnqMrQT+O1v0QzQzmh4UTshe912Wxz/yQF2d/bE/eUSwV77lhqhg70W/jGmnZfMj+6o CdKftuzZ4qP0Nuzcw8yg9Baesd9Q1jhwrULoyW4yPJM+7f89tLwNW9aiMFWqrQGRJK3nXr8QuNF vCxXLZGPBalmKi40pbnWtGn+sfRtEDHylutUGms1JeQFNxkaEumDSMbmZo3MCYeId2+MXF6Us0t 2gvC6Tl8OQXJ9f6l0UWxLwSNMQeUFcp315+zCdzpvYZY9z3HzVxlOj+yuEt/em+dSmIqRKcO X-Proofpoint-GUID: lEEW2337MhwKA6kxEm4lkkUH6van3ZW0 X-Proofpoint-ORIG-GUID: lEEW2337MhwKA6kxEm4lkkUH6van3ZW0 X-Authority-Analysis: v=2.4 cv=Xr36OUF9 c=1 sm=1 tr=0 ts=6819d0d2 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=woQZa1pMVDXcXY9PtcEA:9 cc=ntf awl=host:13129 Content-Type: text/plain; charset="utf-8" From: "Darrick J. Wong" In the transaction reservation code, hoist the logic that computes the reservation needed to finish one log intent item into separate helper functions. These will be used in subsequent patches to estimate the number of blocks that an online repair can commit to reaping in the same transaction as the change committing the new data structure. Signed-off-by: Darrick J. Wong Reviewed-by: John Garry Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_trans_resv.c | 165 ++++++++++++++++++++++++++------- fs/xfs/libxfs/xfs_trans_resv.h | 18 ++++ 2 files changed, 152 insertions(+), 31 deletions(-) diff --git a/fs/xfs/libxfs/xfs_trans_resv.c b/fs/xfs/libxfs/xfs_trans_resv.c index 13d00c7166e1..580d00ae2857 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.c +++ b/fs/xfs/libxfs/xfs_trans_resv.c @@ -263,6 +263,42 @@ xfs_rtalloc_block_count( * register overflow from temporaries in the calculations. */ =20 +/* + * Finishing a data device refcount updates (t1): + * the agfs of the ags containing the blocks: nr_ops * sector size + * the refcount btrees: nr_ops * 1 trees * (2 * max depth - 1) * block = size + */ +inline unsigned int +xfs_calc_finish_cui_reservation( + struct xfs_mount *mp, + unsigned int nr_ops) +{ + if (!xfs_has_reflink(mp)) + return 0; + + return xfs_calc_buf_res(nr_ops, mp->m_sb.sb_sectsize) + + xfs_calc_buf_res(xfs_refcountbt_block_count(mp, nr_ops), + mp->m_sb.sb_blocksize); +} + +/* + * Realtime refcount updates (t2); + * the rt refcount inode + * the rtrefcount btrees: nr_ops * 1 trees * (2 * max depth - 1) * bloc= k size + */ +inline unsigned int +xfs_calc_finish_rt_cui_reservation( + struct xfs_mount *mp, + unsigned int nr_ops) +{ + if (!xfs_has_rtreflink(mp)) + return 0; + + return xfs_calc_inode_res(mp, 1) + + xfs_calc_buf_res(xfs_rtrefcountbt_block_count(mp, nr_ops), + mp->m_sb.sb_blocksize); +} + /* * Compute the log reservation required to handle the refcount update * transaction. Refcount updates are always done via deferred log items. @@ -280,19 +316,10 @@ xfs_calc_refcountbt_reservation( struct xfs_mount *mp, unsigned int nr_ops) { - unsigned int blksz =3D XFS_FSB_TO_B(mp, 1); - unsigned int t1, t2 =3D 0; + unsigned int t1, t2; =20 - if (!xfs_has_reflink(mp)) - return 0; - - t1 =3D xfs_calc_buf_res(nr_ops, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_refcountbt_block_count(mp, nr_ops), blksz); - - if (xfs_has_realtime(mp)) - t2 =3D xfs_calc_inode_res(mp, 1) + - xfs_calc_buf_res(xfs_rtrefcountbt_block_count(mp, nr_ops), - blksz); + t1 =3D xfs_calc_finish_cui_reservation(mp, nr_ops); + t2 =3D xfs_calc_finish_rt_cui_reservation(mp, nr_ops); =20 return max(t1, t2); } @@ -379,6 +406,96 @@ xfs_calc_write_reservation_minlogsize( return xfs_calc_write_reservation(mp, true); } =20 +/* + * Finishing an EFI can free the blocks and bmap blocks (t2): + * the agf for each of the ags: nr * sector size + * the agfl for each of the ags: nr * sector size + * the super block to reflect the freed blocks: sector size + * worst case split in allocation btrees per extent assuming nr extents: + * nr exts * 2 trees * (2 * max depth - 1) * block size + */ +inline unsigned int +xfs_calc_finish_efi_reservation( + struct xfs_mount *mp, + unsigned int nr) +{ + return xfs_calc_buf_res((2 * nr) + 1, mp->m_sb.sb_sectsize) + + xfs_calc_buf_res(xfs_allocfree_block_count(mp, nr), + mp->m_sb.sb_blocksize); +} + +/* + * Or, if it's a realtime file (t3): + * the agf for each of the ags: 2 * sector size + * the agfl for each of the ags: 2 * sector size + * the super block to reflect the freed blocks: sector size + * the realtime bitmap: + * 2 exts * ((XFS_BMBT_MAX_EXTLEN / rtextsize) / NBBY) bytes + * the realtime summary: 2 exts * 1 block + * worst case split in allocation btrees per extent assuming 2 extents: + * 2 exts * 2 trees * (2 * max depth - 1) * block size + */ +inline unsigned int +xfs_calc_finish_rt_efi_reservation( + struct xfs_mount *mp, + unsigned int nr) +{ + if (!xfs_has_realtime(mp)) + return 0; + + return xfs_calc_buf_res((2 * nr) + 1, mp->m_sb.sb_sectsize) + + xfs_calc_buf_res(xfs_rtalloc_block_count(mp, nr), + mp->m_sb.sb_blocksize) + + xfs_calc_buf_res(xfs_allocfree_block_count(mp, nr), + mp->m_sb.sb_blocksize); +} + +/* + * Finishing an RUI is the same as an EFI. We can split the rmap btree tw= ice + * on each end of the record, and that can cause the AGFL to be refilled or + * emptied out. + */ +inline unsigned int +xfs_calc_finish_rui_reservation( + struct xfs_mount *mp, + unsigned int nr) +{ + if (!xfs_has_rmapbt(mp)) + return 0; + return xfs_calc_finish_efi_reservation(mp, nr); +} + +/* + * Finishing an RUI is the same as an EFI. We can split the rmap btree tw= ice + * on each end of the record, and that can cause the AGFL to be refilled or + * emptied out. + */ +inline unsigned int +xfs_calc_finish_rt_rui_reservation( + struct xfs_mount *mp, + unsigned int nr) +{ + if (!xfs_has_rtrmapbt(mp)) + return 0; + return xfs_calc_finish_rt_efi_reservation(mp, nr); +} + +/* + * In finishing a BUI, we can modify: + * the inode being truncated: inode size + * dquots + * the inode's bmap btree: (max depth + 1) * block size + */ +inline unsigned int +xfs_calc_finish_bui_reservation( + struct xfs_mount *mp, + unsigned int nr) +{ + return xfs_calc_inode_res(mp, 1) + XFS_DQUOT_LOGRES + + xfs_calc_buf_res(XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) + 1, + mp->m_sb.sb_blocksize); +} + /* * In truncating a file we free up to two extents at once. We can modify = (t1): * the inode being truncated: inode size @@ -411,16 +528,8 @@ xfs_calc_itruncate_reservation( t1 =3D xfs_calc_inode_res(mp, 1) + xfs_calc_buf_res(XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) + 1, blksz); =20 - t2 =3D xfs_calc_buf_res(9, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 4), blksz); - - if (xfs_has_realtime(mp)) { - t3 =3D xfs_calc_buf_res(5, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_rtalloc_block_count(mp, 2), blksz) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 2), blksz); - } else { - t3 =3D 0; - } + t2 =3D xfs_calc_finish_efi_reservation(mp, 4); + t3 =3D xfs_calc_finish_rt_efi_reservation(mp, 2); =20 /* * In the early days of reflink, we included enough reservation to log @@ -501,9 +610,7 @@ xfs_calc_rename_reservation( xfs_calc_buf_res(2 * XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); =20 - t2 =3D xfs_calc_buf_res(7, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 3), - XFS_FSB_TO_B(mp, 1)); + t2 =3D xfs_calc_finish_efi_reservation(mp, 3); =20 if (xfs_has_parent(mp)) { unsigned int rename_overhead, exchange_overhead; @@ -611,9 +718,7 @@ xfs_calc_link_reservation( overhead +=3D xfs_calc_iunlink_remove_reservation(mp); t1 =3D xfs_calc_inode_res(mp, 2) + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); - t2 =3D xfs_calc_buf_res(3, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 1), - XFS_FSB_TO_B(mp, 1)); + t2 =3D xfs_calc_finish_efi_reservation(mp, 1); =20 if (xfs_has_parent(mp)) { t3 =3D resp->tr_attrsetm.tr_logres; @@ -676,9 +781,7 @@ xfs_calc_remove_reservation( =20 t1 =3D xfs_calc_inode_res(mp, 2) + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); - t2 =3D xfs_calc_buf_res(4, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 2), - XFS_FSB_TO_B(mp, 1)); + t2 =3D xfs_calc_finish_efi_reservation(mp, 2); =20 if (xfs_has_parent(mp)) { t3 =3D resp->tr_attrrm.tr_logres; diff --git a/fs/xfs/libxfs/xfs_trans_resv.h b/fs/xfs/libxfs/xfs_trans_resv.h index 0554b9d775d2..d9d0032cbbc5 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.h +++ b/fs/xfs/libxfs/xfs_trans_resv.h @@ -98,6 +98,24 @@ struct xfs_trans_resv { void xfs_trans_resv_calc(struct xfs_mount *mp, struct xfs_trans_resv *resp= ); uint xfs_allocfree_block_count(struct xfs_mount *mp, uint num_ops); =20 +unsigned int xfs_calc_finish_bui_reservation(struct xfs_mount *mp, + unsigned int nr_ops); + +unsigned int xfs_calc_finish_efi_reservation(struct xfs_mount *mp, + unsigned int nr_ops); +unsigned int xfs_calc_finish_rt_efi_reservation(struct xfs_mount *mp, + unsigned int nr_ops); + +unsigned int xfs_calc_finish_rui_reservation(struct xfs_mount *mp, + unsigned int nr_ops); +unsigned int xfs_calc_finish_rt_rui_reservation(struct xfs_mount *mp, + unsigned int nr_ops); + +unsigned int xfs_calc_finish_cui_reservation(struct xfs_mount *mp, + unsigned int nr_ops); +unsigned int xfs_calc_finish_rt_cui_reservation(struct xfs_mount *mp, + unsigned int nr_ops); + unsigned int xfs_calc_itruncate_reservation_minlogsize(struct xfs_mount *m= p); unsigned int xfs_calc_write_reservation_minlogsize(struct xfs_mount *mp); unsigned int xfs_calc_qm_dqalloc_reservation_minlogsize(struct xfs_mount *= mp); --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 19BAF278759; Tue, 6 May 2025 09:05:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522340; cv=fail; b=QOGFiQf8eFEBMyBEI34SbmL0I/1Oluh/vR3/HgGHoNUFK7SLCFnQBALjsKAf/Q5dqkFErk1JRMH5ZlWaQAf1xwABms8GZO18Yt5jeeWpVnbWk3cZYMsGfWP64yCHuAVMNL8ATQGFcLpD9QNlY8VYz2hPJcOBD/E8VYE2wuIi6q0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522340; c=relaxed/simple; bh=mQGPLaHvO/RXl3/hoA96NDw2S6UDOBAEPIj5EKOsZNI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=k1z1XMIGy3RJ1Vu+xkGrrtuRv2S35u3CTKnHHqy/a4VH6vj3Ikoazyskgipi6d7wJb6xv9VBOuLaH/+aK6J6UBh73pR3N1e+DL4qmI3FySIbgI/zyhzRJqyRegg0TA44Pd49xYODcde0SouiS/cC9k6hJr8cDz6RIxsDxqJAScc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=YSsI+/Uj; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=wv8i+1Ud; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="YSsI+/Uj"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="wv8i+1Ud" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5469219j010767; Tue, 6 May 2025 09:05:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=lBN8GpkzmSkBEshzWk4504x5Fdvc+UrEn74p1FTW+Bw=; b= YSsI+/UjqpwPE3Re88PpyEYznjRGCM8bCvIbG+eQ9urs9lqKEI9kzWgfnkYbS0Zk oeH/unr1CJOcH1Tq+QPWg7WU7fICLX5WFU91V41dSsBqSRgIgq4238k1jRQFmLsm ZWJRMUL6XAP1OnPjmLiUMqzibam946oP40ypWtarI+g/X8ljcKHIrFzmwfS21uIF 1EgOIefwk14xHm1mPBADUXxu6odqXkfcXDxL88h/2qvtoknRgcoYRJ8/0IbdgULp C+PRqtXJd0XWRKLJ427uXdhGJ3j7OeJKOZVAQibjkHLFIlPSYOX5no/Ny2OrQTcf EmWq6TileiNUjLo+rTUG9g== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ffefg06g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:24 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5467aFIE011271; Tue, 6 May 2025 09:05:23 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17013078.outbound.protection.outlook.com [40.93.6.78]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf0bnp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Za3cApTFGQAZwAv9vunGG1I4GTvW+gYcgF9kc+VQNNX839LxbE5SHOsp7GV++q1w4FqO+Pif+kbrurVpcyoZxVaH2h1sbr1hKLTVnp0D+iWh4hHnORewWFnEvVBhhjR22n+HhR6pIPhrdlgG2+1hbtevOF//zgKybF7I+Rsn4d5SRcNt+s0GRWwBFt50XZvymk7rX7sz/5m0CiCFJ4M4AQo1zGU0VdTUJuFK5UBzELdgV12pdJ9y7iXPOPEeZhksfcfO/qV34vHiM077qxmqip0KMP3qRtixcSU1FG6wwOXh0jx+CBWUe34wwsZlqHAfnZXvHQ9oZEPH7aurNIi7NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=lBN8GpkzmSkBEshzWk4504x5Fdvc+UrEn74p1FTW+Bw=; b=InH+wIWE6YpcqdTxW9sK2dk7G/L2MsATEpEQNeiX/NqRop5i75kwD0blflybTtl1eGQWTKXNVsV/VuF5hRlIJQ98Vr5XklPUHrdk4mHPdVMhzaum2MZHJwYAZNx11TTGH4Qf8uoKDYrn2aILNh3ZoedeWAHDmlzlYmlLOhqErE7AV+oAZk5tXvyRcbExphOpGkqwzZxCv0wBBAG305becrlSFqJoZY3oqhlEwbqbNqHnp+nnmCTTOQCer1LqiQ6xsPKxx0EZYdA0avKUmCqQpKjlnoRxryhxGnuHIZf1D9IQsj35rsjF9e/em3lKOdMBdYDXad9TdxDL09EAGlcjKQ== 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=lBN8GpkzmSkBEshzWk4504x5Fdvc+UrEn74p1FTW+Bw=; b=wv8i+1UdpkGCQB3H6cxyHUNUI7iXdN5newme2cy5bWOfl4RAVGnt68n/N3o2PKCb0WeWcY4Ame+lPB8pEVZLIBfOBCQwg5FGP/SdCRIHs29Kc7HJxz5qku7KjCksVXSyOEHI/ZRHFtKUxtIO9pfXPzl29bbyS24WZrj0LDKU+Oc= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:16 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:16 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 07/17] xfs: ignore HW which cannot atomic write a single block Date: Tue, 6 May 2025 09:04:17 +0000 Message-Id: <20250506090427.2549456-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR05CA0003.namprd05.prod.outlook.com (2603:10b6:a03:c0::16) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e8b176f-5518-4fe6-421c-08dd8c7d1e45 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SFpNIx0eUm67wVD/jaIb348MvKZJsTt7OmODfVwfmCBxRS54dY40DLqYph8t?= =?us-ascii?Q?6siV/Db24KKcjo8ubV3b1LBB6pzEs4ReBbKQlNLxaKaWmdwc8RPiYeMHu4n2?= =?us-ascii?Q?zCTFLnrIqw5wPjkdfNrSO0jYdgi4XLjLtRVVEVvGX0mnTKkPLUOKqP8xBRiE?= =?us-ascii?Q?2WU2apKKqimL+Y6xpJ155dmfUe4DFV/sMqgb4sp/OjortZerSa/eKPVfdUfj?= =?us-ascii?Q?k7ymcg7jQhcFU6ocAinpP3vpPISJJMmX6WEcLzQELPbweSbZ8EdMq/srnGNh?= =?us-ascii?Q?WBawAUzp6CUC7+2yFEc1C7JlyMhFQuuvf1DlpF0wqIGXDVZ1+FIud48u68DZ?= =?us-ascii?Q?kXQm0CwDlBvttxbzWvChOH5RopRGPagC+K92kfjF8yDr/MCYG/kHm0jI4wgF?= =?us-ascii?Q?EFg+UxraUBt6ijJZBjrGQdoEB1mjWGsBieBhyObaVqICS9AwG/k5zRxi1lcV?= =?us-ascii?Q?dDwSZzKAm8gpzQUcvTwG/uN4sIAXow6uHO6O7mpHcSrtfFnykBFr+I9T1daI?= =?us-ascii?Q?le8MGJpyOT3Sug2VVXa/5m7t0PzEwbxGbRuVafYb0OdbpG81J5Do1GxwUbSp?= =?us-ascii?Q?xdnmjf8EahiWY/AdDJpYCwAFnZZdFXTt7Og8IyEvzaorMtBFIgNtDUhuo+uA?= =?us-ascii?Q?BQwjZ/mx4qwTV/TQ6iRd6Q+F2BOwLuJuNWdOv/lk6gTaL7GvcdJNWjkJQMxP?= =?us-ascii?Q?V/W5w57MvXuSl0l/wa9FgGO70nLW5y5bAmc3lunL727biU67Wnc+M9piFXWr?= =?us-ascii?Q?qYaaS/eMf9bqYgy2CORBJb2uPvkZ24bBnG6rm1aq6Q9w36ea9UIPdW450UYX?= =?us-ascii?Q?AQhKrGETQIgifFwmuy8y0/sgpa0JyECuf6LHa5mx+s5dqpyHEId3ZCa5vpDF?= =?us-ascii?Q?mPoZIBBzxSF0t9+E9SO97bJiQLUhELvtRrJejqhNHA7p4iX8I5O+vna5I1ag?= =?us-ascii?Q?8Ls0/zREh2duHPJoe2zI1TC8uNAX8uR9sbY4Bk7sOZ2xsE1v9ijPNpI1Q8jK?= =?us-ascii?Q?+VCEeAsdUP6+iNe/HnkMPC5diyGOiJSLLXegRnXy9wAaCSjcHRCAdWI/YlKf?= =?us-ascii?Q?Q2rx+EQSVL9e9PiYV63nBvqH9dklySu5GV9Lm/GMi+7dTinYFWn41QfmZVFW?= =?us-ascii?Q?C8A9mmsRKjl2yMuM6nEpNtLHBtrd5JZMtOC5jnz0I3VUHgx94pW7wVPP6p/1?= =?us-ascii?Q?nVlr1bQ8l9i73E5alZuqxa0Ix0xIKm9OhXRl23FvXwHll0oH9EiGbQqBTm4s?= =?us-ascii?Q?urznlkmjCNxC3aZMnio25/iLrgeTgxEc0XNsFTyM8ZcCQkBhjYWtWpMF0FiP?= =?us-ascii?Q?kmNAFPdABtWquqpI3BHFZfmodjV+87pg3FqV4eTwu2KEvDsXMCQUy3kXHId/?= =?us-ascii?Q?49Zd6SCVQtEbSd0VtiVBXZNRJiOS9GFid2mweXpnGPWrlX8nDw=3D=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jlOP0M0wTL42PAK2NUaZQuCSCKaRUJRSvEJ9V0sY02s3VX06tAr5BsiThh9J?= =?us-ascii?Q?UOUAnFfmUTzNEpmMvKmApF/nius8TJ3BhIMCNEzMOl2t+oQag+bkRwID2N7x?= =?us-ascii?Q?T6HNh/6KMzrlJ0z40xq30F9BozT55JGq144w3PgRvLzKf4izFIsZ5z/WDQwW?= =?us-ascii?Q?MZZUk1XQkV70B3wkzDmcUUynsqEuH1RY+6P20O8uVi1iLAFeM34HapW5r8rD?= =?us-ascii?Q?r7AsaZ9S+1/t5hRmp442/e6Y8nhiEbGD3dXfRIgVR7UhW5jFA8h97D5x6o6D?= =?us-ascii?Q?AliG7DStHLQN/sbt4abpDZJq575nYmqV5wwbN+m6D26dHYDbAdaEaEvqhKHz?= =?us-ascii?Q?Q06hQ9TZmPGOXG7eyDx9SL2X9zthSDUjy3eUpeEHTL9APGTRL09mL7oVjEbT?= =?us-ascii?Q?zTXyykAIIiJoz0KfPhzBgUFahz195egOkbEBQ2XnD+CIYVMAf7HrHldy+r1A?= =?us-ascii?Q?iaF5RV5K8tSSDOzpxGDdZi3njyBkwNECDT84IYV+CwDJyb2uczdMRUPXC5XH?= =?us-ascii?Q?vJnndOLc9U1+c3QYpM8+GSDYo9HoXO5/gaZoDoluwnPJ1arVTXKCpWhsxyHz?= =?us-ascii?Q?MhdokOO7zTYrtQCTPWxtpIl9sTaXg1zrO7vLvXgve2TuKSuG2VAFY6HA/oaM?= =?us-ascii?Q?0rFYGcG4HSYdjO3qAGN+C3YUP527j+c+qYtH8W7Qpf3t+kG7fIfIbWtRnXBg?= =?us-ascii?Q?vSwfCAkWbUAA4yqO+AJjhpZJMzHFovgHOjCOCNDL3p/nztCHWkIRMvg0rGhm?= =?us-ascii?Q?45YOrW0QsoUgfJq6H9S6oSmES5tHwq7NLQH/y/uQxml/A4A9Q7/IvnWRy6Ec?= =?us-ascii?Q?qhgUgFWJYZNzwwFCDt3I1m69llvS7QmU/o9dXkA1TVwN/8htWFZzu9QQDCrm?= =?us-ascii?Q?7rjYZG1SBi2d5bPa0RDOmTo6cVl3jpQFmejuJzaP3+ftG6KDIw+SEEbXvCwq?= =?us-ascii?Q?naaM5TaLY9BBmCg3dev8eii6WIYT7J9rgxx3tRleQ9LQtFVTN4JEa4A+RRfa?= =?us-ascii?Q?UXQFHpB+Kju8cxxurV0fAYgN5glPKUr8KOH6EuaVGGc9t3bdKDR767SB7Wj9?= =?us-ascii?Q?92mWifZdpppmKTAzRSwR8N+AIZI0dOgeioJGBl3/qSr3bzQHhfeP6apfGNWO?= =?us-ascii?Q?sMprP1bFC5fmXSbvj3+lxnQ/zVl5rY066qdvUek4AMmmt7NF/EA+TRuaW2r/?= =?us-ascii?Q?dLmNnDpyhKEqUTDuG6VZ8d3Z9ooAkCKwz0e4iy77vEEIO503+ZsC+xNI9fzw?= =?us-ascii?Q?55x5AXl5wtzwnXv2lkbb33YAzSRau6vFMm4vLFHSbQZw1QcLy5g02QkHzGtb?= =?us-ascii?Q?KoQq/GRiTeUEetLtDRar34PbJ3lWakckd1CA3MDGJQyaDHiS7lU2PVEeXozh?= =?us-ascii?Q?Y3DCG6j6aMI4N373N4DUKp/3VvcBaZWgg86VuBHMNEsSZCyykk/rXJE96+EV?= =?us-ascii?Q?9KdvB0w5AZZv00KTr7A8kNUfmrOJI2Y5wj0tUhX4M1kx9Q4XQeTDvPx1osrU?= =?us-ascii?Q?De0U4f1Eo7LK/+mmyMQX391knxhvXOWiP9ePbdNvGv9O/tIYbdFtoU7nHLdB?= =?us-ascii?Q?ZAOR33MJpcyn2F/iWQb5wE5ESSiyzPL/MhkPDI/J2aWfH9nRT6+4D8smt59d?= =?us-ascii?Q?ig=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GmIVuWNWZ0suOsUFbtALLhHS6wJ0So8NZWl2qw/yx2KI3a4LXWbPM2OpDScpK++hu+G4Hk/sbij5lIZHPQJmX5+zcbkfYX+tOBQqh9n+7ccTC5feBw/ALOq3e9PxSMJGRGoFxno39WIX/qvyfGLQG0EtnKWbG3c5u3TF+hQAftijXxI1ah7OEhxZBeUWbCQwDe2BE540Sn/oaUvQnkYIlGE+VDWoi2HkfWk2Lz20BcyntmQSgIRteHED9v89QPQJH9dwCJA4/588+00zU6o1ASB5ZdyK2shRfjq5jXcAZnSh/rm2d4HmYbtkc6NmHOdsDblq097VfmO3B/KD9KjPYzKJO/WF62K0mLDfdRtzeh2N5z3qIRhcZU2SH/xb1mS2j0greX9LMs8Drcbuwg7IAm3lItx9NOaD4/pvSl0Egc/iT/fOPB2aB7+r7PphDceZZ6BhGXQak4Fajx4EP1dwcPzF87SDgYemCf27o/fAX1D/IzsdHgnkRywz0J8590NlSjXEFJLY8TGdtfcTUzISTOroloz8GFSvsvM3atKFlOKZ9reWhC/xDFGDgYgo96ijB+531B8Lv9J2S9Fd2seEjD2WT/RrYdLIxkiYBK4kIoo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1e8b176f-5518-4fe6-421c-08dd8c7d1e45 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:16.4489 (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: 8zhzGtLhbQJPxwAWSjBRmMkFDplYKi9IBn6Q+ABWkA+p0ohJJAJFVcUJVmeV1i3hgJr2N+yMc6pAKP9dBfEgzQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX3frwnsOZUYd6 5BljwMMeGIGLFff4ryKRFg93O1+4mrBYnCLkSTq8jKZuEp0e05QTbeGzUlGH1y6+8pNPJTTz4Ug zXBeA0z467+w08ABpKs4LNDkqyjEuhXxMTOkU8aGfvr7LVwlC5DZNQxaIH4mhGXjh1O+UCFjpuT wcHHxFmZ57V4iIlYtSOK4CD62uq8+5iSi98uL2QjIjZhmNEdp0UfZKcUP7R6OWB+gfRDohNUg0W sC1Mq4Z/h4z6VccDqkYDqJECLbPATCMdJjuUrYTgQR5ZVdJjOb4v0zv/A0IgL64bf3tyTb4W+fH EkL81h599VcNd8Jw2HFzWu9Ed+qIjNSOk6nOYV012olqfLDTFuNPGX1nuBjGOgwCnkoSZaPdpb7 akXdsgXiJ6a63pPSWD1pyuDP9vSWyZC5hZgTzPSkPfWcm7EL38HfVIKFMsY3S7ptTluBlRXi X-Authority-Analysis: v=2.4 cv=V+t90fni c=1 sm=1 tr=0 ts=6819d0d4 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=gtobUbgypl7YtJ56tnkA:9 cc=ntf awl=host:14638 X-Proofpoint-ORIG-GUID: glF-pAHpzx24Kz43lAAzq35QXlVyUOjU X-Proofpoint-GUID: glF-pAHpzx24Kz43lAAzq35QXlVyUOjU Content-Type: text/plain; charset="utf-8" From: "Darrick J. Wong" Currently only HW which can write at least 1x block is supported. For supporting atomic writes > 1x block, a CoW-based method will also be used and this will not be resticted to using HW which can write >=3D 1x block. However for deciding if HW-based atomic writes can be used, we need to start adding checks for write length < HW min, which complicates the code. Indeed, a statx field similar to unit_max_opt should also be added for this minimum, which is undesirable. HW which can only write > 1x blocks would be uncommon and quite weird, so let's just not support it. Signed-off-by: "Darrick J. Wong" Signed-off-by: John Garry Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_buf.c | 12 ++++++++++++ fs/xfs/xfs_buf.h | 2 +- fs/xfs/xfs_inode.h | 10 +--------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index e2374c503e79..d52d9587b42c 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1722,11 +1722,23 @@ static inline void xfs_configure_buftarg_atomic_writes( struct xfs_buftarg *btp) { + struct xfs_mount *mp =3D btp->bt_mount; unsigned int min_bytes, max_bytes; =20 min_bytes =3D bdev_atomic_write_unit_min_bytes(btp->bt_bdev); max_bytes =3D bdev_atomic_write_unit_max_bytes(btp->bt_bdev); =20 + /* + * Ignore atomic write geometry that is nonsense or doesn't even cover + * a single fsblock. + */ + if (min_bytes > max_bytes || + min_bytes > mp->m_sb.sb_blocksize || + max_bytes < mp->m_sb.sb_blocksize) { + min_bytes =3D 0; + max_bytes =3D 0; + } + btp->bt_bdev_awu_min =3D min_bytes; btp->bt_bdev_awu_max =3D max_bytes; } diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index a7026fb255c4..9d2ab567cf81 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -112,7 +112,7 @@ struct xfs_buftarg { struct percpu_counter bt_readahead_count; struct ratelimit_state bt_ioerror_rl; =20 - /* Atomic write unit values */ + /* Atomic write unit values, bytes */ unsigned int bt_bdev_awu_min; unsigned int bt_bdev_awu_max; =20 diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index d3471a7418b9..d7e2b902ef5c 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -358,15 +358,7 @@ static inline bool xfs_inode_has_bigrtalloc(const stru= ct xfs_inode *ip) =20 static inline bool xfs_inode_can_hw_atomic_write(const struct xfs_inode *i= p) { - struct xfs_mount *mp =3D ip->i_mount; - struct xfs_buftarg *target =3D xfs_inode_buftarg(ip); - - if (mp->m_sb.sb_blocksize < target->bt_bdev_awu_min) - return false; - if (mp->m_sb.sb_blocksize > target->bt_bdev_awu_max) - return false; - - return true; + return xfs_inode_buftarg(ip)->bt_bdev_awu_max > 0; } =20 /* --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2EAA26D4F2; Tue, 6 May 2025 09:05:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522342; cv=fail; b=sbb/TdvqUBw2i4RinPnc2G1xZY8DR+HWhF/AABguKsi2+JjAoyVw/zwTN9T6w32ZRrzdMArCk/rAy9CFTjNSzgAFGVWgUJdoqTyiWZ6fJaVCIIGnhQzr+Cm7DUU9ZzGQislGrysr2NCSiT1i8RnrXYRiiXoN40CSTUNzoCHxBTg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522342; c=relaxed/simple; bh=ojbL9ETQY9oFRhSdUJ0ncgTmZcoEGxx/N41SjSyeLlM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=PxX0JOPjn+/43JYQBR8nLs2Vvb+kqMAB8Pr3Cm6ScDKZRMpz5cn4VWBJukWGn1yI3KPpdJthhImz6TGiUk9ScbI6LGpxzpsFSNS+p647+/eawsceExSIh5VpkzCZvIWD7Ga7nfcCF1mKWvFG1WeRIikk0BlYqc0g3c0TYg51L98= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=N0wprsso; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=OVf+IjR7; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="N0wprsso"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="OVf+IjR7" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54692LuI011503; Tue, 6 May 2025 09:05:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=kZCudiUxfsEHIobBWzcPozzioirBNDfaP6h9ncSziu4=; b= N0wprsso/etwUCHJ17cw0ZqNuHRhUJZMptt9vmY5923eIgq2Sq0BG+7wfx3pdCjZ g+lpRlONO6oLqckDsKm0AZ9jKjhtDJ6yGZ5dTgo8Vc5yUb5B4UYzYn6PJTIX7u+i Uezy1z5KyTqdvpytwyPjhBIN74XHfPWPRwNy6prEBAwAWZiVEHqOnGyBbPiMi6NH oJmULMbJR+ZLMh0sTdQYfIIiJ53Kmj3rE/bTvtCdOScVELt/6SmvOhaZOBxQGZJM 3/R8+PngFYQdwo+go4s7be3jZytEq7sq70r0Zsi+06D1EDKtVl11Ypa/pu6nWZxB 90A0T3c3EBGbQk5X/yKNog== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ffefg06k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:25 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54688qMG036019; Tue, 6 May 2025 09:05:25 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17013078.outbound.protection.outlook.com [40.93.6.78]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k8rmye-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IjkXyuz2jwB2WYQr/bLnt22Ibu91dAWxcB9nSokXrhmc0OYGP2tFJq3HcpidbD43Y6fQoCbvl0k1cO6f6QP2jNvLh++ZIdfJ1m1K6AfnsjRf7SmcP6sadXEtlFg/a15n4TMsGVHIgUQ4ZbcHixIUWN6dBzNQdkhaiKYaGmfrwKJQNKNJpeMqfhjwcCHYDzMo6JHuZUR7WH/Ve/4X/YA7etkx5QOSo4jA1A109SMD8unhPdh5NIaUzOE/nWwzm2WEWaFr1dyzEYpRvTQzF98B08ai8yUyzVj878HwqtrbR296KG7J6W7p4qqm2sl3WENQT4eeCx4E3D7dtIq9ZfXgwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=kZCudiUxfsEHIobBWzcPozzioirBNDfaP6h9ncSziu4=; b=b4vgOKrNpLN0tD7v7DKwD1karSX67SN8g2fWvdsIXnkcBgRcQEmYqWxN9MYZOjJx2Lu63FRY/D9ZUkWWrcnYKrWgrHhlLHwM/2itWrJXf2ZUeG4B6k+jMS0IpDDiJ6gnAumnlk27FMhCj5/GhVpZgP06+rZLh2xAku/o8IGkpjXYtdxiMX4HHEHTrHd9rut+pQ6XbsWaQkMVix/QPYi83JWIKvVYTZElfBQgRAHwqrZjllsR3dNjCtihOdzPtROXX5pB12liGfBe69vM/W0+05XWGRtStrEr56p5Kh4KH7qmhkDcD2eFzAWkQoZ4aMQ1tIuIThFNeyRZw4uEjvXLPw== 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=kZCudiUxfsEHIobBWzcPozzioirBNDfaP6h9ncSziu4=; b=OVf+IjR79jTNp9qnEoS/DpyvzBl4qG7xJePgiLysPOJ9Hz+iaF3uZY1zwp+rabNyhw7qESGNF7S3vLMONvH7hAprd5wO/ZJ+iTavppXeZ0zMRGmyXgYOvgaOaq1V38IhQ1QjvNihAY0SMeuTTZzuFM/j5+Ty3g7auTBpFQ05nYo= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY8PR10MB6708.namprd10.prod.outlook.com (2603:10b6:930:94::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 09:05:18 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:18 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 08/17] xfs: allow block allocator to take an alignment hint Date: Tue, 6 May 2025 09:04:18 +0000 Message-Id: <20250506090427.2549456-9-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR05CA0092.namprd05.prod.outlook.com (2603:10b6:a03:e0::33) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY8PR10MB6708:EE_ X-MS-Office365-Filtering-Correlation-Id: 26f5913d-1d24-4ff1-6e6a-08dd8c7d1f6f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?relSnXW2z5/6ieIfbnu1mygHd2Qat7e44E26lfFBJcPEXrZwmGnpItm8tkgc?= =?us-ascii?Q?ZOND/LrXsXGnt+18Geg5qlH+gZbLtE7QAdhDn1skAGWNmetq9cw1AbdvbzQF?= =?us-ascii?Q?Vx7NHiZo3Fqk0im6O0cZUZVd172Kq+xo86mD6BAfVETZyi667mN/CZ19rRQj?= =?us-ascii?Q?YGNPT7pBDubK82GfAJFdiKTBfNCs/Kv2zAp8+0dR8N5vtX7eNnC5nJ3AVxO7?= =?us-ascii?Q?/pPKApGxt02l8BG0P8qrzmHKNoXkJYdELofVYLcexRIGCDOeeCa2qcM1TOg1?= =?us-ascii?Q?Y63s8ZQeq7CF1U0ZH7/+XQ1NUsGLaQcRMOid5fZV7bIkOqCl4xBjRDnpD2MX?= =?us-ascii?Q?LIeX5IfyixzDqa7q0eqOHX/o3AdNpYfoM2FYjYLP3r+2dlBIEK8DDr088MQd?= =?us-ascii?Q?9nUUU1eHU7dlxxdfI+S1N/RXMCbfYzpNT2KZV8wTvs9qHud2pwlvPudt6tRr?= =?us-ascii?Q?Huh5+90qtxb74z7me+N9L/vf7pwNmtF5YzfLljvwMp7Um4LmlsxN0n/u5iHB?= =?us-ascii?Q?kOIMLeqUI5KBtsJ0jll1mXrga4IAzMfLHnlXh9KANMy/zCEWodVP6eFrkbbd?= =?us-ascii?Q?DqYcTMrkw4V7B+ipQHGBxmvN5NknJ9kboofFCQX3+KrSldjJCC/PGVb2WHXG?= =?us-ascii?Q?wk5qnpK+i47hkfAti5lb+h7wClhUj+DnkKn9wEtZgmUHl4dL4VqPgyuUuiDB?= =?us-ascii?Q?fq62k3jvDURfX/Y30erI06Nzb4jOuE4dMGBbxxIM7184RR1Swy0Z5tU8jhi6?= =?us-ascii?Q?uC5AnSmbAupR3TmVRqooUNFrIn2zpxVAi9pAaHF1JLcPZMRZ4e2WxLbo6i66?= =?us-ascii?Q?omN7MvlzK7P4t2Q+7pCCIx/sS5vYSSXA7TwwpSQjGFtdoqP61LGZ+KUGvJow?= =?us-ascii?Q?5r5rs1UQQSDteCqWWrZJRTbAm++Cq/CHi6LeLTh0LG7vaQ6ABoMWHc0+YFu0?= =?us-ascii?Q?kAoT64eOQNxHSpWyIudx4vHkGKlri3Jq2Z15YDzOBKaA0Pye/bo1MV4npKm3?= =?us-ascii?Q?K8fYdqHc2m8GnnWaPYYE7CQWSw4vPY5butrdPw4mO3bnJKFV1n4qJmjVAAe/?= =?us-ascii?Q?zcbLo38jPDJutXsAf+Gs6a+NKHR1w7C2ZkuRAmZ9q5UQQs3GjvpxqIwAMwpJ?= =?us-ascii?Q?ufLbMJ53IncdL3SAo7MjocOnDBpNIPQRwdirEJRPkkYzJi28NYFERi8iiF0i?= =?us-ascii?Q?zO86q+MOrUTmEjTE+bNnbsHhHmdfQWCyxkWwQGjgX9ULtKJIEyvboy/1I/WG?= =?us-ascii?Q?7Th2T2WLag5khPyHLksQGgCrZ+oTp5MRiQl0ERYebKEPTPO5Cj5aMBJk8G3U?= =?us-ascii?Q?5sZt5Nqa4ohsgyyF9yOqRPCWLdLlMiU/LK0oAcmm9T/BNPL5vZmuGG1p8hIF?= =?us-ascii?Q?zQT5MCdcYTh6rLq0ADCObzINxAw0OpAgJN+I/3RZpe6vo+ldzAKglqPer88U?= =?us-ascii?Q?aHT5gekDQAM=3D?= 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:(13230040)(366016)(7416014)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+lZXU6+8eIQ7WX3nYT1PFTXTEQLcTNHaNo7dYn6j+HmLrmtI0fpkAR4QMJAe?= =?us-ascii?Q?09T3/HICJYghJYkyzlyD/MgLQHeuERSeD7etoYPjlZplNnJrQ8WFdwKsDAs8?= =?us-ascii?Q?KFpjBK1KqyTjNnN+/5C6eVac4lNH07a4jYgSdYrV6NHqxu0vleFIPNDNJGr7?= =?us-ascii?Q?+WAUt9OqezGG2YcuXz8RpBBYcg39agVguhLyWf2Zs3HpfWRfcgRDys5Pytne?= =?us-ascii?Q?5RK3mGAso0RJfHeM0oadKlhfrj/ekX8AYlZ+Vp6FfAlWtBxJnmkMMDJAsULl?= =?us-ascii?Q?c2b4RO9dEy+cReKcmn0XGkEtReTCMCXDJ2RGZWwHNP2bUCHDh9tYZ8Qui0q3?= =?us-ascii?Q?DYYZSB7fh7YNQZiOM+7o/FwtQ8D4UNxXMbqY20vgyOD+bqI93QFUQOiv4S5Q?= =?us-ascii?Q?x/fmHp8WXTcZDCjHmeHpz6oMghmBW+1uuYkw53bs7Cd7W+aJcfb8hdPgBaZi?= =?us-ascii?Q?aiq0W+s2QP64jtCZ7OIARmyjENWSrhGcQEF3X84tF2llsNBJS1lEVySLkrUp?= =?us-ascii?Q?bQiKXfEisjz0KefY/oQXVqlV+bwEW4gX4y39lJpCqFa2rv7C/QTWPuNgif4h?= =?us-ascii?Q?ImAo/Z7CIjoiZQe7F1v2dwo0SZWZjH7bs+5SakLOHFiq/OsMgfcRHkDDz2Fo?= =?us-ascii?Q?Fd/i0SxiiJhGyZR2QhrmoVOiVhusatrqcVqZLcKWg4BOQHHnF0RMxDu/YcKh?= =?us-ascii?Q?SsoVLIT42D51OJtam3ggk9sTzEsaVMD01+6wrS6mskhmh+Tqhycw5XL2eUK2?= =?us-ascii?Q?MzFltpydvO0VcZR8Ixd3YN8SfaaOD3fVEGOX/FOdE9FLHOZ43k7MpWCqibJu?= =?us-ascii?Q?EAGVY6LhcnxKUWbM7u9iDmn3yip80ke0JMFHNGzu2QY1DY4Dq4oB9JgvU9UN?= =?us-ascii?Q?SS6tQfbetC81OSTfKForaGexLWDAySlpR5QBDs9t3cySIY1TT3/4ZO42D+b5?= =?us-ascii?Q?CBt0IsaZn6ZXs4l8tCvhZBS4h8PAYDipH017Gix+Yulz4SZUt/bHekeFDhHf?= =?us-ascii?Q?SiA0meX6/9ZTD9vzNwgZ/mAfEo3jZclQEoQR9DmOyaTKLk7RopEi07XGStO4?= =?us-ascii?Q?XnNlc8sTAhV70MbyxDYAKjFeGerWO4qdcpgqkwW9Zt7Nsxzo/tZ5GPyWRiBw?= =?us-ascii?Q?gKSGeB0dl4v4xNtC+vwCrYKkHp/eH/X89inBiK52Fe3BR5bYNMF3pmI5SPE0?= =?us-ascii?Q?QkGzb91QWRBFtcqCPGQFRXYVQ+79I73l5YTwnrv1RY+nmdAEJOYlTo/3NDF6?= =?us-ascii?Q?tCh3YHcG7UGJRy1vZfT/WEXCOs3J1+/sHZHWM0r0CmVF/wavVjrrMmVJr327?= =?us-ascii?Q?woc8CpXfB+4DM5fxRQuaeCy/WypV5oRketOSGe3bG4zeLLAKsZKTmRKwMOdr?= =?us-ascii?Q?llo9Dfh95ywcALWLZvnateeFedZSv74UnFQYoT064abTcOhXu4t+xjywd7Yt?= =?us-ascii?Q?ZXiDpsF6GlilrqBgl3zTkLpZ442ehs1ZMBBpPDzABcH2jjfDbSSSKLC8nGkE?= =?us-ascii?Q?4Kp3d9hlzoU3/+SAEOZjAhZPM3zfC/BktzM2qzoGX4DAZiBEBhf9yWT+3sEi?= =?us-ascii?Q?FmNSPcBJJtdshxZNOxbbOn+1qF3MZhDdfUBcjrIp4gtlPwNrwKADkl1DF01r?= =?us-ascii?Q?ew=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GJouT/8FCmLMzV9H6QXyHG7sDvX1AtS7mk0zOlg4dzxf1Y4yCxcH3N6vEHPOL4tVc65V0t5DxhnCVNDanFcUXNLG/H3ouOV7GNBE8xqTxjTbT/F1u/mZwensi1hk7Prut59tt5uDRYLhw2YCPkycMRgpSJD1HRASRwcNDBS4uSscBftQyzV2tF1nyMkh2yPS4HcyCiI6HSWjjPXQFmsAvDSKHBtXcV9kynTeHjtJ336srtoPR+1iGtp9m0GRKvQYcEYcE2GXLd63TF8rTwoTQ3+x+dTjaWhsOc8URm7DBxbdCtrJFqbGKjkknEnQtLQNVWNy+xVfV7IYclKDkyKnOyZbtaHHCuEoLBDW7WR/rrVwz1erx537FGJ0QvC41uVKoTBJkG6GnI2I/BJinv/HPtZHVpJcU6PIpkUuemwNHRMv+nXEwHsoZQxU0eWefr1CCDs68HDcIS5AFDDM30doK9d4VIrK459560sIGt/QF2NidDc+GPohE0TwJjDM6JU+uZigtgCyaxj+YBjL2RzoVawQSWGOBk+Al2rUwbC17iI8SJta9RkDb2q515gbLqUEMMSwY62dcu+0vW2cd5Ed4XwavOVNvQLDktWdMjxWkN0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26f5913d-1d24-4ff1-6e6a-08dd8c7d1f6f X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:18.3978 (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: ustPeh/kM/P2Tk54gHFjA/yn9oHVGeDpy3MfO1m9YaSfG+fV9/qBjqKQ0jdrSk8HmK9aBsMzET4q/X+F6EBnhA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6708 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX9qI309MB8R8F PdxqPmRCpfuZ4kuFZ3zK6FUs78W2sPP7DZBKCYtzppCaaD/bIsjqFACLjUXRO47qs0+GW8Hxdjv m+7wmaEeg6h6bqhBGATO7PNBe3nsoGNPYPmFSHpIxxUgLjgFcHXJFq/ICjStQt0unaYjNmrtWuN 18ReFBUywASxHdbmtANvp3MIBHFXSwmodPvkowc/H7gR8WUAbN/zaRiYs6/+jCkDRrBwB/pmLyN UPNDNbSQo80VVnyiVaLqc0vZU1Xj6tzczGDRD8RnmjV1Ufd0Bh51sAcx3WUTIEQyAEbpdOYbJIW jI9RGqDg8i1+KCZlll0+pcoI3RikfdW6Qlf0Du9Ur78YJsfhyG3ie6u13HQVYU++msbxfqltRCj OOmhplCiRCxdY6pchWD1mnr/PCu6aDec5K7sSWOruVCyI4CN3LaTX3erYqVbELi7r5gtgOJf X-Authority-Analysis: v=2.4 cv=V+t90fni c=1 sm=1 tr=0 ts=6819d0d5 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=BdfLSKS78uDQwj0SyGAA:9 X-Proofpoint-ORIG-GUID: U1nInS_ut_OdRHqqpjSOZP9_A-g9sk0_ X-Proofpoint-GUID: U1nInS_ut_OdRHqqpjSOZP9_A-g9sk0_ Content-Type: text/plain; charset="utf-8" Add a BMAPI flag to provide a hint to the block allocator to align extents according to the extszhint. This will be useful for atomic writes to ensure that we are not being allocated extents which are not suitable (for atomic writes). Reviewed-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_bmap.c | 5 +++++ fs/xfs/libxfs/xfs_bmap.h | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index 63255820b58a..d954f9b8071f 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -3312,6 +3312,11 @@ xfs_bmap_compute_alignments( align =3D xfs_get_cowextsz_hint(ap->ip); else if (ap->datatype & XFS_ALLOC_USERDATA) align =3D xfs_get_extsz_hint(ap->ip); + + /* Try to align start block to any minimum allocation alignment */ + if (align > 1 && (ap->flags & XFS_BMAPI_EXTSZALIGN)) + args->alignment =3D align; + if (align) { if (xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, align, 0, ap->eof, 0, ap->conv, &ap->offset, diff --git a/fs/xfs/libxfs/xfs_bmap.h b/fs/xfs/libxfs/xfs_bmap.h index b4d9c6e0f3f9..d5f2729305fa 100644 --- a/fs/xfs/libxfs/xfs_bmap.h +++ b/fs/xfs/libxfs/xfs_bmap.h @@ -87,6 +87,9 @@ struct xfs_bmalloca { /* Do not update the rmap btree. Used for reconstructing bmbt from rmapbt= . */ #define XFS_BMAPI_NORMAP (1u << 10) =20 +/* Try to align allocations to the extent size hint */ +#define XFS_BMAPI_EXTSZALIGN (1u << 11) + #define XFS_BMAPI_FLAGS \ { XFS_BMAPI_ENTIRE, "ENTIRE" }, \ { XFS_BMAPI_METADATA, "METADATA" }, \ @@ -98,7 +101,8 @@ struct xfs_bmalloca { { XFS_BMAPI_REMAP, "REMAP" }, \ { XFS_BMAPI_COWFORK, "COWFORK" }, \ { XFS_BMAPI_NODISCARD, "NODISCARD" }, \ - { XFS_BMAPI_NORMAP, "NORMAP" } + { XFS_BMAPI_NORMAP, "NORMAP" },\ + { XFS_BMAPI_EXTSZALIGN, "EXTSZALIGN" } =20 =20 static inline int xfs_bmapi_aflag(int w) --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D57ED2798E9; Tue, 6 May 2025 09:05:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522344; cv=fail; b=ubcEHBnAR7J1aOL1Hjz6D063ijM4OSqu8Ao328ohvbyIulack7GI+voLCdHyPid3fB9R+oBtXcjBnd6qZUtE1YtwSwPdZTmO0SZ6q3scrWDGbvVevxNIevEF8iDT8wgqti3cp/xTbGzdgM8of4NkJ3U7+GQJP4AlIBXuYkc+KCU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522344; c=relaxed/simple; bh=bao8ro5jB2y+yAP3hljkJAZmi18dQqmKw3XotU1xy8Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=bpNomVGdXZWX1XnZWWvm3NisfqAdJJH07iETgc2JgM9hWH5Ogm+60UbkEM8l7kqhpOH2m95RyqLIcFvXbW1d0pSPv7H3G/4WgYaw+ekZAUX4Bt44JwyaOalQrIRDFFTcUm5MgI9StmO37s+YiDy4ZehW+s9dO8FZiBiwom9yVfM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=C8YtGnsq; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=kDz+FQ1s; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="C8YtGnsq"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="kDz+FQ1s" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468vf2I023352; Tue, 6 May 2025 09:05:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=5QDj8Rz5l/t++iluDX5lk+BX2LQlZEDF6iZSgvNbB6E=; b= C8YtGnsquMfG9EMa2sz1AFfcdViD7vVtfPy++q7+/Gp3rzjufbwddTNFcnqxuFcb lpTkDh6BB2fsqMP7ujh+ow0bBho2DtLHC9yZAtAiHRoPCzdyGeSKGuaEHf/GMB8f I0MUdn3bsZzjM0mepigLjFQkra8gLIhW64/qahhls/F941dZax+vb4zQn1WlTP6y mpHG2LgVJ+F/4uEU38K/jbVLq5qa2My9Ga7aN4t+6jgABXzuThze9fDiupmTQVfj MKea8D9wDmFmzk9USbNUcWiqdMgYrdRCH6CEcDADp9a4B1woOJ6sOP7YK8Lw76Iv zgOiYdrQc8jK1kT+bZzqgg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ffc680f2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:27 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5467a1Sb025130; Tue, 6 May 2025 09:05:26 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2040.outbound.protection.outlook.com [104.47.58.40]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf066e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lOUuBFwqdxJhHBgyrERPA/t+INXl1xwfCe44Ln6j+8bKsa1DZDLeYkMzTwtVoLXsrK8jbQNIrMOnDW3rq3FoB6qRKigUFiKtQvOg7g2WG6LhVo0b/6GoKsBE87xjjk4BKi5mwUjj/92sP6uhWmAArvpGKUexKf45ACve/+JIpOHza55Bg47H+jumibXeBphcBW7TPbbfN5ARNrsQOFf7UUPxv11hLlYXhl8jSwCQmZ/foDHBAuOG4dXaJ/s1DgpMAre1IPf1ZCz1YtrS7jgHxnAsRzU8v8aaDPWcvNS/hTqPEOnNgQLK31o2QVzvo+9BJKr22k6LWrdGrdaiZSOSjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=5QDj8Rz5l/t++iluDX5lk+BX2LQlZEDF6iZSgvNbB6E=; b=YjtX8GMOZwxQkueW65zqCyjNb9WrN7Mwc1p/xLecvMVsbZVuKC3cFQM8ZMTCp7m4Pmbkx/oJRsuo7UTElkxJzzcYPQxQWmEyrCgnlFC1hp8QmrB1pn2sATlAm5SfrcEKhibnk10o3ZO45gPpn+YQJrPkbZwcJe0qOU8C5UnrQ4zAICo0LwXYqwNuAztgHbntx/t3nrtmImdEoJ0JSBYIBS3cHf7Hx6g3bQ6BO8gj5SfGW+WTlZAm802IJ/2vWJSYSRIafA/NMOFGwbhw9htF7ZVYtTUB8sAVK/rCMUbXqNTV9hNXVTdwAlr204r3Zca0DIKJb2/GITuUt8UEP9RccQ== 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=5QDj8Rz5l/t++iluDX5lk+BX2LQlZEDF6iZSgvNbB6E=; b=kDz+FQ1s3bCvB5TvGYReyygHl0RPj7zh0tNprEvMJ3K5JYfvjeAZY/kCnBsyiTqRTR1u5qpeaUxaHLs0jfnGk/He1yIadI39ezaxgWuzcRpPmp42xy1p5lPddd87Phmc7JTfLuKeqEfKn1BVhfQOW1rJJ67H5lG24s3Dg0UG/XM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:20 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:20 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 09/17] xfs: refactor xfs_reflink_end_cow_extent() Date: Tue, 6 May 2025 09:04:19 +0000 Message-Id: <20250506090427.2549456-10-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR05CA0116.namprd05.prod.outlook.com (2603:10b6:a03:334::31) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: f8218fa2-c589-4096-2a96-08dd8c7d20a8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SdsB10omnK5nTjJd8rVQXY2DC9rW7n204EzlFadnj4Qy1eGwfcJ2CP8xjZH1?= =?us-ascii?Q?t3pY1q1vVGBSTFW56T9PAdoriulBwuBHmqlRjBv42kUBvzG8xsOjO2qzq8gb?= =?us-ascii?Q?+PvfY39f5cMORJ+BK/NoIfYdoqshHCR0a6U+C6QgvEETsKUrWBrxkY3LcGn3?= =?us-ascii?Q?Mhu3a/Pb3Gp5yN8cVSJpIABfHFaye4J3HFn7ZxSThpWAbkroz0GgQHu08vv7?= =?us-ascii?Q?/mBTqaruM2DjuBoyuzDZ7kxfjp9YE9WXfEzH7Bcpuf+us4Ah2hIV7yAEFutB?= =?us-ascii?Q?zdItRtqy83kMiC/FQWoL6hhWxP1qJOwPd319CKTSB3DrAB0x1NGA5C2qXFAf?= =?us-ascii?Q?cYqUbaX0McGhfCUo9V5MVKluYLEC1cbe6tw3gPwPq0j0r9WFix2lacAxP42t?= =?us-ascii?Q?tbkq7vYpGQTwff+kftly51PPvCjoZoENxHCNZw1bHKGvn14jWxS+/xq569Dp?= =?us-ascii?Q?IBFSI0sYq1glEPw6ClH7l0HMIBazMEmM5HP1yJH9qDF3hmgHu7ecvjbMapFO?= =?us-ascii?Q?WW7owSmoySndEfEInBqzo596ogRii6Qn0yQMXRe81RejSGHe2584RkmmId+d?= =?us-ascii?Q?z7aCIuKiFsfS1rLDR2LkAQP4rnwO7ePZ0cHtNgShdhjWpHldLBzojiBm8eDn?= =?us-ascii?Q?Igl7qkkdKO6jzH4m8lpxTjfKKcNQ5hwuOwyqaK/jlHjuB+EV/9XjALa+5PpM?= =?us-ascii?Q?q489sS2YMw6cD+SICTwLk426zY0W1YJCgREV+dbBWwY714Kf3npsutP275QJ?= =?us-ascii?Q?LqOtSgt1ha4VP123X49xN7QCG2X715919N6l1nAd42l9+c9T4c2FMU3tq7x/?= =?us-ascii?Q?YEE7mPrvnKHEdNhzhsFvLu0Gy5HZFwWULw+HtsIg0te7KiM70IN0IRdysKFI?= =?us-ascii?Q?vQy+IoVlenlixpnw5JLSmchK4BG4i5XGIi5AGoIvuiAnjURB9ECOr0TkPkMy?= =?us-ascii?Q?3LAtYRQSFCZKCV978Uvz12jyY97yw1lpOCgiv/GlC45sVfyd+yH1c5kfk/uC?= =?us-ascii?Q?/QDuzWS0xVQRYNmJAgmOHoOymu8O8tbka+9exwWaU25iMt2FR3ypUkausQWP?= =?us-ascii?Q?vG8pPLVQoMcAhhfsCQNQjYQYiahNuDY54+h5eVHnNJHn7cQOLhEpnHRNCLpu?= =?us-ascii?Q?/LzJ2yLaHSFHGY//9WdLUJ21GJEMOPZWfPcWxMH2TseHQSB3zsWBysQQNils?= =?us-ascii?Q?orKbxAqkqk22lyHTJTsFn/i2IDK4Uty01XoPh305g0UShgy9wYMJuob4InwV?= =?us-ascii?Q?OQlSYOpj5EXN2mfUQO6hZTaNtF7dUn8/Os8WSzlpxOAomligwOIqyasfMsi1?= =?us-ascii?Q?hrV9p+2CKpkyNbKjhl8qvGKgKvSDWtAi/rQVcCILRW5gfgHkyHfTIQm4eyr7?= =?us-ascii?Q?RtHWKRN0NKDntNpXRmlqySS0YKTfoam93W+p/74kPLlL83NJfR4uWSxXwSRJ?= =?us-ascii?Q?wLEeTIKqJik=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rCokl8WZtuSzewA71/Oz83FCXcuN7b3S2/sFf4mQGWu+cJDH8YozbUjggx8f?= =?us-ascii?Q?BoXohNJUwSRqHYhT0BoP6w73bILnvhJg78yJiAMdIgiTkrZKHwSP1efG+2au?= =?us-ascii?Q?GfVPo7aFSmvgY3sHgrPwtI/WLaEZIODnDeqn335shXmtrZ7JoyTUeu7LehG4?= =?us-ascii?Q?dhLol7rp66G5pzDIbQ5/+EfgLvxlqA6+nCMWFjXBBeoC8pKaeZVNdIB8a41o?= =?us-ascii?Q?U2ynQoK4g+UrjFfuZOHoo+3IJNqdTFgYztzn5sfs/ZN3FED6eqFIlCKwXRrC?= =?us-ascii?Q?ApfTzTIPVph2aLQwjXkkq3M6xhjCvK5gFu30J0vXFE/FDe/c6zh+Wdoj5kA8?= =?us-ascii?Q?PXpJ85zksiSIgA6CNqZ5iVAQe04GAEJT3jUrFhG9Z8/rWdAL3oGDGvMzSOIj?= =?us-ascii?Q?TzLWY59BngouJf8sWLlnuF8nQSQ6QvLKuOp7DGtyaMzw3E9IWlh0EJPumtHO?= =?us-ascii?Q?BsLRdu9aYd5Nw4Ni2fZIBB6KEKZN9XFERSsAHFM4zs1KPN91cu2cx2o2mq33?= =?us-ascii?Q?TPcCQKt7iJCUroXHos9roiRFiKrI6sRguhDJTPFoeCSci2mWyyd/NCSmCRMx?= =?us-ascii?Q?iivCabcdyGAo3qqD+JF51qPVW//+78but5Ihvv6tyKn5Zgg5hnQY16ZUEf4a?= =?us-ascii?Q?S8e9df708pTFxNCi32RsWxB+d+zD2wwZrzUtt7xLCC2w2CdHZ5eRa9X+nJSn?= =?us-ascii?Q?U24MMc9NsBN65uhsDiKPD1W/7zsmGdfbIwHGzaycgCk8rsEG5Emt7q/uu+mO?= =?us-ascii?Q?SxEstf/i6UrCVKYUh2xn46rxaayjgxx3FuDk4cisDFCPgjUG99avSmuzvfag?= =?us-ascii?Q?f64QyPpnyBcvDzZvG+qgSCUCx6Jbnbx8HM53U0Feoh92Zr8EKjEGjzyRysVm?= =?us-ascii?Q?nq0Jd9SRtdZ8H4wRizJRcyyB9q0dm8j5MbL7zj19vjLZJ23aRIiLQJsIxL4I?= =?us-ascii?Q?b2nOeNDQYJbKnfXGf7XUn4ITUi8/vvN88Zd9XhA5uJdvmTrFJGrJaoyjenSZ?= =?us-ascii?Q?rUkQbbwSdC3otOgzXSAeVCcISgUHKfIManxUkUNkx3Qijjq7Oj/9kvMoPVR7?= =?us-ascii?Q?BxV3He2y9aUTyBkNFMTB7I2Ibo1nKkMLgiEqupuSgyjNCQN1dhk3PcRH0qnp?= =?us-ascii?Q?KFAoGuESyNYndmrQFjt+psBzKE7OAlgV3M/FeNmCdXLc7R9OM1ZfP+rKi1QD?= =?us-ascii?Q?s2/Tx3HJRMDxHZkx0HaArJcHxZQEGm92KjNr0Cb5cc2rfGGjGxGVvDA6S+/S?= =?us-ascii?Q?L8kswohPhReWjk2r5tOv3aM94JG3xko7+AraaYYNsxTDsaTXdFB7Qy8YycXK?= =?us-ascii?Q?a8dtJE57FvtmhteHUj3ibd7KYU37KO2bEV5zanyUSAz8Kc4S0uoRanpQSeTX?= =?us-ascii?Q?oRBcU5wm4T16lW+qOZVKMHs8EsSCOuY3DeMhL5YpbBJpnZ54t/8Eglfdts/G?= =?us-ascii?Q?/9GX9jfn1ZLT+khhXsQxRG0rIm1mWUl7bD5N7rH0MDjkBSvPFA7HKcRqx8eA?= =?us-ascii?Q?nvJnuXDjxT5U1d+QeOHu6y3P7ft+SzqTkjMk3XIlwqp5WeFm7MX/Pmr6hJBZ?= =?us-ascii?Q?wXXL5Id2hluAXA2ekW9eNQcymPiSk70ZN6wYFP9hYRhrYlVbLVT8moxYQq64?= =?us-ascii?Q?6g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: VWmztqFffOaTVebiBEixYIlk7XDnHoMCNOJ5zIlGkcW81WdQoxi/7ILYhVV8pK39RAt9mHp365jPIBSKMU/pYQaDBqCi2jdU+MUhezcxDi938GIMhnSys/s1VRIUFaidoe+HdSbcMepiKMZPMhoux10dcsD/W3LjTwWEjWknPJv3PEvDiYI3fGG0UdRsN0uwub9Xyc+9MjjVuCUFK5w/XomJW2cdlZEWjLWtFdYsDNk44GdMMoLo7w9YXjAgnQygOxnXHiL+F6RWV9xwDZ2wOV8WUA+t0C2rwN7+cXgFaEyvscKc2oKYBLknb6uykXRFG5tHNHiK6OzmzejrmFhpvSFF5QHwNg0rjJYg/iS1LnVJjK4XZc+Tga49oormGS0vrmDYMIIQyh7clXQjVuXBu6j6NykJpnw3hTH5w3MTORaAW7vUFif3hfW4KI1Ez0e6ddDBWv9P72jxvGobsK7o2Fyo87TL4ymAQQ1TF2b/ykDz7BM75qXqlpmOAdoLcxnoPVjwkWYatVGtcIGEfE+qwBLEnIiIPRNKg133hPZc5wjs5QvlwdX0l4wm4Vow+4pnk7LfxJ6q6z31kUx1UdrNVYglAIPzKapGg4gIkSYIplo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8218fa2-c589-4096-2a96-08dd8c7d20a8 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:20.4637 (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: Wn2PWHb3gdr9Cfo6lsJVFgIvSxXtsYDwiqDnEX1qa/s7LazAP/pgxanBmbTPzxQ31Xvfiuqq7U8KcxGS8cA1uQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-ORIG-GUID: D90tLxMvUPIpKyMljZbyMBIp1Vkvl94Q X-Authority-Analysis: v=2.4 cv=Q6jS452a c=1 sm=1 tr=0 ts=6819d0d8 b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=zPHwHgG4P_mrsmFPOIUA:9 cc=ntf awl=host:13129 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX0ojqb5qtSl3r IqtYD5iHQwU7G5m6Vq812HRB3pRVE4K2C4NskKph+Dp2UwnmR04tvvcpDzR5BS4M3zcgC+LBM3c Ghte//SxcIZl94vHSLNtDvf1yUhWwUfsQt/AXr5cwz4FEcFxvkVm3VoWajis5q+XyqmUq+2pkgg XRbPqnr7y+QAml/tPUP6VBRL09nYSRPtr/O83eLaHJZJuMnc2FjI9qYpPZDO2PS7hQXFO5MGfZn CHqe5Dg+s9qR3L4RWt0sGF/zVm3j5/lwZax8PcqGMvGGAG4bxSsBhK+zmiuSX3djJLrPDQm+rS/ OgpqN8YTAgCAoBNQubadszsNwGMYturSeZc89V36jMYOcxtU4Td6D1O44mX+FFSjePeXyhwDS1n gUUOSq8lmupJmxSVj1tXmmNAtmjmhgFrXSdELKZR0vzZrw9WQ3k0SWThMOaGBVdoQHEsMhEb X-Proofpoint-GUID: D90tLxMvUPIpKyMljZbyMBIp1Vkvl94Q Content-Type: text/plain; charset="utf-8" Refactor xfs_reflink_end_cow_extent() into separate parts which process the CoW range and commit the transaction. This refactoring will be used in future for when it is required to commit a range of extents as a single transaction, similar to how it was done pre-commit d6f215f359637. Reviewed-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- fs/xfs/xfs_reflink.c | 72 ++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 30 deletions(-) diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index cc3b4df88110..bd711c5bb6bb 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -786,35 +786,19 @@ xfs_reflink_update_quota( * requirements as low as possible. */ STATIC int -xfs_reflink_end_cow_extent( +xfs_reflink_end_cow_extent_locked( + struct xfs_trans *tp, struct xfs_inode *ip, xfs_fileoff_t *offset_fsb, xfs_fileoff_t end_fsb) { struct xfs_iext_cursor icur; struct xfs_bmbt_irec got, del, data; - struct xfs_mount *mp =3D ip->i_mount; - struct xfs_trans *tp; struct xfs_ifork *ifp =3D xfs_ifork_ptr(ip, XFS_COW_FORK); - unsigned int resblks; int nmaps; bool isrt =3D XFS_IS_REALTIME_INODE(ip); int error; =20 - resblks =3D XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); - error =3D xfs_trans_alloc(mp, &M_RES(mp)->tr_write, resblks, 0, - XFS_TRANS_RESERVE, &tp); - if (error) - return error; - - /* - * Lock the inode. We have to ijoin without automatic unlock because - * the lead transaction is the refcountbt record deletion; the data - * fork update follows as a deferred log item. - */ - xfs_ilock(ip, XFS_ILOCK_EXCL); - xfs_trans_ijoin(tp, ip, 0); - /* * In case of racing, overlapping AIO writes no COW extents might be * left by the time I/O completes for the loser of the race. In that @@ -823,7 +807,7 @@ xfs_reflink_end_cow_extent( if (!xfs_iext_lookup_extent(ip, ifp, *offset_fsb, &icur, &got) || got.br_startoff >=3D end_fsb) { *offset_fsb =3D end_fsb; - goto out_cancel; + return 0; } =20 /* @@ -837,7 +821,7 @@ xfs_reflink_end_cow_extent( if (!xfs_iext_next_extent(ifp, &icur, &got) || got.br_startoff >=3D end_fsb) { *offset_fsb =3D end_fsb; - goto out_cancel; + return 0; } } del =3D got; @@ -846,14 +830,14 @@ xfs_reflink_end_cow_extent( error =3D xfs_iext_count_extend(tp, ip, XFS_DATA_FORK, XFS_IEXT_REFLINK_END_COW_CNT); if (error) - goto out_cancel; + return error; =20 /* Grab the corresponding mapping in the data fork. */ nmaps =3D 1; error =3D xfs_bmapi_read(ip, del.br_startoff, del.br_blockcount, &data, &nmaps, 0); if (error) - goto out_cancel; + return error; =20 /* We can only remap the smaller of the two extent sizes. */ data.br_blockcount =3D min(data.br_blockcount, del.br_blockcount); @@ -882,7 +866,7 @@ xfs_reflink_end_cow_extent( error =3D xfs_bunmapi(NULL, ip, data.br_startoff, data.br_blockcount, 0, 1, &done); if (error) - goto out_cancel; + return error; ASSERT(done); } =20 @@ -899,17 +883,45 @@ xfs_reflink_end_cow_extent( /* Remove the mapping from the CoW fork. */ xfs_bmap_del_extent_cow(ip, &icur, &got, &del); =20 - error =3D xfs_trans_commit(tp); - xfs_iunlock(ip, XFS_ILOCK_EXCL); - if (error) - return error; - /* Update the caller about how much progress we made. */ *offset_fsb =3D del.br_startoff + del.br_blockcount; return 0; +} =20 -out_cancel: - xfs_trans_cancel(tp); +/* + * Remap part of the CoW fork into the data fork. + * + * We aim to remap the range starting at @offset_fsb and ending at @end_fsb + * into the data fork; this function will remap what it can (at the end of= the + * range) and update @end_fsb appropriately. Each remap gets its own + * transaction because we can end up merging and splitting bmbt blocks for + * every remap operation and we'd like to keep the block reservation + * requirements as low as possible. + */ +STATIC int +xfs_reflink_end_cow_extent( + struct xfs_inode *ip, + xfs_fileoff_t *offset_fsb, + xfs_fileoff_t end_fsb) +{ + struct xfs_mount *mp =3D ip->i_mount; + struct xfs_trans *tp; + unsigned int resblks; + int error; + + resblks =3D XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); + error =3D xfs_trans_alloc(mp, &M_RES(mp)->tr_write, resblks, 0, + XFS_TRANS_RESERVE, &tp); + if (error) + return error; + xfs_ilock(ip, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, ip, 0); + + error =3D xfs_reflink_end_cow_extent_locked(tp, ip, offset_fsb, end_fsb); + if (error) + xfs_trans_cancel(tp); + else + error =3D xfs_trans_commit(tp); xfs_iunlock(ip, XFS_ILOCK_EXCL); return error; } --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2F5326E16F; Tue, 6 May 2025 09:05:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522342; cv=fail; b=NtjvaFIaaXOVZrztNFHeEWUn2O+mDeNrIkmMmYbD4Y8AuABdISjc4ZI3usXOiOZ/VPx6l+29BTRF1KD4ydqRRksaRyIdrEoV6K2/MbptySvmKte+JWPrAi7uriJmjgMYVFaV/x0Dths3n63HAjxBWale/RqkpZFvL/HSbnZ8J84= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522342; c=relaxed/simple; bh=9eT+lXdOnGGoGzrugdHnlM6/gxGf6vdsPRVIvBGiSt4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=okhjcXO5UuAWlYXA3Xa+GTRYlJNfML1pZqAvdktqhO1gKz5ktWax63dQPGL7/o1cVbsdy7hNorrDwlGna5cHDpZ9kCxgaXUyTX1R3oQx5Gif18qhLOWCFzfMUwjIARjWFGmnfePtjyLjwYQvJBLmQNDLsarNcuEDHyB0XElmMlU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=sTjtuv2H; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=qlVezZcG; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="sTjtuv2H"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="qlVezZcG" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468bajL027331; Tue, 6 May 2025 09:05:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=pHPrOF330Ob5KselHNKq17d8XF2FSszAu7gGNAU1b2Y=; b= sTjtuv2H0lk3GdcDtbIwMV6f8tuy1ox/zL3FgTcq707Dac7yB5TW60hjlgvX1KT9 8AqABLO99Lq4kdb7nv0IO/8qzxnnpdecNW4AFC3RKD9bNoOy5WcAGk4CsdGmZGuG 7L7+IlWVC0psKUDImD7kGw0lnFQVU+xYa8mdxc6so7y8KRujnSma/wOxwrulaEXs UoaSBpk+WhNUi4BQvFFguUIwkgvda+aMJBKdw7WJHcInpZR7hYAIKb0MshdZ8Cyw BTMHue3Fsfy2GLB73a++iRyQfNkVOgODcdf2TeySVHGxEdpeiRgt7LMlO1nvrMAF 3Yb4+fK0qXEEFnWrmEzVUA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff2t02kh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:30 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5468G3bN036085; Tue, 6 May 2025 09:05:29 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2048.outbound.protection.outlook.com [104.47.58.48]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k8rn1p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=r9GIwuvpN5xB+9y+Zj9BFkC9xr3/rnfOAqsq2ByWJCBCJqq3zoIIje8VuKJkunzHZkla2L3U54VodCBorfhmtf0sOaQD96Mi/8VqlA01k0v8Jzob5nTop88Pc+1LZBY+SqlSHF1ZApEHK+0lV6pVNsogikGGP+kiwjzw/IbfPa7PNroCs/peS7NVsq4m/Rye6+GwVL5TkLE7aH7BBxn34O72C8+QR7+9mDrx7AAUrGmyLNJ8A10GE0FjooEdKdJNgumfJDniL8/3jUoXjIrdv7is3TMiahrHaTbFHyNmrWaQSfxMLrGjFHIc/HYoHfs/fO687093utPsU8KkSXFwrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=pHPrOF330Ob5KselHNKq17d8XF2FSszAu7gGNAU1b2Y=; b=TMrhqx+vTYbAjKqp0nN7vtg/Ezn15wXSxxfFhyvI0PIYZ2AwonWwv2OS73qyaXwtNe7Y8ea+2IR9+5amizYtvO26anU9xWX3Kdoz+XsJsEHmmb3jJABI/WpJdStF16Ebzn7qrHkNdCQMRzJ6YwlKozZi9PfPu7NlupZPo2IkbgkGLj3qk52GZ10sxZJXm2GDU4K3I4/UlMI+c886fuQ9qDeIaikcNQ4ZwvPnBns7/ReDVrNeE4Bo9WDDZc0LivlacvCGmNmmZA5101W+XpFtjZs2qhIOzevIOmwfod/P2rsulsLfBoGOQOCkyRegn6s00XvJKNgl9PUiV4zMCeMW/Q== 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=pHPrOF330Ob5KselHNKq17d8XF2FSszAu7gGNAU1b2Y=; b=qlVezZcG1agiqeQ0WIwVt5zyZmdSiVNv4yOhrLZj7kiJ3lv8QQBr+whPuhoaelmBDMmle+rvLKgZxQHW0gIqgT3Yo2/bpkoxRGI3kZRVfghQNCF9L2dJKCEIcV5dI7BeCHh2l//hIjd31h5HFLA4wAXzjdioibGiZoqJCvmGuEs= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:22 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:22 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 10/17] xfs: refine atomic write size check in xfs_file_write_iter() Date: Tue, 6 May 2025 09:04:20 +0000 Message-Id: <20250506090427.2549456-11-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR05CA0110.namprd05.prod.outlook.com (2603:10b6:a03:334::25) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: c6dbedf5-305b-48bb-034e-08dd8c7d2219 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SLK5nLVceE7AZeVE/uYO142aoAIE9IkPbhHxpQQARuGqKWQwdWwQ3+1v3ovl?= =?us-ascii?Q?sBUxYokQlqJDIlZFEN0um4RgDQ3eE/nNJRT96m3NWgw5xafwfciPpiTRHWrh?= =?us-ascii?Q?SVLK8kRMNevOHKaeLbzrTug5P+0W+qaO3IHc9T7SH39LGD4LMgc60Geb+Fx9?= =?us-ascii?Q?KIPrhmtgx2qBDzR78AuEymejR9vjXkbtsvaaz/4j4YOd9Ti/GPvw/mP/8tzx?= =?us-ascii?Q?gcuqRGxrFY4GQLlIjd9U7dlVCp1KMFVFxF4wl0hE86F6pokhr+JxutDk7tIo?= =?us-ascii?Q?W/rZL/I650LiEJZ5AIwNKdoCeMamLzJPCXSE1b6orF1HuaIMtn0sOnDU54Ka?= =?us-ascii?Q?Bh2ujj/kQ70E5Bw69ibQBFbe+dE4QluL8pkzIaTLxy7A2j+VmHxTLi2gwuZn?= =?us-ascii?Q?zsd1E6HW1d6CNKfn15hXP1JZFwOZvYOXCQfyegcSsgUeeKfAvnw3KGrTf4hp?= =?us-ascii?Q?N00RQGiQTcBLXWE9zzWctLaughGHp/FD98uG1yvzDFv+6AHO/pSJNRUOC4Bd?= =?us-ascii?Q?gAD267aAqp4HBrUYD70co6pnDaIJKH2I0xCP+xmHyNI4NTXKm7v5VURVkIxg?= =?us-ascii?Q?8Sv7tnBh+6QaHPeBcSq3ZXUSBrGePugsAtKA+/pW9XmK3hoHkt4YlpP0usyH?= =?us-ascii?Q?qyfkeVuExiFVy3H5alhzSI/HehPzUO8fozouqJ2Ow0ha6BGSXFltu9Tp/VB3?= =?us-ascii?Q?mE1O/GHeo9iSCx0b8t/WrNWNtVFWiNS9EphBtYBe6SyjARMADDW9ltgWP7/H?= =?us-ascii?Q?UDDc63gy9Z61f/Z076ZlbiEldLVR0b7MLs9jYgQY8gEZ5TVvj55cEb8Gpnyf?= =?us-ascii?Q?kQhHkVMHcgIdjPA+ospeorrfw1W/qBsSpr93zVSHz56d3RQ6aXbi2d91vcEZ?= =?us-ascii?Q?8MqGnVAA13YAZ+s8byZpIHto25hn3oQmpGmFZKo+kt16vxo3Z61DIKH0xpEf?= =?us-ascii?Q?9ClPsmbumAH71s0WSPZfJ3K3vNU8oA4kYxlxa51OZw1NEhAWP4ybZr1trA8w?= =?us-ascii?Q?MpaXiAB0Wf018Aqmm2xMzWtf5AEmye4CjIpd9Pp6mzwJQz4p3giTNo1b5MhU?= =?us-ascii?Q?uNpQwduZ9pX07yEIdV33L2Lw/zAHdtGVb9XYdU+sUKp3B1eJK+iRnbXapEDZ?= =?us-ascii?Q?D1HZWrKI0zb9gFZ4X8ojBcMKXf6nQEmJ9QcdolMtGGSVse3q/Bd9utuqBmGJ?= =?us-ascii?Q?2pNBRXkXMEQzYl2LpuxVa/aJkUCRU39ayUENYHMXj/VOKG2LsZDca4FiyYdp?= =?us-ascii?Q?IRCbmZX2BJkngGLU1TaNsXtgLaz9pd1cVE5kiCKac2LEkj+1LjDCu+GbAOz1?= =?us-ascii?Q?oYx9CEgM+LKZ4kZEll3+coN3UOudEQjf1lV9nKeWr6UwPjHt0zcxLQAARZ74?= =?us-ascii?Q?4I5Ldf7Q8At1DzkPdBKYSN76UytTZg60i2E6Yv0B8EN+giiHjh/Lp1ns6oAy?= =?us-ascii?Q?KI/bNi74m1Q=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VbAehM8jSXda/5m/IFheMlHd6gY3eBO80ox0WZz+HLOCrblYhGyG6+SvnxE4?= =?us-ascii?Q?LwOq148Ee8XmovT89vyhyZ8N22FHYiu+q/Dea52K26F1lQSXlB3QoDfr8g8J?= =?us-ascii?Q?3U9m9IcnvI67EEMqnXmfBb0Ym68BVVhFH4AorqkCJ9hI506E0Jev4CY6a57v?= =?us-ascii?Q?xFSej2nTwINUZW2wpY8QRLPvokkkQp59vaN7DonOb1eiZAEUkO5kh4FovOKd?= =?us-ascii?Q?ByUejwEHR1QWLYNGhmaoBCjgZVKb1QvcVuidql2INXiFUJO4me673vLvSWF7?= =?us-ascii?Q?axXZtCFGIt+hsXpFd5OPRYfnuP6Lm3JIE+HfyFHg2X1z5OAysW/ZewE+O1CU?= =?us-ascii?Q?lclKgvMly743Mq7XB42QDJKtlPkBt7dSAXiKOQy4ankY8AJHABnY6PMJhlSV?= =?us-ascii?Q?oaWCAZp7lLhYqM05ihbtfq//kO4d0G7mr7Rmk+4j8s1Nf1SyjJbqwO5Vtnew?= =?us-ascii?Q?kJM2cuIuUzFRbdjZLezIXFQ/HtBQjbLxgu4ZrgBEt/2y+Cnv8m61knggs9So?= =?us-ascii?Q?chdB39XYDVhAvllSjEmnhYQhdAv2k0KEOuaHYqzDt0OOmjJU7vcHIVrjqe3E?= =?us-ascii?Q?cFq7P6G+XdceKOvQoWfnS5bLAPQAAI8FLhzrmyY83KVEWIdAyO4TvUGhasSu?= =?us-ascii?Q?5KuBzo7ITq0Y9ifwgvJrw8fM8cgINq7EXi1lRmm3BtfmtGeCxzsWxv4cUuBh?= =?us-ascii?Q?RJpjzJewFg38DrgsttOVrjYtwwMsvhKLtM+Ck1qww4vu26cRBjk/qxeKwPEK?= =?us-ascii?Q?/mM2Hw0oAhzggDTCveCbgBurXzUDd2uqrL4O8RfhPsuYsy7h3Le+qzTtR65j?= =?us-ascii?Q?7vD14kJEoHqS34ThPkMQeRTICUdT6JpOUkcrjfETJsESEzOn9be9XLDfLebg?= =?us-ascii?Q?xjUkjhcadDwfMmHU6cgP7jcFsWmS0jZ3QAs67x4F2qB1kcKMfZ3k0ftv96qF?= =?us-ascii?Q?toErCOZO7Fy90XrSytNdhmp3Tpz3Eubxr/7Ys+UO6pH5jX0nq34WQYyh9Yw9?= =?us-ascii?Q?uiPhenbvH/nat3y/hxKDzbKtLzPL0zyR0DgyvQ5IjO57LnXm+DYnUSm+Vp/S?= =?us-ascii?Q?BnaF/+koAPG35rzT80L37IeRc0uApHhsF3SKfRSSPnIQ37b2yfe8869VM0jt?= =?us-ascii?Q?PZ4ZoHkJtcDsTzTXqyo+oZ03jFKnJxZ0nYtG8m/GjJqrPhZYW1hxqHmJH19l?= =?us-ascii?Q?8CiLtdFhdF4+U9n0lICsyE2/dSau2nxmz41EojpfyRcGJEhZd/9x4rNMSevs?= =?us-ascii?Q?kBNoOKH/6JuWrSGZZYmMIuS6XFV7af8/ff3o3qHoCQxnAmbv2SEBuEfrDLDQ?= =?us-ascii?Q?KSVMhmOYNZm0MoeIjwf1/HfGApX9vDS33GnXNSUg2pXuKE2RwbNYZqsBUZIQ?= =?us-ascii?Q?YexlazQe5eftdsR8jqPw5uaHnAuVzUzpLBK+1db7zxE3REq8zQ/cFR4krwfv?= =?us-ascii?Q?GE1e3Fg8wt9Z+t42Qjj3H+FyqLPDKFQFrY+mI+8T6EZqXT8nng5P36AYf/LJ?= =?us-ascii?Q?DeIWSbQdzXB0sI6o4NaUSJte+724czsgbw8vbc1/KZWdipDqnR1NeYnRaFon?= =?us-ascii?Q?IJpr+FbLu1klBrblXctTtx1aBmO3iErBYqBhbIdO1NfRZke2++H02FILsgQA?= =?us-ascii?Q?BQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: U0J5L7nb8F7tNROsWuoIgfinuQrtu9p48c3Tm2XIACXFZ9fOVcniM0w/GkcWTNzZegAUKTD+uW88sKP5gm/Iv2WHUAzFlQYU2v155t0jkTDMYl5dDW/w9yZkdVH4e44wf6Z4R+tqB63bRIYOIAZeGZvmomHzEl3nszDKN8NrU1s0kJrk+AFInfB9NxxELdQZzKB+8hcrb5o3EsteBBKOTSNTv0RoTgtN1ByvBKCeHklchta7Zg28tzT++B4bxQCeLprqkREigzY9BVIc1GTWbGXUWYlnoaa3Ziue6Wd5Uw63fDvqwzObFty59yEwXm7/8gq0HrDKOSaaZu5JpsMw5+lahQpBKg5567tu6bGXODDeftYUslBA9rZx8mLpO2F8ztqosiT+ogrFI1uAxRFuHwtaZwFAjNOQbTjgVeMkw3L/mOmqqiHPO/ddJN3oVaaLd53oaGJOH/wEF3Fv6kkXqQObCtJ1YI4PzbUdOq9TlIZXnn5g6iCxDkhRe5ru3ycHYYffW3Iweos98zhuJx2JM8ospdtganC5bx5ADjy4/j5rGXjetaAAHym45GU4kBqa5f4AWMIg95mV70EWvzAwZ17QqbZab9iXcr+Kva2kd5Q= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6dbedf5-305b-48bb-034e-08dd8c7d2219 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:22.8642 (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: q42G6yTxU26OTEEt+DB2pyethfwlH04okTQvVKdZm74CULMzb1mXSTguZQ7djeRyAP/zHoAn5aIowHJP3bCiyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX1VYQtk24Klli /bP/2YYSH/zlvUKP0l5tNZbXTh0m8b6a1DcVWzI8aRWzOx85WLKhGOqTAqFRz3l4zeAXjppVbVC LIo28u3hZnAQgloay49d8kCvZIJtKd0oJUo781jllzLm23yMAhi+7JcRXQBRwmBm1ykt/h0r9Lx GScbR8hxR3pLicaQrtL0eq+VZjS5Rbu5vRPIfi19ns47Casi+zbZZgQeOdXg3CbwsHSmMskF7VA dGrdh4lIDaDUd0yiBwQh5vDL7fhhLsQafLPzagmVh9VCH/fLj++4X8R3KbP+s4KdAnPpwseRnKj EeKB1gacTFCODbbHzD8+ju4YOzuQ0nurcCmUhmDgSIb1JWV4yHNew8t/unJYVQm6D8e1+BCG2mb 1J5U5O6WpSyCAanj4I9Nc8ZmyCXV8+HfWNKZ+JSO2hzUuW226w7+GawhsqU8dErfhUaFaNoo X-Proofpoint-GUID: u-lLBzdMccr_D097iKkChiL8c40gX5pd X-Proofpoint-ORIG-GUID: u-lLBzdMccr_D097iKkChiL8c40gX5pd X-Authority-Analysis: v=2.4 cv=Xr36OUF9 c=1 sm=1 tr=0 ts=6819d0da b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=hT51KhAs6gTkkLCEbPYA:9 Content-Type: text/plain; charset="utf-8" Currently the size of atomic write allowed is fixed at the blocksize. To start to lift this restriction, partly refactor xfs_report_atomic_write() to into helpers - xfs_get_atomic_write_{min, max}() - and use those helpers to find the per-inode atomic write limits and check according to that. Also add xfs_get_atomic_write_max_opt() to return the optimal limit, and just return 0 since large atomics aren't supported yet. Reviewed-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- fs/xfs/xfs_file.c | 12 +++++------- fs/xfs/xfs_iops.c | 36 +++++++++++++++++++++++++++++++----- fs/xfs/xfs_iops.h | 3 +++ 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 55bdae44e42a..e8acd6ca8f27 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -1032,14 +1032,12 @@ xfs_file_write_iter( return xfs_file_dax_write(iocb, from); =20 if (iocb->ki_flags & IOCB_ATOMIC) { - /* - * Currently only atomic writing of a single FS block is - * supported. It would be possible to atomic write smaller than - * a FS block, but there is no requirement to support this. - * Note that iomap also does not support this yet. - */ - if (ocount !=3D ip->i_mount->m_sb.sb_blocksize) + if (ocount < xfs_get_atomic_write_min(ip)) return -EINVAL; + + if (ocount > xfs_get_atomic_write_max(ip)) + return -EINVAL; + ret =3D generic_atomic_write_valid(iocb, from); if (ret) return ret; diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 22432c300fd7..77a0606e9dc9 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -601,16 +601,42 @@ xfs_report_dioalign( stat->dio_offset_align =3D stat->dio_read_offset_align; } =20 +unsigned int +xfs_get_atomic_write_min( + struct xfs_inode *ip) +{ + if (!xfs_inode_can_hw_atomic_write(ip)) + return 0; + + return ip->i_mount->m_sb.sb_blocksize; +} + +unsigned int +xfs_get_atomic_write_max( + struct xfs_inode *ip) +{ + if (!xfs_inode_can_hw_atomic_write(ip)) + return 0; + + return ip->i_mount->m_sb.sb_blocksize; +} + +unsigned int +xfs_get_atomic_write_max_opt( + struct xfs_inode *ip) +{ + return 0; +} + static void xfs_report_atomic_write( struct xfs_inode *ip, struct kstat *stat) { - unsigned int unit_min =3D 0, unit_max =3D 0; - - if (xfs_inode_can_hw_atomic_write(ip)) - unit_min =3D unit_max =3D ip->i_mount->m_sb.sb_blocksize; - generic_fill_statx_atomic_writes(stat, unit_min, unit_max, 0); + generic_fill_statx_atomic_writes(stat, + xfs_get_atomic_write_min(ip), + xfs_get_atomic_write_max(ip), + xfs_get_atomic_write_max_opt(ip)); } =20 STATIC int diff --git a/fs/xfs/xfs_iops.h b/fs/xfs/xfs_iops.h index 3c1a2605ffd2..0896f6b8b3b8 100644 --- a/fs/xfs/xfs_iops.h +++ b/fs/xfs/xfs_iops.h @@ -19,5 +19,8 @@ int xfs_inode_init_security(struct inode *inode, struct i= node *dir, extern void xfs_setup_inode(struct xfs_inode *ip); extern void xfs_setup_iops(struct xfs_inode *ip); extern void xfs_diflags_to_iflags(struct xfs_inode *ip, bool init); +unsigned int xfs_get_atomic_write_min(struct xfs_inode *ip); +unsigned int xfs_get_atomic_write_max(struct xfs_inode *ip); +unsigned int xfs_get_atomic_write_max_opt(struct xfs_inode *ip); =20 #endif /* __XFS_IOPS_H__ */ --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7108027A449; Tue, 6 May 2025 09:05:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522346; cv=fail; b=giYNc8iVrnaEfr3w5HMKjbmUi0PO4moznaDLT4MvDoAcjWyD2S3D8guDUl8izb06b1Gn+rNh5r0aB2o+OM83nNYMnbzcH1kY0lHNvLp0LiYT8Hkg+Sxx0JvlsW2snCkJZE5rbuCt/zrx+eE8L1jJl4p05KxtmENlEEhj+Ssgdk4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522346; c=relaxed/simple; bh=KNVNk1CCx42+fiaAdF2Ll76XGH471BCcnQSWw3yt3kU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=aaV0cLRw6nq+5ArxkZn38zH42IRtsilREJacaaXCPPErNeSXU1WlkqEs0qd5OLFQIU3gZ6OBcfgNDEy3cfKvVAvD0rPZfTMtAqNL1jVHC+tqsTeIHgFsJelwFRFWqFZvSjrpLl7MlfBxL4n7tdk1vohP//vGs+T5Wux3xaC1GbY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=QsDpYXwx; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=nPXKCdWt; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="QsDpYXwx"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="nPXKCdWt" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468vYUq023344; Tue, 6 May 2025 09:05:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=W8XlzjetqY8WqWXCTcttc3zdjyPUAZ+82wHngghAoCM=; b= QsDpYXwxZevxKkElIuUOvHuaf4Nw9wxmbrc1swFGAs1tIEXr2Roas2X1lUskZ5PO xWufUaucEaRu9ZhAjS8cA/ks4ixer8ZHRDEBs0AsBopQtnzfhjo4x9eu1mHOksiU 4Fa+0gavJbelTNeyyax1C2fFGIkLeXfriPpWgVr1OA8WAW5ZK2NwHjwCBGwe/RoW 9C1pnlhSrezcWa6vN0/RPjrxTlNk3Jxo+AgQ4eRSGzgzIbRVqDspD3dhR1UkXH2V Z8OTM2aVgAi0+/ybD4eP7nUwJg4+uQ0AdgKVByQk6dA7QUl4BpsSE+ClvQ+0kwq0 a2lideuDD3ddHgO2n7B/4A== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ffc680f7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:31 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5468G3bO036085; Tue, 6 May 2025 09:05:30 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2048.outbound.protection.outlook.com [104.47.58.48]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k8rn1p-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aROejmSvBQpZSA1avhjWvsl1uW7+qDfvcpMQROEC/BIjE9d6iBER0sNfiXQCKdUX4QBuCa1fUgwj+vAOXWSBHvd6WwGMsY9ADmqbtrsENNnIdHPNHxekCrzBKPsQ4pRPKQM0+X1JiPyBDMy2DeMPrY5LRBzOzQQPV7ROYM0yxXKNvWa5B1v8KuLjOQIlLAy7eVqvpzFvLw6lK8m4jgif0sahyalCQ0Mv98uSjUtJuBkkm+MPhwhcJTecD+qUeeR+DBC5pbfEHhv62yhL8F06nLldtZpOkNRLfgEWMBXV9OMVxxcn5VSPfFNaZpu8YN3dbPjMObZOciIJaKC8iFv3aA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=W8XlzjetqY8WqWXCTcttc3zdjyPUAZ+82wHngghAoCM=; b=iH91HDvTY0Mkef4O+IsEMWptclEDuzZFlZbsXSRnL8mn7kbkXXw/ecSP0UuXfZBqUdXBn+8rcexLn9xsyZ+dvK9+jYWq7aGXwP0K7dbnrOnmNDRzYFmKJNlD8mtHnIFs+OjGzV9eYPn8HrFx6iKQh3tH4Hhz3GEuopFeHAkHslZasS8tVsWA0wOdsznS7zwEoxhWl3+9f8eWX3VU+I8w+omYDeo/K2BEo6uKUbDyZ+YLYQ5ku4JIrR9AcTe2WgJ4ye3pAcyVBzt3hxefwXAssq5irXDFO2pRPjpfGLM7hddw2Nq5SgaHNsN4UpGFhkneTV3eNn05jX5D4U2GXfcvvA== 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=W8XlzjetqY8WqWXCTcttc3zdjyPUAZ+82wHngghAoCM=; b=nPXKCdWtiaZnbLAmesHMb10IX6jDYPn9EjB7uWyA+uqT8W1A4n/ezRlhnEz9BXmITi/xKa4zTkRLswSQ9cMKIuPEEp+liNomickLfqsNCRp351d9wjPadI1CPB1fDGJi5Ma2y86hKleFKB8qfp99oOoncP/L5uH7lGJe6iI8SXY= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:24 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:24 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 11/17] xfs: add xfs_atomic_write_cow_iomap_begin() Date: Tue, 6 May 2025 09:04:21 +0000 Message-Id: <20250506090427.2549456-12-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR07CA0008.namprd07.prod.outlook.com (2603:10b6:a02:bc::21) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: c3ab0bd7-44ab-4c12-1bc3-08dd8c7d2344 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IaF6z8crg1T2pzjmDGNQjf4k96AXzphEe8cUbPVT8fAiO/nQ5lCBL/7urJw6?= =?us-ascii?Q?zS2hxOb7cHVv+8z0aSN6lgb/5iGlrXIFoMeiUrMB+1EBzgKtsGeCEgJ2LKHo?= =?us-ascii?Q?IZbmxcdcV9zSG30DoFVvaA5s9b3Tq9hSnVFnWjedU4mbE/Rw+wljYzpWIMat?= =?us-ascii?Q?1KruTp3553KmsnhAZEwTo5H2B5Nrh8YfUeoSCD5bbi0lNabcYLWqhu4owEAg?= =?us-ascii?Q?sJ/AGnDt0AzfgiDLc4/KIrqgu7AT0N9jOYooI3ezt5yMfJeAPiTzfh6kRyYU?= =?us-ascii?Q?bG8G5H3qOFKh8TsVrHbndRhHpMwGNehdNM8KwGzmu9CqRh8EQLgcxt+b6ubY?= =?us-ascii?Q?Ui+sjRCDPHtGyMFxS0GzLR3i2oBt+GQihmMApMR92dWw7UFhJ7D5QIjLGksH?= =?us-ascii?Q?jcE/LxvzbyBLvmKpLvi5cdCtpJCn+YFStEX+C89vuO5+EPCH4n6Rm++rR2XY?= =?us-ascii?Q?ReMt4853IFJKkFn2gNHPdu1SKcDPAJ2HbWWeaDSO3ofGspLdNg+RnCwqO9lI?= =?us-ascii?Q?nkQaHiRrJrFj94x0njZYx2Bo7e/69RzksrSB42+85VK8co6A7Vuq7ikei2zC?= =?us-ascii?Q?3AVqgJKrx8Y2cbKdJv9tDG1RpxXymOHSX3Qw3ZgFHxD5wGwUvkS8M3Z3XkLK?= =?us-ascii?Q?Y+U4MbMYyYqeTZBjAG7P7oLnSY3ABf2ngb2JFnENZVV05Vuqm4iDL6GDl/Ku?= =?us-ascii?Q?pBgmAbg0e1ttqdGA5um2CV4X9TCpK3VEz7cGF1UXLU5BeY8YFo7iULKI7zZI?= =?us-ascii?Q?k9gEOWbnogmsBJ/7xqd8CinOd8zSF41ZBrKZo6HG5oRHmsLbVee8VpjM1W5Z?= =?us-ascii?Q?0UogM+n2oyunfH2wRHhWSQYYZ9kWFmcgeSTBDUQsEBe1somwgiv7y5Y/YETq?= =?us-ascii?Q?Mg4vJBALJNYjRRVzvBw+g0yAzpqE7rfE/G03KK5+Z4+Syva9rCx7jt7Kd4qs?= =?us-ascii?Q?fifsvzPkl0ZzMXVL3mWJ2D12xU2RcS4n78AQpL3VdALuWSJ1Kn8R7WSllQ0o?= =?us-ascii?Q?K1jCpB6YyJw2ggFfMtPqYmwSI+rfrBNVq0wXO/8VRDZ6BqY6udEhGSNfiTu+?= =?us-ascii?Q?F0+eZT3DrbCOzAPHohrlfwgS7IXvsf8mUA2Bh/fn+MCIJ1QmI41eaXVZJfyJ?= =?us-ascii?Q?4MzrWCvSSG52nYTnpX3wEZ+ZzdDL5zg3JVym97xL4PhDBy0oH/Pg4e/o2xOI?= =?us-ascii?Q?4T2/fTLEl+f0Y3tV18UE8xWw/lI64I5TNAXiDPAcoD5yI4uK2PuDLDzI+rN9?= =?us-ascii?Q?MddGcNgXIXHRAY40pzlVGTU3U/8AeA1dIZr39jEFLyC/HWJ5FMH7i5/P2F73?= =?us-ascii?Q?gHsQSkSdCKKDud2Swx2U0Qr3jmAVifc4WWh/FcKjRYsdiUWorf/TvEKoq/4d?= =?us-ascii?Q?lnh/TR5Gwv3BZzomkpmL/u4ZGBv5EZ6uB74EXs8Q9OeTmopHbgeLqIXBSB7d?= =?us-ascii?Q?zp+k5gkkNj4=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pw3ihgu/V6MZYwpfPTOST+jJ3zAWsAam5Nr33iOls0/a0/IwCl1lb9RLyzcq?= =?us-ascii?Q?j2gFBrbF0WJA2OTi/9e/5PndB1xOaQfYDNpBxXigu0VLfdK6sjGVSRpR6ZcG?= =?us-ascii?Q?wYJq1E9b1yzkgD2MzDHS/KK/gf2BOlcGT+P09UyPFzBep4MwiZEoCronIqGF?= =?us-ascii?Q?/GSal0QFHEB2XvZn1d6N3AMn55bRqyxwOUKe/x1y3wxI7RAx6xnOQyB/9dYw?= =?us-ascii?Q?hXeMf0nTDCgooPcAPKEDH8a4hxDygyAJJ6IhSiyIhFVIjJ871b+qUSxR0Prf?= =?us-ascii?Q?4D4kzqk5xsOZ7JAn8F0WOjF8svP+JCKBDxcSh4fY33Tv+dsPh1lSRnsqL4IT?= =?us-ascii?Q?kHSEjnFi8Hukpci5wXbm+JW9/1m5wD9S7V/shWz9atAipAhmve7oAzMhcYWg?= =?us-ascii?Q?cCpZThsEQBjkEcM49ywl1st2tY/ilqqAy0scwNohGNJ1Zk4EkipKibwhdvUs?= =?us-ascii?Q?TD4ROPkuQa7JL4BDnrBml0X0Sp1XBOUWWa0S+grtgIWH5tsxVGemxzFiYMHm?= =?us-ascii?Q?6r/gBPwscMJE5wgNQEa8TjvksI60mj72Ba0Zrcw5b77ZPcUSQcfHbC93Wo4A?= =?us-ascii?Q?Y13NaQm7Z3CCp39MBA01HkM0ybllfPIfPiLIxbhxy86oi+FLXYdzcvRtgMOb?= =?us-ascii?Q?iCfBWXqSjoJHEotwUZhjLe1llomkQEgq7PK7kX3N+vVh9iOHdCCDE/tJr2Bq?= =?us-ascii?Q?DK3vDHcAz8VgtMuEilEhnI14VTw195kkLmjXKWL9lhafa4m3uyB62YtXNHyk?= =?us-ascii?Q?JGN9k3qmx+Ctqr4LAAXx8te3A4gupWJbX1s0KQlZx7V+RSChYCGb5Ay8dOcP?= =?us-ascii?Q?tiyUyZLb/9paw8o0WjpWBOFvWhZUTFliceXAPxVHuaR+jT42mwX9dQ3sMFgt?= =?us-ascii?Q?i41pVoU15i2FY3qiprCw3rvRaAiVUn98JeCCWOsuHoWmAW2Q4+o3jOnQ3GVA?= =?us-ascii?Q?IIfRQ4CNKEdTFQ1HDwxT0EwiZNKLFiA7DtF0qapgOuao6v0Hz3VT3nouF6RE?= =?us-ascii?Q?SYSo8Sq7KfKj6SSQs3+RpBTo4u1dce+oHI+y1umb6emh796olD7foiXbfGGM?= =?us-ascii?Q?bC32tpYIUX/dckDoDvK7GM7itcj/K9TU+vPiCT5UvTUqPnvyujnS/Qq6Rdq5?= =?us-ascii?Q?IsA5F+OaJLW6zXKcGwKL83tSHjQhp7e28uQqO8ToegsTP61+Y2RfSiXT/oQF?= =?us-ascii?Q?Xrm0+Hnm8iClp7VdJ6OTr+jNGOVHvXVHabqDC0H89SmbINRlSzQY1s92qxSK?= =?us-ascii?Q?5icAex6R1O27PH0CJ4MoVqdeDRldY1ZMX3un1o+PUMUgExxMKBtH/Xeq8GZ4?= =?us-ascii?Q?oI+j0nNFkN+b51Imia7mJ710jTxEAPA/GJFhNZVcLEC4CrcbRL1IIWPONSiB?= =?us-ascii?Q?ykUUxvCYVOHutJsY9CyQat0eoeTb23bVZk8cOlyxmV0ymKDyPmAsyUzGGxvQ?= =?us-ascii?Q?PzXA/E9ktRJ/70Ny9llPjPVCmrFhIbpZfXPse1u0KSlM3HTaMZsHaobtSGxn?= =?us-ascii?Q?/+L3A2odcB4HQ3BK7r/6a9y3x3yqO5JkLWmGOR65AiaTTOIoSwJb/Gkm9GdB?= =?us-ascii?Q?rMIrKRgzggCaFvBSpJFfkex8DKCoixpjnoM87hNVVNUH2lP4oh0f+ypDWPxb?= =?us-ascii?Q?ag=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 8EOgzRP5GZucWk5J6lkpz9jiJP71xjdyfI1iN40stAb8/k1jo4U3ziWA+LoqaBJn9WgqOFDeOU7z6MAodZv1VqSBi3uIsUbdSqV1pRHAVV0patIHmJ77ebVGfYht8cSyxUDeHLjETUf0JSNGPki07ulWKpAeO9BsZ5JNVimEm0F8UFhRRfgQuUUiIJRnqRS85tIZv0jQ7WVwPzBsHpLl9pna1AKhAsunIAVwOiZuUokUwvmqu1j4MyumHfWfXg/2mGaVuTeQ7BQsDiT3zhGOJkhe+Ci2HeGB2PPo41v7QDZJLPWAjo0cI/5jBt/GALbJ7Rk5BT6/B4JXgrMiJpnVelCCD5erdGJLyanTEog4MSb8ZZtPqiFQkz+wd6vUhGtPxxpbxCpsEyNw5ll0XfNXdQLDDxYWBVdTmS2sDjRQrqtscL5HsZAxixPiDTlsc/I4U0lHbeKfFQg8t6NxYmboCEIzpv/osItQvfOxV8PdQWq9qpCgCTPHBZ0qXRNpmqswJQRnxs5kBfYFiit7IQlFmm2Ur+k8E+OF9xJNmfGo9WPQUq0P367V7aLLLruaOATmIJBso00uOMa0do+buP+uP/p5GhM/rSvyLR5UWsKZlLk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3ab0bd7-44ab-4c12-1bc3-08dd8c7d2344 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:24.8515 (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: 0Ut+Sqwdzo3mmmunrgk0qyNKVEag3uWKGfZDxHhj8H2+9Qn+GcxEJtKS+we8uFL0od8Iv2Kh8APUjPfn6Zwpaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-ORIG-GUID: 4WTUrCblSIzklmB3SBSrf7nzPkPUTAxy X-Authority-Analysis: v=2.4 cv=Q6jS452a c=1 sm=1 tr=0 ts=6819d0db b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=ZG6D_t86WmhNJCCpPcgA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX7tUxNLmBIdT6 ksKi7q0sMOGBaz8ny7proenH43xUxphOxpPW6v80ewC+VdnggDwteQXbMWdg3NobZlHdgH4b+KU g2UXl87zIMhEevm1Eb9yjtM+fFNCVGlMGj70h6pw+lpYVJZgsgGaDM5Lzf3F588HOPUivwtIanu jTsSTsuEc3nBku5t7mD96r4Tsl8dSvdMnHtK5NM13NmpLvzWfXR4sRmrBgB1yngr76sJxrIZvdv NvGSEuCzeDqOAxZo/Hh/F6guf/Sy1TCdbcudA/wsU98SKKfpnQM0lswzZg1+99vVmSLxsiUPStG pPbX3pKGW23F4iFi9TrKwkqo2wjkUA/+pBtrthvO/kTHUZQF4GHctizJgLKnh4aqKwG0271jLdG ZGJc/WhF5FBdjODglHENEPEdOi9cUlv2PgeMXLG1AaYJWZCODB4MlpZ+B5TMsjxgQ+MSWGb/ X-Proofpoint-GUID: 4WTUrCblSIzklmB3SBSrf7nzPkPUTAxy Content-Type: text/plain; charset="utf-8" For CoW-based atomic writes, reuse the infrastructure for reflink CoW fork support. Add ->iomap_begin() callback xfs_atomic_write_cow_iomap_begin() to create staging mappings in the CoW fork for atomic write updates. The general steps in the function are as follows: - find extent mapping in the CoW fork for the FS block range being written - if part or full extent is found, proceed to process found extent - if no extent found, map in new blocks to the CoW fork - convert unwritten blocks in extent if required - update iomap extent mapping and return The bulk of this function is quite similar to the processing in xfs_reflink_allocate_cow(), where we try to find an extent mapping; if none exists, then allocate a new extent in the CoW fork, convert unwritten blocks, and return a mapping. Performance testing has shown the XFS_ILOCK_EXCL locking to be quite a bottleneck, so this is an area which could be optimised in future. Christoph Hellwig contributed almost all of the code in xfs_atomic_write_cow_iomap_begin(). Reviewed-by: Darrick J. Wong [djwong: add a new xfs_can_sw_atomic_write to convey intent better] Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: John Garry --- fs/xfs/xfs_iomap.c | 128 +++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_iomap.h | 1 + fs/xfs/xfs_mount.h | 5 ++ fs/xfs/xfs_reflink.c | 2 +- fs/xfs/xfs_reflink.h | 2 + fs/xfs/xfs_trace.h | 22 ++++++++ 6 files changed, 159 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index cb23c8871f81..166fba2ff1ef 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -1022,6 +1022,134 @@ const struct iomap_ops xfs_zoned_direct_write_iomap= _ops =3D { }; #endif /* CONFIG_XFS_RT */ =20 +static int +xfs_atomic_write_cow_iomap_begin( + struct inode *inode, + loff_t offset, + loff_t length, + unsigned flags, + struct iomap *iomap, + struct iomap *srcmap) +{ + struct xfs_inode *ip =3D XFS_I(inode); + struct xfs_mount *mp =3D ip->i_mount; + const xfs_fileoff_t offset_fsb =3D XFS_B_TO_FSBT(mp, offset); + xfs_fileoff_t end_fsb =3D xfs_iomap_end_fsb(mp, offset, length); + xfs_filblks_t count_fsb =3D end_fsb - offset_fsb; + int nmaps =3D 1; + xfs_filblks_t resaligned; + struct xfs_bmbt_irec cmap; + struct xfs_iext_cursor icur; + struct xfs_trans *tp; + unsigned int dblocks =3D 0, rblocks =3D 0; + int error; + u64 seq; + + ASSERT(flags & IOMAP_WRITE); + ASSERT(flags & IOMAP_DIRECT); + + if (xfs_is_shutdown(mp)) + return -EIO; + + if (!xfs_can_sw_atomic_write(mp)) { + ASSERT(xfs_can_sw_atomic_write(mp)); + return -EINVAL; + } + + /* blocks are always allocated in this path */ + if (flags & IOMAP_NOWAIT) + return -EAGAIN; + + trace_xfs_iomap_atomic_write_cow(ip, offset, length); + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + if (!ip->i_cowfp) { + ASSERT(!xfs_is_reflink_inode(ip)); + xfs_ifork_init_cow(ip); + } + + if (!xfs_iext_lookup_extent(ip, ip->i_cowfp, offset_fsb, &icur, &cmap)) + cmap.br_startoff =3D end_fsb; + if (cmap.br_startoff <=3D offset_fsb) { + xfs_trim_extent(&cmap, offset_fsb, count_fsb); + goto found; + } + + end_fsb =3D cmap.br_startoff; + count_fsb =3D end_fsb - offset_fsb; + + resaligned =3D xfs_aligned_fsb_count(offset_fsb, count_fsb, + xfs_get_cowextsz_hint(ip)); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + + if (XFS_IS_REALTIME_INODE(ip)) { + dblocks =3D XFS_DIOSTRAT_SPACE_RES(mp, 0); + rblocks =3D resaligned; + } else { + dblocks =3D XFS_DIOSTRAT_SPACE_RES(mp, resaligned); + rblocks =3D 0; + } + + error =3D xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write, dblocks, + rblocks, false, &tp); + if (error) + return error; + + /* extent layout could have changed since the unlock, so check again */ + if (!xfs_iext_lookup_extent(ip, ip->i_cowfp, offset_fsb, &icur, &cmap)) + cmap.br_startoff =3D end_fsb; + if (cmap.br_startoff <=3D offset_fsb) { + xfs_trim_extent(&cmap, offset_fsb, count_fsb); + xfs_trans_cancel(tp); + goto found; + } + + /* + * Allocate the entire reservation as unwritten blocks. + * + * Use XFS_BMAPI_EXTSZALIGN to hint at aligning new extents according to + * extszhint, such that there will be a greater chance that future + * atomic writes to that same range will be aligned (and don't require + * this COW-based method). + */ + error =3D xfs_bmapi_write(tp, ip, offset_fsb, count_fsb, + XFS_BMAPI_COWFORK | XFS_BMAPI_PREALLOC | + XFS_BMAPI_EXTSZALIGN, 0, &cmap, &nmaps); + if (error) { + xfs_trans_cancel(tp); + goto out_unlock; + } + + xfs_inode_set_cowblocks_tag(ip); + error =3D xfs_trans_commit(tp); + if (error) + goto out_unlock; + +found: + if (cmap.br_state !=3D XFS_EXT_NORM) { + error =3D xfs_reflink_convert_cow_locked(ip, offset_fsb, + count_fsb); + if (error) + goto out_unlock; + cmap.br_state =3D XFS_EXT_NORM; + } + + length =3D XFS_FSB_TO_B(mp, cmap.br_startoff + cmap.br_blockcount); + trace_xfs_iomap_found(ip, offset, length - offset, XFS_COW_FORK, &cmap); + seq =3D xfs_iomap_inode_sequence(ip, IOMAP_F_SHARED); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, IOMAP_F_SHARED, seq); + +out_unlock: + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return error; +} + +const struct iomap_ops xfs_atomic_write_cow_iomap_ops =3D { + .iomap_begin =3D xfs_atomic_write_cow_iomap_begin, +}; + static int xfs_dax_write_iomap_end( struct inode *inode, diff --git a/fs/xfs/xfs_iomap.h b/fs/xfs/xfs_iomap.h index d330c4a581b1..674f8ac1b9bd 100644 --- a/fs/xfs/xfs_iomap.h +++ b/fs/xfs/xfs_iomap.h @@ -56,5 +56,6 @@ extern const struct iomap_ops xfs_read_iomap_ops; extern const struct iomap_ops xfs_seek_iomap_ops; extern const struct iomap_ops xfs_xattr_iomap_ops; extern const struct iomap_ops xfs_dax_write_iomap_ops; +extern const struct iomap_ops xfs_atomic_write_cow_iomap_ops; =20 #endif /* __XFS_IOMAP_H__*/ diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index e5192c12e7ac..e67bc3e91f98 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -464,6 +464,11 @@ static inline bool xfs_has_nonzoned(const struct xfs_m= ount *mp) return !xfs_has_zoned(mp); } =20 +static inline bool xfs_can_sw_atomic_write(struct xfs_mount *mp) +{ + return xfs_has_reflink(mp); +} + /* * Some features are always on for v5 file systems, allow the compiler to * eliminiate dead code when building without v4 support. diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index bd711c5bb6bb..f5d338916098 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -293,7 +293,7 @@ xfs_bmap_trim_cow( return xfs_reflink_trim_around_shared(ip, imap, shared); } =20 -static int +int xfs_reflink_convert_cow_locked( struct xfs_inode *ip, xfs_fileoff_t offset_fsb, diff --git a/fs/xfs/xfs_reflink.h b/fs/xfs/xfs_reflink.h index cc4e92278279..379619f24247 100644 --- a/fs/xfs/xfs_reflink.h +++ b/fs/xfs/xfs_reflink.h @@ -35,6 +35,8 @@ int xfs_reflink_allocate_cow(struct xfs_inode *ip, struct= xfs_bmbt_irec *imap, bool convert_now); extern int xfs_reflink_convert_cow(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t count); +int xfs_reflink_convert_cow_locked(struct xfs_inode *ip, + xfs_fileoff_t offset_fsb, xfs_filblks_t count_fsb); =20 extern int xfs_reflink_cancel_cow_blocks(struct xfs_inode *ip, struct xfs_trans **tpp, xfs_fileoff_t offset_fsb, diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index e56ba1963160..9554578c6da4 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -1657,6 +1657,28 @@ DEFINE_RW_EVENT(xfs_file_direct_write); DEFINE_RW_EVENT(xfs_file_dax_write); DEFINE_RW_EVENT(xfs_reflink_bounce_dio_write); =20 +TRACE_EVENT(xfs_iomap_atomic_write_cow, + TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), + TP_ARGS(ip, offset, count), + TP_STRUCT__entry( + __field(dev_t, dev) + __field(xfs_ino_t, ino) + __field(xfs_off_t, offset) + __field(ssize_t, count) + ), + TP_fast_assign( + __entry->dev =3D VFS_I(ip)->i_sb->s_dev; + __entry->ino =3D ip->i_ino; + __entry->offset =3D offset; + __entry->count =3D count; + ), + TP_printk("dev %d:%d ino 0x%llx pos 0x%llx bytecount 0x%zx", + MAJOR(__entry->dev), MINOR(__entry->dev), + __entry->ino, + __entry->offset, + __entry->count) +) + DECLARE_EVENT_CLASS(xfs_imap_class, TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, int whichfork, struct xfs_bmbt_irec *irec), --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E175827AC38; Tue, 6 May 2025 09:05:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522349; cv=fail; b=Zv20sgynzuq8pwxoqS+cBJs5yfHvm8BLbQjjMQ3RzuiQ/B/Hmgmnxgrr/WYRswiVHmBviZfo685kYTVnWfPUJ0G10zQ2c8PhWrIDrlDezN/d+TQaJkG1y6EO0YbpvK0HeZT8IcHUdK+IBOmTzOXXiwtZ2liFS6mHNz0TQbh7nPc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522349; c=relaxed/simple; bh=9VFmvw8VF1chdP8OjAH5HxqGEv1269P9oeW+EWcQoRk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=jRvAv6/jmaiM0n66D6OE5HlBiumpjBim5JvaSs/zfnksVNs0ejLX5C/0xUn6HyYXEb+AlKH9ccqkm9c0mk6vMDnQRXwC3eJ3aWY3AcpvRZCOau84mli5zZUdU5IS3Y3mOlFribHA7gwI0EFi1ZYHKkkTkbwuG0MZB1hczDx4mtM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=pnSt68Cw; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Ko7l4Wo2; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="pnSt68Cw"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Ko7l4Wo2" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468gAFP014822; Tue, 6 May 2025 09:05:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=j9xxB5gxSLG2TwhErVZly1cUqbdL0R17BVPJ3uUQ5Ys=; b= pnSt68CwYxe4yAuEp/nyG3x7psogksnfpvytaAfSmBtIfhn0AA20ASiUMEC2hrdH 8u4EgbdCgifl47eaZYTYHpK1MgHRJpoZtY8C/8ZzgO+yNxQIarOcMaODQs1kQT8m OUPdeOdZwRULPmM3990o19A5QCo1bZcAVwNglMNWb55JmuJWkUO/F8OIHJfG2t/n Tl7aTYx6RphEy7kr/LKuVvHwodscSNggAH/TUiEYCjwIrJfAWCtK2CGCGApXcVQj JEytAQB9IB1bN1dYjwHDO2ziqb/KFa6ZdBIaN+Vxr0E0MQ+VS/3CQ7TZE2AJ8N7E c5NMe02l8f+gcwrW+hF1kQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff520180-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:34 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5467UB9J011303; Tue, 6 May 2025 09:05:33 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2049.outbound.protection.outlook.com [104.47.55.49]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf0buy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Rpp4kI9kfYWq8EyLb3D9xj02ZHAt95sZ6hcdI6eeaDITdFsHkQyO582RrCYPRnslJYNvMPSXEmZCCcg9WL1PvDCfpOQ7z3nY9na+vNauptfpqD0fhEb81BWoZzEB3EkwXBGI91Ia8X/spbtPwa9SLDXboK+LtULiC3LgtKvFAiQCbtpZA3YRb1s5hfa61MjAS1wdwlpqkqIUp26Xu8XOJyk1jPs6AYd1PertNIyX2kdzoFqOMpQkxUi7CkG1rI4hitu37E+IRQJ2P0wEP/s2CoFZmCP84vGowJ8awOBav2pzWe4rwdVD+8mVMDkD0hOLXiU0O2X7SC4H6jC+6p5CcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=j9xxB5gxSLG2TwhErVZly1cUqbdL0R17BVPJ3uUQ5Ys=; b=zGE+rGbDrwlxoNuSeaqs3+JG7jgGxP+pcTztB6uL/mW5sp8le7uaMQDgtULuMY6ubcJdR9gQ1QWITcIzgOuXGuODc+E/szfT4ieEBN3SJIs8BeWlLGr4rZU4O8wOmoEPf34CZn1B1dqRVCoFBPTC4YyrEjWTc5CWkO1xUwwCzpDMSQ1qhmKDYixuVQapiwYxzt2VAMTLhmdEwc70GAw52FV3Fy31oxpKWFmq3NlO+nN0atXZ0Eava6EFCnLs8JQOKaLPayLfM70IljvGjoapYX8A5D3WFmOoNadEGoJgzq/Tzj7/+R2lU/dFYk/19iTcTK0VV1HJAF+LAd+5MKJ1fg== 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=j9xxB5gxSLG2TwhErVZly1cUqbdL0R17BVPJ3uUQ5Ys=; b=Ko7l4Wo22l9D2GyPUJ/iYS8dtWCXQy3UDAvxmZLJ278+Ds0ksibvQs+kG54aWzvR+RWAuaLYvlM2w6y7TPcTFLmbLiQo5RWep7dQumKjfolvVOpp+qvuM3Xw4uwOwEMNLiJyl7zc+m0NwzKqQgdcSuK85qVlvn1TI9KP/0PDPeQ= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:27 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:26 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 12/17] xfs: add large atomic writes checks in xfs_direct_write_iomap_begin() Date: Tue, 6 May 2025 09:04:22 +0000 Message-Id: <20250506090427.2549456-13-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR07CA0022.namprd07.prod.outlook.com (2603:10b6:a02:bc::35) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a87519d-47e8-421a-8901-08dd8c7d2486 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?U3XgozE9Y6dj5+EYL8vtvUDQTdydX38PNnboPRDBClKNtweWEp0/l9bor4Xg?= =?us-ascii?Q?eUqV6+As5EQWSuVRrK0cFDm+2F+xP/jjFfTOuOoaMwRWu5XBXj4WLvvG8s1T?= =?us-ascii?Q?5omSmpGJQM5tYJEZj67MQYQpPxz39Wsu+5ldXeXhGDe9EuKxOxPUnCLNHMMc?= =?us-ascii?Q?XAQslQl+4I34Bgo06AkMVkbUxKrTO+YQklYNweyPT2c7cScTaGwAdwuHv75D?= =?us-ascii?Q?JqwvXDRTziJRbg+AHMFut2/caMkklP1lJxGN/8If+u50onQFDkgG0vqE4td0?= =?us-ascii?Q?KBToK0wqwO44kU0xffk7rwuEFcKSBP+eb4f1YJ8JoCCFmNbb2vIatnkZB31l?= =?us-ascii?Q?6Z0zsuDzHgzDvzOpajuedLtsjJd6AM5trrs5oc8xXrfEbxJn3UROiSIWQ1j5?= =?us-ascii?Q?LXz4grWiNXe2IHepUFYCtAe9LSP4F7yJjD9dmJxXPIgqRCYzFa1Ndk3LVWih?= =?us-ascii?Q?aBWqj9gDItUR4szvWtaeZCvYitmjyw/rlfesmGsIIYTKXJ/lvSZyyls94wgd?= =?us-ascii?Q?AjIsN+nGa30UZOMMtjBVdTvz3RGva4eYo/7EcPlqXDZ6QlKK/0vpoJJCYqDe?= =?us-ascii?Q?HERkU+H6Z/XMF9u1sfK/wNQHPYQtsUZ7Xgauh06zK3vj95DVvUKVP/Cdj0hR?= =?us-ascii?Q?+gHuXLyFg7IKK7NIfUCImbmel0fAFc2Pg1QKGfP3bAGUJiqswj9YrgtaRoI8?= =?us-ascii?Q?lfhdf5arj+fty8bIlYkiCIPULvFzdMaEbBqDl5DdvHlvECMxgCLnNJnRPqhZ?= =?us-ascii?Q?i6Zml8f6Johk+e3PRZce70RYYvYGpXAIo0dX2ygC6LST7Mlv40WikDiDJAuX?= =?us-ascii?Q?KWh39N20hDCUR2nX+hf0Z62+E17/U4uUdDJDRi/L9Xa3N0K1/wOu8Y8Rufz2?= =?us-ascii?Q?7bI1FQ22YwUnSHMAw7dOScucCKKRaKDi97QjB69X0K4DhrDKkQvPyehZ+hYr?= =?us-ascii?Q?jgxLnxOrYPTFKDlbsiPNL/bmKFVi90vh27zrl6Sr+mmSL+Iws+f7pmTVYD1B?= =?us-ascii?Q?hlnEt5HjB4+LypWkR2F87PJdkL/tSh2rkAlZbgenokVLQXY8d+8PESEKCzGu?= =?us-ascii?Q?ZLtvy4+EDCzlcLC0HKHZUdx1tHL5s+G82XtO5AxLgcMlHsig+t7sUaORgjae?= =?us-ascii?Q?o9fy4dPG2TTNBGAk2JwHzgA2hcngmpKZAp6vkrv1NsZURtuE10QlxyYVM9xi?= =?us-ascii?Q?MGe3/mi27qMweJcZhoe+fkhZSaHwdhcwHAb+SogrC7Egk5v9AWPmB4v+sGhQ?= =?us-ascii?Q?jq234S8qufarfOZdjBtgzPx1wDkZqVeoU3jlaMEWRd15gUfPq6HM2AiX4g1H?= =?us-ascii?Q?3SU2qb8PAxCw9bUvNF326v+pN8k4rDaKrJMWZrEUGgcJ2SEwwG8bIsXokPXf?= =?us-ascii?Q?13Hq1aPhugseX9MsOo/xCXq4dUkOuAlM+oNqIHEmgFv+VkpXh5d+hg9BGEC8?= =?us-ascii?Q?YDqKeb9fI3Q=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pSDzMchjeEQvvpGkMxLpeL4/0BL94FY5gDKf36xNR0hJFjeZW97SelIbqbrS?= =?us-ascii?Q?LbQvJJeAZJLrVtTSjDX2ETkxhE322hokp/YRbY+ngl3jIO0RRsBkGnI8vO9+?= =?us-ascii?Q?/90waRwz8wQEkxwsOBBS+8NeN4KGdREpm/+t7r41DOQ4cN8NSdAxv2iwVNzL?= =?us-ascii?Q?snEDcDWcNej7HRT0JhmaKgTyvLx/HJwDJrV6E9L+ttpICKp12g1QDTQfZFM4?= =?us-ascii?Q?pUGVIP8aPb+MPwx/rYrotQ21Kcpcely2XiJIgwRysan9KisnrmALYdKyTf8v?= =?us-ascii?Q?QoflBzITDFIeUhEIYW1nZldckPkF3LmGf6lGxUowlxUTUlh28T3crWB6kR+g?= =?us-ascii?Q?qXd3I969i8DtBqAARXIWi8CJhdvUa/Hf+aSDqbBoMLc9sDNcWsqNsxbkPI9k?= =?us-ascii?Q?gBdtQd0JL+K2ldfMgaDDUc3WD5cazk7yuRtjN5GuTZ+qeiHNMf34XcmSqN3l?= =?us-ascii?Q?8Hu7krq2StCy4L1HFfvup8riG6Oc5YGtSjdETErCTl3y3XrJpNDqYcdqceSA?= =?us-ascii?Q?cSKmZ6GRhJ4JNyqjkeTpER8dnNZdisoNnU3j0tE7XsfP68Ij/O8FuZKa3uFf?= =?us-ascii?Q?sP3rZ6WV6aomqWqI6Iivvu2eEwf+K6P+hohehJFyZvR7/iJQlIGrOjNOpJLn?= =?us-ascii?Q?WNk6TB4Cygv69XR+sO5aLOTnqhUffFHuGDAwCpuKFcAePZ7LhlbDwUhpXvOA?= =?us-ascii?Q?9RGKfHxWUIZl2a1E2Vq6etdffZ4aMsN4ihbLKqA8VzSzdZ1UryBAm9LFHoOh?= =?us-ascii?Q?FARIfFNEXAlHxqQQktbSwr1IrRnXapa9wqKP8hJqz/jZDN5yb6EoAyycL+t+?= =?us-ascii?Q?ngaBKivBfUknr0BWQUzQqLn9GCx0qjJAKb2v0OjMdh2s3ABqS+0baHCxkmqu?= =?us-ascii?Q?IR+PizuA2Izs7QSRnpmBYXUUHFB3TZksIyXvQZ8i4QTUaxKnBOcDDze4Rhgq?= =?us-ascii?Q?llepSOvkbCipKp6X48BWMmued7JtxN/IAx+thQXwnX4r9sBorZJlD7ZZfK3Q?= =?us-ascii?Q?IqxkA81VD1BtqRXu4nwItodC2Cn7CHUX/0RjH2Escafs92XXM99wjs4qKzF7?= =?us-ascii?Q?kHUjZCXXR0BYO0mRcRGPdtMK2Ze8lNjRsuJ3ecQ+lsheKAGhL6YVZx1xJGy2?= =?us-ascii?Q?C508uG0OTcclBnSGY2TzaF64Lybmc7zGbgF9/qABKzK9FvWP+Sx1RfK07M5X?= =?us-ascii?Q?5UMBpZ7uPmPw+q6yVe4FCDYS0VenBTO3rW45x9o8unK9BZcv4iMnu4nzvH0o?= =?us-ascii?Q?/O6EEkEQgQgoQpeyeqZG8N5BPyBsBf2JF2s/taD9t0BT9xO8VAnXNlUUAp5W?= =?us-ascii?Q?+yqjPxm0etyWl1dYfWpMj8dSFTDPTxj8RumM+iNuEFV2lk86TyvfYtKP7Hd2?= =?us-ascii?Q?vQVIVoX4w4HfPeSC4muKo6WrZj/dQ9zoXY27wJf5UNOARE42perzw7dBG7KQ?= =?us-ascii?Q?cacW1GYY2s1B1QZAE5Em4SWKBwtP1C0mhtxif0FM7BUR3GqLE8i+BC1Yxiyh?= =?us-ascii?Q?ZjAUYuogsBAmSerA91lY5vqGZK5z3E/hZ/9j0k9wSL8Ej7wjqbdDgnI3oVT1?= =?us-ascii?Q?OpegriQBG47qHaLf4ffWoy0eZrhBd/2Z7zF1wCY2rYbV0U/0DZm8oVnqrjXx?= =?us-ascii?Q?cA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: nDrkWD/vTb2w6N82ICd6bkh6Geb4lERzyNCS54qb2UTMDgbZZPPzeC5bju9FbBP4S7r/aEawADilSXF6TuN9/tGlvaKaIqNBQ4NdvzDKZ7I2NPkJ88eezGINFgpT8gFib1p9rwEyTtArTOEwgDthgelGz8hazMAbBfmTm/tVTYo1tJ9xUFzsJI3LoAzbWSg52fqGvlW3dlbMV7SG4lnJ5EVtO7ss3O2gW8XoV8pK6aw+aNstGQDdsMUmkpImTYEtJX7WaJb4JuSErfON9zzSSJzWHTFYWI62M6JCK5vEUNPw/R3L7FeuQRiiT93y4hvbYMUk5rWpdI19olHah4o6suYzd6PVSe2Ta3TtE7HA+azCuJoW7H4Ct52k6LLyMKNDxHP+HR4V8LGgLrmSHnfYFmkdMokmKYnJRPc9aTzQd8/aAA5ZjjCcQ90RFA9qEnm2nhhRsS9EprNYp5en1z43WjUkVKAgdWynkM9vgY7EyPH5dyDmXFya/YWHF2CmK4G1ZNtc35KGQnuixdd4EgJ9B9YdVJftduq9fK2Ptg2fns2UMVxjzjCMvT2gL98rXD2+trS6ar0qpFYh8+KRN88m6xeM9HH7jdcQ9NgP8eHELuc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2a87519d-47e8-421a-8901-08dd8c7d2486 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:26.9418 (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: D/y3JKbA5BAEhuwkHRtpHIRvzqdVgGBy8iup7rOOr/x+IJS+jsMkXH8ByiyKnu6pPpp8vUV+QRaQd5a5NU2VIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Authority-Analysis: v=2.4 cv=etvfzppX c=1 sm=1 tr=0 ts=6819d0de b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=7Xr6i1Xs6TsDAXCDpIQA:9 cc=ntf awl=host:14638 X-Proofpoint-ORIG-GUID: XRqP03FrPM7j6EsfHFzvnz8R-TGJzVUd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NSBTYWx0ZWRfX/j+R/S0RHX9+ z/fwtp8Ql1rSr7hxTGq5IC1I8NfR3bf9ds78+gVKFK2PdRtnrSw8hjGBLRGl3L8OuHep/gcOeV7 mBOeV3dSvLZTC+NBjPomMu66s/1gMKG0JwwJ5qvEAtuKCAu4Z1bN/EnTmxPXUOE+UBez2bFjAXe 8JAYq9xrGRE5rErL5OC+jO7cZ63j34EjFyR1PIuj27BXXncogPRxhSyLWD4yvqVSUbU4i0nk70T eEghtniuu394oyq71Sfiq3TZTMW3UJc0441p+HX/T00SgcK40T9jBcEgkBY0+8MjdqT2WSLk2mv OEVRVVHgvTVA0rAZIxy9u/RYVZOZK/X8U/JY4ZG+uh9A7eeo90ZiDyrgiL5i74FUrNXSGq6HTyg fSa7eJp9SnSQn3lFxwcP1oID+HphW14wzL7CtO++oLJUBDE43XlBy4IcQlfKLM1ua9YNX2sv X-Proofpoint-GUID: XRqP03FrPM7j6EsfHFzvnz8R-TGJzVUd Content-Type: text/plain; charset="utf-8" For when large atomic writes (> 1x FS block) are supported, there will be various occasions when HW offload may not be possible. Such instances include: - unaligned extent mapping wrt write length - extent mappings which do not cover the full write, e.g. the write spans sparse or mixed-mapping extents - the write length is greater than HW offload can support - no hardware support at all In those cases, we need to fallback to the CoW-based atomic write mode. For this, report special code -ENOPROTOOPT to inform the caller that HW offload-based method is not possible. In addition to the occasions mentioned, if the write covers an unallocated range, we again judge that we need to rely on the CoW-based method when we would need to allocate anything more than 1x block. This is because if we allocate less blocks that is required for the write, then again HW offload-based method would not be possible. So we are taking a pessimistic approach to writes covering unallocated space. Reviewed-by: Darrick J. Wong [djwong: various cleanups] Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: John Garry --- fs/xfs/xfs_iomap.c | 62 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 166fba2ff1ef..ff05e6b1b0bb 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -798,6 +798,38 @@ imap_spans_range( return true; } =20 +static bool +xfs_bmap_hw_atomic_write_possible( + struct xfs_inode *ip, + struct xfs_bmbt_irec *imap, + xfs_fileoff_t offset_fsb, + xfs_fileoff_t end_fsb) +{ + struct xfs_mount *mp =3D ip->i_mount; + xfs_fsize_t len =3D XFS_FSB_TO_B(mp, end_fsb - offset_fsb); + + /* + * atomic writes are required to be naturally aligned for disk blocks, + * which ensures that we adhere to block layer rules that we won't + * straddle any boundary or violate write alignment requirement. + */ + if (!IS_ALIGNED(imap->br_startblock, imap->br_blockcount)) + return false; + + /* + * Spanning multiple extents would mean that multiple BIOs would be + * issued, and so would lose atomicity required for REQ_ATOMIC-based + * atomics. + */ + if (!imap_spans_range(imap, offset_fsb, end_fsb)) + return false; + + /* + * The ->iomap_begin caller should ensure this, but check anyway. + */ + return len <=3D xfs_inode_buftarg(ip)->bt_bdev_awu_max; +} + static int xfs_direct_write_iomap_begin( struct inode *inode, @@ -812,9 +844,11 @@ xfs_direct_write_iomap_begin( struct xfs_bmbt_irec imap, cmap; xfs_fileoff_t offset_fsb =3D XFS_B_TO_FSBT(mp, offset); xfs_fileoff_t end_fsb =3D xfs_iomap_end_fsb(mp, offset, length); + xfs_fileoff_t orig_end_fsb =3D end_fsb; int nimaps =3D 1, error =3D 0; bool shared =3D false; u16 iomap_flags =3D 0; + bool needs_alloc; unsigned int lockmode; u64 seq; =20 @@ -875,13 +909,37 @@ xfs_direct_write_iomap_begin( (flags & IOMAP_DIRECT) || IS_DAX(inode)); if (error) goto out_unlock; - if (shared) + if (shared) { + if ((flags & IOMAP_ATOMIC) && + !xfs_bmap_hw_atomic_write_possible(ip, &cmap, + offset_fsb, end_fsb)) { + error =3D -ENOPROTOOPT; + goto out_unlock; + } goto out_found_cow; + } end_fsb =3D imap.br_startoff + imap.br_blockcount; length =3D XFS_FSB_TO_B(mp, end_fsb) - offset; } =20 - if (imap_needs_alloc(inode, flags, &imap, nimaps)) + needs_alloc =3D imap_needs_alloc(inode, flags, &imap, nimaps); + + if (flags & IOMAP_ATOMIC) { + error =3D -ENOPROTOOPT; + /* + * If we allocate less than what is required for the write + * then we may end up with multiple extents, which means that + * REQ_ATOMIC-based cannot be used, so avoid this possibility. + */ + if (needs_alloc && orig_end_fsb - offset_fsb > 1) + goto out_unlock; + + if (!xfs_bmap_hw_atomic_write_possible(ip, &imap, offset_fsb, + orig_end_fsb)) + goto out_unlock; + } + + if (needs_alloc) goto allocate_blocks; =20 /* --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 29D5D26659D; Tue, 6 May 2025 09:05:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522349; cv=fail; b=aKAmrAMbLXnzdcLTs3UYw3EETZeb6oTLAW1tv4BWNHF3W/SP837682+42d2zo6Iv0/2vt8tWqNA3dvQJ9d50EHaFc6jhq08c5WhHoJ8dkuvl+MfrTyuy5eRvmZ7KEAHBPj/1gjMozCAM4S8KRzd25AFo4biFa+/DcoZo4irmMuA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522349; c=relaxed/simple; bh=lESyKXmcD/WIInZy1ooaRbLsrQrEG0WmZvzyJ3JgkqU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=QaQOiDxUh1b8pz7VYdfvpUox+xVpctIs3UqHUceBSHjCVyNYGZ3nSpQfQaVNitmWt5sF7toL7d7zZk7BeyGykxZMC28H8ajut7BZDpItupkCv9x0woq2FsXpdqTtZYoIfjcyKdG//MnZYJJxcUeV0USvGVpF8XNMPgrOxlW8vqk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=G0xmWDSH; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=vL99t3Ny; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="G0xmWDSH"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="vL99t3Ny" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468cw40032218; Tue, 6 May 2025 09:05:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=ditZR8XzZpGzgHP6gzZd9TEojSztMv1kem5aHGLO5UM=; b= G0xmWDSHiH7uSTfNc3tGUBqpYsFJdxZQyUZWswjsco3mF7jqhgFqSUdYAT+HhJrl 126GEUF27AiW3PGro5IDDfWxJORIg0eJMsyvoQEsypcupCuodsWeByAGF/zAuOrl QByuW6eCLaFzPWQWvXH/1AaDgTaxaD1zD+vFgNJsfWljL7bWWN5/ZkDGcOfl9iz3 Az6FKFPQHbvPEo+to+I2KuG9NVGAVOrhm+yBQnf2bnmIMWzkjby1LxDimnj1+ime wPJFz97Lj79dEpgrqU4jToSBCUOmyedUVNwFq2fh93B0mZ1T+3utihsuRHGq2ySq 3Id0sqFG46Jo/Q4yRQw+Yg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff3mg21c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:36 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5467sm66012165; Tue, 6 May 2025 09:05:36 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2042.outbound.protection.outlook.com [104.47.55.42]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf0bwr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yng74me8yMahQZ4aNMk4dTB1vImxnKfcGK/LA1WdYaG4tibLuj2a425Ph7j2wsGMBAeLK+003vdt67O0X78sYcdlTIAUB8RzBPBi8MNbL2HEf1May16TVrJPbqk/JHmzCDlcMjYkRh7FjPstqz4tvLYsnVfeIbV8q6vDrMi4MsyEpC9FMcgeqwaHsbFbvgAiojcFj8qKS57dXSLGHS9AfuDLCygsrxTByfNsulm4ZLZ7j2LS2kSSaUrNx4e9eijygoIkmWQC/+Rn1b1XclLaIz6wHxKABpw5r929tngF9GnRswXPyFG67G1XP9rIsLnZ4K7fTeuXEEMNbacXJJVylg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ditZR8XzZpGzgHP6gzZd9TEojSztMv1kem5aHGLO5UM=; b=ynhIaotze5jpb5Jd7+TuIRX7MhUvaur8BYhaMWNUSua2FCrZxyuL4oYv/77s6Eo5qoQsvcruPuWRVgM+e9JUug4b8+YOl28KIIJyncaxle59QPqg4k8lgrXQ3kxZcFXYsgl2QNhVGJCKJZ9ME7i5LWmjcyplAc1zYFGSMVA4LBcJv2w34QVRR2McsN6fRrnG66cI+T6sBtwef3KOMTX9ennxWmxEtaAd7c9nFxuwdVJrc2YBTAuLOZJITAv1GkrFW3Mzjfg6uRL6qjdd+dYLPnFrdCFhsY1x1sNRdD+ucmxL0fLGmnE345eiD3gs04NQEUWoLrafKlFNq1QeT3EWiQ== 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=ditZR8XzZpGzgHP6gzZd9TEojSztMv1kem5aHGLO5UM=; b=vL99t3Ny9Bb63XqgQMO0sZSWgCBxZ/ueIqQl9VcqVqfeeLUUMMg32M9E3qEqN3r/a2pQxIb+cc6DX/1TaLWkdGkE0w8hZoMPW9SLO7GT8MBnqY5n1XgXJBJDHyXnbD/eY7Tg6+SFYn/xrE6n0cAcXyPdg7vzehLgFudSRwVVckg= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:29 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:29 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 13/17] xfs: commit CoW-based atomic writes atomically Date: Tue, 6 May 2025 09:04:23 +0000 Message-Id: <20250506090427.2549456-14-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY3PR05CA0032.namprd05.prod.outlook.com (2603:10b6:a03:39b::7) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: 226fd6d9-50c7-4d5a-ec1b-08dd8c7d25b6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?GD27ioNafQjXt7r34MmSqneHeJC2LHk1Xm0ejUJ/KP9oSJtszmY5YKl9Sw0H?= =?us-ascii?Q?KaAryMIrjvUxq5u0ThTnOB3ybwXPYrNy4cqAtZ4zZt1dpPOao4JHF1Ead/RD?= =?us-ascii?Q?hJ36WEoTyjX4+/arMIa3GE3rTbqUEie8Z9KAtIPrrhmxIgoPYPd5qoazBc2X?= =?us-ascii?Q?gkzO5W3IxIsOIvfUET1kVSXl/ZK7puuG2CWNZlgBqEYUYvEAdVTEDhz5iP70?= =?us-ascii?Q?R4ppeTSJ56TdMx01Y92U+h3KK+sFVLUHtjPDBDlQ/qQuzXOUypGcMgHdBjhv?= =?us-ascii?Q?BO5SY2jY/uZfXPyI0/X7NAhkfSgiY8jRuebI8wmf7WVgMT/PWEkHu33VtkC5?= =?us-ascii?Q?jeOyce3r1IR4+0y0wMSDOJLK6wVC/YBcx+KX0cYJQsYY8RUr3wCiiQIdi4s9?= =?us-ascii?Q?d3KZs7xoPP0WDBFanSTb/zatfYpGtsE0QgDjYEPPBzPfOBIULZ68LHVEU7DD?= =?us-ascii?Q?i9Lib1+ziturgSnHyJHR/M2edEPtzhcADSyJY/xefMIop52KM4mHlHSoqCZZ?= =?us-ascii?Q?hngB72/EXioIM4Jx7F8unvlEAScTQnRmpInGe5GcAY54eBTPLE+PFKjEgJF+?= =?us-ascii?Q?t7sWaBngkAQhI3iSN943NkJVHEbAbgiCPjKPlgyAWvB+4kqdAziPXhPmlN7D?= =?us-ascii?Q?trI9I64CxQ7NPsO8zyI7ks93zfE59fGRv9orCaTuSVwhK2U8Sjml7NJac9kE?= =?us-ascii?Q?OlysYhCxku47p7upUQz2nMD76OOGVX89qlkGTrj+z2xKaW6dmxyuopSNEHKt?= =?us-ascii?Q?dhXr3Cw5ivxDH9Ap0Njsl2o7JjdVw3RrQQcGot6zk8u2WVXdBPPsWTUPrdBi?= =?us-ascii?Q?FyT1C3J1PJbMNxUgcBhlP7oNJL05VgjJ5IR2kNriQ1kCa1Ttr98w7iYaP4wL?= =?us-ascii?Q?nYeu+lCXonQD+OLS0ytuQADVTXeiICW7rs8swVy65TfB5AZnEV05CmDebBM7?= =?us-ascii?Q?kf2CfUCoBtnQQEX5zmJQvCV6QFaK+f9In47+VceB8szNpeW9Lay8qSKTyGYf?= =?us-ascii?Q?fgBmO2lNpZkTE+2X5SJqF+ihGIcZ7CT6wUq8upeYNh3OTPHZHYpKEmVeyRO7?= =?us-ascii?Q?hQSRSmBT3OtXITqKIdm5Kh2ftTXgIl2jizp6RcaexuU+F1KF9/zwewL/IfLy?= =?us-ascii?Q?mHMH5u94rUEbkz6ebuXjqNgUw2EeuzIsYAgjgZaYzpcpsZdsTS+4SwjnxFUo?= =?us-ascii?Q?NfylO5RYnWZFlvuUrfsoB07vPDTPOS8HDHg8dXUlJTq5GM6rBNWLHxg/0Yk4?= =?us-ascii?Q?IQrxiY7IZSp3YlDWCbwu2TPKHUC4SYvNoT0Yhg9TlcQhNwjVjnl4ahjY5a/l?= =?us-ascii?Q?dZCHYjvt2Rz2k3i9aP/h+kFfggttXj9YHCXVJdaI4SGetvxGvUZGyYuMbP1S?= =?us-ascii?Q?o49w+tGkFgQa31P7CG9h3ncZfxJrlShFsf1UqJryHyGapDT0aS32v2LWet4b?= =?us-ascii?Q?X1tqzkaRlws=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8B4zRBrdW8bGkABSYzsQXW5tbKP4LOau66wJuATfU8C080HP1LKPog4KTPBt?= =?us-ascii?Q?i3g5RebpeD/T+GAQFnNkt5H0MgAShMJen4Dydyzj2ydR7vPVCDFxW8IaCmn+?= =?us-ascii?Q?dnB+9izfUfZfvw94LzH7zNiSMIelxEAYEuATEkkrGVdAJUbpKnHWw86d++Mj?= =?us-ascii?Q?1IRmCl0KffDQlnU8OTNxig8gOA3+//3RlryCQWlOFB3osAz+62eT5e2cV91k?= =?us-ascii?Q?8lgohV53R2TcSsP52pg3j3EQT4/tKbMGxd5mUFM9clT6gkM+QD8wKesMwsA5?= =?us-ascii?Q?hhoBEkRK48LJqTxMyShNo5QshuCJFsf1DKrVS2A9rlspjXpnOiY3yqNlkgcF?= =?us-ascii?Q?YmiuAaWMbMrQLEabrYwSaslOeKNvDvmT5BTid+2WJvJ1MEqRnFhrvyox92Ld?= =?us-ascii?Q?z/VEotGpDE/FnQZgHyVTdziJT+icafKhvJbExHEqhlSwr91+gQPeOv79WJwB?= =?us-ascii?Q?nGlMSk1OWd+EiWYcHxEn36J9KrozIGapuW7luq+bl45Pq4dd4yhrY7VFrqzi?= =?us-ascii?Q?TUo7z0amc59ALCiFu55IDYpd+rAOhqKjGfQlk7oH4/wmQLfIRlPEuX4uV86E?= =?us-ascii?Q?FqIKL220+PJu5zfa1hydmAS4Ft4+cRJHzfukIwdoNRL4bYgOs4hMNj9yVcOf?= =?us-ascii?Q?IYnbbXNiDlY+TqN6MsLJSQo8HX3ltsVAvMOXzGtegzyHr3PpScVZrquVy8cC?= =?us-ascii?Q?Cqg67VTj+9ub+D5U4fbyzslhqooQ3UrSEubaplbGa5wXKLRQaAq3Gh1D8Wmm?= =?us-ascii?Q?juB8zPKilM/KAnktdOH9NP1R8YpQB9u6wtyDtr4SjhMJJNG0qB6isn1lyMqq?= =?us-ascii?Q?7viksMrBh3I7+O1W9IR727K1DGoliSM0IiQlBdv+1SGdsb6OkHQ54OHoYM3t?= =?us-ascii?Q?b4sIcuVXWDrVUitLo1my2+hCItBx4V1ysudVUMDwRA3Z31BZ6Vi2g64GxjnZ?= =?us-ascii?Q?+q8oMMBgSWrzVC5QcAgOJjCPEtSMKXg2heJDiqQFuj5F32TcyExfTLrjFKTe?= =?us-ascii?Q?Y5tfrkzpR8Ve9q6DgpEMb0y5BUxF8H5Cpcmf3Y3xwrg4wYL4cV9hFtLSInRp?= =?us-ascii?Q?tKmhwdeTE3o2j2RYxQSGhrX4TB3L53jsuXfi0dditwuTdz2KUw2K+EevCiR3?= =?us-ascii?Q?915EQup3xyHgHZS4+rH3xBzBi1zwWMxyg6Zcim80n8SJ/qMl0+U8uqbtsT/+?= =?us-ascii?Q?OfT2ImpS3bwSsET17h2gl+jiU8Z0WEVCbXUSV0qOtc6RfC6doPTLw0mnMcql?= =?us-ascii?Q?AkqXzRY7FjraiNxcESYJku940tQ700MHw3OcVFKcXwyznw50ohr2Dd33g1sU?= =?us-ascii?Q?7250WHcTGUOdTA9Oi2z2rxyMqlAE2gHYtIDAdFAtsIZ1vt1/XGMnzCHMVubw?= =?us-ascii?Q?0mJZDdkVvUed+Gu/MNMNHsHVCm6Rk4pStw+JYqx+1aV+D9WGyB1HHtraCRmv?= =?us-ascii?Q?8TYcJjOAc+eDum8bM7MtxhqaHNZOGPG1NXneGt4ZyaK32//IwiLnznY89isH?= =?us-ascii?Q?Fs8gMEUJTCdoLIM7ZAjV/wpXQERkGNpc729qOpWKD4Z509wcF3O3GeRF4vxx?= =?us-ascii?Q?304wLhV+sbFteoQWfaYlxQX6xNWB/MBPmsY1gFPT7lhE/ez1Qf1FXJYxtzRT?= =?us-ascii?Q?gA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6H98AE6Ns7d62Z304GdoRkmQHpkZSdi8cqroBJk2bITUXtlvVtE16tE1P7jMbkjnGwkVFwhZd+mRDaGggrvLalUNn8BDpst0i+pmxIjDOrLMcy1qSDgduGrAu+ke4V1jkdfVd/7hytlWvK2NwSUSym6qcXl9OtPWeJObh8DKAZbTPTYTHUtgkO0TL7Q74atEiEE5nW+zxvbvUmkzd9gF7ckep8hi5N2FpHciHgzWlGpO+SPbkn5ZehPgjIYCENXueUkTA+WXLK+ekOsVWzll3t7kQsfoK+MWysByM1NA1snauGvwGf6/H11rJZnaMyjdhsBAmtDTGDcTC5ShBcL8oddvOdNY9yGGJZ78OKH/BmSmySZIWM3hXOqSF0xC4mqd9DOlzvz2Pt5mLf6bP0vrbB5CCitFn7/rb6RVzbjnfvzMmJt1AQIJgo28d6yRt10QC7Q9axC8DN6o50vD0zOitXnZIngDOyftHJnDvcK7G5H9+P4vhwaoI/RbaAeGEmozJpU9pNHR/3NAOPAZHcCuFgml7yw2vLib60lJupgW986OVjZyIS8qI9pvsraiEgs8NwZrJBp2X8n8bM3n3Ic2lQdU5+dE6PimQPmtg/QXTpI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 226fd6d9-50c7-4d5a-ec1b-08dd8c7d25b6 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:28.9572 (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: +j8ACOSkHrfJfO9dVbEMMvDlhRD1JRLeuq92rmOtGC2sHF68WjHMVObriRNtGX1ZcUAtM1Md/lo0dVNhWlak3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Authority-Analysis: v=2.4 cv=e84GSbp/ c=1 sm=1 tr=0 ts=6819d0e0 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=psqDkX_6r_7HCtZpQ-8A:9 cc=ntf awl=host:14638 X-Proofpoint-ORIG-GUID: 5hCpWnu5EyPbwz8ms_0buBAng0zfe31I X-Proofpoint-GUID: 5hCpWnu5EyPbwz8ms_0buBAng0zfe31I X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfXxVgZvhoVv9NO iZ0BMZu0pstYKqFG+sYvnnAT9DQKoMuv4LWH/2uyGnYPpweRdA59uooVHHElUYf7LwW+8M1COzT Z6nrkOoAj7jRQYXFaRTutZDS24SC4P8cNCKnJcuDFgshYznhvRUXioRN9j/7XHWfs5tEzpBxTa3 WLynVNeKb6IAqVtv/x5nWNBfxDxQtXxPSF65uAT9A8z33XnWV+k1VXksHd9u0xtGghG0BfjTYf8 iIV5KRtsMUtHt3LJArRFjPnNdReLajrZUfuRWk9PG5HrQshluagkYugKYWCfZ0RW9k/B1l8VvOQ uAtA9zr9TFnSL8SFMMGTg2ezUvps4ita1bjDf6585OhxVpBTYiiBibbH1Oww0x5+aRJvtGJ9S+D IO6kPg8Ms8qUhPHDcp1xWCZhmdiqayHCSsN7YOJv8wlSfh1+z7g5eOlcs2mz32/e8voaRgmV Content-Type: text/plain; charset="utf-8" When completing a CoW-based write, each extent range mapping update is covered by a separate transaction. For a CoW-based atomic write, all mappings must be changed at once, so change to use a single transaction. Note that there is a limit on the amount of log intent items which can be fit into a single transaction, but this is being ignored for now since the count of items for a typical atomic write would be much less than is typically supported. A typical atomic write would be expected to be 64KB or less, which means only 16 possible extents unmaps, which is quite small. Reviewed-by: Darrick J. Wong [djwong: add tr_atomic_ioend] Reviewed-by: Christoph Hellwig Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_log_rlimit.c | 4 +++ fs/xfs/libxfs/xfs_trans_resv.c | 15 +++++++++ fs/xfs/libxfs/xfs_trans_resv.h | 1 + fs/xfs/xfs_file.c | 5 ++- fs/xfs/xfs_reflink.c | 56 ++++++++++++++++++++++++++++++++++ fs/xfs/xfs_reflink.h | 2 ++ 6 files changed, 82 insertions(+), 1 deletion(-) diff --git a/fs/xfs/libxfs/xfs_log_rlimit.c b/fs/xfs/libxfs/xfs_log_rlimit.c index d3bd6a86c8fe..34bba96d30ca 100644 --- a/fs/xfs/libxfs/xfs_log_rlimit.c +++ b/fs/xfs/libxfs/xfs_log_rlimit.c @@ -91,6 +91,7 @@ xfs_log_calc_trans_resv_for_minlogblocks( */ if (xfs_want_minlogsize_fixes(&mp->m_sb)) { xfs_trans_resv_calc(mp, resv); + resv->tr_atomic_ioend =3D M_RES(mp)->tr_atomic_ioend; return; } =20 @@ -107,6 +108,9 @@ xfs_log_calc_trans_resv_for_minlogblocks( =20 xfs_trans_resv_calc(mp, resv); =20 + /* Copy the dynamic transaction reservation types from the running fs */ + resv->tr_atomic_ioend =3D M_RES(mp)->tr_atomic_ioend; + if (xfs_has_reflink(mp)) { /* * In the early days of reflink, typical log operation counts diff --git a/fs/xfs/libxfs/xfs_trans_resv.c b/fs/xfs/libxfs/xfs_trans_resv.c index 580d00ae2857..a841432abf83 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.c +++ b/fs/xfs/libxfs/xfs_trans_resv.c @@ -1284,6 +1284,15 @@ xfs_calc_namespace_reservations( resp->tr_mkdir.tr_logflags |=3D XFS_TRANS_PERM_LOG_RES; } =20 +STATIC void +xfs_calc_default_atomic_ioend_reservation( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + /* Pick a default that will scale reasonably for the log size. */ + resp->tr_atomic_ioend =3D resp->tr_itruncate; +} + void xfs_trans_resv_calc( struct xfs_mount *mp, @@ -1378,4 +1387,10 @@ xfs_trans_resv_calc( resp->tr_itruncate.tr_logcount +=3D logcount_adj; resp->tr_write.tr_logcount +=3D logcount_adj; resp->tr_qm_dqalloc.tr_logcount +=3D logcount_adj; + + /* + * Now that we've finished computing the static reservations, we can + * compute the dynamic reservation for atomic writes. + */ + xfs_calc_default_atomic_ioend_reservation(mp, resp); } diff --git a/fs/xfs/libxfs/xfs_trans_resv.h b/fs/xfs/libxfs/xfs_trans_resv.h index d9d0032cbbc5..670045d417a6 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.h +++ b/fs/xfs/libxfs/xfs_trans_resv.h @@ -48,6 +48,7 @@ struct xfs_trans_resv { struct xfs_trans_res tr_qm_dqalloc; /* allocate quota on disk */ struct xfs_trans_res tr_sb; /* modify superblock */ struct xfs_trans_res tr_fsyncts; /* update timestamps on fsync */ + struct xfs_trans_res tr_atomic_ioend; /* untorn write completion */ }; =20 /* shorthand way of accessing reservation structure */ diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index e8acd6ca8f27..32883ec8ca2e 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -576,7 +576,10 @@ xfs_dio_write_end_io( nofs_flag =3D memalloc_nofs_save(); =20 if (flags & IOMAP_DIO_COW) { - error =3D xfs_reflink_end_cow(ip, offset, size); + if (iocb->ki_flags & IOCB_ATOMIC) + error =3D xfs_reflink_end_atomic_cow(ip, offset, size); + else + error =3D xfs_reflink_end_cow(ip, offset, size); if (error) goto out; } diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index f5d338916098..218dee76768b 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -984,6 +984,62 @@ xfs_reflink_end_cow( return error; } =20 +/* + * Fully remap all of the file's data fork at once, which is the critical = part + * in achieving atomic behaviour. + * The regular CoW end path does not use function as to keep the block + * reservation per transaction as low as possible. + */ +int +xfs_reflink_end_atomic_cow( + struct xfs_inode *ip, + xfs_off_t offset, + xfs_off_t count) +{ + xfs_fileoff_t offset_fsb; + xfs_fileoff_t end_fsb; + int error =3D 0; + struct xfs_mount *mp =3D ip->i_mount; + struct xfs_trans *tp; + unsigned int resblks; + + trace_xfs_reflink_end_cow(ip, offset, count); + + offset_fsb =3D XFS_B_TO_FSBT(mp, offset); + end_fsb =3D XFS_B_TO_FSB(mp, offset + count); + + /* + * Each remapping operation could cause a btree split, so in the worst + * case that's one for each block. + */ + resblks =3D (end_fsb - offset_fsb) * + XFS_NEXTENTADD_SPACE_RES(mp, 1, XFS_DATA_FORK); + + error =3D xfs_trans_alloc(mp, &M_RES(mp)->tr_atomic_ioend, resblks, 0, + XFS_TRANS_RESERVE, &tp); + if (error) + return error; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, ip, 0); + + while (end_fsb > offset_fsb && !error) { + error =3D xfs_reflink_end_cow_extent_locked(tp, ip, &offset_fsb, + end_fsb); + } + if (error) { + trace_xfs_reflink_end_cow_error(ip, error, _RET_IP_); + goto out_cancel; + } + error =3D xfs_trans_commit(tp); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return error; +out_cancel: + xfs_trans_cancel(tp); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return error; +} + /* * Free all CoW staging blocks that are still referenced by the ondisk ref= count * metadata. The ondisk metadata does not track which inode created the diff --git a/fs/xfs/xfs_reflink.h b/fs/xfs/xfs_reflink.h index 379619f24247..412e9b6f2082 100644 --- a/fs/xfs/xfs_reflink.h +++ b/fs/xfs/xfs_reflink.h @@ -45,6 +45,8 @@ extern int xfs_reflink_cancel_cow_range(struct xfs_inode = *ip, xfs_off_t offset, xfs_off_t count, bool cancel_real); extern int xfs_reflink_end_cow(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t count); +int xfs_reflink_end_atomic_cow(struct xfs_inode *ip, xfs_off_t offset, + xfs_off_t count); extern int xfs_reflink_recover_cow(struct xfs_mount *mp); extern loff_t xfs_reflink_remap_range(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, loff_t len, --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD067267703; Tue, 6 May 2025 09:06:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522409; cv=fail; b=FILL7J7HoKdWgmMBl74UwMKOMrdir7TB7pqL1Ii0ziQxAW1c6XBkgwxNgS2CiRA/OyDYUnryBdhP5aXgyfpmr4l+ovzIURzmHOY4VxiSR+ldrDaxJ6XPUBybr11Fju67Yz9fHX415+ndC2RwFNeDEvW6tiMJ2XTUYu8893Z47aE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522409; c=relaxed/simple; bh=zin1cGnHDBDRrW3jNLQStqqddLgWyLLs2LbDahuY/MQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=VjZMpxze+o5d+qYHNvbUwpc7pjqCoUGJ7IGjgiVJoidYowPKCfaHKbeyzdBVS2jE8bs+AiWHDGbkIVerbNDAQhGbvpLofbCWKC0IhoTSxcoOpS6jQ+fJcT4IZa7fDNbVYzKAjX0/g18+q1exGODrgYGcE0ns/gpEJITWTKxxWQw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=WrtnduNZ; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=tTMiuBFA; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="WrtnduNZ"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="tTMiuBFA" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468cw42032218; Tue, 6 May 2025 09:05:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=srLclYblBb9JiBMt5Z335oUdMAMav4Fb0kt3AvrsdFQ=; b= WrtnduNZ3HycQQEc99M2w7W53zYosLSOwyfouVHq10WrcPrsd2AB/uevmCeUkhzT OWDZ78lyqlSc6epCgQ0KR3c94ad6AR855nujGrq6pB1PwW0vfYPO/iPBMQB8bzYX sWLtzDSb8br835wziyZJBQsIj8TkyP4McJHi47TB80HYqqsJF5vjuW8NXV3+dBsH c9mJG6hoFRj43Gkjq2EWcnsvN5VxI7SAYbN9tZ+YLbZZ6P0tkZbVKEmKwfE3i3Ez S2V/I51Pa5sei4LRex5sJStPMEDqN1cf9x8Zqa6KxbD0RTEYlBkQDWs0aIJX6+50 d+K8hwdYq+XzRPS2clwjxg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff3mg21e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:37 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5467sm67012165; Tue, 6 May 2025 09:05:36 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2042.outbound.protection.outlook.com [104.47.55.42]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf0bwr-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ioyfetr/MUlVbWjr2myh6Ud3U8gofWwaphO/DyzitsOkVf0SCvLiCVXoQQSc/csUF5TwnpvzmLYjwtXMlAzjWuTqytv+/z+eRowlpbI4rvGneMfdG3cSR7ZBP5PKJZuUS0+emoA7S57RyO0gIR9AptPbCeEfdlixR85w1Ni130LhSbeqb+gNz5jA0567OhO8/PGY3N6aeqIXfiOrA9BxARkT28FkG2wzzulsvF68/3UE/6cQGrCGvBgOEsSKW47HQ4bKYoDf9vXlqybUB6E2N6xNo5sVo6LiWelEMvN9xuZtffpM3N03NT94kPyRlc5wwGxRhHOA38St8U/ElZ+bkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=srLclYblBb9JiBMt5Z335oUdMAMav4Fb0kt3AvrsdFQ=; b=XnHyqtJDrR6ztnv+dCa/e/59C/IjFtL+x6oN90AEEDAj+Bnty0VHfzGjViGrz7VzPMgF51VweQUn+JxVZlEdtyiXlXHIsnxBp10i7MaoPrnMRFvqTsJdR5+bHujz+hPwZQ2zDZsIA379dMldEyJHJBj7YUfq0O/JxuYZdXRXuwAlhlFXaxmxV+mx+18njAVWmKnKqUmDpC8GfyXYaiKX2GdPimCrsZFkyVwhLPwtoKqYtCx9DUprSCOPaPRwTiwWOUChzwaASvOfvq9F/VT8qUSbexTunbM+UUcBz4EBlkVJ/paNV1PPTf7a05z9fAshaP7b/xnY5J5q/Qdx4DujXg== 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=srLclYblBb9JiBMt5Z335oUdMAMav4Fb0kt3AvrsdFQ=; b=tTMiuBFA+vfEBvAXBmouIMG8rj2Wf1gXd2wuaFo74bG7zudrKAsMXMjTVjpyia3KAF2Op3Lw2GeaYSSnlAmqSvEh4rSyfqMG/bUe09UTPrQkWdr641RVFu8McBkQq2GOftwI7YOhnog6rPYmJpn4S+iP8zEUMYzyMIY+03th9VU= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:30 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:30 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 14/17] xfs: add xfs_file_dio_write_atomic() Date: Tue, 6 May 2025 09:04:24 +0000 Message-Id: <20250506090427.2549456-15-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR05CA0037.namprd05.prod.outlook.com (2603:10b6:a03:33f::12) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: 921c50a6-1fe3-4781-441a-08dd8c7d26e0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8xmaYjw1AWDsxkHlZ/Q67iecThsgVcc8liKlhiALcEE8Fi6ylNsVnD8HBciF?= =?us-ascii?Q?g98Yy8zF9ryKjMUkvzhFw072QWnJVOp2cACG8mF3AF2iMsBR6SySj+ZdU6Te?= =?us-ascii?Q?ZTC2plJAXAE0Rw8/orCslBNzf/8AJ+q4nOuhzVn8BBXMmMXQmMYLHHqiALVW?= =?us-ascii?Q?5yNy44f+EfGawcEho9o2zayFPdjGutKri22yn73Y2co6ZjF/3GpmFxfMCMdF?= =?us-ascii?Q?FK+So4tpbc87KFt53w0MWn52liRWiscoKpxQIZ+H/qlDI5w+c0xFFPmpj8LN?= =?us-ascii?Q?EDeQjdRCIKU/KMvqYU686kSDTNcIHbCB96KQ5gPGcUjIXWjt0YJLqNTBWwe4?= =?us-ascii?Q?OEx5Dm+aePiRDDP1uYuTSyBIh/4ZRGv068qO1JvwzhnQj7whfdYdHQtaaDdl?= =?us-ascii?Q?sS2z1U7Gdl+DzBEZfkLrdzPflNHvHVsE2azCvVf1MUPXtuf65HY0PSKKH17F?= =?us-ascii?Q?2W/dEPVY8QHYBy46H7UW0uEqXFpt5dHTlBP7IxBPqRlKb2yto3YSjj1LEmoZ?= =?us-ascii?Q?bqc+XBXJFpqvzAv5ZDqMrISovSf40BBD2bwu0DuAWwh4oCYD7kbqfIdrFkn0?= =?us-ascii?Q?a7iF7VZE0Sr6JFUinqmi9qD6YiFpPAx1cA7QXA/WvUTzkRDBM2jY8lawnA7B?= =?us-ascii?Q?/vgpI//j68G10emQSsuvhmQmQoNqeqMJWtoazMQaqx4ihjgD1eMfz0nNp2/7?= =?us-ascii?Q?DimKxh+N5n7K0SwubG4sKWoanF/4lU9rZKYZz/LIFSBgj5tOwH8/pTUFuvyL?= =?us-ascii?Q?H28B3aevb0IKRjpSFSGBckPIYoKDbFF2E4n7T3jRptIcXzTMi6NY3TQ2mp23?= =?us-ascii?Q?7ZOtdLY94o0lKj6TeZJRUTlrNuQypNy9HFNRR5Dx+qPIB0ey9Gg/UOgOIKEM?= =?us-ascii?Q?8yV6gKYXaTvEMPvQGeCZ1rmj2bRcHMDdFFWd/m1Y8wYjJI4T4CxKu4iJdBTQ?= =?us-ascii?Q?VF3Ldj8M6rYn5lmA+tchgDmWdikr/8ndqiUlp43j8NWTUa1cPwTlczH4Q+Vs?= =?us-ascii?Q?i7clRt8LYJXpWpv7wGjauQAAPui5UzrGJJz039VmFsOqBYILlLPpdgH5b7kv?= =?us-ascii?Q?z4QEruyxXF06OmnuI3nYgf231rmg1eMyi6FgrGNzkLuAM3teKTqADuvZ64fL?= =?us-ascii?Q?YEET4z5DAo5HpC6sJZlZumQLv5nEARY8/1Y7raRnmMq6EWv3DcSfPG2pjPO7?= =?us-ascii?Q?tcJqxthb/fGcdEuWZaGRIdi19xNaLXjStyBNWPOr/qPei6R7ICPd1noZbBOD?= =?us-ascii?Q?AOI4qc+laeMAUfwWmwETfIL1rW3+0liqtglNY71LCiYxAbG69cH/eM6oliXi?= =?us-ascii?Q?zm4kV4fIGarxpumDOnETPwJWV7BfBRFuMpc3uO3jr4uDybfQn5B+5xBNJBFa?= =?us-ascii?Q?gr478UUgF2mKV9gOYphfsfbV6+dfT4g29A2C4OmgZXO+OEw2Ig=3D=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Lp9TaTm9I3CDYvTWaUgOzcyUMHp6WK0g/L03qj1+16YzpzSxsSB3pkjO/S/n?= =?us-ascii?Q?ys8PBs70uaBuYjccUA67/Gy/pS6SrPsWRtj3CyfhR2roUVBst5f0mNS0OVzS?= =?us-ascii?Q?3KmK/QfZNkihgIsDWwcSxZPPZwOBnOj1bmHN+xoEFwpmqLYKgzWJzcydHCjI?= =?us-ascii?Q?trh4AopHpjlJE+AT2QX7MprW8Dp1xaM6ZdcJd0w2Na/dOnhC5xOZvq/+CU04?= =?us-ascii?Q?LYH9YpVrpSptW11KYBG+4isF5L38hZFrlU4lXP+sY+fzEP2X0GJqdBeDOnEd?= =?us-ascii?Q?VcFYcmi82/mFAPNuLbeteeg+yRK9vC+M1lweIOEa2uZwfXVqqV/GIaaURQsZ?= =?us-ascii?Q?oQGhhzQ4GpG1H0NEPACLUgnOzQ7izM+F4qirp71lgPzXIsbWfwXl7lxyEu69?= =?us-ascii?Q?B3ozJxvrxrRp/o10q6aKMzijR2vgIJ+lU3RmYnmyY9bGjDTeoxDIaS5gzGUN?= =?us-ascii?Q?wBJM5ejenm4s0MFe7t/NJuml0cbbvsnbv/3+elkLAT4YFK+D5AU7vhYmWu8F?= =?us-ascii?Q?VvVcdQBRDcnX7JEy11ZH5I2mIQ9+MHOMjJazY86VJUfvlCBYA1XruwN0OAjh?= =?us-ascii?Q?KZyrwCLH2i8JrPCieKUhzZwfKSnay1KSk3dkm+3LNs6QGivCd8V84aqzRIix?= =?us-ascii?Q?17Tc+CozK0moAz3eGWNbD/nL7a0hEKKzZzsfba/G4wvjM8Lr9D29EKHAb334?= =?us-ascii?Q?kkKZ1Hoqy6AR96bOjyaQEG5mngszJqrZ/064/9T3JNG8TKzb5If55ybThA7F?= =?us-ascii?Q?CaJWluiLsRP6Z/6DnejNv5xyGA5Wmj6g+3Vz3ji3f62Zm71TEYs7zkMWgoty?= =?us-ascii?Q?Hif8vcACeI0ZPqRFGWPkx3jdG5saiugI6GG6MNlrH8AGfUrdszXXc/Dn/EBF?= =?us-ascii?Q?PBDKx5ucyaXO+wmA4zyhgwW1vtX2Yucvc6+NtLeCDTzrvAPDLNb73HbjYwy2?= =?us-ascii?Q?y3JP5Fuhka9yl9uvyyx/Gjfg31hDe48uAwGYG7RB/wNMtECt2fWPcz0Jcqgv?= =?us-ascii?Q?EwiNzTbh2rEcjA5yc3b++jZTdw5S7Rpgp2WWSMxH0RkEB1jH4wmu2Az6vfAa?= =?us-ascii?Q?3TcflAtBVdf0/76M8JJkSO8Ze4RoDTrpOxItpxHmw9664agQdZNsVZnav6qQ?= =?us-ascii?Q?VuqfR8tV8FPAM35Thv2gY2iktyVPvqYps7S4bZyOx/aFHkzVxG8v9lAj7aUp?= =?us-ascii?Q?kGgjIN5eYkW6lJ7kYPzNuEfzSJ0Kf6ZRKBL+veQFixjmEUtvviyztyfU3VP8?= =?us-ascii?Q?VdsgkzbvlDT+D15zJD2KCK4P6UihCgS0W5OM1gufhcAlSGbFY7mgLLkKnvZL?= =?us-ascii?Q?1QNuRZeUWWQl3n8DJNiCFNU5j9/EmL77jYoQihZkr6gqLcyEpc7WUMbtnaw8?= =?us-ascii?Q?bttcV5oI8pFbXHgei8Z4T/TM5GBIajlz0w4zIIj1hphSHq0jW2bA1qPwow7/?= =?us-ascii?Q?dk8dy6YmT4nvzjcjEmOgmWURlXezP378xQlpyfBtSHd6sAThTNzu+tH6/efI?= =?us-ascii?Q?h8y0Yy5V4HpgkxBwlaGNNNDsonBUaDOWIzGHaklM3e55v29MRYf1hZ1Cp/G0?= =?us-ascii?Q?8XPWBCXUQDNRkN7jZjsdjDIJRzCJWwZI1srCxBT/XCl/t38bkji4FfytGww6?= =?us-ascii?Q?Ig=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: /xTn58ZJyV2TGllo6qc0q6BR0AvcoI8zWlkCMau0uwakABOkwy+juTFnFZNyIDxKBv290mO+gyPKPOfoMxa0gU0W6D2jf0xg+c7F4H51lRl3EUwVgkekuXWeC1TXPcwD+kMiPmaizZZ4dx74FhPyIvpxhoFnr62GnVbg/R4r2vVQOyDfoCVOZhdfba9ULJPABAR4ZCHeIUU9eVGbQzQOKlkLXGOEXEhcAJ8hP4ZMHfnPsJw3mKx9eOGwMQP6BYWM2a6ey5cKF3vGRztGe9lfQoVg6lae8Zew9IwZmG8tw7OXUs7+/XTCqS/jKenJV2WNuXLs080HRthuRCAls4/O/4+Zezs7erW6nz+6aUTxntusR5zGZHnQwHB8hrLkvUX42ryqYd/YPMiMioRZhDEF2dt4S6BNZmO0UEkScWDGkgYE+5OF5giYi0x8XkaZIJT3FBzrioymKnZMk7UWwKh8qGrFc131lKkfUD5T+5PMDPRb7v3wS2Ay4Wcdw3Eggu4Op2YNupgHwMBdp6IqolY7jguWsD2ovaZIGHNExKQy0TNdoqbI5XdtEQxeHplvgBE2P/9WgQ0J7E/PpyvEk1RW9iJszYvgzFbc5rMqZ/vDbGQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 921c50a6-1fe3-4781-441a-08dd8c7d26e0 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:30.8753 (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: NCUOhTlUdff4RwzIina7+eEsfgeLhXai9imlVJqva8e1BDbJaSOfNM2WNgWjhrKZd5PM/qgeblqRpMkqoJvYig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Authority-Analysis: v=2.4 cv=e84GSbp/ c=1 sm=1 tr=0 ts=6819d0e1 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=Y8Big0Z5EXcV7lnze7oA:9 cc=ntf awl=host:14638 X-Proofpoint-ORIG-GUID: JtuRSpILFmCCTX3mrw6Qyq1KQ3y5hhKI X-Proofpoint-GUID: JtuRSpILFmCCTX3mrw6Qyq1KQ3y5hhKI X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfXwYn9zNarJ7yI WSHqi5g8hurGA+kYGfm9vPg5BwIeQxNjeZ9a7g0fvnPaU1TjgxJnJDl8QHLlil7KGbEVf+/3s5m 9EQ/AFwMJe37TmoqEjKA1YoFZw/0Xcip8lToOdtuodt8gmU32cyzYUhBUyj6d2xh+dMUnzCJnty uJAvu2Jjiimtv7nauTW21HSojZOgjNtbUzFffhkz8abioPoh+wrpb+VcWp0LfFDUh4dQwxAQUcA KpCjCzUBDdTS44DV6ArhucMhthNXKClBwtMWSUfR+AhBiBwRt/cayJbPhzfaZc7YQag0EM/Br/E HmX6OHntA3WqSvpvlqKcN3oTA2lOuTecJ7E6NyNHdwLut1PPgkE7VovPPgvq/N3MhjOhx2CsURR jsij7M4U1uCN8B5J8HB0smDKharpCAQLmN29ckw4izKW2M/tpzMs80vEYayuZWo1maBHUTHb Content-Type: text/plain; charset="utf-8" Add xfs_file_dio_write_atomic() for dedicated handling of atomic writes. Now HW offload will not be required to support atomic writes and is an optional feature. CoW-based atomic writes will be supported with out-of-places write and atomic extent remapping. Either mode of operation may be used for an atomic write, depending on the circumstances. The preferred method is HW offload as it will be faster. If HW offload is not available then we always use the CoW-based method. If HW offload is available but not possible to use, then again we use the CoW-based method. If available, HW offload would not be possible for the write length exceeding the HW offload limit, the write spanning multiple extents, unaligned disk blocks, etc. Apart from the write exceeding the HW offload limit, other conditions for HW offload usage can only be detected in the iomap handling for the write. As such, we use a fallback method to issue the write if we detect in the ->iomap_begin() handler that HW offload is not possible. Special code -ENOPROTOOPT is returned from ->iomap_begin() to inform that HW offload is not possible. In other words, atomic writes are supported on any filesystem that can perform out of place write remapping atomically (i.e. reflink) up to some fairly large size. If the conditions are right (a single correctly aligned overwrite mapping) then the filesystem will use any available hardware support to avoid the filesystem metadata updates. Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: John Garry --- fs/xfs/xfs_file.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 32883ec8ca2e..f4a66ff85748 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -728,6 +728,72 @@ xfs_file_dio_write_zoned( return ret; } =20 +/* + * Handle block atomic writes + * + * Two methods of atomic writes are supported: + * - REQ_ATOMIC-based, which would typically use some form of HW offload i= n the + * disk + * - COW-based, which uses a COW fork as a staging extent for data updates + * before atomically updating extent mappings for the range being written + * + */ +static noinline ssize_t +xfs_file_dio_write_atomic( + struct xfs_inode *ip, + struct kiocb *iocb, + struct iov_iter *from) +{ + unsigned int iolock =3D XFS_IOLOCK_SHARED; + ssize_t ret, ocount =3D iov_iter_count(from); + const struct iomap_ops *dops; + + /* + * HW offload should be faster, so try that first if it is already + * known that the write length is not too large. + */ + if (ocount > xfs_inode_buftarg(ip)->bt_bdev_awu_max) + dops =3D &xfs_atomic_write_cow_iomap_ops; + else + dops =3D &xfs_direct_write_iomap_ops; + +retry: + ret =3D xfs_ilock_iocb_for_write(iocb, &iolock); + if (ret) + return ret; + + ret =3D xfs_file_write_checks(iocb, from, &iolock, NULL); + if (ret) + goto out_unlock; + + /* Demote similar to xfs_file_dio_write_aligned() */ + if (iolock =3D=3D XFS_IOLOCK_EXCL) { + xfs_ilock_demote(ip, XFS_IOLOCK_EXCL); + iolock =3D XFS_IOLOCK_SHARED; + } + + trace_xfs_file_direct_write(iocb, from); + ret =3D iomap_dio_rw(iocb, from, dops, &xfs_dio_write_ops, + 0, NULL, 0); + + /* + * The retry mechanism is based on the ->iomap_begin method returning + * -ENOPROTOOPT, which would be when the REQ_ATOMIC-based write is not + * possible. The REQ_ATOMIC-based method typically not be possible if + * the write spans multiple extents or the disk blocks are misaligned. + */ + if (ret =3D=3D -ENOPROTOOPT && dops =3D=3D &xfs_direct_write_iomap_ops) { + xfs_iunlock(ip, iolock); + dops =3D &xfs_atomic_write_cow_iomap_ops; + goto retry; + } + +out_unlock: + if (iolock) + xfs_iunlock(ip, iolock); + return ret; +} + /* * Handle block unaligned direct I/O writes * @@ -843,6 +909,8 @@ xfs_file_dio_write( return xfs_file_dio_write_unaligned(ip, iocb, from); if (xfs_is_zoned_inode(ip)) return xfs_file_dio_write_zoned(ip, iocb, from); + if (iocb->ki_flags & IOCB_ATOMIC) + return xfs_file_dio_write_atomic(ip, iocb, from); return xfs_file_dio_write_aligned(ip, iocb, from, &xfs_direct_write_iomap_ops, &xfs_dio_write_ops, NULL); } --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5403B21B9F4; Tue, 6 May 2025 09:07:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522474; cv=fail; b=ggbXtpMCKgemF+JYyFKtLalK7ckp9MjbhTsWxcNcvqJTrBeFb/aq53o3QPplzp6J6ArU2IqyGjgBLSHa9OoheHHFaWYVdevoA8NsXwdtOuPju8BO1IL3gXWJZH3M4gAGTjDan0+XXlQ8htYPLLulPTWLf/QdI5w5OP3DG2uE+qQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522474; c=relaxed/simple; bh=2Q7noP//YqNcUpTS31GwE9W0dikaVTWBwJK1Z5If7AM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Ve/uxIufEMNdVEPeCWljEO2o8l7Xb4TvWy2yro5+6AR44KtENL1PGfJsmhKl36rm7be19QXsEQo4oDY+Y+4XxEIGqKq1ZDo0DA6hsfDQHGT9nTp8omDUMAojV4U8qmlw9r7GeDKZmJW7sZVRAa5m5Z4YzHkcTs7K62dlUW6gUaM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=PcMUXNHa; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=HVeN16Yw; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="PcMUXNHa"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="HVeN16Yw" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468d56B000717; Tue, 6 May 2025 09:05:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=RkSB+lRZbvx5TIbvV4+syyznoMoVSzHrFg59QEqbdds=; b= PcMUXNHaVx5xXAvoOm7pyZbA3V10vJMjEQeJqxonmAWVPg4lpAhPqEz6cY5T97gT iz5UXigppcMiH9ntOm5Ay1Q2dEQcedbdfa+UujZ2J/d4D3O3z+WJ1l0CVSKruXY3 cgL2EfZzMsh64y2ucAjOHIGqYgUg9hShiBLhoqZG8Pu6aWOXabHXDVDP0aIwTyxF l8x+i3cBcczPGUyVg0HKI2YWZAwArhrID2s53lRvNZrJDENPVp99VihgKVhTX6FF nPbBJfF65I9zAD9QRAmwr9B32CW1f5hBDDsUDJh4k43dn5YI8/zt6O+I/Jd5aPYE 5tAuUC1sZ1JlsYMxACq/BQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ff3mg21h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:40 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54680ZwS035632; Tue, 6 May 2025 09:05:40 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2049.outbound.protection.outlook.com [104.47.58.49]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf06ur-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fZ8s9d90wOuCVBMVxRENllwjzgvqDXxOhbJnyTCNwXn+OQtq2TKnS5O5njqBCZLQANbrefZz1qkCgRbNRBkiIn4G12EJbACveaUVY/MTMgpzuY8Heu+Cajm0fUsVH+VJ5p+GHY28TqkXPkridF58FZ0XfcqLgpYJfqRMAs43pfI6Vp4Qmp16BlEfHWrNgOC+NIS4yXd3RZ1ViqesTrw1TnYwdKZYX5jEq07Jwj3ZLvunWvs/sH8d5/DFSHDcHYDvVKGQ0lSY7BMlFQdyYAcOS6Kk1MBUUqyZ8Y3l4kHcggTGEeMMCbdw5pbMDw2UfH+YFhhg5XznmORzdBiyzzmfdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=RkSB+lRZbvx5TIbvV4+syyznoMoVSzHrFg59QEqbdds=; b=b1WBMV6KiCeveoex/TgkO2/cy4tLSh2KaBXCES7xuvHMkUFYzIsDu7JzMjUJzzv6V/PmSAKnKhn6lYX8AYwy1cLzCIfHq646bddgXm8rqwvID+44uYbRoXxEi1GFLvIshLaeLFKXDY9maY7R72QpDRgrR1WYn6UGmLY2zLG9uTXAjNQEZQeQEpOTWdhiGXuKgqzJ/7tZlRCxQ2aR59K+Q6ckQnsUaxY73nRab6AwNFGWXCCeAUS4q+BaUIW+kVm7sIQpmtMJUe3qKYnTezD/Mlqd8deifM9mkb11MsxaRzOapxY9a4sctEq/29E8CDNH7HYFhlRglWpeQPVgV590sw== 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=RkSB+lRZbvx5TIbvV4+syyznoMoVSzHrFg59QEqbdds=; b=HVeN16YwLiCV7SVmRPTpIfYyDO22XXDRSWi3BkCJLbCPrNb0Th6J7+THpFSSkymlRqmTQzJPWrEAo7FiG4XuV0PiKXS7+0O6QZFpiMM8eY4bonA8m+IhA7EnYssJzFhqvzjC7B/O4MlxuUQfhBprdgUwuqYbIWt3mRJdgIFjjRo= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:33 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:33 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 15/17] xfs: add xfs_calc_atomic_write_unit_max() Date: Tue, 6 May 2025 09:04:25 +0000 Message-Id: <20250506090427.2549456-16-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR08CA0013.namprd08.prod.outlook.com (2603:10b6:a03:100::26) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: cf24129c-db17-4765-baae-08dd8c7d283a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?F0gWbe4WEJeQ7C61rhz+b79xA2RhTxuHR7gp7NoNVYmJNl2ioFZkl5aACJgK?= =?us-ascii?Q?tRJ492+qNw2wpakDkCMS8crzuUkxhxyWnSpRffVBVpCklyv5teN821cdF8rW?= =?us-ascii?Q?YToqbgk5WxH1dC1d+nOElVnqGO4MGuU8gXBLn3Mgt6aQnGXZPT28AFJvNsDf?= =?us-ascii?Q?enupjs8i5DGY83QuUEomfThkx0gcWUMf+Adt4OFXFP1LrzhQPfY65avBtmsA?= =?us-ascii?Q?09f4JEgu8E9l4eSB7UrstqhakrnngXzowv9QsgH5K0wBKPQAzv9X+g+moChm?= =?us-ascii?Q?lIJxmpP6hDOC1sGSoqA0ueWaNvIlVMHxO3pfoiLFbh42QGfBfrAN3KDIXpmh?= =?us-ascii?Q?0AAePjUSMr2JDqw7Msc3WW6M3cTAYXi3Hr8SrdGiPs1hKdheS7lORHxEUzR2?= =?us-ascii?Q?4IfDLG53n6v3bl9fmQOuFcTGSnid+dyIdrQ4yOOgxat1uxhS6XF9A48PUOVg?= =?us-ascii?Q?3Hs5htu5dNYbbBpuGmna2P75wcxT0Z6u0MU7zq0lVvZvEcF5Z2HEQV8EiVmy?= =?us-ascii?Q?jvUffeUhjnbJ8orLPNlXyyOI9MAeTUsQcrNU6oKLxYyM+6Sc9txsZdT8485S?= =?us-ascii?Q?lGPaoMzvf7ixfAMXPI1wyDYa7Fe6o+/9sW36a3UzZypG6Js8qI7MJJbMoWno?= =?us-ascii?Q?Othm4LvAy1L2tb151436Jk4PfEj5N3HQ9ObVY1IihlEPhci0RPm7fklVgnuP?= =?us-ascii?Q?lcXB3dsnrcZCaiqDFNYTzRS7k333vr8CVoLlfW/eXBAL/k5pgtfAff3v9XBO?= =?us-ascii?Q?zQgq5OlGtRFAl6SCdaCjTECYtPyFftI8evqKSTsa1GBKCFTA+jJGkhlp27SU?= =?us-ascii?Q?/ZaaKtmGz8zxwJhuzkbcDBYpRbVQk/QFIHuTwQ6ogzdGKOX1tb8rkzWIEHUA?= =?us-ascii?Q?Njuek/kEWnz2UXz+xZi5md3+n/Cmszwud2X9u6DbvAITqdUQqBtrObytDurl?= =?us-ascii?Q?y8lfHzMN8KKTmfymJOMUhpXq4c8d44PVT4CrmuuNb7uGn42TGbC0LZZul9rw?= =?us-ascii?Q?54ynE1dpZrSFbHeswpPNtulYYK2Sg9DxdEVffTsk6PseEP7SOKU6LFHS6vrj?= =?us-ascii?Q?/rnR0RvHBxmjtaIHX3g8a7T+1L+L3NzveqvXkviF1AHbUGbHOsS55/sxC48h?= =?us-ascii?Q?s9qXw4Krh8LYJgJt7hBigS9qSICkcSdWtFXb4bXwPdxdg4LzjUuxyWwNpKZf?= =?us-ascii?Q?kZ+2hjWh5zFDTWfC5+ghQs5C0x2zIk1iCyXzCDZtZ2LnX7pCt6a+XHbZq2ey?= =?us-ascii?Q?/kIMROLrwhzBYMITWZAiYBz51Q1aq7E5jIc4PIWKohX5j3Dv51KOuN+GH0Nu?= =?us-ascii?Q?7bmKdnwmSb3lcLOC/J5NL/8v3gKbtwGGV+0YDayq0tWXoM8PyPC0hBWn/Ds9?= =?us-ascii?Q?JmwTuNkbajVvbiztjlA1oqbhvkru28J/xOlh3yaY2S54QruSLv3hHElEzeU6?= =?us-ascii?Q?jXJQINTxdfA=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZPzUoz8jvNZNL22MC5RKfJ1I4OpulGiOv4KOXnPjPxtzNysAJL8a0tbqTArf?= =?us-ascii?Q?y9g7nhrxKxKDBUFPMMPN5qGw98B+9EXkKIObSMYlit+fhQP7TzlfLEDjMUGf?= =?us-ascii?Q?emSEVdSqlZckXPqdS9wSK76rnA0bATDTigM2q8LG+ZrUPwDYX5TI9sz6g/bV?= =?us-ascii?Q?XoPHhGTMS0UTTdkeTFFhGO9D2L2qPi36bD5+9l0KwVkuSWPAyBYdvPvjcRhz?= =?us-ascii?Q?iKwd9x0mF2HJvYqgQoS2YLmrrM0dOICIohP8ePd2rb6T4VZukEI+X6RTWtke?= =?us-ascii?Q?WPnjjhYrZCecLtti52bJVdji7/0QNRY+DKiYpnIxo6OtYz8Yz8JvLdI4CGi2?= =?us-ascii?Q?gdQOGRB1S42dIigdbkA0TWEghnP9tvGzyO8GIJgqs5vwUkbnn1079u7ZFTdc?= =?us-ascii?Q?ggWQynzi0aQqlHKTXTwadESn8f6813+NYYQMjzJhNJy2TXQC/46XxQO5rSTx?= =?us-ascii?Q?nKVpNyq7aqLZMRzfxXma3FdN8Slh2dmufwSQCWGxsQO8kgHOftc16GceXfAs?= =?us-ascii?Q?xUZUYD2ZoQXC1iiXNaWhhzpW6ibUXgzvpTWCf8Z8OajWZXRgywZaWnvaaa7E?= =?us-ascii?Q?b2aZ8A8BapKQfqSEdMeadLC3b2hsj2BkWol2dhOnHaJLBsYTBLxy+vDYARIf?= =?us-ascii?Q?54MBQow5yO4VVvGM8Y4TveIUJYbGBDK4BqSv45/RiVN4F/TUyBHdJAm+470d?= =?us-ascii?Q?JxnO5CuHwuxE8bLyBhVHl6RwHvyHWITDfRZu/dakR3A3IUJGD+MqiTB0rZ6H?= =?us-ascii?Q?PIYUDkJgKEGqh4htqzyBhakioGQrnN8yizeOypDWl31LGVvNWn5u1xuSGRqa?= =?us-ascii?Q?86N2K6pVWwLA5yrep4bC1LrUqju2LGeQzhMA95YcXP9WnQnwqOhXl019NGBp?= =?us-ascii?Q?oarieLudUs4vqzqgpI0GEQ7oXCnadyL9cXmYx3alBawRQUwUGt57m4SMQ7yh?= =?us-ascii?Q?bfyUMYc4YnRgl6mjuAiNfoCYtQoxZowE9T7N7FSM3ZB6QUbrLnM6x8G3vf8M?= =?us-ascii?Q?TuuKk0tdueLXJ60jwwHxF5xwY8gA3/hxEmMdQinKLRtoqXvL86s2Y3C91FI+?= =?us-ascii?Q?7WPkF5pSz6b5hU3KxsphaoKRha6pnGHVQOxlcPxmtKMw0EnVz/EIxPZCuGZs?= =?us-ascii?Q?CUqynoakURPPI+PRJrTXoK/Lkq+eEXET3d40dqEebwtEq6gAhg944uVB/bqI?= =?us-ascii?Q?yfUt8ga3GbGOpZ4SG9nRcnXjYX2T1HZtt3Jg2g4V8ewHK4grkEf+7LwTtHvY?= =?us-ascii?Q?tcpYnCyqe7RM/CCamM6jfyuGDv7PiBf0Dfx7CtKFIpJAprGWst3ZcjubI0Wm?= =?us-ascii?Q?gsixywmMrslwyqemGxYSd1Ez6UHmtZxbzlb06wsFUNVmxc+322jOysNqS7Ou?= =?us-ascii?Q?4gDO0442HlW+AQ6D15B8nNIFvBC+9d/jazT+sRc4AENeWFiMHWiVAEAXJjY7?= =?us-ascii?Q?HSBt5DsfYTIVniD2Jh0Oap3U+0WGtrpCcD1KYtXa1zSWmfq0kDw4yLsdVIaE?= =?us-ascii?Q?lwvdZatHW8xvnScadY/Sy7oY8H6pu2bkoaxhoq5tzVB8EzfpKwrEvsZHHkA5?= =?us-ascii?Q?cgsKaAvU/uYI1gZNkv5zNv6PbRX6c9W1x2dReNfru4LWzaAQWAePHrb7MjFQ?= =?us-ascii?Q?pQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: u9pNI3WjkdqpGo6WDIUV+I3Wu2LlGNBIjwBKwmsKChHb/eh06EKeNFROTC/NI/A4+qFDb1rW6FOGNcIjVoQ9wtt6HPDhDuxletBZF6P/z/BHOvhmppoQNttelQFls/fwdgEmt6J976J7FR6pOHPWhMdE84rz1W78GcmVUSuAWWRQILX3YKqStstNfb4qAhPtMCDzjxaRInd+dERdr8OvwoaADYOJBbxKJOAjxrozdcC+CmgyvqfRH2EuS4n7AUy+0eaDsz3RHrA+LCa0OEyzluqG5snEkiLsfU44pazvpJIt8rkF9QWebbercggAoyReuFVKQIeVwGTNO+aFDufe0yj/OLfpK694lrXIZPKyr3zlLAGC/uzOHI9Ean+4Ji4/vbMVsnutqb5HnWOet0A4hkNnR6JJT+dFw5INbW/oM8unRxHFINelqn27rvT6GeKi+dM3o02ZyOxKT9AMSGRIf453XolzCQhMX7mLd0Sbka9Kx+83htFmFJBtPSWba9zWb3nL6OxLt1xpQfhxsPyobBpywcdQ28PZMUSAcvcFDn0Wla1GSL4AnKfqcT6Ec1Aya/fO2E0AeLSmBW/pPiwzwTbpFRDIrV0ruyiuVONUT8k= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: cf24129c-db17-4765-baae-08dd8c7d283a X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:33.2157 (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: CxJK+TF2DwWV/amW0hbNr4ZIebGWqW8t+3HX0aYd55F7GmqAaC0yNRls5Rv+MqduDkvMxG3rt+0/6x8Z08M/pA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Authority-Analysis: v=2.4 cv=e84GSbp/ c=1 sm=1 tr=0 ts=6819d0e5 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=PHD7Guh85veGlZlmIGYA:9 cc=ntf awl=host:13130 X-Proofpoint-ORIG-GUID: HWxDtnlqWSORoLV4HbUe4-5M8hPcd8ME X-Proofpoint-GUID: HWxDtnlqWSORoLV4HbUe4-5M8hPcd8ME X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX120xb1lyV2gB b1HWnmwOrXr5OZnHdwDuONWrhW+lHsqALa5E3g0e+3CEioVkyF7JF/2WJhpCJ42qRUICv2ELs9M XII9LYeabZbrJQUaSM23NVTaQsTXVwTv/0Y5+otGmpcp1rV+n+Tg46HKKEgok5fzFS9q/j2fyoj 7AsMgTnmzOEjFQEtuJafAgbLSBvByiCHbK1ZNb86AUD4250ZSJxrA8K3OcxGsZORevhXZvZstwl ZtSnhhE8DUM+7cWKGlMRrd8M8br6Bjq13ZJek2sWAQhGvEEBpcrLyPwVqUz+cPuXB9GyxxaxN04 ntRqiLCwj3ogb3VNW9ARs+qmWDtR4NDjNi4IMGUbWCvrQFWlAVp0BgbJHHQh82de+cPpxyM1gWc octureu6hQaACNNDEqyYLVW1jv6RRnDxEv+Zs8V58o13kqmheSVmqfIAQfSdqAU+AewRpiNR Content-Type: text/plain; charset="utf-8" Now that CoW-based atomic writes are supported, update the max size of an atomic write for the data device. The limit of a CoW-based atomic write will be the limit of the number of logitems which can fit into a single transaction. In addition, the max atomic write size needs to be aligned to the agsize. Limit the size of atomic writes to the greatest power-of-two factor of the agsize so that allocations for an atomic write will always be aligned compatibly with the alignment requirements of the storage. Function xfs_atomic_write_logitems() is added to find the limit the number of log items which can fit in a single transaction. Amend the max atomic write computation to create a new transaction reservation type, and compute the maximum size of an atomic write completion (in fsblocks) based on this new transaction reservation. Initially, tr_atomic_write is a clone of tr_itruncate, which provides a reasonable level of parallelism. In the next patch, we'll add a mount option so that sysadmins can configure their own limits. [djwong: use a new reservation type for atomic write ioends, refactor group limit calculations] Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong [jpg: rounddown power-of-2 always] Reviewed-by: Christoph Hellwig Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_trans_resv.c | 94 ++++++++++++++++++++++++++++++++++ fs/xfs/libxfs/xfs_trans_resv.h | 2 + fs/xfs/xfs_mount.c | 83 ++++++++++++++++++++++++++++++ fs/xfs/xfs_mount.h | 6 +++ fs/xfs/xfs_reflink.c | 16 ++++++ fs/xfs/xfs_reflink.h | 2 + fs/xfs/xfs_trace.h | 60 ++++++++++++++++++++++ 7 files changed, 263 insertions(+) diff --git a/fs/xfs/libxfs/xfs_trans_resv.c b/fs/xfs/libxfs/xfs_trans_resv.c index a841432abf83..e73c09fbd24c 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.c +++ b/fs/xfs/libxfs/xfs_trans_resv.c @@ -22,6 +22,12 @@ #include "xfs_rtbitmap.h" #include "xfs_attr_item.h" #include "xfs_log.h" +#include "xfs_defer.h" +#include "xfs_bmap_item.h" +#include "xfs_extfree_item.h" +#include "xfs_rmap_item.h" +#include "xfs_refcount_item.h" +#include "xfs_trace.h" =20 #define _ALLOC true #define _FREE false @@ -1394,3 +1400,91 @@ xfs_trans_resv_calc( */ xfs_calc_default_atomic_ioend_reservation(mp, resp); } + +/* + * Return the per-extent and fixed transaction reservation sizes needed to + * complete an atomic write. + */ +STATIC unsigned int +xfs_calc_atomic_write_ioend_geometry( + struct xfs_mount *mp, + unsigned int *step_size) +{ + const unsigned int efi =3D xfs_efi_log_space(1); + const unsigned int efd =3D xfs_efd_log_space(1); + const unsigned int rui =3D xfs_rui_log_space(1); + const unsigned int rud =3D xfs_rud_log_space(); + const unsigned int cui =3D xfs_cui_log_space(1); + const unsigned int cud =3D xfs_cud_log_space(); + const unsigned int bui =3D xfs_bui_log_space(1); + const unsigned int bud =3D xfs_bud_log_space(); + + /* + * Maximum overhead to complete an atomic write ioend in software: + * remove data fork extent + remove cow fork extent + map extent into + * data fork. + * + * tx0: Creates a BUI and a CUI and that's all it needs. + * + * tx1: Roll to finish the BUI. Need space for the BUD, an RUI, and + * enough space to relog the CUI (=3D=3D CUI + CUD). + * + * tx2: Roll again to finish the RUI. Need space for the RUD and space + * to relog the CUI. + * + * tx3: Roll again, need space for the CUD and possibly a new EFI. + * + * tx4: Roll again, need space for an EFD. + * + * If the extent referenced by the pair of BUI/CUI items is not the one + * being currently processed, then we need to reserve space to relog + * both items. + */ + const unsigned int tx0 =3D bui + cui; + const unsigned int tx1 =3D bud + rui + cui + cud; + const unsigned int tx2 =3D rud + cui + cud; + const unsigned int tx3 =3D cud + efi; + const unsigned int tx4 =3D efd; + const unsigned int relog =3D bui + bud + cui + cud; + + const unsigned int per_intent =3D max(max3(tx0, tx1, tx2), + max3(tx3, tx4, relog)); + + /* Overhead to finish one step of each intent item type */ + const unsigned int f1 =3D xfs_calc_finish_efi_reservation(mp, 1); + const unsigned int f2 =3D xfs_calc_finish_rui_reservation(mp, 1); + const unsigned int f3 =3D xfs_calc_finish_cui_reservation(mp, 1); + const unsigned int f4 =3D xfs_calc_finish_bui_reservation(mp, 1); + + /* We only finish one item per transaction in a chain */ + *step_size =3D max(f4, max3(f1, f2, f3)); + + return per_intent; +} + +/* + * Compute the maximum size (in fsblocks) of atomic writes that we can com= plete + * given the existing log reservations. + */ +xfs_extlen_t +xfs_calc_max_atomic_write_fsblocks( + struct xfs_mount *mp) +{ + const struct xfs_trans_res *resv =3D &M_RES(mp)->tr_atomic_ioend; + unsigned int per_intent =3D 0; + unsigned int step_size =3D 0; + unsigned int ret =3D 0; + + if (resv->tr_logres > 0) { + per_intent =3D xfs_calc_atomic_write_ioend_geometry(mp, + &step_size); + + if (resv->tr_logres >=3D step_size) + ret =3D (resv->tr_logres - step_size) / per_intent; + } + + trace_xfs_calc_max_atomic_write_fsblocks(mp, per_intent, step_size, + resv->tr_logres, ret); + + return ret; +} diff --git a/fs/xfs/libxfs/xfs_trans_resv.h b/fs/xfs/libxfs/xfs_trans_resv.h index 670045d417a6..a6d303b83688 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.h +++ b/fs/xfs/libxfs/xfs_trans_resv.h @@ -121,4 +121,6 @@ unsigned int xfs_calc_itruncate_reservation_minlogsize(= struct xfs_mount *mp); unsigned int xfs_calc_write_reservation_minlogsize(struct xfs_mount *mp); unsigned int xfs_calc_qm_dqalloc_reservation_minlogsize(struct xfs_mount *= mp); =20 +xfs_extlen_t xfs_calc_max_atomic_write_fsblocks(struct xfs_mount *mp); + #endif /* __XFS_TRANS_RESV_H__ */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 00b53f479ece..86089e27b8e7 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -666,6 +666,82 @@ xfs_agbtree_compute_maxlevels( mp->m_agbtree_maxlevels =3D max(levels, mp->m_refc_maxlevels); } =20 +/* Maximum atomic write IO size that the kernel allows. */ +static inline xfs_extlen_t xfs_calc_atomic_write_max(struct xfs_mount *mp) +{ + return rounddown_pow_of_two(XFS_B_TO_FSB(mp, MAX_RW_COUNT)); +} + +static inline unsigned int max_pow_of_two_factor(const unsigned int nr) +{ + return 1 << (ffs(nr) - 1); +} + +/* + * If the data device advertises atomic write support, limit the size of d= ata + * device atomic writes to the greatest power-of-two factor of the AG size= so + * that every atomic write unit aligns with the start of every AG. This is + * required so that the per-AG allocations for an atomic write will always= be + * aligned compatibly with the alignment requirements of the storage. + * + * If the data device doesn't advertise atomic writes, then there are no + * alignment restrictions and the largest out-of-place write we can do + * ourselves is the number of blocks that user files can allocate from any= AG. + */ +static inline xfs_extlen_t xfs_calc_perag_awu_max(struct xfs_mount *mp) +{ + if (mp->m_ddev_targp->bt_bdev_awu_min > 0) + return max_pow_of_two_factor(mp->m_sb.sb_agblocks); + return rounddown_pow_of_two(mp->m_ag_max_usable); +} + +/* + * Reflink on the realtime device requires rtgroups, and atomic writes req= uire + * reflink. + * + * If the realtime device advertises atomic write support, limit the size = of + * data device atomic writes to the greatest power-of-two factor of the rt= group + * size so that every atomic write unit aligns with the start of every rtg= roup. + * This is required so that the per-rtgroup allocations for an atomic write + * will always be aligned compatibly with the alignment requirements of the + * storage. + * + * If the rt device doesn't advertise atomic writes, then there are no + * alignment restrictions and the largest out-of-place write we can do + * ourselves is the number of blocks that user files can allocate from any + * rtgroup. + */ +static inline xfs_extlen_t xfs_calc_rtgroup_awu_max(struct xfs_mount *mp) +{ + struct xfs_groups *rgs =3D &mp->m_groups[XG_TYPE_RTG]; + + if (rgs->blocks =3D=3D 0) + return 0; + if (mp->m_rtdev_targp && mp->m_rtdev_targp->bt_bdev_awu_min > 0) + return max_pow_of_two_factor(rgs->blocks); + return rounddown_pow_of_two(rgs->blocks); +} + +/* Compute the maximum atomic write unit size for each section. */ +static inline void +xfs_calc_atomic_write_unit_max( + struct xfs_mount *mp) +{ + struct xfs_groups *ags =3D &mp->m_groups[XG_TYPE_AG]; + struct xfs_groups *rgs =3D &mp->m_groups[XG_TYPE_RTG]; + + const xfs_extlen_t max_write =3D xfs_calc_atomic_write_max(mp); + const xfs_extlen_t max_ioend =3D xfs_reflink_max_atomic_cow(mp); + const xfs_extlen_t max_agsize =3D xfs_calc_perag_awu_max(mp); + const xfs_extlen_t max_rgsize =3D xfs_calc_rtgroup_awu_max(mp); + + ags->awu_max =3D min3(max_write, max_ioend, max_agsize); + rgs->awu_max =3D min3(max_write, max_ioend, max_rgsize); + + trace_xfs_calc_atomic_write_unit_max(mp, max_write, max_ioend, + max_agsize, max_rgsize); +} + /* Compute maximum possible height for realtime btree types for this fs. */ static inline void xfs_rtbtree_compute_maxlevels( @@ -1082,6 +1158,13 @@ xfs_mountfs( xfs_zone_gc_start(mp); } =20 + /* + * Pre-calculate atomic write unit max. This involves computations + * derived from transaction reservations, so we must do this after the + * log is fully initialized. + */ + xfs_calc_atomic_write_unit_max(mp); + return 0; =20 out_agresv: diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index e67bc3e91f98..e2abf31438e0 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -119,6 +119,12 @@ struct xfs_groups { * SMR hard drives. */ xfs_fsblock_t start_fsb; + + /* + * Maximum length of an atomic write for files stored in this + * collection of allocation groups, in fsblocks. + */ + xfs_extlen_t awu_max; }; =20 struct xfs_freecounter { diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index 218dee76768b..ad3bcb76d805 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -1040,6 +1040,22 @@ xfs_reflink_end_atomic_cow( return error; } =20 +/* Compute the largest atomic write that we can complete through software.= */ +xfs_extlen_t +xfs_reflink_max_atomic_cow( + struct xfs_mount *mp) +{ + /* We cannot do any atomic writes without out of place writes. */ + if (!xfs_can_sw_atomic_write(mp)) + return 0; + + /* + * Atomic write limits must always be a power-of-2, according to + * generic_atomic_write_valid. + */ + return rounddown_pow_of_two(xfs_calc_max_atomic_write_fsblocks(mp)); +} + /* * Free all CoW staging blocks that are still referenced by the ondisk ref= count * metadata. The ondisk metadata does not track which inode created the diff --git a/fs/xfs/xfs_reflink.h b/fs/xfs/xfs_reflink.h index 412e9b6f2082..36cda724da89 100644 --- a/fs/xfs/xfs_reflink.h +++ b/fs/xfs/xfs_reflink.h @@ -68,4 +68,6 @@ extern int xfs_reflink_update_dest(struct xfs_inode *dest= , xfs_off_t newlen, =20 bool xfs_reflink_supports_rextsize(struct xfs_mount *mp, unsigned int rext= size); =20 +xfs_extlen_t xfs_reflink_max_atomic_cow(struct xfs_mount *mp); + #endif /* __XFS_REFLINK_H */ diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index 9554578c6da4..d5ae00f8e04c 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -170,6 +170,66 @@ DEFINE_ATTR_LIST_EVENT(xfs_attr_list_notfound); DEFINE_ATTR_LIST_EVENT(xfs_attr_leaf_list); DEFINE_ATTR_LIST_EVENT(xfs_attr_node_list); =20 +TRACE_EVENT(xfs_calc_atomic_write_unit_max, + TP_PROTO(struct xfs_mount *mp, unsigned int max_write, + unsigned int max_ioend, unsigned int max_agsize, + unsigned int max_rgsize), + TP_ARGS(mp, max_write, max_ioend, max_agsize, max_rgsize), + TP_STRUCT__entry( + __field(dev_t, dev) + __field(unsigned int, max_write) + __field(unsigned int, max_ioend) + __field(unsigned int, max_agsize) + __field(unsigned int, max_rgsize) + __field(unsigned int, data_awu_max) + __field(unsigned int, rt_awu_max) + ), + TP_fast_assign( + __entry->dev =3D mp->m_super->s_dev; + __entry->max_write =3D max_write; + __entry->max_ioend =3D max_ioend; + __entry->max_agsize =3D max_agsize; + __entry->max_rgsize =3D max_rgsize; + __entry->data_awu_max =3D mp->m_groups[XG_TYPE_AG].awu_max; + __entry->rt_awu_max =3D mp->m_groups[XG_TYPE_RTG].awu_max; + ), + TP_printk("dev %d:%d max_write %u max_ioend %u max_agsize %u max_rgsize %= u data_awu_max %u rt_awu_max %u", + MAJOR(__entry->dev), MINOR(__entry->dev), + __entry->max_write, + __entry->max_ioend, + __entry->max_agsize, + __entry->max_rgsize, + __entry->data_awu_max, + __entry->rt_awu_max) +); + +TRACE_EVENT(xfs_calc_max_atomic_write_fsblocks, + TP_PROTO(struct xfs_mount *mp, unsigned int per_intent, + unsigned int step_size, unsigned int logres, + unsigned int blockcount), + TP_ARGS(mp, per_intent, step_size, logres, blockcount), + TP_STRUCT__entry( + __field(dev_t, dev) + __field(unsigned int, per_intent) + __field(unsigned int, step_size) + __field(unsigned int, logres) + __field(unsigned int, blockcount) + ), + TP_fast_assign( + __entry->dev =3D mp->m_super->s_dev; + __entry->per_intent =3D per_intent; + __entry->step_size =3D step_size; + __entry->logres =3D logres; + __entry->blockcount =3D blockcount; + ), + TP_printk("dev %d:%d per_intent %u step_size %u logres %u blockcount %u", + MAJOR(__entry->dev), MINOR(__entry->dev), + __entry->per_intent, + __entry->step_size, + __entry->logres, + __entry->blockcount) +); + TRACE_EVENT(xlog_intent_recovery_failed, TP_PROTO(struct xfs_mount *mp, const struct xfs_defer_op_type *ops, int error), --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E1CAA274FC8; Tue, 6 May 2025 09:08:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522502; cv=fail; b=jobkk7Lb/q4UTC6ikFSDUyT7kZqSX/E2evJ7fSH0utJVHXajayDVxgkJvuGH0n9OBx56E6sKIfrmVedDB31Ae45NY3eHJV6w/Ee2hi7P/ghGdGBCtROaBdMY5iFz5Orv/lqEVwKH8f11IZqDh/qqH/TFQoQjxYHFl5qXLpedSGo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522502; c=relaxed/simple; bh=e8Rx4wKUghn5UbLRBAKEFYhg4Sjn+njknH+/5eTBz8g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=dh9bzqhfB7+K4E+pFIRwkF+/U46+o8/J+60tVD2P8DMWubmAl6/swPSTF/yfcQlBtBMo+ReCsdbb/9nB+yn+fKvAQlz843TXiWI7r2FbWGPRCxHQq4szrCCc6wY3IFE8UzM2axgvNfoKNLyV+DF5n1H79bA+3Pho1TgieUxzIDw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=IP/Wi5dU; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=FWfgY1Zn; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="IP/Wi5dU"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="FWfgY1Zn" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54682GHX003156; Tue, 6 May 2025 09:05:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=dh4Wq2DGZT38tbuOYyxQeOzVJZYDrAG4YDFkbHawV2U=; b= IP/Wi5dUdItGJRRTDXa6YuxkbMJhK1R+f9OuUxmJQpizjJMGhNkDtTVPTPLQKXDg YrWPkqEia2Ay3XvuUzsHAkRrWZVQ5NKd2nKYoycKULiO2W7h18EBmU7kTSC1Vl/M jpDdYXOIaDHBaO5lkYXqWMfG4b/WBFXxgwxjoIehobEqjARdvQn8JZA6BeCCy2Oh mmPb0j/dD99gWngrCO+3dd8j+zJC6PxQq1glHeo8eZSKuWI1969unk0foajy5OWV gMvQVpCjJhGia54eMpEEguG9uyonXZwXVaa4jSr+PIsiGyfDrcuYHfXxD6eug4Fu 8F/hgK+8Gk4/cVhoDzMqZw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46fejbr4wj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:42 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54680ZwT035632; Tue, 6 May 2025 09:05:41 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2049.outbound.protection.outlook.com [104.47.58.49]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kf06ur-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=s4/MlxzC+ILiC45ExtKWQx+J3HJd8/6lQmgrQUADh/XsZ83CFQqC8k5Vd+pg7qB1vfNLXrQj9rccfYcGsxIOEhJtBHwkxxmxkqwNUO+6ZqAAIh/7Pg227y/4ecDSpmCmom7zd3RuXvScMN2uMji9hntH8dB/DoeKkeeFJnvUslWqKwuYWtSTmcghlK32gMsTG4jhsIsnQvhu+1Fu4oKGv0WfZfByeXItf8ECgYXggmD4tg7XR5uewRtZnjXzyM5VDjUfQfNrmQcgpt+wlOKsBtFkOxFq19PlNNjqEO5Cvak3vt7aTz3l13CXQdam7IUsy6UoJqi+yxvfu/1fnls8dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=dh4Wq2DGZT38tbuOYyxQeOzVJZYDrAG4YDFkbHawV2U=; b=Q58ivfxrcNmU9HCSnlu4WTATuHVLJZ4XnL7je81l2QKyBcVIu2App/63FfE6EGNAOQbCu6AytZIrfMJj0wwM52S9pPHVKxjzbbjBCbIX9qlOQ+/JnMVUEe4niRAFgqYip5F6aeenHgD4RGU44sB8DLCyXrUbgzoXRFEU2DXCOpkoG/RU1VTMqY7LIJ76C1NV7BAoC+EghQy0pcty8g2XwufMpNjsyPgZ7BxOGsRH96iWJ58oEySvtZ+vK1YhqbWPIyfxWThgN0MpQDCUkLA0cYnsOVy/CsHY14czRG4zN28BiKqS/WI+isI6qMGA2QTJNl9JFbE/h+aRMWV6cpcjVg== 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=dh4Wq2DGZT38tbuOYyxQeOzVJZYDrAG4YDFkbHawV2U=; b=FWfgY1Znr92vdXKdrf1ywbuqf3AicIQbbFUghXdDOBZFCKOpJax95RWTNzy0jhzisw/9Cxpg6XpjVuN/PeFigS++XZPFNoDkiUGy+7KSFcfRXjxDyJ5S4ff2ZlSIjiWy393mgRUkfC9LdVg4BQpj3BNPwRCheQjI+sZFM4hRgNg= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:35 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:35 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 16/17] xfs: update atomic write limits Date: Tue, 6 May 2025 09:04:26 +0000 Message-Id: <20250506090427.2549456-17-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR16CA0020.namprd16.prod.outlook.com (2603:10b6:a03:1a0::33) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: 44320426-9cb6-4f39-b262-08dd8c7d298d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?i7p/61rfV2bitLJlGed0sAY9Rguh5xDvBvAEpImI1GvICXOr8npCYBJPSGV4?= =?us-ascii?Q?ez4XfbB7Klj3Sus4GKam9QgT5bEPOCpTqAJl4M/jCxDDa8elHgYCVCcDRrfW?= =?us-ascii?Q?9Dd79G2OrPnUME7Wl5TvgYgkanPbEz+3CcgXomZabAnCUa4TQLYZ8KjVPAe+?= =?us-ascii?Q?IB6dwe7O95GgILLcHCN8l16JRcfplXZTIQZRUQys3ugc8WxfJ+sNGBJMhKWd?= =?us-ascii?Q?gWDrXJN7TIE7NuO3bnwEHvGbSMf0bfuzCGjonY39XGp/7UhudrdGjNOOVKwB?= =?us-ascii?Q?6nejbbo37ISSgsRAus6oa+DdpeFsFHeTn+otzvMuznMumCVxClXOh90appwK?= =?us-ascii?Q?XGz0FkDW2z9PREaM+14nL63wyKC/u9n4poZAD1eqNG1cALhOqbG8mCJ/zGHG?= =?us-ascii?Q?EIp537eRQiph4eUStCFh9SxEWcHkTu3iwChwFfJagrTAyeI0DPiE2I8tRpfK?= =?us-ascii?Q?MckrZksHO2K7twmeFMmtbp3gWrdi2gFkltA50qfGU+ggpXOPF5JMWPIlcEY+?= =?us-ascii?Q?h5DCh6ZEx4ep4oQmIoY1OFamNFcbzQXpNppaUFK6tRJr0o8QEqlr86dFytaY?= =?us-ascii?Q?LiQhrgbAWEhtnH3qrRQF1UCSPy1UrU86zVpLTmJ/4xHgY/OFXMOVX4Iue4jQ?= =?us-ascii?Q?Hv+G8WyMpZGHPd8Qd0dxZsf9KJpAdv41n7uRCM3CZ+JPBsRV2aD6bbhT8CX6?= =?us-ascii?Q?2EwGABkw0c//ljLbUyvOhS6f9VDnJOsWFvUGemwNT82CLcdpRvvnJvnHpLEL?= =?us-ascii?Q?HWuPpvKq2AaOYfI62mBIK6T3ZgiymO8NfVcRYPH/14jpnaqbkL6qkBLBKBh0?= =?us-ascii?Q?oJDIJEPjvSJjWwGlwWwiNfSTqG6F+GV2pYpuCxF3IBLywXKiF0O1gwLxuiA4?= =?us-ascii?Q?95qPR5zJkB52frouaph8UjnoLsSxlMN2ZJLC5JXkv/tyIpYUJ0clVcxus1iO?= =?us-ascii?Q?kUgOCAHBNxZT+opZeICQiMcqP3j2emGvRbCs0pPQMcSjPl//ix66ewF4SbAP?= =?us-ascii?Q?WgbJ8BfNhBd6v+98umFjfrV68sy37VVnPt6bP/wTmQnOBFbdJzg1EpRAq7cN?= =?us-ascii?Q?/5OLHSbVxECIveHJkMLAxGEL68j+ZkazBHGt30fSknhfCuH/SZ8AKjGWuvDj?= =?us-ascii?Q?4vVBAt/0jI6k0LKCijFtTxWQW7YtGBm+5tUNh42SmTRznIF5zZml5mUlQFCD?= =?us-ascii?Q?WNN9PgWMJWNKHO76xuQwCZy/lIoZCqLinGq54uJKT/Ab5ZieCSQbSVg5C/KC?= =?us-ascii?Q?N73jBed9AWl2l+rm5b4gieZNVyJTH4Y9wNxvufevucgznj5LogN662OdTepG?= =?us-ascii?Q?4PdNJSg0tRJlEm31EYPDF6RPMHxE4MJP5R5r6S+aA8ZkQMHdle7ABluoAVxE?= =?us-ascii?Q?84tgHw8RqQVbrF0uCnkmwkPimyoEMM95NReSDlUleqWH0UVMmw=3D=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iduc0TqGD41AL2/QwHJ8wkVR9meKYsTo4OpfYKfi1RHoQvHQoScLcuwOrcAh?= =?us-ascii?Q?9y4lGS8kZcf1GUuWZCIfJOyVIE7l2SLRgfZHCA37ypmneO79pCW8PujpRaU+?= =?us-ascii?Q?+XkdSGXTIl7Fky+aIkokKsvnr/R8yoIcEcZEAJ3nwbm4ndfIKzrfJiLNjy9g?= =?us-ascii?Q?R2/sWiclWFyI3UitUkEajNoMDS5UGXwkZjPP3a7QnT1hP7AFSgKESGS7BBu2?= =?us-ascii?Q?ywDIXyZLHRuy0Bh6CsE5rwtbu+5y65tjrgxdhSTsPjTxDXzvI62glDiFnonO?= =?us-ascii?Q?ZaZlRZZpxwVtrynDSgEGleRYDfpm95chQOPmwV+OWqJkuxTXM/xozGZKNGBo?= =?us-ascii?Q?XZ3UeXKDOAqVUZLHnoDZMZsP3Qvj/VJVufhyhz0r0dlv4tS37ICYQqgicdBy?= =?us-ascii?Q?yv6qoAGny7Q1MfeHFH0gXCbupIy7BL6PTVUiHBE66mvfpiCXRaV1+MIZknhL?= =?us-ascii?Q?jg56jdVxyFEeHP+/ToEE0YlIiiYqKaqftmRbfgheKN+GAtOaEDtTMWyt0ynA?= =?us-ascii?Q?kojvkaLgBzQThYJvPGC/UXqpOlrp0FzL90N1G4AbNui3qFogH1z/lulU/HFY?= =?us-ascii?Q?X3HLPyw/MezgiQpq8RfiFJS1DB9NeZgjrIuDGDiCaBsDUnwLAJQMPIiPmY59?= =?us-ascii?Q?YEs06AUNlkS3WPuIQ6TUA1Y52nK8rt5jK6Xi5UKO8nCkjB8P12qiYnhH1/Mi?= =?us-ascii?Q?qzxZN6zav+3h6NKAvbdnfBQnydAhO3zF75Fr7MbiIm9bCdcPwEDDqmH378LP?= =?us-ascii?Q?uSIuzS0bBsKbCc303V+YVL7fXqQDhtWoibGqnszXQ5dY5CA+rqGFn67CJFKT?= =?us-ascii?Q?rgDB1Sb7smEstqtGJQYVXjOz7tqgP0zW1By2aVsx2Xi41LH+/BKSzDsYib6h?= =?us-ascii?Q?OjBtK8oKnMKsK3+JVwOhMPy4rvL+hw0cW4apSz/xIMYSh2IiQ/qfh8NoNAEs?= =?us-ascii?Q?280vjtliiE3Rz6661aRcKyQMpCjlFHQIeIon48C4ABGXSmFxdFRm+LeFm32Y?= =?us-ascii?Q?CY7IH0GgTNDbUO/n8cs4tfcFWDZXSwu4mjfyGN//cEZH2dcAp6qQUXBPucxf?= =?us-ascii?Q?oeqLxUtdd3eSBOnlD74hom2EnDAjTpuwx81UPws2RnY7IRyqzX54dBydajVJ?= =?us-ascii?Q?JRN6Pok5LwIHzxFE0vOmTQqD8nybjiarKnB7Kxl4CCJGCINTJdA7Fe92VLgQ?= =?us-ascii?Q?XH8xQ1GuOY1kKXUV1pUpwk1xbSoyeIkre4Lli8JDCPU2rRnF6VpXs3060ByB?= =?us-ascii?Q?qOBBAfqY3oR+t9tcPf6USx7MtNoh9rkwHXQcyjhZ+bXucf5aBnZRLGCsiE0b?= =?us-ascii?Q?Yyqa/8+zVUuaqAbhPU+clU9TRaO7R2nz0u/nVNu4QwL8+ccLYxgq3PiVr1Eb?= =?us-ascii?Q?C07pcyZe281ERVgmg7NGu5KHyc8X/aUOuPvON81b1Ab7OUdFZhUQJjudt4wS?= =?us-ascii?Q?xlgT90Tz3YTpx+d/HyE5c2wyDgjbU4JRItp0OAObvv7QhkZkZpJCbh7XLoLx?= =?us-ascii?Q?vTGC0tKA0UU09p7Jm2A/bi2/FIibrk8D9qFUBkWlCOqz3MtK2lbpDXde5Xk9?= =?us-ascii?Q?8jQzk2e+7NqpvstlyP5uAhJbvakWka6dEyUIEz2UQR/Sr2EMQ6su+y+gkY7h?= =?us-ascii?Q?5g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 3gBs4OUoAuEnLBDN7dIfdBHefGDqxeKVpUusPZYUHAP1Og03NfFHSRt9xMT7bdKzDIeoiC7ns8dyk3n/+VbRhFCWwcjiWml+rctqzrN1FaeXw79CjiqkGW+jVy8o6U8IxxJMr9OM2OE5RNOvV9x5p3khdohSpU6J+ZNak7EQmPROkl6WwqWUeSM/Sa9FyerdO2DRKg48ZQsU7X5UiMh7A14a/1LYOU6evllgpLvLg7CZJIC1bZHzAXcEzqNYIqo2R+sGb2h8JrQtD3360usqi5LruE9XyJ1xW0Y6bCKQtTw/7glI0QEVoBIvE7YehJpzummjTHLsstQ6xTjwB5JtuggUzJasP8gqudL6xDv1FQ1dVd/BcGzu9SWV9t5HpJf9Eeh12c/PjJICuSfOZlTejdyd7yRFXGJOpZaqjc0LzEMUrJz84///BiKivDFFT+VRurNtulL5XlbT6Ri6Rk6Wyrvv3RRdhGIzQ8FOkmlz7L8V86Y/L576k5TxjuIXiFUp8sZNGo+HFT7yu7lgy0gWQUWfUW4LNiRaJm4XwX9itjZ3l1GFqHvFfCR5zDGzZRyG0ofLWYaftOV6UbXMxCYVlYkATJe1oXj9VRHwhlVaEW0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44320426-9cb6-4f39-b262-08dd8c7d298d X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:35.4632 (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: iroAEKkLC3eioQSEKu+rUzLv76yNwZweGQ0FkDzohXWMnY572xIZE5DCqBZpwQDVVPx3zS8RLvD+dJ5Gpm+5IQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 bulkscore=0 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-GUID: hUJ6OOytBxHAAQsBwuVRUWoKMKCdP-B9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfXxlnXZLq7QQBJ y46XQ56dVWc9VJsNJ2DHgxpOvgJXUVLcAh/dXafSMzEFSKoKpDRJX1NBV7a9vn3QvqwGQi6G/D7 aPChF21VE4D7274nutxo3VBRru83huy7m8v26ZfLGa2DtqiRD48GP9TIqgWkdSjaFwWWtv5/Vm+ pz6abgSVXqfV+jc0O2dHh9WZPrzm/zpTO5nh1KoMmKTqaAiqQEIMlkcwp3V6iXqWUcpgD6bNNgH RuZNx1RC2FwKy5hd9tABaKQNZgy8eVqUsP4JegsnarHcLQYxQs80nfwnGWlDnkEf/ARK3dQxsNt 1S3GUtFPD7i+x+JSFOIyASrMaUzjQwErz86Spd0xZg/t7UagJUGqbsFpk1cvfSCdH0ouf0HHrGK akNU70oX/z97DiJXkHclNpfqgMc3yWrNQysFmNWKLQo/Y92tPVFk0YcKa+AW9pVZd8yzPbgE X-Proofpoint-ORIG-GUID: hUJ6OOytBxHAAQsBwuVRUWoKMKCdP-B9 X-Authority-Analysis: v=2.4 cv=PoOTbxM3 c=1 sm=1 tr=0 ts=6819d0e6 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=-okyUcW3L33xbzEWqc4A:9 cc=ntf awl=host:13130 Content-Type: text/plain; charset="utf-8" Update the limits returned from xfs_get_atomic_write_{min, max, max_opt)(). No reflink support always means no CoW-based atomic writes. For updating xfs_get_atomic_write_min(), we support blocksize only and that depends on HW or reflink support. For updating xfs_get_atomic_write_max(), for no reflink, we are limited to blocksize but only if HW support. Otherwise we are limited to combined limit in mp->m_atomic_write_unit_max. For updating xfs_get_atomic_write_max_opt(), ultimately we are limited by the bdev atomic write limit. If xfs_get_atomic_write_max() does not report > 1x blocksize, then just continue to report 0 as before. Reviewed-by: Darrick J. Wong [djwong: update comments in the helper functions] Signed-off-by: Darrick J. Wong Reviewed-by: Christoph Hellwig Signed-off-by: John Garry --- fs/xfs/xfs_file.c | 2 +- fs/xfs/xfs_iops.c | 52 +++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index f4a66ff85748..48254a72071b 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -1557,7 +1557,7 @@ xfs_file_open( if (xfs_is_shutdown(XFS_M(inode->i_sb))) return -EIO; file->f_mode |=3D FMODE_NOWAIT | FMODE_CAN_ODIRECT; - if (xfs_inode_can_hw_atomic_write(XFS_I(inode))) + if (xfs_get_atomic_write_min(XFS_I(inode)) > 0) file->f_mode |=3D FMODE_CAN_ATOMIC_WRITE; return generic_file_open(inode, file); } diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 77a0606e9dc9..8cddbb7c149b 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -605,27 +605,67 @@ unsigned int xfs_get_atomic_write_min( struct xfs_inode *ip) { - if (!xfs_inode_can_hw_atomic_write(ip)) - return 0; + struct xfs_mount *mp =3D ip->i_mount; + + /* + * If we can complete an atomic write via atomic out of place writes, + * then advertise a minimum size of one fsblock. Without this + * mechanism, we can only guarantee atomic writes up to a single LBA. + * + * If out of place writes are not available, we can guarantee an atomic + * write of exactly one single fsblock if the bdev will make that + * guarantee for us. + */ + if (xfs_inode_can_hw_atomic_write(ip) || xfs_can_sw_atomic_write(mp)) + return mp->m_sb.sb_blocksize; =20 - return ip->i_mount->m_sb.sb_blocksize; + return 0; } =20 unsigned int xfs_get_atomic_write_max( struct xfs_inode *ip) { - if (!xfs_inode_can_hw_atomic_write(ip)) + struct xfs_mount *mp =3D ip->i_mount; + + /* + * If out of place writes are not available, we can guarantee an atomic + * write of exactly one single fsblock if the bdev will make that + * guarantee for us. + */ + if (!xfs_can_sw_atomic_write(mp)) { + if (xfs_inode_can_hw_atomic_write(ip)) + return mp->m_sb.sb_blocksize; return 0; + } =20 - return ip->i_mount->m_sb.sb_blocksize; + /* + * If we can complete an atomic write via atomic out of place writes, + * then advertise a maximum size of whatever we can complete through + * that means. Hardware support is reported via max_opt, not here. + */ + if (XFS_IS_REALTIME_INODE(ip)) + return XFS_FSB_TO_B(mp, mp->m_groups[XG_TYPE_RTG].awu_max); + return XFS_FSB_TO_B(mp, mp->m_groups[XG_TYPE_AG].awu_max); } =20 unsigned int xfs_get_atomic_write_max_opt( struct xfs_inode *ip) { - return 0; + unsigned int awu_max =3D xfs_get_atomic_write_max(ip); + + /* if the max is 1x block, then just keep behaviour that opt is 0 */ + if (awu_max <=3D ip->i_mount->m_sb.sb_blocksize) + return 0; + + /* + * Advertise the maximum size of an atomic write that we can tell the + * block device to perform for us. In general the bdev limit will be + * less than our out of place write limit, but we don't want to exceed + * the awu_max. + */ + return min(awu_max, xfs_inode_buftarg(ip)->bt_bdev_awu_max); } =20 static void --=20 2.31.1 From nobody Fri Dec 19 21:57:56 2025 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4CED3267703; Tue, 6 May 2025 09:05:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522360; cv=fail; b=WAUoxVPJuKZgk7pqFO1/+3xumij7tA2bAkRWrGxtx8/QfyEloWe3gFgm5aRzkhsakBM47Ces77YHdPtZ4Vdq1Ad2N7Ev6Wo758Cw1Dly1tCNWFtQzzthzAUjRBC51mdRlh0zOHlKGi+EcdmJvxUVJFPAbvdbxel81B6J3aclxuw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746522360; c=relaxed/simple; bh=omQCzwIYOHb/v47TpyDUVzryefmC/a2FfO8c/Hl2iBM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=V2QKTcFRMlUMtNxBLovPn0rQe7lAfMh6BdWI9WdQMERbhnpA7KlD7Pl+lzLIJqq6YJ+rXCW9gPHtqvbqOhHg20IzcYLFA6gYEIVpf6oRjsYJT20czf+zSfKKe53AePHZmpz2G/pRA7Y8gdZQF3oRoD/qpKA9lf4O2mA1hmm6Fok= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=l5mUZlNK; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=tITZi/Lr; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="l5mUZlNK"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="tITZi/Lr" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5468vf2M023352; Tue, 6 May 2025 09:05:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Sk/hsrFNgdFwYGGW453+H9tAgZuzI3Ul23Q+7k64nHM=; b= l5mUZlNKJwxM+BYPDEe3Ip2Pj1cvrZ9L/pnkRbuncYLP8NSnim82MRlgfqJ7jJyy C50FGHPPHvPE2fdpm1bs1iR4QLbFqYWjXVMcP7T0CFVPfZ8B9ovmH6ptyD4GeKsU 2z6WyGRvWFEmiwgIPYCImAtBpDEWxeH/tzJp+qDKjIRCEiXaPYeh3vgbe9PrKy+m dOjO9kJkcHd6WcLz+PgJiJkF2ASG/Jt4IU0PXpkwdZAlq/7WpVbfm1Df1gVJOZ1c Cy7DhFNpXLn8y2dhXLdYnQwKWCZ4Kri4NTh/DrPBeLYhRYiY1/CWMpBiKsfkfmEI FE02byJiuyQpDfJxKQ57NQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ffc680fg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:45 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5468C3Wo036063; Tue, 6 May 2025 09:05:44 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2045.outbound.protection.outlook.com [104.47.58.45]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 46d9k9g9rh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 09:05:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aI165eOJyWjflm7Bz40ox5DK7kV5FLBA9TtuogiKJuQv9qwf6vB4005G0INVLVrxtyZPhdMOIbSg0Wza5RpOSv0h+hvMHurYP1/OG77W13w9k1NyzL9J1o82FT4VmMUHIW5NcvlJOkeGfoOK54CIEDFzA7coOz193b2oT/iZeaZhQcfrXSOhnuXzmNz8aAZCn+fmP8ggAd9jPQnA1D7tVvzCBw8WV4JDHLsWlKGmXOfeUwfIonTmIptzeez5Tu15fE1JzBwpt9OaWU1oPgFeT7MS62+NpDlqiGcaRCmrswroubeuq/cqy7H36tGZjG0JjTeGAemtiBH7Mcs/Ji0Ejg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Sk/hsrFNgdFwYGGW453+H9tAgZuzI3Ul23Q+7k64nHM=; b=CMhsW5BGLpSyQSTOfomIJoYPikRxVqtssAhMuB7j1OFYf+oZYRqTJhY4DtdeP/7M8Zzb70hJdNktA91bOdSrDqixGtx1GNTvNP8rSw3Zz/98lxZ5se+4tcXaUdf+dWlGG2Ztvd/ZYiLejOx+ALWz4fBKHkPEp28mocCET/gDE66fkArcJofaJITWE6NDxrHVGNSLVj2fdFmRdD/dTLN03YtyEyuOoHjla2EelbWTOAEEYfE33JYXarU2+DPuft6EfEVxDu7aDnA+E6VxZNqZgH1WmLfUXgaWBb0DEb881GX8pS8NCkGhoGzPZtVoI5e3MxTxj6LDwfholMmscrEJEw== 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=Sk/hsrFNgdFwYGGW453+H9tAgZuzI3Ul23Q+7k64nHM=; b=tITZi/LrMM0XNHRAMBjMoRTelhaQFllLvpPKebhfGoKxU3asTJr9ijzwF2Y5ANLkiOzsjuGJz5oXxcrRoaoyxtBY5GiKYEMTmmLqQvX9KUL8gtm5gIOOMb2AOr9S/d9wjgm9P8S+mZp4BRCcKC+uP/UrdKP/DcHbN5ZslU0MaRM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CY5PR10MB6069.namprd10.prod.outlook.com (2603:10b6:930:3b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 09:05:37 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%7]) with mapi id 15.20.8699.022; Tue, 6 May 2025 09:05:37 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, hch@lst.de, viro@zeniv.linux.org.uk, jack@suse.cz, cem@kernel.org Cc: linux-fsdevel@vger.kernel.org, dchinner@redhat.com, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, linux-ext4@vger.kernel.org, linux-block@vger.kernel.org, catherine.hoang@oracle.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH v12 17/17] xfs: allow sysadmins to specify a maximum atomic write limit at mount time Date: Tue, 6 May 2025 09:04:27 +0000 Message-Id: <20250506090427.2549456-18-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250506090427.2549456-1-john.g.garry@oracle.com> References: <20250506090427.2549456-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR08CA0004.namprd08.prod.outlook.com (2603:10b6:a03:100::17) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CY5PR10MB6069:EE_ X-MS-Office365-Filtering-Correlation-Id: 55919adb-fbff-4bdf-46d4-08dd8c7d2adb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HM52fWXnhTtdCOnHtxxi9Nk/dzCYOy/YBUrwNmX6VpE2SW98Jh9cvuGjQfMZ?= =?us-ascii?Q?m8IONjx3pkiiA9wBTq2fwyd2/SYQq4pm2tx2qPopi5UysogTLfCFA0GJ8eSK?= =?us-ascii?Q?Cyfh0EtFJ6bvWL3TK5P2tlhW1BWLNt9S1pOfZWiYRg1HmWObGu79dyYenhky?= =?us-ascii?Q?6wEn/37lYTLE2ShDbDnYaiuq0fGy4pbF8RZczgRvYZ6NTd+vzZacYeh2eyl9?= =?us-ascii?Q?OQnUNndTumNvhXgYHQYQHOATi4mST/O8pUaIuo3PSoGyjf1ApYBJkFFPgc8L?= =?us-ascii?Q?eT8HmNeedgcultvp2CTN8xqY/5YHSLu5r/6EncQjNcYlUPk0gnGcUVcp8qQe?= =?us-ascii?Q?UlM15SgL6zCJrFK7i3tsoRf6r4W6YCQwEWNwt1L+R+eoCYN7Nw/MkcgmHQZg?= =?us-ascii?Q?2VxB5hky/CDH0coz+1R/P7FFl1NkzdrNnDO8VF5eGmF5h1EEINr2NgKyhlwf?= =?us-ascii?Q?bPUV8B2YyodW8ZrHe/IRDVjEhYvkfGyH+9WoAIHjqs9JVAJQm3gRtT42wsf2?= =?us-ascii?Q?kuWD7zjTUdzDkKibPWInX4Oq8XyFEN/T8CsrrqWiCL2ItTgkZCFp4pA+wbAb?= =?us-ascii?Q?48joaoX8nqnLz6dsTgKjvoiRAyAdIiZS+Gnd5v0SHtKFEDlTnconv2m0+L9j?= =?us-ascii?Q?3oTjM5Yw5woCRKE5slufDYPdHudBKN3kZURfo9m/7klfgmO0U5z2hXxtvIxP?= =?us-ascii?Q?qUFAP41zFtv39Z9eBNMkQmEaoAsNSa4gdTJYEerviIci/ua6NnFSv8FSK6mK?= =?us-ascii?Q?VVk8G1oVHPSnfGOHXaC8Csf9i9W9T0jVnc/wO9+03QUH36WcGZF2NbZ46ZZJ?= =?us-ascii?Q?ZJAoq22bPXiQAhvsvPMft2T5u++HCREqfV3H+Vi7s3Cuw3G+vXUVCtG+gFtS?= =?us-ascii?Q?9+Xcpp7clk5XJsnoWFuPC7PMjSKiehzwfKL+rEtfSpSWRelwrG+cq915+m+F?= =?us-ascii?Q?HNcK596vSZ/n5wWnVMQbG4yBlhdmpYE3B3H9N85Tgsyme23Zb9I16BgrND3n?= =?us-ascii?Q?Y9ZpX1TTCSDCIbw4XZWLxqZQgSDA9pIaZQFYl0yRuDtfomi/2jQ6S68H2DH7?= =?us-ascii?Q?NbPzyN2WTRLuwXbf50X7m5XCTOv8ccKL8VA5gHdu8iIbyweycVrtPk4JOhTF?= =?us-ascii?Q?KbhgPid7DIA99sBJCaFn2aSIf06x5NvVUunNxyv/+75Dwbkghmkdwh6yYK40?= =?us-ascii?Q?B+/Rtk0E1jEKaazaQj9yvq+6bzJmFxr2LWszpvmiC32S8fxLz1Ccyz6a8Irm?= =?us-ascii?Q?Y0ARUD6yJAKe27ibInL6nqGiwoK/8VOR+j1I/vPMhtTzRFAsqGmRhptlQ7aT?= =?us-ascii?Q?kEiFyBYx6LIBUNJKPHRb+4sRzEG64c5bCKXKh5GQ/n5dhy9Bbm8XaF+BVngo?= =?us-ascii?Q?5R8/GS6+V680K0nske3je5DZF4cwBMnBnBCZR2fD5cMsTf7H7XVDTsLul6m3?= =?us-ascii?Q?96o8vVQiHV4=3D?= 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:(13230040)(1800799024)(376014)(7416014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?n4JJPOPN3wSbTKaYPNA6kOVrERQk4FeFt+8OwPTY3swOKaDEPexE6ELNXM0y?= =?us-ascii?Q?X6i+cr/c5RDwNPjcRCUahZ4Te6DQoai01phJqlxicAHvgqeVQK75n85zqsf3?= =?us-ascii?Q?gjmCfotzBxg7ekyvATZtERMKiXIHL1n1SXLp6z+PWalEdXYR8CwHqwRubV0v?= =?us-ascii?Q?2FLIPaRHtSF7QEM1jGQNjv2lwexj4YQH1H1yfKbztj9Caj0N59gNd9v+Jgp9?= =?us-ascii?Q?5cVbdaf8U+P2TDoEVwJM/Wln+z5R9ulD9Bek3kDpOW0m11Y2NTywCAyKNB+6?= =?us-ascii?Q?AxZ+rDKmz0Rvquxs7S/2VzP/emqV2Qx3xZUBT5ziyv3InUPAx0j/ZG6pXe5/?= =?us-ascii?Q?MU9Ssk/75k59ToiSM1MFN2Wml9bWzeMrEMCLNRnF7O0vqzfJZKDAYHJzpdo7?= =?us-ascii?Q?HwYgrMWU/hgS4vkmBsfNbbbhT5J4zAF64iKYV7UlNseJZ/cWibLIEP0jyL78?= =?us-ascii?Q?RLAZfJHpc4K0a85Tm70DdKIR/g53wAEEkDLYXqYniDdOx6T1qZfUdYJRPuCK?= =?us-ascii?Q?RHRc7CO/r6L34KO4NAnWNUCQjTlKuT8h/0Pt/4frMpk8BToEr06hyiHLO+kZ?= =?us-ascii?Q?FR3qV4e23+NnQsz0jczrRFeh/UK6rNO5hOGyOLw4HOn6FjoVYDpbTGdIh/ZP?= =?us-ascii?Q?qy8AubjfomCgSWVJhOdy8Ay8bjvgmtPQThuh89pcc73ZcJ9y049mqt01Q64Z?= =?us-ascii?Q?ZnxUnk07joWPOiiSRj304wdxJMQASQTOhAd0T8ixvzDVwCsVsX1KQV4haLPE?= =?us-ascii?Q?VjwimUU7QqkK6TLhhog3ckGSdvEfftf6rKqxgJImS3iKhp3dg47CarxVilyH?= =?us-ascii?Q?xUM0m7hL6ybdtZ0M6iw1gXxS8DfPPllv/4OLMVD8hee03t2inJ+p2Rsie1bq?= =?us-ascii?Q?yPzh6QOwx+T9yI6WUq9KPyQKOW4R/zLA/vYdjR2LghJVFORpih8sZqL2AajT?= =?us-ascii?Q?6eckw2UU+Hgxum3q+YbgCTifB5HHuvyaotsP4Ej3m6wmJaksDxCyMnt+9jO6?= =?us-ascii?Q?sTiIRSeKvAirhSdUarnuSVE6ed6DMzF6SWpjk0Je7+ZJFG6NP2WXFQCGkBhV?= =?us-ascii?Q?KOvyIw8gVOWPXfsflh8ptVruV0BlwDvENXLKtRgJHJkJaEvrqThaafmNTl3B?= =?us-ascii?Q?GUeSPI869xzuJJhreRolu/Kms0QK/3aMHl7CNuusRVcZ+0cIY7fwagxk1PJ7?= =?us-ascii?Q?xrSTpjiH8KKfN3luqZjOANDSGKyDBxA2MutbRCv5CGcK8142TRbkK3WNwbko?= =?us-ascii?Q?wQDs8ALO28qemv+XyJd9X96KzusTWZB3/yR5QejdP5fsnvV4WpLuUSfTFLA7?= =?us-ascii?Q?EPDiSX2hLhhDOzcUNJDpf3Gdx4Qh20XJblKJpggYGQudufrzvJ2KfhKqKv1t?= =?us-ascii?Q?WIvdXkUEBg++U3wrfMbx0GdADkiZyxcvNgcX1F0zy83c7UaM3XsYTG2vwayp?= =?us-ascii?Q?+/IF/P2h5d6LdtpZCUjrQ6oPtJ/CFWkjlhxpGX0TiP/H/jVmEMKOwmfaQoOQ?= =?us-ascii?Q?yC2Au5Bp+zTiqt5gocMxe5tAzJ4b/44AH7/i84aCIcYzi0yyYs7HY2TTuLCC?= =?us-ascii?Q?9j5hborH4CRAspJ2PzcBUKrDsUYQ1mcxd8Ktte7YSOCEg26Q0D0A1W+BgFXu?= =?us-ascii?Q?fQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: JBcp0+YddAM6PEayqQ19B9vjQhroZQZlw6P8Ha2DRU/ezdNMGbPzzJiLTRTEIIQ2n1UG5bOLooa2abnFgKrejfLIWQFlKCdGVJNWhgZ4Dsq9xldip/NnC8GgPe+ScjTf8jvGT3XT+WDaXIalcY1+318AbCDsLCiCXeGfvgSAUUrk6GVlJd3EjeImvMSq4BROrLUW6YJXGK05godK2YPYk6Vki9O6W73hQ0vJJiLKG+DECbhidD0FIvV3iyE1Bshfp88riotDd4U0TM6ZjOItIOXlXrN83t7AOoKYe5G7hO3gLNtme7rnzNP8Ojq/x1tysSOz/ibBTs2uuM57HdtfvkDRrdnH3WPht3qxyw5Z0i3Dh5mkSYZG/LC1X/Opnc1O/aYHhHVo6BWHwu9p6T3JOgiJ12bf0Uwwx9Oban7l0Yy8NVPoxg9832g6AxXKAyokc0Xx6yvn/k9FpXcnXucuGsRiEcedoK/x7uxzjzJ1WHT6Jh0oB0xG0/ax/G47sM5+4H3nxD3UXXV7zvcfqCCadK3DAwg1EpxJ/YNnh19COklz3jK5HcxJXQEX5z4P1hYo84CihcFwXbXkqFq+ra3uhTng1X2jhyCI/Y8nsubhxS8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55919adb-fbff-4bdf-46d4-08dd8c7d2adb X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 09:05:37.6889 (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: LpR32EXgvysqEBvC3YqsoWSlPFW+WALTGLwZ2wm7jeNvTf4OdtdHEW8njzwnC+l9clCWH6uofiOh9wAcCs8AZw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB6069 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_04,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 phishscore=0 mlxscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060086 X-Proofpoint-ORIG-GUID: Op8xvHtgk4UR703jlMGCYkL7QRrn4_-N X-Authority-Analysis: v=2.4 cv=Q6jS452a c=1 sm=1 tr=0 ts=6819d0e9 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=vofBRnjZkZwxpctGmH8A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDA4NiBTYWx0ZWRfX6epp1t5eovr0 ZSGO06G80GhAzmza64Tbe/V8BLft7nVPjYelhgNtPPeHPymy8E+9xxETMXDvv/4Y6BJ/Qu+oM+x lRdl3at5zcN1fKcLLBwIsnXzMS3EdZH7zd5tkCfxdzBQUSKjHtP8IsacUSyHElckv1KU9Pz93Zi 893jihM0re2+2sKmYMt+pusDPeEhkwBJANPijKOBFlI0jGRtkGW4boMopEWwBifGnF4RpDKpS4E fy8U3/jU93FKlLVg/F8fwUbheyjAiKA06bGg4iA2y102ZzQu9o4WOV6J/0+msLH3UmNrq0CCbHI cdC6WcK8bO71dm+OxomLl5EMmfYQKU7qH7lNST+IFq9WLFQeYtPx3wpA/k/D8cypniXFtRm2+d3 W+GjUmXhDfOhf6tk7VJL0u4xWqTeP8zHm8g6PwrK0JFJI3a66kVf1R/ks6TcBtJsgF7cKEi2 X-Proofpoint-GUID: Op8xvHtgk4UR703jlMGCYkL7QRrn4_-N Content-Type: text/plain; charset="utf-8" From: "Darrick J. Wong" Introduce a mount option to allow sysadmins to specify the maximum size of an atomic write. If the filesystem can work with the supplied value, that becomes the new guaranteed maximum. The value mustn't be too big for the existing filesystem geometry (max write size, max AG/rtgroup size). We dynamically recompute the tr_atomic_write transaction reservation based on the given block size, check that the current log size isn't less than the new minimum log size constraints, and set a new maximum. The actual software atomic write max is still computed based off of tr_atomic_ioend the same way it has for the past few commits. Note also that xfs_calc_atomic_write_log_geometry is non-static because mkfs will need that. Signed-off-by: Darrick J. Wong Signed-off-by: John Garry Reviewed-by: John Garry --- Documentation/admin-guide/xfs.rst | 11 +++++ fs/xfs/libxfs/xfs_trans_resv.c | 69 ++++++++++++++++++++++++++ fs/xfs/libxfs/xfs_trans_resv.h | 4 ++ fs/xfs/xfs_mount.c | 80 ++++++++++++++++++++++++++++++- fs/xfs/xfs_mount.h | 6 +++ fs/xfs/xfs_super.c | 58 +++++++++++++++++++++- fs/xfs/xfs_trace.h | 33 +++++++++++++ 7 files changed, 259 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/= xfs.rst index 5becb441c3cb..a18328a5fb93 100644 --- a/Documentation/admin-guide/xfs.rst +++ b/Documentation/admin-guide/xfs.rst @@ -151,6 +151,17 @@ When mounting an XFS filesystem, the following options= are accepted. optional, and the log section can be separate from the data section or contained within it. =20 + max_atomic_write=3Dvalue + Set the maximum size of an atomic write. The size may be + specified in bytes, in kilobytes with a "k" suffix, in megabytes + with a "m" suffix, or in gigabytes with a "g" suffix. The size + cannot be larger than the maximum write size, larger than the + size of any allocation group, or larger than the size of a + remapping operation that the log can complete atomically. + + The default value is to set the maximum I/O completion size + to allow each CPU to handle one at a time. + max_open_zones=3Dvalue Specify the max number of zones to keep open for writing on a zoned rt device. Many open zones aids file data separation diff --git a/fs/xfs/libxfs/xfs_trans_resv.c b/fs/xfs/libxfs/xfs_trans_resv.c index e73c09fbd24c..86a111d0f2fc 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.c +++ b/fs/xfs/libxfs/xfs_trans_resv.c @@ -1488,3 +1488,72 @@ xfs_calc_max_atomic_write_fsblocks( =20 return ret; } + +/* + * Compute the log blocks and transaction reservation needed to complete an + * atomic write of a given number of blocks. Worst case, each block requi= res + * separate handling. A return value of 0 means something went wrong. + */ +xfs_extlen_t +xfs_calc_atomic_write_log_geometry( + struct xfs_mount *mp, + xfs_extlen_t blockcount, + unsigned int *new_logres) +{ + struct xfs_trans_res *curr_res =3D &M_RES(mp)->tr_atomic_ioend; + uint old_logres =3D curr_res->tr_logres; + unsigned int per_intent, step_size; + unsigned int logres; + xfs_extlen_t min_logblocks; + + ASSERT(blockcount > 0); + + xfs_calc_default_atomic_ioend_reservation(mp, M_RES(mp)); + + per_intent =3D xfs_calc_atomic_write_ioend_geometry(mp, &step_size); + + /* Check for overflows */ + if (check_mul_overflow(blockcount, per_intent, &logres) || + check_add_overflow(logres, step_size, &logres)) + return 0; + + curr_res->tr_logres =3D logres; + min_logblocks =3D xfs_log_calc_minimum_size(mp); + curr_res->tr_logres =3D old_logres; + + trace_xfs_calc_max_atomic_write_log_geometry(mp, per_intent, step_size, + blockcount, min_logblocks, logres); + + *new_logres =3D logres; + return min_logblocks; +} + +/* + * Compute the transaction reservation needed to complete an out of place + * atomic write of a given number of blocks. + */ +int +xfs_calc_atomic_write_reservation( + struct xfs_mount *mp, + xfs_extlen_t blockcount) +{ + unsigned int new_logres; + xfs_extlen_t min_logblocks; + + /* + * If the caller doesn't ask for a specific atomic write size, then + * use the defaults. + */ + if (blockcount =3D=3D 0) { + xfs_calc_default_atomic_ioend_reservation(mp, M_RES(mp)); + return 0; + } + + min_logblocks =3D xfs_calc_atomic_write_log_geometry(mp, blockcount, + &new_logres); + if (!min_logblocks || min_logblocks > mp->m_sb.sb_logblocks) + return -EINVAL; + + M_RES(mp)->tr_atomic_ioend.tr_logres =3D new_logres; + return 0; +} diff --git a/fs/xfs/libxfs/xfs_trans_resv.h b/fs/xfs/libxfs/xfs_trans_resv.h index a6d303b83688..336279e0fc61 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.h +++ b/fs/xfs/libxfs/xfs_trans_resv.h @@ -122,5 +122,9 @@ unsigned int xfs_calc_write_reservation_minlogsize(stru= ct xfs_mount *mp); unsigned int xfs_calc_qm_dqalloc_reservation_minlogsize(struct xfs_mount *= mp); =20 xfs_extlen_t xfs_calc_max_atomic_write_fsblocks(struct xfs_mount *mp); +xfs_extlen_t xfs_calc_atomic_write_log_geometry(struct xfs_mount *mp, + xfs_extlen_t blockcount, unsigned int *new_logres); +int xfs_calc_atomic_write_reservation(struct xfs_mount *mp, + xfs_extlen_t blockcount); =20 #endif /* __XFS_TRANS_RESV_H__ */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 86089e27b8e7..29276fe60df9 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -742,6 +742,82 @@ xfs_calc_atomic_write_unit_max( max_agsize, max_rgsize); } =20 +/* + * Try to set the atomic write maximum to a new value that we got from + * userspace via mount option. + */ +int +xfs_set_max_atomic_write_opt( + struct xfs_mount *mp, + unsigned long long new_max_bytes) +{ + const xfs_filblks_t new_max_fsbs =3D XFS_B_TO_FSBT(mp, new_max_bytes); + const xfs_extlen_t max_write =3D xfs_calc_atomic_write_max(mp); + const xfs_extlen_t max_group =3D + max(mp->m_groups[XG_TYPE_AG].blocks, + mp->m_groups[XG_TYPE_RTG].blocks); + const xfs_extlen_t max_group_write =3D + max(xfs_calc_perag_awu_max(mp), xfs_calc_rtgroup_awu_max(mp)); + int error; + + if (new_max_bytes =3D=3D 0) + goto set_limit; + + ASSERT(max_write <=3D U32_MAX); + + /* generic_atomic_write_valid enforces power of two length */ + if (!is_power_of_2(new_max_bytes)) { + xfs_warn(mp, + "max atomic write size of %llu bytes is not a power of 2", + new_max_bytes); + return -EINVAL; + } + + if (new_max_bytes & mp->m_blockmask) { + xfs_warn(mp, + "max atomic write size of %llu bytes not aligned with fsblock", + new_max_bytes); + return -EINVAL; + } + + if (new_max_fsbs > max_write) { + xfs_warn(mp, + "max atomic write size of %lluk cannot be larger than max write size %llu= k", + new_max_bytes >> 10, + XFS_FSB_TO_B(mp, max_write) >> 10); + return -EINVAL; + } + + if (new_max_fsbs > max_group) { + xfs_warn(mp, + "max atomic write size of %lluk cannot be larger than allocation group si= ze %lluk", + new_max_bytes >> 10, + XFS_FSB_TO_B(mp, max_group) >> 10); + return -EINVAL; + } + + if (new_max_fsbs > max_group_write) { + xfs_warn(mp, + "max atomic write size of %lluk cannot be larger than max allocation grou= p write size %lluk", + new_max_bytes >> 10, + XFS_FSB_TO_B(mp, max_group_write) >> 10); + return -EINVAL; + } + +set_limit: + error =3D xfs_calc_atomic_write_reservation(mp, new_max_fsbs); + if (error) { + xfs_warn(mp, + "cannot support completing atomic writes of %lluk", + new_max_bytes >> 10); + return error; + } + + xfs_calc_atomic_write_unit_max(mp); + mp->m_awu_max_bytes =3D new_max_bytes; + return 0; +} + /* Compute maximum possible height for realtime btree types for this fs. */ static inline void xfs_rtbtree_compute_maxlevels( @@ -1163,7 +1239,9 @@ xfs_mountfs( * derived from transaction reservations, so we must do this after the * log is fully initialized. */ - xfs_calc_atomic_write_unit_max(mp); + error =3D xfs_set_max_atomic_write_opt(mp, mp->m_awu_max_bytes); + if (error) + goto out_agresv; =20 return 0; =20 diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index e2abf31438e0..5b5df70570c0 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -237,6 +237,9 @@ typedef struct xfs_mount { unsigned int m_max_open_zones; unsigned int m_zonegc_low_space; =20 + /* max_atomic_write mount option value */ + unsigned long long m_awu_max_bytes; + /* * Bitsets of per-fs metadata that have been checked and/or are sick. * Callers must hold m_sb_lock to access these two fields. @@ -804,4 +807,7 @@ static inline void xfs_mod_sb_delalloc(struct xfs_mount= *mp, int64_t delta) percpu_counter_add(&mp->m_delalloc_blks, delta); } =20 +int xfs_set_max_atomic_write_opt(struct xfs_mount *mp, + unsigned long long new_max_bytes); + #endif /* __XFS_MOUNT_H__ */ diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 77a3c003fc4f..8e3ae1749855 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -111,7 +111,7 @@ enum { Opt_prjquota, Opt_uquota, Opt_gquota, Opt_pquota, Opt_uqnoenforce, Opt_gqnoenforce, Opt_pqnoenforce, Opt_qnoenforce, Opt_discard, Opt_nodiscard, Opt_dax, Opt_dax_enum, Opt_max_open_zones, - Opt_lifetime, Opt_nolifetime, + Opt_lifetime, Opt_nolifetime, Opt_max_atomic_write, }; =20 static const struct fs_parameter_spec xfs_fs_parameters[] =3D { @@ -159,6 +159,7 @@ static const struct fs_parameter_spec xfs_fs_parameters= [] =3D { fsparam_u32("max_open_zones", Opt_max_open_zones), fsparam_flag("lifetime", Opt_lifetime), fsparam_flag("nolifetime", Opt_nolifetime), + fsparam_string("max_atomic_write", Opt_max_atomic_write), {} }; =20 @@ -241,6 +242,9 @@ xfs_fs_show_options( =20 if (mp->m_max_open_zones) seq_printf(m, ",max_open_zones=3D%u", mp->m_max_open_zones); + if (mp->m_awu_max_bytes) + seq_printf(m, ",max_atomic_write=3D%lluk", + mp->m_awu_max_bytes >> 10); =20 return 0; } @@ -1343,6 +1347,42 @@ suffix_kstrtoint( return ret; } =20 +static int +suffix_kstrtoull( + const char *s, + unsigned int base, + unsigned long long *res) +{ + int last, shift_left_factor =3D 0; + unsigned long long _res; + char *value; + int ret =3D 0; + + value =3D kstrdup(s, GFP_KERNEL); + if (!value) + return -ENOMEM; + + last =3D strlen(value) - 1; + if (value[last] =3D=3D 'K' || value[last] =3D=3D 'k') { + shift_left_factor =3D 10; + value[last] =3D '\0'; + } + if (value[last] =3D=3D 'M' || value[last] =3D=3D 'm') { + shift_left_factor =3D 20; + value[last] =3D '\0'; + } + if (value[last] =3D=3D 'G' || value[last] =3D=3D 'g') { + shift_left_factor =3D 30; + value[last] =3D '\0'; + } + + if (kstrtoull(value, base, &_res)) + ret =3D -EINVAL; + kfree(value); + *res =3D _res << shift_left_factor; + return ret; +} + static inline void xfs_fs_warn_deprecated( struct fs_context *fc, @@ -1527,6 +1567,14 @@ xfs_fs_parse_param( case Opt_nolifetime: parsing_mp->m_features |=3D XFS_FEAT_NOLIFETIME; return 0; + case Opt_max_atomic_write: + if (suffix_kstrtoull(param->string, 10, + &parsing_mp->m_awu_max_bytes)) { + xfs_warn(parsing_mp, + "max atomic write size must be positive integer"); + return -EINVAL; + } + return 0; default: xfs_warn(parsing_mp, "unknown mount option [%s].", param->key); return -EINVAL; @@ -2137,6 +2185,14 @@ xfs_fs_reconfigure( if (error) return error; =20 + /* Validate new max_atomic_write option before making other changes */ + if (mp->m_awu_max_bytes !=3D new_mp->m_awu_max_bytes) { + error =3D xfs_set_max_atomic_write_opt(mp, + new_mp->m_awu_max_bytes); + if (error) + return error; + } + /* inode32 -> inode64 */ if (xfs_has_small_inums(mp) && !xfs_has_small_inums(new_mp)) { mp->m_features &=3D ~XFS_FEAT_SMALL_INUMS; diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index d5ae00f8e04c..01d284a1c759 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -230,6 +230,39 @@ TRACE_EVENT(xfs_calc_max_atomic_write_fsblocks, __entry->blockcount) ); =20 +TRACE_EVENT(xfs_calc_max_atomic_write_log_geometry, + TP_PROTO(struct xfs_mount *mp, unsigned int per_intent, + unsigned int step_size, unsigned int blockcount, + unsigned int min_logblocks, unsigned int logres), + TP_ARGS(mp, per_intent, step_size, blockcount, min_logblocks, logres), + TP_STRUCT__entry( + __field(dev_t, dev) + __field(unsigned int, per_intent) + __field(unsigned int, step_size) + __field(unsigned int, blockcount) + __field(unsigned int, min_logblocks) + __field(unsigned int, cur_logblocks) + __field(unsigned int, logres) + ), + TP_fast_assign( + __entry->dev =3D mp->m_super->s_dev; + __entry->per_intent =3D per_intent; + __entry->step_size =3D step_size; + __entry->blockcount =3D blockcount; + __entry->min_logblocks =3D min_logblocks; + __entry->cur_logblocks =3D mp->m_sb.sb_logblocks; + __entry->logres =3D logres; + ), + TP_printk("dev %d:%d per_intent %u step_size %u blockcount %u min_logbloc= ks %u logblocks %u logres %u", + MAJOR(__entry->dev), MINOR(__entry->dev), + __entry->per_intent, + __entry->step_size, + __entry->blockcount, + __entry->min_logblocks, + __entry->cur_logblocks, + __entry->logres) +); + TRACE_EVENT(xlog_intent_recovery_failed, TP_PROTO(struct xfs_mount *mp, const struct xfs_defer_op_type *ops, int error), --=20 2.31.1