From patchwork Mon Mar 10 18:39:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010516 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 3CEDB2356D7; Mon, 10 Mar 2025 18:40:10 +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=1741632012; cv=fail; b=elnzpCCKtlWcdWoVgXSImw8x1q16mZ8xkH2XS26SgZNny9ZchavQ1h73uw2GK+YUYWvR22sSzV27VZC/WLfcQJnIzkwclbmG579DE1JqOTj/uPZcodRUocmMEkjvUe4uflmQiCSO6zeToSwRg7b2+pNxEVylXPc6Pv2A9Y8vRBk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632012; c=relaxed/simple; bh=nn8qitHbga4k261iB5T76zWCw0giEEr3cirFIPmJKX4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=tDRN+GM6esmHPg9Iqb3g9NqjewK20hj9rKVPeGTY3S+uI/H5ceYSftTVz8OxkNmiKmO/xc6i/FaXP9dRH/OZeEFmR+MsAavxgiDDiILuUdPFDdA1Ln61kvQs8rt6tnIFAAbxXUNWOif7v8F8k+81LEIb09MIPPkiYo/mb5sY6WU= 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=g+ELWOX5; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=CedgQn8M; 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="g+ELWOX5"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="CedgQn8M" 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 52AGfrGY004185; Mon, 10 Mar 2025 18:40:06 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-2023-11-20; bh=vseEcLa6h4CJDUzBpXHMTylGhZvGn5HT/2rWaaZWFak=; b= g+ELWOX5Qzg0YZTNMwbiog72/JcS72hki65ShYsS0a2f0rKK/xrOaXkTaZotkd82 XUtC4U5z9ePFdECf9H45L20OoN+3JwGHe75lX95fWrrt73NHOUZ98cMmlEQO3cKU E+j54mQdfFOfCejZjZwHYHDwgj7ZRSRkxHV5wANPJweGN1ON5Nt1Uq4L/e9I2NA8 dwxos9rNgDux6E0ojlJr7cR6d7hLIRhFXOMpzlHBDVfXrpM32gofJ7MpDJd3aSSN r7Th/A5q26zR5fWvdKPAYfB5S3l4GN7IceoI5Plvze3GdzQCeFsdCoH5tDGgvUTo R8YrCriDawol/kErRb6DHA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458ctb3c63-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:06 +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 52AH4vLc015023; Mon, 10 Mar 2025 18:40:04 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2173.outbound.protection.outlook.com [104.47.57.173]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 458cbe8yky-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gzTXuqwPfg0fkz6876mq4YR4EPtI0UTcbW3/aKv5ExmO5D13YlOYFY/MkeUieM9SyZnDHpC7EfzRnBnirxHSpeALgH9vQuT7aJBcZinsQ8OtchKAhM+6Ot/bFKihbksjN1FB5cuqmAVpMkza9fi3g1U7feLNAdNCtyIe7i1qF8S5dSFH8upNqSbCL0pN3HLgQnCAMsoZzze3FUxwYyd6AaIW644cGSc6b6Ogy5iTPAdi4DFFYVbL3o0tTKNG+czVhos+pNc8d2ycybdkJeQ/C33ubMqVLBwSPudcR5DPlBuxhQj5sKOz62ih6wS3gtbKsgrH2VY1C73jhXJJ7TInFw== 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=vseEcLa6h4CJDUzBpXHMTylGhZvGn5HT/2rWaaZWFak=; b=BFSmSsmZmJ08O/u0RPUmfPnpxpgHx+S2yIiS9+RH7X0H/1jwNsx6r+oEUynd9bNyTSd7YGflisEb24TZeS/awviXet+MPzpsSmkuEQktRv4gHTflvGXSc+4NSUGDxrxrh24cPxTSWLUQWOZFj4EG+8aVG+y5vwhHMyX68wRnQ8U7NNeEQZeqpEohxxmaBvFMsDsosO4/OPyeDexm3VHBgAx/IG6zBRja8+xhDu6y8oeRVzRMfyEmrpKhOrUoS9d/NSj/RbACmqlSecMpGhyQSqsn493EqLznucqQifi9E7QoAC/B9GyRlxbQHEMqqQg3+rdvzFeme1DvaxIriknJKA== 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=vseEcLa6h4CJDUzBpXHMTylGhZvGn5HT/2rWaaZWFak=; b=CedgQn8MFr+EYM2APdfMi8Qkhrjpw0z41z3zRJA1yPX28fQ2ish3S5FiMTgDYRjz4eN3JxR0Cmsrp2VO4tiJXe5y0yeMuqDKtUYpnmqPSv+38mhC+ENitWRqmDYo8driqOrXnHOYTow14rBoeh/et/rq3n0ccuord91Og+fD9yI= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB5561.namprd10.prod.outlook.com (2603:10b6:510:f0::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40:02 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:02 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 01/10] xfs: Pass flags to xfs_reflink_allocate_cow() Date: Mon, 10 Mar 2025 18:39:37 +0000 Message-Id: <20250310183946.932054-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: BY3PR05CA0019.namprd05.prod.outlook.com (2603:10b6:a03:254::24) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB5561:EE_ X-MS-Office365-Filtering-Correlation-Id: 1dc33538-d701-40de-208c-08dd6002f7fb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: QFYjLinyBA+c+PjTC6mTQEqIqjukFx/u2TWUiFsLiQdMx5UHUF9EAG9uIuhFrpOSAqYDTtzG0ZDThjXzzcawBXno4UyOg6EGq/Sdlo/p2Ai6cz/huhxOpMWZyWfRsKB9oBnAwAuJDfeJgrLY4Opm6RujBHwzs1sjbSVpQA+/MN3+g+LZ5ak8WRqHiLoLTV1mvyEbfVSaMGoNxEXpsMsclJvcL1No33jiIZNxrJ5oQylJkr5G/b4DOq3zZ1ygvfJd8OcHwEyIdJhd1B+p8Wi15sUZJ208vUPoktO93rEfhaOhUa/j5XEuHvi6RFWn90x4Wme4Nf0vDhum2uTz3Ko0K+VliDN5lAO6xVTI1CEsU//mgiEAuH535T2Q+8VQPPa1bJOK0KHxzh8TI83gLx4QXH7pWEfNNr1j+eXs2O00Fp/1WbIHMHMCsPcFCUuers4jmLnPpoQrzB2nYlAVqLx0kQ+vlyw6z7P4xAdF9mly0FtNiwvee5dVqHVnv1BzzrAJo+cpVawqgXdOOkP9Q+siXyGlDlyODVb4I10JWPE+DYvc+hxB2if9IoO02pZemlW8wAde4+q1xOeWHHv3ttqAjRAAiAoqob1BtLgadmc6d4hXj5r3CU616/PywyKzZmTDGaE+s2cNYZER8wZcjerJhMuYUusWeR/xPrRLlx/zto0Ii7ZaeNKVTa7ZzeSnPOsYY71ltwN4FsKW3KN6cw80LmTEqs+EYRw8uEuTa2mz6KqFkPaJhWZYHUYjmohjFDp8hFxz23RLKRTGCszKLFPzy0C7aF0V86nlGiwSaR14vN3jANmGnHdIA8jyLaUWLWJMflWlEqMNv68hq8Z58SmATEPqytk/0augTfxZ4fgGDqKAqQzKftgxPab+g0f9ZVjzv9Ax44wNr4UUzMeTVuap6BQuyaWRYloWj1m7gfaPhFYih7C42GGQWoAMi24CJ6sKz6ZLHsco8cGgLe42T+TZBY4+cH56QJzES83egyVYYdIuX1xMWqh7P2Ny2MbA+rCoEwcbu61jXIT8dYWrqf7SDt0MuC0T6cV5c5vkUjfSz208VCQYxhIzbtfZs+bceNggI5b5Zn+7NIOC0olroaLMUiTNKPHDvrT0UtbCce+TF4a2bZSHPab+q/F/B00sfV+XxTm3nHQHFhrFdNC4ofOrts/vtv7EhVWfxL4+B8Ak7SYKBcb5c8zRbiSXAC9J+NChUoq03a8D4oZiVX88CG7BlCQOd0duWllGggBRGrQOesCPRbo3Gk59NXrUsdqEdTmfkS2MayIIzOZCMAOfOsMPWKEFfk70Wvs5tcvvJ46NepBb3qPD9PtXWEQx12eXcnqqux6/kJKlpGkERJ5iqqgwwEZgaeifVZYXo153ukrVHekX+Jmfq7gmAcHTpierc/3U 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)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: v0iikyoZTF/CMEr6ZaQrxhw8URZM/KiJA5aTmOdgf++7UuDhsnacDFcMswFxND6NLvQB30/OKqviVZemLfhGZWgBqXwabuYpH7fLX7ZP7yQKVp9HkuRMqdBg2GUuhr7D0ZY3rg8fXDsfhSCAtQsLflV3z++3P+7sNPU50Tf7j4+IhkbomYBfbi2yfzJbhmig3ZtjyqMtftF1DNPLXsWlbEc1IsBO/IGdIgCqIDf3couxIzRRACixASvTWjwHz6CgGxIi9nbWs56vtFqHTOX7iYTBuz8RtIk8XBde/4FAm5t+0PyNygRreGFEkZLqjLnuheSiD+uOFidLuFDVLtT/YDrn66H7S3wk/Jjh9RBGR+efTz/TaHAMa3xq0K/C/RMLlLz1RLEMyiYOey1OZA0zSCJp3TcMD8bbGwWsBUA1wv3EIRAOBmP4ADUlJlXdr0N/0zAZBJCh3IekS9I5EwBitTzOoGtIUoRuCyq/GzBvePQRQvLQmVxQzzeCgrI1iOedBDSUcejzxTLLSnYuTW/fa0xDQ0JUyzfAyY/JHzwpSUfyZNX1G0tcnuch+J7C+7LtecCzfia6qccVhb5zFzC/mGmeS782ux6tcWrAGAHk47kGC36gC2+VkNKoXh+j/eqd1v6OVhLGeH42P6s1z8HWA1RXhmL4DZ/uWe7BVvtgb4+3C1GjlgFIH1E54skmtnXpN12zex7jwQnNrGn3Y9Gy9i3WX7HaeTVzfVwXonhC+7pEV8lNKcIbtYIAMXKRuPOS7XBe/G5SHlzDbwRMxfsqc/XKQ048oFV/lM0n1CKuWjahLbAWBoFiec5FqqxaeZO89JYjYQ2SS1xgnlnJOEENctIZjnbkjej6UzpFiKq57UDP2OfVwk/UsZZqZThag5Iauf8mLPPM8/WQC8dddFRl23ANPb0lga6JTbuII8GTMy09jzdi2uqLWJMf84PuQ1z+8OkpkikkKqWXnsMl1379RZF2eu1TLOaUzQnGomuTtg6U2p+T0DDarQ5NEOK7H9JsFk2ImMPWEKb4XFCT+Vu/PK1AvyTJOAoigRVLommmz+Btt9orcFSa1QDL3GYdE9dhGhWeH5pT1g8AamZ7c3+oRGqX/56n4Aemgo3V/0pZieHNeQ+iWzdp9uJ72dNvBxE0raX6iMKvuCC2jn2T59egZsomLtvrjsdY5yAITud/MqSVYSB+kL9vPQoEu4nhWnpkCykgonOCbQDm18Y6RkLOTPlP7f0+2Ly/s4qFrVOuTGiwjL1rickRHGapiC7euI2r1BmnTqpTq85JGfJjaY9D5B7h0exaeR8lJSbqK75LM80VSZbHHqPgxiR5GVCxi1uTbfoUJhtq08e9PGDxKONK6oXObNUXIU8DixBkKLISyEMPTO6EJ37wuP2nNKQSiwnrUix4AxOWo3xJVvEfhybj5oi0840/4j4Ra9qmP4bWXVnkAoDVpALbUQI7u6uZ5XGGpydKPnrw12sqxHcdJ4a2JnMJVUSDZ9hOD8f2s/Efo2Sm5HPjQa89mjaNckX6pv2ZQGqv2RoUZBL0/nrpDFpwvlPa5wBUAGNFoZkiESJYB3QDuim6IpzSQesXITeQEMaBtnqNvszjDKB5KEkk11LM0Q== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 7S2i69raq0JYZlgSKX4WjUkGP21l5SVFFQ1x+MqOR6C/rTqF7clzMEuLsnvQ8UY+SokKtEoOSIfCMMtzPBoJ8O/F2iTY4dT5CJMR9goJ7DqhlAbdjQiZ+JyPxbHTS+wEMQaHvlrzat6rPs2Ri1qCiNYh1ZBQB60VflTPFA2jBBB0dkYaTcw5v1JJbUKKphm9+oMBMYlXWDIB2AYgX++Jx1Amo5EbUHktqdOzttHN591ZvubIjfiybWno9eYp5T67kpLY0ZF7tTFYFpHxZIO4LGt19mk8wkmXErd8H05hnggvF6f7q6AH2FSJ90h3qNtzWVFBaU2avwPTk49GDzWXMWwS+tFKM5Etga0Ir9RXWJ09xVfXtwUUNP+U4s62m5JTRUHCKjwIVDhGvW0hcHGqoPa9n7otoJ1p868Y4PhfZbDrIbxQQY60GS8fOF2leoa8Q/StIpbjzQkds9gqaFHI79mjxbj7JBaSPAvuM23g6dw2fImAVKlbj33SjFf34+yiLnLoaZjP1t42sKassqgSZ0oeTWKELN6Ub7bnXqQD4/f15NEFd+9/P0Zqc1Da9SVFQeJ/s1GNe87MtTF0J2rfMcXAp30tE1DEe8QXz/CFWaY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1dc33538-d701-40de-208c-08dd6002f7fb X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:02.4641 (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: Gc0MEbKpP1Ul8FUGR1DLwNURlQrIlSwXi4MlDRpxM5crQVDKVbVzb1E3YUorc+Ff1zei8TTnApIK68Zs3ovUQQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB5561 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 adultscore=0 spamscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-GUID: I5_-wLi5kyiXIz-pOJuGDzBvL1ALswcH X-Proofpoint-ORIG-GUID: I5_-wLi5kyiXIz-pOJuGDzBvL1ALswcH In future we will want more boolean options for xfs_reflink_allocate_cow(), so just prepare for this by passing a flags arg for @convert_now. Suggested-by: "Darrick J. Wong" Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry --- fs/xfs/xfs_iomap.c | 7 +++++-- fs/xfs/xfs_reflink.c | 10 ++++++---- fs/xfs/xfs_reflink.h | 7 ++++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 30e257f683bb..f3a6ec2d3a40 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -813,6 +813,7 @@ xfs_direct_write_iomap_begin( xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset); xfs_fileoff_t end_fsb = xfs_iomap_end_fsb(mp, offset, length); int nimaps = 1, error = 0; + unsigned int reflink_flags = 0; bool shared = false; u16 iomap_flags = 0; unsigned int lockmode; @@ -823,6 +824,9 @@ xfs_direct_write_iomap_begin( if (xfs_is_shutdown(mp)) return -EIO; + if (flags & IOMAP_DIRECT || IS_DAX(inode)) + reflink_flags |= XFS_REFLINK_CONVERT; + /* * Writes that span EOF might trigger an IO size update on completion, * so consider them to be dirty for the purposes of O_DSYNC even if @@ -867,8 +871,7 @@ xfs_direct_write_iomap_begin( /* may drop and re-acquire the ilock */ error = xfs_reflink_allocate_cow(ip, &imap, &cmap, &shared, - &lockmode, - (flags & IOMAP_DIRECT) || IS_DAX(inode)); + &lockmode, reflink_flags); if (error) goto out_unlock; if (shared) diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index cc3b4df88110..e9791e567bdf 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -435,7 +435,7 @@ xfs_reflink_fill_cow_hole( struct xfs_bmbt_irec *cmap, bool *shared, uint *lockmode, - bool convert_now) + unsigned int flags) { struct xfs_mount *mp = ip->i_mount; struct xfs_trans *tp; @@ -488,7 +488,8 @@ xfs_reflink_fill_cow_hole( return error; convert: - return xfs_reflink_convert_unwritten(ip, imap, cmap, convert_now); + return xfs_reflink_convert_unwritten(ip, imap, cmap, + flags & XFS_REFLINK_CONVERT); out_trans_cancel: xfs_trans_cancel(tp); @@ -566,10 +567,11 @@ xfs_reflink_allocate_cow( struct xfs_bmbt_irec *cmap, bool *shared, uint *lockmode, - bool convert_now) + unsigned int flags) { int error; bool found; + bool convert_now = flags & XFS_REFLINK_CONVERT; xfs_assert_ilocked(ip, XFS_ILOCK_EXCL); if (!ip->i_cowfp) { @@ -592,7 +594,7 @@ xfs_reflink_allocate_cow( */ if (cmap->br_startoff > imap->br_startoff) return xfs_reflink_fill_cow_hole(ip, imap, cmap, shared, - lockmode, convert_now); + lockmode, flags); /* * CoW fork has a delalloc reservation. Replace it with a real extent. diff --git a/fs/xfs/xfs_reflink.h b/fs/xfs/xfs_reflink.h index cc4e92278279..cdbd73d58822 100644 --- a/fs/xfs/xfs_reflink.h +++ b/fs/xfs/xfs_reflink.h @@ -6,6 +6,11 @@ #ifndef __XFS_REFLINK_H #define __XFS_REFLINK_H 1 +/* + * Flags for xfs_reflink_allocate_cow() + */ +#define XFS_REFLINK_CONVERT (1u << 0) /* convert unwritten extents now */ + /* * Check whether it is safe to free COW fork blocks from an inode. It is unsafe * to do so when an inode has dirty cache or I/O in-flight, even if no shared @@ -32,7 +37,7 @@ int xfs_bmap_trim_cow(struct xfs_inode *ip, struct xfs_bmbt_irec *imap, int xfs_reflink_allocate_cow(struct xfs_inode *ip, struct xfs_bmbt_irec *imap, struct xfs_bmbt_irec *cmap, bool *shared, uint *lockmode, - bool convert_now); + unsigned int flags); extern int xfs_reflink_convert_cow(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t count); From patchwork Mon Mar 10 18:39:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010517 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 54238235BF1; Mon, 10 Mar 2025 18:40:13 +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=1741632015; cv=fail; b=L4K3HW2e5KtAjglbvfmR//5f+Cmkw19WtF1W9q838qBCk7DR/ROHetuWTkBAFBdrgMzkjr7hWt1PQPYx4OLQ+5Yyu63uvZWrYpFX5FXUxxgmXluXjyk3vMY7doX9UlYmMKK4HUvbA+VOYBlgZBn7Syg/h+Z1wdKSDoVdSk1wc6I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632015; c=relaxed/simple; bh=VZy06Yen2iuhG+ChvAtf/ZoNa+FeBqLT0CiIrG+yNZc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=PlCoMFdCj31GtRjRfwsNsXjMqds9erhrDgKG3h3WMJJ7RLemSbL3E6s7xXEWGK7wqD1MZf3RzZ+eZXwCdAtVGof4NMcf+pD/9a1V3zoigjefj6KsXVF7kwncXrafMVxT5WMyRyRXVxUhxH85gFYbonywyklp3vAZQKhnDKyvIsg= 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=HrQvA9nr; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Ra821CNC; 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="HrQvA9nr"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Ra821CNC" 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 52AGfju2009816; Mon, 10 Mar 2025 18:40:08 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-2023-11-20; bh=DiYkyl5ZMh9tLQIqn/jQG9JCtMnjHLVoU6ntHSceKcE=; b= HrQvA9nr1nzlFBq7IgM1Y3xqffHIPxbw85vUgy1MS6uEPclcfMz1L/CeUJzEDt28 ZTlnw/e6PIRADMI/RiWzbsm10WI6PpK9hftFhhmoF6wvWPSNgYRiXAt4zTNhMmPD 12NvxniD1Qkio0CqCBxsRr4Ilcld/mNmLvRsZ7Zkk2JG4szmy/5k97XaGjf0A6pv yzRyxlxaAdAzpTTjm9I7bS5s+PJDvaE9c7PQXEKJE1EfpMRKiW4YxU5PAas7DLok ag4186B7luVkQScG9+dkS9xg1byox2CwGQv7v8TNpHYB3fVJyoI+tkkX67GXOlDe e8LM31YfWvUwUWJFv3G9Ng== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458dgt38a9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:07 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 52AH9u77030661; Mon, 10 Mar 2025 18:40:07 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458gcmc16j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BY9YnfIHqhkgGQXa/zIws83gd7HFImGqDqcHe/HDyHQSR8W0rLEVdiQoFo7eyP20gBuBW3p5yAiJ1NtI3kYIsNY4agYobDvHqqigha++zkF3tISJIvnBGEyFu2bdXI2ypKJFVJvSsUE7g3UJhCE2jd5kW96y8TqiHPSPopscxU15QIB5Pdg/oiiAl2Uxf+k5ycwJQG8zYgjB/ih1QEGOjn0UtpzsflSozyQExgdc8S6QLwbEK20NE6CqpKG5HX15LBuKh8JgU6nXmz/TsKmGkViIG79uptfQX88xe2004wdPlZXBK6DxGxnLa57Jb/JdVXA6nZL8kra8QNvOXMVu2w== 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=DiYkyl5ZMh9tLQIqn/jQG9JCtMnjHLVoU6ntHSceKcE=; b=k2wBVRGh1/0Mnu4WTYXGbw+7DXuTwRWEJEolwrLNepqUXaBlO5NBsonMSfPvpjwHVxW0TDHRWD3WQGrUIHZxd1gzddFNIUoXaffBmkGqAM+skCcc8S96Wh3r5FSprTBpnNndNWonYfZ5YU01GU2Xl7jXQDGOLUpTKC6xIeMJRomWKnQ082qvNiD7+qNeMRd4xm1u5CiGP7Ox3L8/aD70mi0TxU81pnd8TfkXOP/H7Ie6iVP1kjAicWSoPVSKpmoHsbvs6GKbLnNTbAmTPPf/hkF3nafxb6SzRxgmUvvTK38ITMNSFZj9CHtBZb7tL86zhK7QSf/3XBNeCYzC9eO4gw== 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=DiYkyl5ZMh9tLQIqn/jQG9JCtMnjHLVoU6ntHSceKcE=; b=Ra821CNCG20cHh8BDszojA3qv7yOqNAxhTTU1aCwg/sUxpDXac8CfFNWyhE1CPKr3ULvPWvIPdG267NJxa64UOK02MeWEGvTKnLROZnt5teL3LDhXm/RfBJQrXYeEV5BBtlJWkroXqFuFb15VSGf/02858/GOgc/xD+2w/ptiMc= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH3PPF8F9C59252.namprd10.prod.outlook.com (2603:10b6:518:1::7b7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Mon, 10 Mar 2025 18:40: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%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:04 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 02/10] xfs: Switch atomic write size check in xfs_file_write_iter() Date: Mon, 10 Mar 2025 18:39:38 +0000 Message-Id: <20250310183946.932054-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR05CA0133.namprd05.prod.outlook.com (2603:10b6:a03:33d::18) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH3PPF8F9C59252:EE_ X-MS-Office365-Filtering-Correlation-Id: 8836c8d1-1be3-4d4c-29d0-08dd6002f949 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: 5XW8y4xF6HrnozB+I0IGhixLIFortVtxYjPpVDmByNcb72t7PPMKJZgJzETCbBSkBbpTWy3xIjQiXlPmqLDkyKI8kPX37D8A1HPHGxLUN6fSAhNkTUmOyqqnTWMUOaSfxm93Ge0GXZx5UY7SFm7FkS1BSZXZSVZn8TTuqokfEEQmxwMieIDgkbtD7EcRdZDx1FyxezZaX15i0CtqLIAL/VOMvxk/yfi6e6ogGzgNcBNgRoBHQihWEAzbCyloZx3//Fvtq/SR5/AyESdonVIGISqcv3YxuTrsgDHCw0ktwl2kYGwTEImv+SiaAnRYahRrCYQrK8j0bRIxg+QNhhhWGOQKYlbT3xOS55iWzZ1f7doYHTJlbtwK0XZEr/d5p4LSKjd5sgNoRRemsWXUmJ2w78mkq3NI8K0do4MiYpDUSmsF7tt4zok7B64XzzIQq1W1dF76JmzHw36hyXWyfnCLpO2DDvJA4m+4kDRiuUjVyYRC9gH2kwucSwa1xAakF8JMgMwcg+Bu2Y5UIybpC/JUmn1aviDRsrhOPOioMDtaxewXCBK8Xl+OmH9bB2l6B5K/DfKJ+bktX7BjGyUWrlMx0G/Nr6u+zccIH6DjWAP49Hc4WGqKPbDyOB9j9F8/byEtYwie+w4dHhzfo0kJhTupmGR9VG7RLHhO1ed4jA6CjaMZDxHSeMOB/GaIbuY2fZZVToJmTK+f8oljbN6cRY8YtFAgltQAwoaWENlEvnE5hXlDO+agrcigNEVI+wJ7/r3Q6cOOh1hoDYyQrpNoozdOvSGaWCI5uH46UM7kpxMe1pWpeIshtr/0l+BsDF5cZgYmV8BqmkxsyGOfacUb/Sp2p28fpCrJEvPlCAcFy8WdLtYTzg+a8v4aDNDF/2uE+9IMX+wx5xCra434uOB43f+NUMqT3e/wwQY5nrFANUZrUp1mhirnEUNESDY9s9dDqVKkvQiwTW3xIOKIw3SMb36MZ1qqrJQWZ5bgtExaYTs9T+qR7OuC5YfJ78feu4GZWl+C8AtHQXL06nm9BHULjqnrS0BmjV5CVatgjKqwVoVKhEgpudH58s3Qi4NUiQa51Em/roqhJgqwayJT5WAj4AtSC+Mjkz/bkMneq5HY5wHzMmpTkn1DMl7rlPJsqtJh6v2xwHgaCwzjHWJ3qKnhK+VMFf3mlf29KS89Phc1KjXILORnTR2oJ7iywLoZSuyK23Ch1u7dIIBIScFmX9IQtVoF8aEYf3VDiI5Cu4XxG+GiO+fnuLVL01n4geB+DChPoc4Ig5b5b/J1oMqdZJi2ojMxmMzCdTC3Lp7FelUM8Za20XfANvqOOa9mDkobxtSbMimgl8di+qWUmWlbnsUfUmWC/bXQikYyrvnwIx5sz/s1z7qqLdPMCbKWoqVjS89uAXLZ 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)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZusNACYrwgMJq0aBY9iXyzz6xV1ogBPD18lzYch3jvBb9ZK5IM5YXucpeLa1GtCrpSp0Vgu6IyzXHucB/0N6o1rSlwrUJQ4Ud+5cBMEa5O4/JGB56VS6M6tvEY/mCg36+t1Q59AftzYOHEOrvIIfjVoaOgZPjabgODxxAPtBN9LuArqSfPSKFqCt7KEpvJ9diz0YnCqrPQCcpyOYsCKm+vf9gP5R9UFZKDuCGKAfcUFTqTC5N+psq5c2Lk6Z6eZN2xvXDHwShBIPjkbhPK+Jmd2ukXO3qeL35Im16bovHnANTLulwQMF6r/ZQvgyBCGTSE2blQewThEP8zTYtQXJThO9mxWcSzxU6RcCtLDfbZQKJKzihtD74rMxt9qyUZKMLIOquh0rWHQypTnh5TCrivBTsSytwYBej3uC7piBhkrBddPgTtts4fJl+vpBfG1EkRK0LablUFYABDdkL9yVm1lgZx6pBwyLdOUgrCq/XQPLvAwg2tKypzSr/v2RgAbmwOBAUE6hLu9LFO++FSzs6I/6HWf43CNDWQKShbALSdybIzzo6/QbKtC6yuVAbM1jMkVqIy6eg695honOrSVY1ulrirxeGRKy0oO2FmSz5+4f9V3jcOsKtcm6Uq9t+s+jQSFW9MKDcXg4u0f6xUNfWDIcx4gku+otzDPDGuY/I8eIBd4HQe6ZUB/fL8IL5d1PgQGTkRUMwnhyL90+uiON9nIl5ALlh5t+gClmvvmVQreuscCrjtU6iRR2qbtIZpUQiiQ7r72ca/surxrK/1ffMVEdODnqd1Qtf5VGRBwx7SP1Jquuqw+J3V8RHp7Fd+Hml5L5stwF/JST68WOlB/cH8Qqhiw4+GY9RRkZAMxHHPnrsaGpw1dgobHYmz9BKb9YYLu5AtUF0L+lhCQiFjM7/J8Jw2NAwsx7TE4eCoBbFwgGKqhzC66+oNH6YiTs/3+FLqwgl9cl+l6Uv4V3DbqYVGG247z7oJXpGNLclXpAG32XPY+4pEKF7TKy99nhhWNMudzl2VQBPwTp2GhkE9pyBgeJ6twffw4TWQF9rN5V9fcu8FMtqn5QFBNUF8tv882ZaPgRGjIN3W0YT5Kd5Mo0qHZ8LYZHrySqqPqPACE7FI2QOHRhnlTklK8OtBiZdMT/2fHxRMJa62JqgLSl2qHFlR/LnSVwKTsMzUAwuq9I/LGQTic3NHf+4D4x7Nhb9kxIlSEQguSFmuMxLZBaUxifG5M2GNDOS1GUlzE0FCTa9BQMHpIok3Rl2TGHT+0hPX3K5GgimebqVyLAdxAyG6xm5d1Fkx8+Rv6urmcnbJ5KctRFaN5AWrw23a0hz2r0sQYnvIQVW4+9a9eXvbHwOVUo99fZ6eJPcj+Kb4Tn8WjHFezWFnK8KBa2CzQFrbFJs42SC/EopVKdCLQZ4McMvWVZ466Li/AouqkxkynVqUyZWITN536vTMgPWMxItOJaztgyNdZyNhOyjH9hfCz3lONnPHv0swnsAF4m+de4yCrwHQNEG8vy7cbYoogkf6D5dIyDM1qBlkBLNrLYz/WFGfwWc4ICBlm0lDVZTTkqXjVd+GdRvYhy09RjQOSpsB5D3KPRIaQ/opzkyBIb5B1vZ7vRFA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: gkgQkVAQKrLxjNDse4WKXbAdd6euxuAOc9Hwdv34wn44zFX14DQgy7e0kP9g1CmoHiduZg8jZlRNbFutgGx/sr8ToLxXecgoSrrwglkqtuqdG8uErKCGGszL9hbbGmMwTRhxXF6r2+UvTPcWJbGm5OqdJ2Kxxzdg/aGj7hKL4lopvT29iRv+kJWXRKJBY2hoJgH4iioT0EelZjb/A2Xgx18qfE88ykuBa7h1LadQNLcvg8ySLoswpukb1yAVgkOcqtSHnpBpnLXlmsZzGdQVPOJl7GtCrBuILS/aPP13ZzEVR36iQPTrATeft1/WFlS+d4tlIn/tVrToMW742DpXRhelrK+LK6V7Z/SIe3/E7qCXK9MSTf526JvV+5UBpAf2XKaXWLJsdy6E/iEcKFOk357p2zdPZR6nLX9x+QqPPjvkuwUfAmcWP/9gzWQwqvptp3hWDg2KeBSIfN65uzHhd11U9CROnggs0MOq0sMFJD5dWE8K5ao/6l04T0DyrNjTRPNcmxzwSSOlvr44H8iSgDJ1D7CXMiH6nJx/nb8sBp/ltHezB7x1JV9FKF3IP2yZQ55pxWJNyw6PdMAGnY5L6GQWf4eMmAzc0E5pkbaETx4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8836c8d1-1be3-4d4c-29d0-08dd6002f949 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:04.6716 (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: /zrS1q5cdhCK8aLbkX8idT6BQ0igwW47ekFbUVd4A2EF6ETGg/imy5GurzmUnpdI5B3MkX2GhjTDasF3cm2kKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH3PPF8F9C59252 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-GUID: aGiEGW2CHL-GO0RF_y-UwzJo6XRmSwIk X-Proofpoint-ORIG-GUID: aGiEGW2CHL-GO0RF_y-UwzJo6XRmSwIk Currently the size of atomic write allowed is fixed at the blocksize. To start to lift this restriction, refactor xfs_get_atomic_write_attr() to into a helper - xfs_report_atomic_write() - and use that helper to find the per-inode atomic write limits and check according to that. Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry --- fs/xfs/xfs_file.c | 12 +++++------- fs/xfs/xfs_iops.c | 20 +++++++++++++++++--- fs/xfs/xfs_iops.h | 2 ++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index fe8cf9d96eb0..75a6d7e75bf8 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); 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 != ip->i_mount->m_sb.sb_blocksize) + unsigned int unit_min, unit_max; + + xfs_get_atomic_write_attr(ip, &unit_min, &unit_max); + if (ocount < unit_min || ocount > unit_max) return -EINVAL; + ret = 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 444193f543ef..de065cc2e7cf 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -601,15 +601,29 @@ xfs_report_dioalign( stat->dio_offset_align = stat->dio_read_offset_align; } +void +xfs_get_atomic_write_attr( + struct xfs_inode *ip, + unsigned int *unit_min, + unsigned int *unit_max) +{ + if (!xfs_inode_can_atomicwrite(ip)) { + *unit_min = *unit_max = 0; + return; + } + + *unit_min = *unit_max = ip->i_mount->m_sb.sb_blocksize; +} + static void xfs_report_atomic_write( struct xfs_inode *ip, struct kstat *stat) { - unsigned int unit_min = 0, unit_max = 0; + unsigned int unit_min, unit_max; + + xfs_get_atomic_write_attr(ip, &unit_min, &unit_max); - if (xfs_inode_can_atomicwrite(ip)) - unit_min = unit_max = ip->i_mount->m_sb.sb_blocksize; generic_fill_statx_atomic_writes(stat, unit_min, unit_max); } diff --git a/fs/xfs/xfs_iops.h b/fs/xfs/xfs_iops.h index 3c1a2605ffd2..d95a543f3ab0 100644 --- a/fs/xfs/xfs_iops.h +++ b/fs/xfs/xfs_iops.h @@ -19,5 +19,7 @@ int xfs_inode_init_security(struct inode *inode, struct inode *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); +void xfs_get_atomic_write_attr(struct xfs_inode *ip, + unsigned int *unit_min, unsigned int *unit_max); #endif /* __XFS_IOPS_H__ */ From patchwork Mon Mar 10 18:39:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010518 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 8988A22FF4E; Mon, 10 Mar 2025 18:40:15 +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=1741632017; cv=fail; b=W9chBfErJAP21So3WlQIKHGHQ1dBz4fsuHdk4w47NGOgJtqqX0Ozh8Zq9VJIKEuzNB7QTm7s1oEGxf1L9daYKqcfRM6T180WVQPSw3USxHEN43GQs4Tz4SYHv/cTEQ6SXPlfvV/uZ/2hpYhM6NfK/Ob/bZ6pk4aBEYfipYwskBs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632017; c=relaxed/simple; bh=+i3jkP9dd5LWiPva+E88ZtcGjwHDAjFueIx3u2RtcEY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=tJkmK1jvcNeuHeJqrKpv/1QniOp/c8ZNinBjx1mJ+gDajBv6cpGrGmVoD/P2zwLez4QxwoIBYtrXFdSiNPyjw50ZOIXom4XkZ3mOUGaMyW7hbaXWiWE8d7cgddWZY9gBPSqX/Lin7zeGS1KKfn9XAGaYlMnP8Tb9/Zrgf5uwRzI= 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=RYFFg7Lc; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=HAUQlo1T; 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="RYFFg7Lc"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="HAUQlo1T" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52AGfg8n032542; Mon, 10 Mar 2025 18:40:10 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-2023-11-20; bh=hK2bDxiHXaAyONxr58sgAAYu5QQccYefG1PbdKl7CxM=; b= RYFFg7Lcx8QiieFDQPaKq5FrahpvQqZNSCLfYK4ywvC4lsg8kuM2unQDM/YbOGOB PIyfmI7c8vhrIX2IZD4Cq2BP3TYfwH5Pv1p3n45b63ePOqD1ObqxdHmFwcnFfebG XmoLH3O3tyPv0j2gOJ7HsMhFwMEfwB21D3Mnp8qDY9DrF+v1M4x0U9Xr+ujNTZhZ /tRCYdbSyIMagCeeIv/190xP2m5Yuk9ca9H3DIfiFoJLDOyewKE0GwPPrHxEtO0i V4j+mDFKLLGm0XsjOYrX9mTuKXIyjKf4R0dD5/ko+KdRbcHyk4K3VoYVjOXkaXt9 UwscNF6Rupuy4/np4oa33Q== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458dxck9y5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:10 +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 52AIUCs5021718; Mon, 10 Mar 2025 18:40:09 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2042.outbound.protection.outlook.com [104.47.66.42]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 458wmnfs5n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PilfmAi+derum1WqPSx/lsqUAu8WbgdElQlp4cfhwFmQuAYqk5c6atQmtYp3KxVruBxg7YkVyBNR5gYrP50uki7o7I0lFI9LZ5chW0BG7qPusDOPrXh3YVSVonTuWwvJj1Oyrugq3IYvJvzdRmuwbL8weRBAwIZMa0QXfIfG6DLnRzEgIQXiFyg3ycg+vwj4o+gmGjUt41pLh8HRP4cZkWqWxxDXms0E68qqQGpdhRn/KuW/lcjzUfwwrmv8kPB9jM4VTXh/SpE5jd0GAd4Vn4ZOVx/3BlQEsYosEcZQlCqC9MtsQdY7KyF2fFQrqq0CyWriqnRiC96IMa+OJVP8ZQ== 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=hK2bDxiHXaAyONxr58sgAAYu5QQccYefG1PbdKl7CxM=; b=lB/GFxJHWXS7eFvDaXmZmsFbPQ1Ab75WM2EOCDhSWVuPfoTXAaNUni9ZsY7vd3TVoa12WYXUMU6PDUzP8Yt9AxXfLPCyKhELBICz+Lf6Xj7YSAWounnOyTU1S+qrPVkFUofbifvkOxBm+qAAtEiwRYHJk/TMMyIFNHWzaSR/RgGvURVAFcoBRb+O6zi+cyXu5XTKo93cNmGYLvdCsekNK2iPkFIeeGlGNMcjv45gnpCDhid0VChTYSkg7/QWFqI9VK2C/zRiby+HQ4GKhF2zl+sh52NApXW4itFnVZZ06waw86OnkSxjIDIGYyT5Pt3KDrqINSFhXKPdeP0M+12mTg== 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=hK2bDxiHXaAyONxr58sgAAYu5QQccYefG1PbdKl7CxM=; b=HAUQlo1T5gum9MZ3XzIlNGEwefhL7rXny5e97hieAqYPiNHkXaswCYv3jXe9Eb8u+ADZHn1FmHiaMGd464vMFJXtG9sKwqCiWbr6CdDX0AAAoltt3tY47Jqk9piq6UoB2pNaM+Mw5SFmi0ZCw+pH7BN2UDXU9ciOxdnCwpsirlM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40: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%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:06 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 03/10] xfs: Refactor xfs_reflink_end_cow_extent() Date: Mon, 10 Mar 2025 18:39:39 +0000 Message-Id: <20250310183946.932054-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR13CA0031.namprd13.prod.outlook.com (2603:10b6:a03:2c2::6) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: ba280c3a-ac25-46e2-ac0c-08dd6002fa8f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: SA9ZO2uJ15dZ3RgQcaVg5aLoxnF8O6JiP7y9IiWhJgYfVH1xxhnNEPTLFRJMzDG8TyYnoGF5JaasAqZl85/h8MHmKLNZNwDSwwHAWcjt5n7dGJx8Ib1bzQyaJhQV4uA7XZ/BKTp277zs4alegXGI4jl6MXbSW8592yiiJolEWYGmNfhqH0wm3kiSqZvWEvFU09iDiyi5GkRwC2HHB/KBNceuL6esdhbyFyoqAyEXmmawA9/+9HJxJ/d5+QI7aOlBY1kLmLoPMgOltPdlMeQSYfu4Dz5gZD3HUs90bfmojcMWQWoTkv/Qcu0EkPCpWFyeJnMomXt0c1dq6abfsIa+mRIkWOHfYSfBkMKLkJVJ0jkQy2sMQB1OTTllHaEwW9EayUDcLmDvIVQ+Ya+6+UkainBoVbPwG7u+KeJZCunZgADpuQHLLQFDllhO83CnosXhZQUhJmax5YbPMLHQtcvMp+xtHlwgO5zihOC/hystBwfjo7UbQgeD/O6y52/vtAroSs0P5dTVnRJnvP9qgwWf++BYi8nGw+ZTSQ31GIvcLl0gJi8fpSokaQKJ6QdJCfr3BmtIgfXlrORaXVtMfmYTlvN3qOrCckxL/C/WpSzTXqnW6pdXu/jkPkxZW7NdPK1i6lj7JtjZzoTbIXdvdTJ391oWqVp1+TGyOzUdEPqv3JCUI+kz5xR6/Hha5p9lGj8Y1AKh2DkAy2uVLgYMaMGxrj884OYrbaarnT/kPSU8keDPLddfK6QphyW5nKO1L9UInVHpaJQ9TsMSvkJ6jkX63J1ildshQvYreLq1JOfLniA8W5KCIt9dJbN6vUTISFC99QTiKWcelvoauSSruKxWIhopcYp2+4V3uxODcz/HMJTwf22Xkq3GlTxWlbzXzsBMc1oDmBIbOIN5PeLa9Js7BJ5001onjLEZoPgtc8YS1UsiEO8nb+u3QOTCWdf1Rq4y62aIwO7TvtvdCSw5mzxkvBt7QamtVhjIVWOwydDVHTeSJEjeFb3LXMWlRorfPvyFccB1+9EYDPsdxOFeqQxU9vGwDR2/CVrMe4RmryE5HOiiO3HpT3NUefqWph7zPnYXQd9x1l1mDewLtyBOyJ8olFuMth72B0iW0Eaig8cCTv3RoFxfAB3A2NzFY75D7Q6I6o2lkE6OgBl8bErVIAlEIzs6m5ksmwfoASWb5Zu5dSAICtBo3Z7LuEyeNodgHOTiP8G+3FlavbceP7AcWqbz2FY0NOZ4y0xbjAuCF71U7cz53WL32TNS5m115fV5lcszRqEHxr+UPem7295YeKKTkDuORE7Lcd5lLJMzhYsYa1FZtvJxp3Gu+bB2S9eCZeMXaK6KiwZpOx4C2Somt7NIj95dR/85qvBQ48b3Nk/vPLwyCqnHTodgI2TzZb05M1SL 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2hUg8knar1JL4k0Iw1otr7cS58vq2CLba08aGS6NNPGc0oL/PF9KLiYc6Sqghd52ll0iFhXbE8Upf7grvZcK4jzpCampCSVmYkASs9E0eZM6+jN6KDm2i2W/j3yyiDx4ubN7Hq3hE4vnrPaMpjOLyJbM5Ij7S0njf5MT1IaYgozZsH3fh66p4YU5lE2W6pYiwS/qDp8pD1So+2S8KXjt015lyiT0T2PzisEtTUlQuFje7OKkXh0t1rD2hRLBw+0+A0sxb2EqXhlZmjF7pYH7S8MPJFjNKy65/ZI3MQiG0XbgC6sN7Rc5fue08dYg9TKoxNZ2d64pFXO/ss3rTUBUZTPz3sccQzOpIEwA+mBNNN9AVafcp0RdkL5shD53Pmw1fNsmHafN/iSSVxMxP9Qvc74/FWdeP8+621dxZyVlRgWxrXfkaQ6QqCPgR1EVzHdY0ghIzg8YYnhS2DGRIPEougFoTPBimlDOaNkqLPwBb0a/brOpG4XESfpLWMYfHjAO/1DBadKheI2pIOQadmxnP8G5TMXXQGairOvztbA26wtmJhOQP700heyYxm5iYrEiDjZl5QksxPDp/qoqdjxScTKcU9PF538LBFZAIfQqO6Fxe/DM494v8cE2XY4InQiu6r+IwJ2cDFdtXcE1A0Fhl8CSkWK2mVLwdyNX/L0oHKnv1/APQJJNXOxiCJDW6zaViEFknyCHvsijsVFzd7/FANLzt4IOY3vkHdlwQ79up/MOqz0SbSJlgyY0barZjMw2E7EiFZ8yf7RBn8yrwn10I/jasxaXa3/aNH3+fhJpUFOfvbnQcgrFvW4cfXqHXwY63eQXyJSJoPAewmZ6CggEaK34lgW7RBGR3PMXDZkwjcDQ3vLa9h9ISW7s3k0QM2ev6zuWpK6XKROqBNpwMORJQqsk8AllOwrRanhMeSzsgpeWIeueerT7/3IXKXavbFyEr2BVIkjlBWbhil0QpFMg93TkIhIPD6x0Oy4L7b84vEulo+xS1iYIs/Ypp3dH1oqIfr1wYoO9GjBTyErAqJ/zfoI/7T5qK7fkyXgJMIZkqNHiZlexIZeqDqSYQ6aASi3QQ/DweJgkrnKP0HqwRZOwidsHZ14y14MbuZ8pHzR268xwBhiZYYYCvPisBrjL17WJC63EhIqCy4GBnT4ugknbseYHuaKGKzdEqyrKcJDQluFBaVX+PZzGi9uSgy3DZsgz4PA2uGiO9etGpo/ToFM/Oxy+iNIXHUxioGAnRwFNEkUeLRybglUfAdIObni43MifqBSttyOsiyh2ojwJq4jaUnwFAO4OlXGId8fLeNOtLrxssrBzKsA35GPVwQsptE7Q+LLyiaL89D0WGfuZblvNlHdZ/51GtXOkqCgX9PWJhyQ3KK9vvnSuxa4fpF7WL6crFlhVYgVK/dANK5f3cEbieA3Nm2piYN+TSqq+9C1XFIUyFfnQCV3MMDlG4k29qxLWgdwE5JG4HYbImrJlbmPc17tFtIpUnixdSQi9Ja0sg/kjVK8Xj5RZ1RsKyzQpKoX05pI7/JZ7LuJR9SLbIOTMZPsEcM+FBbYUNTKC7kL0QCcG3u6lSJKW2oM4d/6zzWR4sC+roLMcU0VjYci1RC5/Mw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ARrdJH/6GyTYWMGPGj12N5ua8/D6GQYdSkmXC7yoIsAGQQHpDl8MKgthmCXWVVAuOfdTHbUXfcnJ2H5UL+iO3FvdHJVel9PjCD7QWmPxfGG/UgJKR3m4Uyi4iue3pbi/X63u2n/gJFVvaoKgY4ubblwIwzDH8/sd7HYWcSAahvpfg0fqu6oUBiAy3tPqleF512qHn47KvRcP9f57jtSDH1QTIu80Q9XtNS4bj3ViZ8IVQHtALLyVex2dHg+b41Z5zPEJ7uR3HDt63szRXloIVFbrTAux6ht0TpnZd40iaKIDrKJBAZiBm9fCn4YKEG/hNpPSpE3VTh9FpbPLnO7+npd+AJPs8z9xokV9Wv+p5IMLIK+NRRWPH40/V5MZAeb/S6/ALUnyWSE4BsoYrAD9m1EIncd3XYopDrWUc3mliemH2Y7fDzHDZ2lBiPO0B1PjbupgU3uTxVDngFVYj5cpXQfP341afiQaHhp/0ndD5e6oV0NxLN5ZPDGQC/rvkW5aRN3Ifgah0GFKhhQrcdmau9EVQh+chJTpw+iGhTgAS2tD0Oax9d/sRg/7uP+TVkoj2pi7yK9E7HrJBP1f5I/bj9CzJ6Csntg6M1j1pApHdgk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba280c3a-ac25-46e2-ac0c-08dd6002fa8f X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:06.7787 (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: nHUkmZ0qng83Zr3O1Tid5U5sRQZql2IoOuwvzoJE5usa5RtQuRZPZr59qvTj9K10JnQBYfSWXVVZadqVh7UNXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-ORIG-GUID: Z-8-Jz6gky3h3JWBIFvw46BNmxzcrSx1 X-Proofpoint-GUID: Z-8-Jz6gky3h3JWBIFvw46BNmxzcrSx1 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" Signed-off-by: John Garry --- fs/xfs/xfs_reflink.c | 73 ++++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index e9791e567bdf..e3e594c65745 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -788,35 +788,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 = ip->i_mount; - struct xfs_trans *tp; struct xfs_ifork *ifp = xfs_ifork_ptr(ip, XFS_COW_FORK); - unsigned int resblks; int nmaps; bool isrt = XFS_IS_REALTIME_INODE(ip); int error; - resblks = XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); - error = 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 @@ -825,7 +809,7 @@ xfs_reflink_end_cow_extent( if (!xfs_iext_lookup_extent(ip, ifp, *offset_fsb, &icur, &got) || got.br_startoff >= end_fsb) { *offset_fsb = end_fsb; - goto out_cancel; + return 0; } /* @@ -839,7 +823,7 @@ xfs_reflink_end_cow_extent( if (!xfs_iext_next_extent(ifp, &icur, &got) || got.br_startoff >= end_fsb) { *offset_fsb = end_fsb; - goto out_cancel; + return 0; } } del = got; @@ -848,14 +832,14 @@ xfs_reflink_end_cow_extent( error = xfs_iext_count_extend(tp, ip, XFS_DATA_FORK, XFS_IEXT_REFLINK_END_COW_CNT); if (error) - goto out_cancel; + return error; /* Grab the corresponding mapping in the data fork. */ nmaps = 1; error = xfs_bmapi_read(ip, del.br_startoff, del.br_blockcount, &data, &nmaps, 0); if (error) - goto out_cancel; + return error; /* We can only remap the smaller of the two extent sizes. */ data.br_blockcount = min(data.br_blockcount, del.br_blockcount); @@ -884,7 +868,7 @@ xfs_reflink_end_cow_extent( error = xfs_bunmapi(NULL, ip, data.br_startoff, data.br_blockcount, 0, 1, &done); if (error) - goto out_cancel; + return error; ASSERT(done); } @@ -901,17 +885,46 @@ xfs_reflink_end_cow_extent( /* Remove the mapping from the CoW fork. */ xfs_bmap_del_extent_cow(ip, &icur, &got, &del); - error = 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 = del.br_startoff + del.br_blockcount; return 0; +} -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 = ip->i_mount; + struct xfs_trans *tp; + unsigned int resblks; + int error; + + resblks = XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); + error = 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 = xfs_reflink_end_cow_extent_locked(tp, ip, offset_fsb, end_fsb); + if (error) + xfs_trans_cancel(tp); + else + error = xfs_trans_commit(tp); xfs_iunlock(ip, XFS_ILOCK_EXCL); return error; } From patchwork Mon Mar 10 18:39:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010519 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 BB816238172; Mon, 10 Mar 2025 18:40:18 +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=1741632021; cv=fail; b=PXoOUNZueBvB33RNApSOl2AOgWK8XgN6vfn+sdd80wcNimLxYJ1ou0pP3zMF7qIqL9764XfOburD7YFGO/I5oDXIiJnx+To8L1wtX/wc42acvokyo4WHN842bFjq62eDW+A5kT6+IOZ73IqnauOqybBYpVnN55+7EjkW9oZduco= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632021; c=relaxed/simple; bh=B75sDQnS8j2I2rxT4XXtMlxEEcgZiviHmZocGv8QSWw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=JOYeSAZqcIIQiUHjWJ13oIGldwg0XeOqzEiU0oDHeSoMMfkvNUQaQUDOVFrJnmcraRf7uNQn+XKZFLYe0S8YhJsOO4IkG2n4K/oV/yBLnoiYvBsdZAEfnw9yNtVrfZZlySPadNEwX7iaTptbbsKX4SG3Jq4/cngU0pf+wjsBIuw= 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=FWEKh3Pe; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=DgeeZkzq; 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="FWEKh3Pe"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="DgeeZkzq" 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 52AGfioj011056; Mon, 10 Mar 2025 18:40:13 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-2023-11-20; bh=Dlc+2fXxsIuW1dmQEtrS+/ldWln/GWH+XV12JdjRhac=; b= FWEKh3Pey27DvrZBfQ3/HUx7uueiFYjcl99vNmFDtoWYSMPvTxzVQ/uJhbe3IuFO mfCcmGTIGc0hncjgvzyMC30aJgmsg3jjivcfOf0k+7R+TbBZt6HzRcKMdXs10tX0 rqsgrW4MGSm7DmgcqLmeFKOlU+u5vFvnkSyccoC1OcpHbDv6Hzo/cF2+PjWc2vC3 woymgQp5tb7JGWtpKGD9mNDBlSzkPnlLAH+oMG2LUcjQvclMkcdc4fWffWrLD1wO PL4EF5beIOHkwokU2dMudz6EuGs1d9XrUyLyc4gmirGA0YW97tlj3+PuN4rVoC28 ILfB3/TunY1TGLIXV9BU9A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458eeu39ec-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:12 +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 52AHQQHY019262; Mon, 10 Mar 2025 18:40:11 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2043.outbound.protection.outlook.com [104.47.66.43]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 458cbegxfx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nT4xKttyaHSP9B9s/ar0t9S4SnVBsU0KCkyUwNMCtirGvkZivkqACjsU58xNKv6QGTYYZ8+gKU1nX1g4RIYqNY0W5T0WIzcwqMrnqKSK/khIJZE4G+gU7sFJcuWZs8BPe/WU3pxqVL1ggdmN89myGdprsgqV7PMgRqGVDuB+CLQw6VgnjFsk4KJJ6AX0SKuta5oX+2KVyGB4Ra7JwRI+nx9X5JOFShhhtGdB1eUoIQUBCpBb/9Ac5lne55nQT6cgWJdU6UJzMa5aekroCQQUQ4hDFjwDMcUzY9xO7X913EfzeTvGIs6NRUyZrbG2Cjg4l5znL8dizjLirnWCgJFj9g== 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=Dlc+2fXxsIuW1dmQEtrS+/ldWln/GWH+XV12JdjRhac=; b=m2Ql8KlmoebdcKV/HuIX0D/zVXZgqxIpx9K5CPCekQ4V+GrzEUy6Ng06SVZjQ8ECAy0k7+yTZdxPDTV3ieSn2TE4uwYZSKKME4PN+oDGvhA1dg0qjlcySHmP280aQExfqFwEVRVmMdg0cZGr+6BJ7D7v7fuU0PhhwMpu54Zq8O6N4ObUISykdRrbbZw2gVX5ZtkpDN8Xh7XoraFGRszp8STCIdpPYBrxMacKptdMn90YOPO4G79Z+f2B/1mYpI+Nogup1W8kxyPb5mDpV1vxLKusoSHJwLvvN70e4FzQQMqZE/h/23B4jKZNFqpoqx//tOcU1ZZy4j1K2MI5XH9lNg== 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=Dlc+2fXxsIuW1dmQEtrS+/ldWln/GWH+XV12JdjRhac=; b=DgeeZkzqFxzAIhiNZT3oRxC6ZHB5Gr1wJBCuGCfKaJRlvSYMLcI6SRqrUppFpi9eytyG9JaE+lOkpAIQE9iiOFLmTKhF0u770wZpol6Cgz3B/OJUz27GQwYtymJ8rD9JyDDiuANmqQZUN7fNHUdAijj5d91z7eFIREOKgbWFLaM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40: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%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:08 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 04/10] xfs: Reflink CoW-based atomic write support Date: Mon, 10 Mar 2025 18:39:40 +0000 Message-Id: <20250310183946.932054-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR13CA0068.namprd13.prod.outlook.com (2603:10b6:a03:2c4::13) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: a7983268-8943-42a7-7b3e-08dd6002fbc9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: G12qFCADfetkYNTCa07CXdsz5aATHIDqTc6B2JqVN6tHwUuu0H48QRQ8H6Gu5vvcp+fzN8dbx96egm7uAGTuOwOg5npPFnqf8u0HyExY7AOA0bRA89UOiNyEKWziuDsxMELNaG8zciuh9/wZMJ8hDpUaeiG/i1FWhUjzFnPjiuAm59m0d/Wtm5jeO2a887CmCVi599yjg3+tPM/1RpcKiT7N2HYFlP7Bhz3qeND43D6pDt8dVE/1/tq6u9jeb00XBI6AQvgNEEolUELg7aAd6gqNGzZSWQgUybCJHY2OowcKIs+RS/hICU0PLbgMesy0z1Wv9KdiZSUs4HlxfBgqBRmVqCJmvpmazyaJNLeN0N9A476CDcoyUdzzxJDVpm1jH3JOTk7wsj1/hEc8a1PclZGU3npV+ojNA2jXuCVaI2nptKUS3bbKFIWVTtXy2ydyY6/2DaI+rKumB0oVAOOD63SCj8+glDT6UysaBkOF4LNzr7zt6g8X0NL4HUdXRbqogbbxk2ODLqgQ45MghpOmo0Nw2otRA6xBzrTfR/qQXXGQt71lIaRWTp8UtrPe6TaBq3Ja07+s/K87uZr8MG+f5LoHNAD3EjnDPkN5y4eB/YePOaMAku/ZCIhYJsETfmhQWG5aPibunxJJPpczytRPV+6Ul6+Rr00VuPyzsZRsp6OIVSfus0XQ8j9HeeEWVsjSTUmeJI4+tF9NQySK0KrlGdeV6TmYOgIE2FQ4ekVYwTV7ixx8+ES3QHvempFA2sBDRWgRMDyCmXXYMEeK4xZ+4g5pUsMtZPoSw5IWrPzBeO8lh9ZD3flwvZu4C85Dk82XzjXcxYXCFTC7wFfHZgtgQSNf+Cg6+Seu8rrk+j6Egj/X6vAtPw6bqTh3vcda043FKpiHfKOYFAUTtSqRtp56loytmfnbs7EC/S/0hT3Q3vpkumjFEiHZIo5y5Q7Wd+YwlrhEJEsMJUtNw8xSDX4U6Yla3xe7o4dPW2ElHIfy/ThQ4h7h/S0OGzzuRVY8bYG8H+oyFmf8PoRLVaBOCCv9xEwWDlfCnPLag96VTOC0MWoBmc3q0zc0ergLlNzEWlETPuWq1w9wt4fRe/J4dxewxMogzI1KXfX/c8gog0HYQpv4C89xoXNKORBM2cEcCRHdyv2GMUNDnPnsVQTET1IVLZ9ViA2uFB9uSZ1n9RtyB1MiO1FM0ReiWjNoHN3tS/gi2fxeoGQbIZe2yZSzRHJyQoTgRxvJFf8SQe8LmvT2hjwrx/9AcAA7i+pDhQDFfIdgVdByDEUWKNaqcR8K0PaLzNqKPlBwW44GJ9tj7GQf9I6UHcXIpiWbXp9Uh5abSy6VO3ZFXoLrLBe2fGtV53nuV0TVy5QtplWrbpTLD3iMRPJ5qNCvLMkNvekhV0wu2crh 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MnoOXyaUrYCwEbkpQSR3aV51WHsUQFiFCilz/9VxydcJd96hRRA6lSXbYAsx7qHUYbim1yIGYfstJuzbrv5ZC0DdleoUXwqK4q/tXH/vFM3q5/PEFl5JBeQ1nefFPmzTVf+ZuSwpcFXOEc7MUJClmX8gjNFiPZTSnZjDaH63GFEbQrXU9ot/e5rLh233TrBjr20GbmHEmZxVV+iOQrsj/QdPRLe57ImOQ1qll4rChl4FQLAXz7tgINY8mDBgqhB783taCFWrMZq44rrOrGfsFeWZZQts+izOqu7NgJaM5bNUSRTTft2cdjSXtR8E8S+HBe5Pba0Bl3dZ2qNizetUehh7bMJIW4T7byGb1bL1AMdsnQLr6ZrJlLylQzLYOF18X/yMeINK1yuXJf9AehrFhUvnOw4nzjUlEMH00Bb10eYlvM5CO7of3WmOLBgYqKB7W5LW+uaDWjMIAbdqTMF+y+MjiJiZW26oh/A5he/Zd8h/ILB7poqq17T7NKQfgpkWeULOE6OjX4+1bY8Pv9a56YpVp7u4bsRJxFsk71i6lZdAj4kHTSnlzydeQwzCqUO/j+gEPXyqypljNvAWKKrLbVXho3EjgbNX2H49LAw+nx+yiiqnjqy20dgeb6k26jTXDBb0ogbVPzyz9t43dLck33+I9SdGse7vfrLMATeNoMP+f3a9iq9Yv7jCsfI/HK3ILgQKfdJpsxwvyU+dMvLdZoDttqc9nOpNGAjH+etW4B84D35cNiwhvRGgibKkB8lDRz6nITRFONISQyXR/dQxBnHpVneaYHFuSu5aD+gmuzt5WWWc8kpv02ACK4ZfXBF01RtEHWz2J+Fe9tvv5Y2EvgWzHizdpdXBqKj1zgzYK2rtdzcs5zZ/5Ww8wPGyVYK01INffy+PK4u+9Qg+HWHI9jNLjDu1ANpc8nhQcUMh0StzZ480qTdjfEBUMQo8/xPfIhMis1elrzLesM7Eg5223SpZeQcpOEPSZYSIm8B2M3X+rwBDIwtGy25TdlTTsXwDFw/88uwcIpJ0wXKclSUVHaLayoo9GlvOayl9qp0/7GeCILwOldNCkR85lR3MC87EQLiDJ9IAa3p2y09TUvzOpC5WOm+6Zhduy89Ex0SIpGtSdGXMWtUa6XWX7ynaU5Xj7Efd5TVSYRQllPxbEhUaO5GREsRJmlrZdJvaHzvJxsDCk/rCUeRQGRGEdLoHWG4gq81r9iAS37j5VO0VzIxf6u8KoGvEv0FtZhA9FD2MyuRn3AhigT9X63b6y705KiGEYPuCtbfQdgM7YRtTROhH+ydxWtGsEQePf1zTgqlwmIhO3XTrOvIMwDNyUU8mtDT0xfdSvKBSEynhwIf/vn0OAe6P0yhJ3fE/tf2DfyleC3VCPy0twWRMax9/Vd05BgE9vlrxSJdmUYdaSKtI6n8aoNGqPEJfDWNMVCpRdrqLXSaeeZWHKX254nrbkjNYy/0h3HXmE+/M/EE9YSu1wCObr+XjgTLJ9MalT7yYBfsLDrVraluVwdJOT6wPFm9tH3+cZObRkrc3A/N71VVevbH4hIdhnQmm4Ok/D3fKFVmqCnUXRoOHGZtfzZobSm3LwmgIuufZ45nOHDl2OfA/uGPSJw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: E+6B3GzQjOhL8NstEcRy9QsN4j5x65+XgJgDc9Mvg4mTHVRR8uFOTPGFgIpuYstPLuCjaJAskwmFVGTrPhQvY7xqy18TZKx7Pyukygg0rxJ1fSUKpCIOFNHyoTgogITAhpclRGFg0VMpSJk1j16G3682TbPEkQ7hjAebgrcesc4UN7c19IbpbJ7K7vRwwaqaIsswfe8546O+GVhrpIYnfnqyVWhdV9H6vv68okWuSXQjFNNO4BtJGDYNWPxXyCpNMdGV2ObrmJKJgELArLo52j8OrN0viuXqpcip5HOuIavvt3A/SN5KAKvfAZxJSNJlIWauMVDpfYKJKJXkGn2nQ6LTfuyQRlicGbmkvR0K+4JLrMIbpgqnr9UppzEmneevq5IKx/wbIc02lyurcLo/XxydCVJOrE5ODOcoUnSXKzqp5CpbUmzxEwdwAugLKdsgbEEg6fn6qbU2YFLi7nY5m8nUlg5iEZyuiZNkA2haPHeqHZq05zRH6/TJJY/84OCgxdLXtryLCf3uOiQn92SXcNKweqyajIs9sNMFtcFkBTCgzFU0OJB4Ia/j103o1F09yJb1wSWzkrXuNWr9P7V3XswTNFtLg5tZ4Qf5J0s6Li0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7983268-8943-42a7-7b3e-08dd6002fbc9 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:08.8617 (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: 1nMNpld2iionEiNeYYvqWLRk0J29aRXlzVBJcJHbXs0MBpPR0red5NUD5gSpZwgLplizd5vW8JMF3uzPw4P31A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-ORIG-GUID: nbVbZQF2D5fM0R2W86SGF11PJAGXd50Z X-Proofpoint-GUID: nbVbZQF2D5fM0R2W86SGF11PJAGXd50Z Base SW-based atomic writes on CoW. For SW-based atomic write support, always allocate a cow hole in xfs_reflink_allocate_cow() to write the new data. The semantics is that if @atomic_sw is set, we will be passed a CoW fork extent mapping for no error returned. Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry --- fs/xfs/xfs_reflink.c | 5 +++-- fs/xfs/xfs_reflink.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index e3e594c65745..0949d6ba2b3b 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -444,6 +444,7 @@ xfs_reflink_fill_cow_hole( int nimaps; int error; bool found; + bool atomic_sw = flags & XFS_REFLINK_ATOMIC_SW; resaligned = xfs_aligned_fsb_count(imap->br_startoff, imap->br_blockcount, xfs_get_cowextsz_hint(ip)); @@ -466,7 +467,7 @@ xfs_reflink_fill_cow_hole( *lockmode = XFS_ILOCK_EXCL; error = xfs_find_trim_cow_extent(ip, imap, cmap, shared, &found); - if (error || !*shared) + if (error || (!*shared && !atomic_sw)) goto out_trans_cancel; if (found) { @@ -580,7 +581,7 @@ xfs_reflink_allocate_cow( } error = xfs_find_trim_cow_extent(ip, imap, cmap, shared, &found); - if (error || !*shared) + if (error || (!*shared && !(flags & XFS_REFLINK_ATOMIC_SW))) return error; /* CoW fork has a real extent */ diff --git a/fs/xfs/xfs_reflink.h b/fs/xfs/xfs_reflink.h index cdbd73d58822..dfd94e51e2b4 100644 --- a/fs/xfs/xfs_reflink.h +++ b/fs/xfs/xfs_reflink.h @@ -10,6 +10,7 @@ * Flags for xfs_reflink_allocate_cow() */ #define XFS_REFLINK_CONVERT (1u << 0) /* convert unwritten extents now */ +#define XFS_REFLINK_ATOMIC_SW (1u << 1) /* alloc for SW-based atomic write */ /* * Check whether it is safe to free COW fork blocks from an inode. It is unsafe From patchwork Mon Mar 10 18:39:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010520 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 C23FF23875A; Mon, 10 Mar 2025 18:40:19 +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=1741632021; cv=fail; b=SS7PDl8wOv04XiPHgRBOwIH9ty6Iikg3ZD1lva9W3ZH0AF/G1zG3q+sJBFFk6KFniN3ELuIzAfjCxheuJRkTNo9wGmLxjF2Oeyf56qZ2KDyREYZDwbBEYl91P9Cdyg7fkCt16kHkAtntspLk5gXHgR/L+sE1psHsLih8L37nAo8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632021; c=relaxed/simple; bh=Vk3kEJwvRRts5CDe3KE4h+E5fMII4O7Hyql2/X61jZQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=pPtga8ECbEuuFBPHCjP1H38/ATYezBO0jjJYAVgxuOvUaZKIzElf30LEh4dMV2huBgWjFZFCIprHsw9O24VVST6iNkEJ45vsR9RWOJ2vGbYLAm/B8U3WvE/XP33pcVWdwT2HUZLPuXCL5SUleD70V4X1Ffsru4khmnZp09M9uDs= 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=LskG9Cwt; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=MhLAVyjy; 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="LskG9Cwt"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="MhLAVyjy" 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 52AGfiok011056; Mon, 10 Mar 2025 18:40:15 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-2023-11-20; bh=cHqzE8vkr9dOlODE3rzDONEwK+qfjVHxRVzHfdRtZVI=; b= LskG9CwtlBYxfOoxCgqxwo9SKYemBPqaaQ3LutmghybDwb0450GGRLjPZ+d6JsqR IU08KR3iFYrky8Is+YfGragylGYNGGML28Gr7SrO0WRx1C+uZVOyZOx2rPFBeLUN ixe/wq0w2MDb07Di0MHgXsJJtVhVh2AISnLB02GjzfzF+UqrVm/f/pBYGLpMKJ6R VJBwxM221BjpoZdW6SIxAXOVWVSn6WE4i6Bs/OPHbTzI6whr04yL4UuHSpeampZN TDFkLtKFtnIox2k2HIvDQiuHe2x3byvJX0xs/+LS7OSbYwrGbi6tbk+mjxmKb36U fKCst2CQmSQXN4nJIWNqLQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458eeu39ee-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:14 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 52AHIfYc030585; Mon, 10 Mar 2025 18:40:14 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458gcmc1bt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C0tpU6PZMZp2jknEvjwmDixHVdkysACS2HXF0PgWBeJaS3rpTnRaz+h0ufP3eEJ+QQui+1ms3eq0LQuOfntyYFHy97bzE14HAhWHaTpi4qbxq0th0gtr0VCm2RD7iBH6voXjg5Dlch39sbcu1XeS7dJSh5GgY/p7t/9JfqfIairAc6CWPvuoAvhV1VqBW/qkuQDjuE1pcM3J1ACgnhuuOuHpw8voGG11bG9AX265zkEl6Y3il37yX+906ux0iaVLxaQ0V+dROUxGWgrGeRL4WEWo5auesENaeX7oB5+FANvgdObPhb83QU1xPdKOBcpX3Uxb977qSVXYXrTQSNpNvw== 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=cHqzE8vkr9dOlODE3rzDONEwK+qfjVHxRVzHfdRtZVI=; b=wHEtMUdusxPBiuotDW9/z973t9HO9u8oRdjgXzyemrQKCbIfHunZaE4xZS6gEPFr1SsCPWLDlDwwtu1GN3Afrp4ldpA9e5FzxlESiZpkcOU6m5A4ZqQqrpVuDcYoYk4k1kD53bu6safqrV/mI+5yloXv2joYWqyGmE3DVTBKdNB/YBsxc0r58+bW94l+D0rssLYurXw5go1IH4vtQSN+SMfm69Wu8X6jMbnqeabdmdpc6hqQ0X4XtdtJ4WM3nYDZNlPE3RkEorkK+smlQLxVvpMEIWvgj4MMc5ZFsSo7fVgUiYQiFMSm13mVmfKfG4j81f4FKAct/IwiY3foCtU6Rw== 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=cHqzE8vkr9dOlODE3rzDONEwK+qfjVHxRVzHfdRtZVI=; b=MhLAVyjyrKn/iK392K+NReMeU6AA+Cr1BiBySYnDGjEbWonFF0cLqJZZo39v0YJBK9pZLAFVjlEgZafQd9wKRhu86TuBSOGhGtouCa3GD/GfXYqAubZLwBEyCFeL/RC0xi9BLYM58jwYvM7FJ25VQByFom9HNBHfPgUlVlwo7gw= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40:11 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:11 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 05/10] xfs: Iomap SW-based atomic write support Date: Mon, 10 Mar 2025 18:39:41 +0000 Message-Id: <20250310183946.932054-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR13CA0041.namprd13.prod.outlook.com (2603:10b6:a03:2c2::16) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: 77c7a028-2bc5-47c9-83b9-08dd6002fd0d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: N8ccLJUSLXFY6VGgHQ44smMX6p/g3+o1DTWZtlbLyFx33XsBalwTXX2vVVy4zr+JMCfhocfgpr5gH1OK4LLVhmKW4OyM964KIYIYshttCQDi9SUyNzNHVSfALWPFL+IpHH70vQPTdGK/Q6/1riOj9mSe1a1MseqWI+erIvLw6MdAiUW6kE7hKC9xxH//FdnQlhCoXD/i4RZQSpUSA7YbBTg8D+3Ohu6wMPM/5MF9CFEv74Vx5IwQJW/HHd4322U9URm5ePBr5abYQIH27uTnPxs6N5+tCMKwpiLtl334k4JnOGXkD2OwdSscO8d9KEKmpTKKFZZj8Ii4lO/Fv5O0h77Y47x33A8KUcGyb7s45+XVlMSMwy+XsTwbrF85RTiNYJl1gbRUmr9xKRys2qKpRttgnrGf3LpFB9e/Rw12KIHGnTxp2pEEqbBMJ5UAVVFhzB5w3C1rHibwVvrXLHJbgUqHONIzPAB82foT7gIl33BzJtsKIaA0LIYwLiahJ4Guj1hpZ8mlaZhIXwYqleoJQ1ydVcrao2g57fnYRBK72XLwymelBM8huGdaI88hY4Vqeda3Mc4+RHfQUD1ScDUcXVd0scYC0GoWGXCZnO9gzRBDBp69VqzsDMtu+ER272Rvhdy55K3z1eN0hs7MWFEtfC5Orq4DEg+T3zGaEoQMBYlEfqk/EpcyhvrFs9MdfZ4gJKm1X5qlARtXRN+bPg78I/vu/Ea+P2uaJDRGPF186K2bJL+wu9qLoLMcuPvNjhlONqu2cqwO0GX+yBjfmDnmXAvELJDGJinCUWh4ePHj4Ei6LoPj7AiLkLF2ImWkgvuogvN3COwA9WN9ZYJBV1H95LXiIsyxLqK01bSPbI/Ck5Zt1m/h7qe20k6Jh7RK5Mg8pLYHCOUVdmIbYOPr0MsBzBhlhQSXBNdMMU5MYqcKsKIClpRjaMOO9tTF5CVCrPMoFNEm931PuTX2rgoWl+t8OX0dbPd08D2sEqRUam7VvIac6RAF0+ug7Q3+VHbblfpdGoroBLwp9ip3PgWfMpqy4g/wPK9tgVBTKiFr/rqfY4AAs4Yu7Avg8bIBY4BtdYyxAZIWcsKEuWtm7t2YLhfHgb+fNu3KxqVD5de6HlUZDSiKuUTZbb6RaeoXLiXddiCJicTIAUCmbG45C+5YAH7m4Z4NnNuS9v0dru/t4WVqclnAG7yON5WwVWwUD85ASN0Yo+kKRpEVm6+oxQCMKzM2dgheyNL0283cJNYCxm7Jzvu6mUhyT6hwXGL04AxeqF0Q8rXN0REMVJB0MOel3x3qDcDEykzNOqzYmHXOO4zmdtv57VbSiV3SZJjoav4b4Iud4217BbK63xTuG2LDPmX8Lba4ajhLjH4EaDScoTFjqUwyqyjmrs7ZlLuhD0h0DykG 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KE9+35mxJEqMk9IKSGC7LpzGUifPaJI5CNYP3nCoC5/eW2gcmWOk1W0/TSS7o/ujbW2JUe4Gk33wlyDwN8Z9+dYctetTGe7PwgYFi5tlZtQmjavdqj8CVUAnV5K+ybwdvEobIzK8NLRVwofR/shmH4sVnJKEVwemUB4604akZUER1iPsPXRcwSw66JRcMmlQHilOkMDDCGT4p1moV0Xmr8NCQN6i3/lb4ls9EZnoTXOf1R/GVrV3E9DtlPa8/JBeGEjx7orpSPxKCPswQkvUs2xGo49KyPBOQwITgtrRuQqI/AFejcgslOe8+K8joV8UxFwJOdpQyP2u3ZnghvEsISRwyfiplwg23AZmqMqD8sCtWRig2Ej0HZN1y5rEdRnAWWk96PCNwxMBth09d34EFyNJT8idK2S+loNStwsM2MOhoE0qSWFHSMG7YUXShfAydONOG2we0W3dfGa7sk/D5JGmKSdm5cHbzlXpm5/eNiTsw0MUf84UEP7jme6ymCfTEO2splFf4d/qDmHtgnYpNbL4isAKVEK4pF9zvI+58s1RLHLnahps7GcNHxSZaMh0NfJ6oTewaebvC0ezlMbxgTgiaHekx58dCCM1NzxQAG5PUfP+F09f8pa4btcJokoIPdgbOzL7h2JDnvVW6teXHHr7dMJVPpfi3OSWD/0N9PxGLeJVUBdxg0tSijGqkYoMW2PjB8BJnuwCQwHJNc1BHuMCzvGTibiFKqY7CeehdCf35tRadIdpAsOiDz27f6ApPT8B9VafMvD35FAXW4TMEeZTf4WJW6ujv/OvH3dqSk7L3ijqHdkXHIrpdifcrMvoFQghYqlaaouy0eWrAfWx9U0VO3xUhcghDf6rsm+kvq5NmAXNY54KeZMmXNSBGSfNsqeOBpR0QcBaAGaPLYEY/cLrba0phVVvNm1xnAUG0WpNKpdYrPc9j6CnPcSY9wCuGYHY3TShQprErq0Mf+wisuPMhnQhp1QJN63r1NmkGJq14Tol/Mg6b1gP2+93EjQVxMk2ZW7psf0ubDbXlYNz4eEoQiKUWk5CXllu2XrHsXswbQti18ZL4lgO5JNGkjZLwP742K5S7cmwT0i3wwKro4/y9yxRSoceB59hIv33ZdDCin6PU0gFeR7P/DRd66GcSWN548Q+BiW+bJgTZi/z1MEkBHPo5UQy3Uk82Syrl6MfffvqZB3F6/ExxkZoBE+n5L60YVjY4s9GFoRfP/VS3tdiXyXnZrh+ukRvaA7OigNsGsqfbP9dCwIMnh1hp/1Kju3NDIF5iOtTu+QXsXFgkEwMmZ3kQc8WxTSNGag1aTWSzZGI38acegQvntP+LwMbK3O7C4m1Gr0+0E3Mwy7tQ71i1+N4uFQw2FYWwZZhCnxEMixqYW9tWgpW6Vtx5juVU8WPWYBglDY7vegWn3RbwZCqSj+2m2clzCP/tEpzy/sZcjlNBG/RU5yBPYhrW5oO5uZNxgtYRE+8OiXCyvU35p++vlOIZcL9fd9FoRZ2NNnhGuYWRS78F6cwSOA/cTqy5LAJ/6f199VPqDG6RtO5o5etGM2Gu9sa4G+nHIAP2y5gbwc49+053rY5BR8XOdNA9xSNDdUXprNK+muBLbWTOw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Or8/TbwyZ/aY3qKcctCNnCMmhXagYtQsjnOxTJpcN25iWM3O2MSxguNnvfA4Qztw5apcKJiYosa2BrUiXs4l6MU8E/4HETLI4UsqzlXnvWWF3Pi2YrJk3wpj80FUyYfZp14EtT0ogj0mOaGzhd6o7Hs6kRpkVSFwjdWU5N8saB4PIRHRfczjhywtc0fUYgVUKd0F5IIwedtJ28tNEMKmHZK5jiUIimFMBTALGlWesjBLPtCezlYOh5vDxePZYlt7VbEDwxJYW3c2pZdnXRj1Srv0PybrmCKQ/SAffQ6i6M3uNqGZiHKsVhXsKuB60NNpJZKvTtKWiExKicMxSEvcOViBQH0L2E/qRCsl9Oa1Sx7NAC85vn8k9tGbSK1AoYZN7u5Y4Z9cqRjvK0FkIBZomiMwpvOn1mrotsQJga2nhK+Yv0fvFDN0d34pM/jacCJBV/K45KGf+wEp9MGf5oAQSYzhuF2FpU6I9jxA38LNBqwKRzMgQ9JSCCZBjFcIerb1yI3g0bBY3688HKNk0VxCerkcRzMxpMVDslRoO+127IA54jTZkNcD9N9zuMsN7KskKOmTqhTLweZM/x1EP0/8uWpMUdpGLoYnhEKaIoRVjoA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77c7a028-2bc5-47c9-83b9-08dd6002fd0d X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:10.9909 (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: Y3IF+wxncA0qVlWlXrkxRSeWKwsQ7IRFLKvpAp1Tsdd7HqKmH9h+MXLW9mT+CrJ0SYEIPdAJcpcU4Altd6iFkw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-ORIG-GUID: 9U2-mFLLfEE1RkBXUWIrigx1RCkPmf5j X-Proofpoint-GUID: 9U2-mFLLfEE1RkBXUWIrigx1RCkPmf5j In cases of an atomic write occurs for misaligned or discontiguous disk blocks, we will use a CoW-based method to issue the atomic write. So, for that case, return -EAGAIN to request that the write be issued in CoW atomic write mode. The dio write path should detect this, similar to how misaligned regular DIO writes are handled. For normal HW-based mode, when the range which we are atomic writing to covers a shared data extent, try to allocate a new CoW fork. However, if we find that what we allocated does not meet atomic write requirements in terms of length and alignment, then fallback on the CoW-based mode for the atomic write. Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry --- fs/xfs/xfs_iomap.c | 137 ++++++++++++++++++++++++++++++++++++++++++++- fs/xfs/xfs_iomap.h | 1 + 2 files changed, 136 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index f3a6ec2d3a40..6c963786530d 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -798,6 +798,23 @@ imap_spans_range( return true; } +static bool +xfs_bmap_valid_for_atomic_write( + struct xfs_bmbt_irec *imap, + xfs_fileoff_t offset_fsb, + xfs_fileoff_t end_fsb) +{ + /* Misaligned start block wrt size */ + if (!IS_ALIGNED(imap->br_startblock, imap->br_blockcount)) + return false; + + /* Discontiguous or mixed extents */ + if (!imap_spans_range(imap, offset_fsb, end_fsb)) + return false; + + return true; +} + static int xfs_direct_write_iomap_begin( struct inode *inode, @@ -812,10 +829,13 @@ xfs_direct_write_iomap_begin( struct xfs_bmbt_irec imap, cmap; xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset); xfs_fileoff_t end_fsb = xfs_iomap_end_fsb(mp, offset, length); + xfs_fileoff_t orig_end_fsb = end_fsb; + bool atomic_hw = flags & IOMAP_ATOMIC_HW; int nimaps = 1, error = 0; unsigned int reflink_flags = 0; bool shared = false; u16 iomap_flags = 0; + bool needs_alloc; unsigned int lockmode; u64 seq; @@ -874,13 +894,37 @@ xfs_direct_write_iomap_begin( &lockmode, reflink_flags); if (error) goto out_unlock; - if (shared) + if (shared) { + if (atomic_hw && + !xfs_bmap_valid_for_atomic_write(&cmap, + offset_fsb, end_fsb)) { + error = -EAGAIN; + goto out_unlock; + } goto out_found_cow; + } end_fsb = imap.br_startoff + imap.br_blockcount; length = XFS_FSB_TO_B(mp, end_fsb) - offset; } - if (imap_needs_alloc(inode, flags, &imap, nimaps)) + needs_alloc = imap_needs_alloc(inode, flags, &imap, nimaps); + + if (atomic_hw) { + error = -EAGAIN; + /* + * Use CoW method for when we need to alloc > 1 block, + * otherwise we might allocate less than what we need here and + * have multiple mappings. + */ + if (needs_alloc && orig_end_fsb - offset_fsb > 1) + goto out_unlock; + + if (!xfs_bmap_valid_for_atomic_write(&imap, offset_fsb, + orig_end_fsb)) + goto out_unlock; + } + + if (needs_alloc) goto allocate_blocks; /* @@ -1021,6 +1065,95 @@ const struct iomap_ops xfs_zoned_direct_write_iomap_ops = { }; #endif /* CONFIG_XFS_RT */ +static int +xfs_atomic_write_sw_iomap_begin( + struct inode *inode, + loff_t offset, + loff_t length, + unsigned flags, + struct iomap *iomap, + struct iomap *srcmap) +{ + struct xfs_inode *ip = XFS_I(inode); + struct xfs_mount *mp = ip->i_mount; + struct xfs_bmbt_irec imap, cmap; + xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset); + xfs_fileoff_t end_fsb = xfs_iomap_end_fsb(mp, offset, length); + int nimaps = 1, error; + bool shared = false; + unsigned int lockmode = XFS_ILOCK_EXCL; + u64 seq; + + if (xfs_is_shutdown(mp)) + return -EIO; + + if (!xfs_has_reflink(mp)) + return -EINVAL; + + error = xfs_ilock_for_iomap(ip, flags, &lockmode); + if (error) + return error; + + error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb, &imap, + &nimaps, 0); + if (error) + goto out_unlock; + + error = xfs_reflink_allocate_cow(ip, &imap, &cmap, &shared, + &lockmode, XFS_REFLINK_CONVERT | + XFS_REFLINK_ATOMIC_SW); + /* + * Don't check @shared. For atomic writes, we should error when + * we don't get a COW mapping + */ + if (error) + goto out_unlock; + + end_fsb = imap.br_startoff + imap.br_blockcount; + + length = XFS_FSB_TO_B(mp, cmap.br_startoff + cmap.br_blockcount); + trace_xfs_iomap_found(ip, offset, length - offset, XFS_COW_FORK, &cmap); + if (imap.br_startblock != HOLESTARTBLOCK) { + seq = xfs_iomap_inode_sequence(ip, 0); + error = xfs_bmbt_to_iomap(ip, srcmap, &imap, flags, 0, seq); + if (error) + goto out_unlock; + } + seq = xfs_iomap_inode_sequence(ip, IOMAP_F_SHARED); + xfs_iunlock(ip, lockmode); + return xfs_bmbt_to_iomap(ip, iomap, &cmap, flags, IOMAP_F_SHARED, seq); + +out_unlock: + if (lockmode) + xfs_iunlock(ip, lockmode); + return error; +} + +static int +xfs_atomic_write_iomap_begin( + struct inode *inode, + loff_t offset, + loff_t length, + unsigned flags, + struct iomap *iomap, + struct iomap *srcmap) +{ + ASSERT(flags & IOMAP_WRITE); + ASSERT(flags & IOMAP_DIRECT); + + if (flags & IOMAP_ATOMIC_SW) + return xfs_atomic_write_sw_iomap_begin(inode, offset, length, + flags, iomap, srcmap); + + ASSERT(flags & IOMAP_ATOMIC_HW); + return xfs_direct_write_iomap_begin(inode, offset, length, flags, + iomap, srcmap); +} + +const struct iomap_ops xfs_atomic_write_iomap_ops = { + .iomap_begin = xfs_atomic_write_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..5272cf9ec9d3 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_iomap_ops; #endif /* __XFS_IOMAP_H__*/ From patchwork Mon Mar 10 18:39:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010521 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 6F3C823956C; Mon, 10 Mar 2025 18:40:22 +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=1741632024; cv=fail; b=E6f5w0En6BtQSXhtbLOhqPQS843YvI73QuHHghAI0nARplVwPWTGQOUvF1X444Gb0CQqQDd0gCZEDo1LSXyWlH684tvQp8nBotKTjPsT0Jx3SfFiOw/SmnYer+fkyZSCICK77Ev6/O4UC/OlhLnRgIuw1MGwN50vc37eYJG+r3Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632024; c=relaxed/simple; bh=UArNafHb2FwlqNIxaZWkHyzuV+9r6GMeGuCo5o263lI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=shB+oe9mLsH1XJ2bJpp8UYIjz5IQA6veLh/cMiKpIEGzpLxBObxkuMkZ9WqIpZRt7brykMIvbf36UqVk3ddTMj1lOURdFdBEEkyxBEDWknByaLOIs34WrNx75qyvEP2ZMjbc/UbJpoaJXfCs37ojfTa+VCw8n4QUo+cSwfzYQkI= 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=Hv1WtwYM; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=MvrMnflK; 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="Hv1WtwYM"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="MvrMnflK" 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 52AGfisx009790; Mon, 10 Mar 2025 18:40:17 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-2023-11-20; bh=p/3cPZaLLFOfTMyh3D/7HpCTw8fW5lYxjcAXbegd5ig=; b= Hv1WtwYMvYWVIl2zOXjesNZbU72wd6XDEXZqHM/xfn7jujgJv5QmCOdpwgGlzXu9 QIEJkAFdq6I3Kmw3I8sxWsbS7Kft98i7dbMAVNZeSA5j/7nraRSWj9WSc3wZBHKY VieRgA+kI0YzJv96oyqC5YS4vMHmPmX3PP6jl26o0wyg1EMW3cR2CTwkhlwXo6MV ty3J1Il/Kk0LgCbSYPHLnvsQUvpYdopMqGkA4Svxm6OLL3V+ZmM00C8utrQ85KQk qyX8FvQBl4YeNg4FtD5Ap4EiZh/kZNgTQNNHvcV80b61HXimpMa/Eub6cTsi7inf WA//4Ymq10PFwaEnbzsyew== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458dgt38ar-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:17 +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 52AIFBje026926; Mon, 10 Mar 2025 18:40:16 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2043.outbound.protection.outlook.com [104.47.58.43]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458cb805p7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rCdWA9i7SU3wg7Nf4W9WqVqWnXEAx6T9O5+WVnAVm0EpzuboYIlca725v4oxqU3/9KJGjCxxDERwr+fxYr83dxui21f91QO5xp+nrvq0Bcf75DGVB1/xqbB0CFYHTDxuVGjTZYCEPLxairktROyAlTnXdNCyFh7RKz1ajG+Z+A52bA7EaCY6TFJCwD8LaH4UloWQ1kPbkB89fdINZihF8NGXjpe/M400781xUjJtPHfpA30SobEtBxF/fjKCc4W8yC6DuJJHOOb3Hho7Vmmoo6Te7Ad34ixO+s/YQ2g4xc0a0WhpM50+VQ1uiX7xCZVBHqj7G9oaJcCCQJQs/kvcXg== 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=p/3cPZaLLFOfTMyh3D/7HpCTw8fW5lYxjcAXbegd5ig=; b=AQxXFdAo/uHsR9icaYztlmqCsgbJW1rq2Nevh59mGRNZg3eKT4tcZRgVaFdU2NQk3LDGg4V2ZovMLDXozH5WlvqUxkneMHwpiahLxjOlaN0JMOYcpAfkg38aVhSGl+DUdVEdzRn4A1RrQIZ0n/nJlbizs/eVcbRy45/blmcWvsOglgN3d31T7DZnP/3kt5ISnQGpvNF19b4fqCJRN10XA/j6f8NBiK/RLDizuw3R5LkP0SoVlW7oWxAHiE0iCP3UktrTsTAwoYY1PVmU82yI2NQhOBbl9LQPhVB6x7C8SspCQcEXaxOCrRRv//RyvgjXQsyIRyEcVm7PejriHRzXOg== 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=p/3cPZaLLFOfTMyh3D/7HpCTw8fW5lYxjcAXbegd5ig=; b=MvrMnflK8Al8FgCaOgUviRJN2fDGXpS6MLeFzVt4aBB/v8tny+AUcYfqQQO6aHhm3o5jNW00iwG60woEZMMHEyVZ9SqIVhIxOn6xnWreHiSbVwHCMbI6fBUDM8IGztd7m2Q8DMipHaFCEC1v1XLp15xTUwGN3PrMlpmNPTw56Og= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40:13 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:13 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 06/10] xfs: Add xfs_file_dio_write_atomic() Date: Mon, 10 Mar 2025 18:39:42 +0000 Message-Id: <20250310183946.932054-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR05CA0010.namprd05.prod.outlook.com (2603:10b6:a03:33b::15) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: c5709a3f-7c6a-4351-c492-08dd6002fe4a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: VFOuA1Wotm5ivVrkGI9g8dcOTaw6ONxOC7WEGIfKkqhsrAZHguVA7RI6i9Ed8FnoX1NxgWh4KcIpQdzxxCYIygu+I+/gYRCzDT0u7TF2LJN9DOovASDuATL7mgonCDCpV7LbWrH0eFbmfvsACOOsUmHqqq2IYeFF//O6jn2asaM4SztOwShG0z766YXZNxG9DXQPXO9HpWkigWgBwmDMGOLA9ecQAboG9TN1vHpy9rq5j5Lgd62SsRjgGlQotp4FCYfGRgWyMXh1XzokoXUU0A12PDS9cF2HFgEviOsR2OlCwBYaiTaLFCPUB/8Hl8f+Kq83d3GjxG0Xuz/8hgX1wTAmPPpocylZhb5Y1PdqLjaxErxTOU4D3T/Th/hnprDDiU50bkc/q9BAHbBm97WDgc5LTHjAwa/wHmc9pLEZ0vOzJnJMEmj2H7QoSTsOe045pbc5eJ3UrcheXuqqtRx/Ar9KU8la7n7xPsw1qGs6ly74YD9pB6AVetdlaZJdHjCqmpN9HjgZfLXX5XCGDnyL9HCeiOcuqHquSC2/DQihPc6eW6kjinJtq0d7zmCNNUsPHqvMKx4H2/TPbER40/UEZlVI503cq3T7gsrxN4yfCiqgJRuDE2xICEh4ShzOjSVfAgOo2m+UeaWsxcXDyJ4aea/XvR3edZeG2ZO/GJc/ZU4+CM1rhux7shYgBka119SWfp+g9tAu6tng/B5K4X3AN7z8hGiQBUYv+JEpRCrbK0audCxKT1h1XC2w9gbN6cApbmwI2+2cARJHwPE+McDBO1NCXOHRqy2ZstBzkjxMlHmrW6HlMSes+c6MV+hRMJmvbQKnWCt9IEbJDKMF3I8lF46ZMh3BtrAllPegLWHjlsmM+z7jSnk2pjsTldSJAmQDBW9wJ/U1UaZAbLe75N4Kz2Px4gbfRcrZLnxZ3BXj0npOXV5ORrt/kc7922mxNgP4PwbSFTE1tEV/I7SKzSrargv/pFM1fcqEn/naHmrF6egJwMyjJQ09GFqGk6AcFGznjdtctFTrzndLRZEUeTiqocaAemO8PS03jjIa99GJb54VTj5BVlZJ44MohnPZQJdgvw09CvNlQIx6Dvf7POduV/ma7+it1gGlOAy7ad7MNMGYyjWh/ji8sWkryY85NNILpI8OzVOcmQRiaV963Fjp7tZsLcpQFs/dYF7DcGIkZzAm22liOqOtOjKfwTgnFvuxYfNxVi91jS9ckVqwUGoNyGlU3jR0Udx665E68LGkC0tOSNajXasb3qJIN/Mu2ivEgDyW7AlTJP4MSxtkmgOetQn7iCH/milHAo4XU3VNsSZZOnaJ/59RsAh3fu0tIUPzi1eUTVYEIzZ9T6hf4+TrskTMTg8GXlUHd7UvJ9+mhXQi3ZuxehI8X0E9pceygzY4 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YGhMno9nv79ddLKGfQsNXFOthSZ4AYCQ+ieowc+Htf+IxCmtbQaudXr5YieuvcYd9Kc+R6sTGTofEtzIUYQJO5mb8kpqRuJ2peHNQAvcSBWVmnOFf9/wZ9Xha0l8YQ5xmmBC2Oc7a0gkMyXk+PoQNTQGDOcIzGjFHU4TeqJVM70LvbqzYXJtW94IqxdgGfkAc0wBsR/Tzij125jEjdsbpqUtFyv6O6qAKC4XtZK2+9uKueHsF5iC+ZNm5b/ugCGhwzerX0nsoK7uo/tBWD/rTIGI6EMBKtpk+1Pr/eY7m8Bjl7x7dgxQf6VTy6AlvsPL+mZs9igmdkdgNOTkVmDxcfUy8tbkvro+GSVHUgGopN+PShLoctLUD5Bq8cdc+2d1HsBTCFHafAOUFgT0ZE4RCTLt24Mn4H3NaCpltR2riaeA7ar7uKodgP2WuZDwowiU4JjasIVaz0YgdG071+GBM6qjXyo+UmcxRr61cEVJKUdBUx29te0XF7CcWLCLmgstAoDWQHZOj6yrnLIiKDahcDeiX5IpadrgyD5P2hwYLa8Dg0be3J5vFDbKfu9Zlukha/yF/AZWnfe5Rx17gmwtQv5b4Z+4ZQ5GFSRduiytpz9ACsLrlRgoLu/U8mrxCsYcNuZ/0pKMCZhZXo6xKIAiImQSzqoP/kuSOKYFm8R/6NX2yovgOuWqo3O1jBoq2lJU7ryhN1jQSBr75EeCStmE7gvF4g03lALJMRGu9Bi2O3PMNNygPAl8SSMfckUHYzHdGa59j1UKFWPQGaMDIU5sj3Z5JCoQatk+EIvielrtzXVvub1uZFyna2243Lf7zUGpoDRGlKuuiaHfvGHPln2013hd9vcXgktZdOQfCWVXwMVelLrABNKpweQP452ZLbwX1V+6bClM1BQvoDmHkk/cai9h0egqv+TuPbwYCuVPLiYpuNZJvo4Luh2jNhDxj+RIKFuxxB2dGlr3VfXQ/WCZG5CeVCoogv9D+fo4ehQhMN0lS3jQEBWGnKBXGY9/Baui2K/QNdPqBRreez7EEOHi9phXl/OaR543qwWBRLCET93RgPst1n/acYyqNnwIj8OVNGUo61i4pRO010HAmF4x01GBb7rc5WyBZBkBp3FMZCSi5xuBpLR3RfmQafiRrvTFaFmtMe1lFzS0z+LoAyphaymX9Iqx3ndNg8iLdIX+qgCcgypfipSWyRfe1q3zKWZsxEgLZ9x/6AWS9ovpW/hRiMHJXxyk1eRX0FWnDs7TEk5MSsu73/SNZlNZpKn6k67pMmEKVWbqq2qVDR0P/NFCkqA7oFkxtws0c47DV8UlpMMEgf0ogQXnDWS5ZHDWD6AYtTfzYSJDcDP76C5uNkIne2gwHBcLxNtvICSaCSuKdO8avXRHXu5bId5ekQRbskqbAnN7A488g2p6bLqEGdZrNVhAbY/zlDW0KYRUgRziZVeQQCVnAvRiM+BmMJZ1mYd3hmOquoQOQB1hNzcJZcAAqQQR0Bk2XscYulI13FsJbPTnb5N0v9cYmvGGZLkeHskaiJlFXtUD9o7VFSEoZaUDZI37nX71ImuGAky/X0DvyBb7Yd/m1eggAyPEakrw0nZjVMV8yBVwfOPMeakbdFqEMg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Yn0jdE/BTo2EWxGC4s/+q0VcE81Nr8NugcPq77QQY5EtX4YkI+dO+4Pf2t3993UfvHG3Wuc0X8fxVZAlD84VaXB/xNdZdoTsFbmFbVyG96jrfaZhFurFEF5YL0IsoXEsm6uQa28qeWGYNVUCZNRZEkLOC52iE9MyNTviIrcFUkePkeUTl2bkBwr7hUF1jYS21BolGkBhVqCrypJK0wmmkru9O3cqC31BM79U5MUpL0MwpH5T88HhbuypdRodghENv2/gMDoLoPUjnwNwaUeYADPfM273GQmg7YM+GHkDjOIBgwgxpsTHtWQRXGCUymG1d4u6ax5dS7DyfaJVKMOKh8C3yLYABMQIEqnKCGKjBjk991LMhUQR9izhl65tUGUxFr5/bhsSGkROyo0QaUhFY/6C8Pmru/0FvLbuS+kHTxVS6wHHXishqxiCnKF/xum0B4U21whOIwIz+GtIFmcmDH5AoqLE6Ak13tZpz9wOq4h2WHhp92oNTWRER9CXUIlYrBcjA5SPRDcVWVuPo27rCtrj3h9dZyJEa6v9D8DgWEmhUSY+F5qokWr3MNakjYTnSzBXvlp49nYjHtJLTryfHVEyBoYakyva9CfdmCj8EBU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5709a3f-7c6a-4351-c492-08dd6002fe4a X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:13.0487 (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: H7xjcMGbX8pOPYPB5npNN1QJXp6/1isc+EKePnKmmQ9ugzbe4pgOLvlKMDoyHtMWEJLbqNWx4ZmpeDXpGzb98Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 spamscore=0 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-GUID: 6xL-jnrINkKq673TbDXLC-UEoe7692WK X-Proofpoint-ORIG-GUID: 6xL-jnrINkKq673TbDXLC-UEoe7692WK Add xfs_file_dio_write_atomic() for dedicated handling of atomic writes. In case of -EAGAIN being returned from iomap_dio_rw(), reissue the write in CoW-based atomic write mode. For CoW-based mode, ensure that we have no outstanding IOs which we may trample on. Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry --- fs/xfs/xfs_file.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 75a6d7e75bf8..ddcf95ce741e 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -725,6 +725,46 @@ xfs_file_dio_write_zoned( return ret; } +static noinline ssize_t +xfs_file_dio_write_atomic( + struct xfs_inode *ip, + struct kiocb *iocb, + struct iov_iter *from) +{ + unsigned int iolock = XFS_IOLOCK_SHARED; + unsigned int dio_flags = 0; + ssize_t ret; + +retry: + ret = xfs_ilock_iocb_for_write(iocb, &iolock); + if (ret) + return ret; + + ret = xfs_file_write_checks(iocb, from, &iolock, NULL); + if (ret) + goto out_unlock; + + if (dio_flags & IOMAP_DIO_FORCE_WAIT) + inode_dio_wait(VFS_I(ip)); + + trace_xfs_file_direct_write(iocb, from); + ret = iomap_dio_rw(iocb, from, &xfs_atomic_write_iomap_ops, + &xfs_dio_write_ops, dio_flags, NULL, 0); + + if (ret == -EAGAIN && !(iocb->ki_flags & IOCB_NOWAIT) && + !(dio_flags & IOMAP_DIO_ATOMIC_SW)) { + xfs_iunlock(ip, iolock); + dio_flags = IOMAP_DIO_ATOMIC_SW | IOMAP_DIO_FORCE_WAIT; + iolock = XFS_IOLOCK_EXCL; + goto retry; + } + +out_unlock: + if (iolock) + xfs_iunlock(ip, iolock); + return ret; +} + /* * Handle block unaligned direct I/O writes * @@ -840,6 +880,10 @@ 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); } From patchwork Mon Mar 10 18:39:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010522 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 35B1523817B; Mon, 10 Mar 2025 18:40:22 +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=1741632024; cv=fail; b=DEzwt74KM4lvcYhwmiH6NI48Q2+8d7VVwTqoYx6YCSSvwhJ/hlZUYpl7dahpExXAEkkkh7F33P96y5F7IgDULbhE4IcC4OF8bKE5irHEHKAWvD7RJYwQxoBuKW76TwQhZUYT5YFdxZY8MCyuYxZEXMFTcEaegR5uMKQpX7Vb+1c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632024; c=relaxed/simple; bh=dPXiC5XNfLOWLeshpyB/kVTjzt8wgtd4zF4vLU1ToZ0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Kg+/q3NvlicbpfXC9vUys0d2riFO5IrvB36r96+KBpyH3t5gb09yE8kdSyGEoJVD3zRWKyyLw53ugDiJu5e4yuZewZGVBgccUnrswm05FQ6Nm+6t5MZLltv5nnB+KoRrCGb9Bh3+U0h7yhwYselUccO64oTZlQTGo7o4zon6yEc= 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=cSX+WYde; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=PCa8Ipi+; 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="cSX+WYde"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="PCa8Ipi+" 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 52AGfmlP015827; Mon, 10 Mar 2025 18:40: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-2023-11-20; bh=2ZIaAeuMRNr8q+4QyUCgflEIANoKRryUdfAghQssgN8=; b= cSX+WYded3dygJFQmB/Zs5trf/mPqSl8HfiGf6yupSCprffQzA8nMdofQsk7wbIe x1IPTCn90Ei3UDi4xdjtvbOQsQXH+Jp4Q+AH0yJs8u8DdlJIG0/qCWjUr/7SZN6X C2FCyBHrq1IffMA1WlaRXDHim3CSz/5feS7HUyahgEusLpeuMgqXq5nhvhXrRBMT ICsRJP9I+4g53e8ip6KNqGK6288QCm5tzpVxmtyas4+m2AngFdfIs8ZSoiuBwuPv GV/43B5nekpjycLrhJX/DtfdsYqgwbVIFd2uUQz+5X27tcex+E16vafg48kczYGv kjWwX+0g/ZDLz1imVORUiA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458cacb9hv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:17 +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 52AIFBjf026926; Mon, 10 Mar 2025 18:40:16 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2043.outbound.protection.outlook.com [104.47.58.43]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458cb805p7-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fD7zhW+SfihEzcFXTJPovTwV2YKZEv5YeG0EnS3+fx64xz7pmu+uGeWd+r+YYwdmcXwGiKJ0u+LlmSo07hfGac5yLZebGjxrIT9IQc3+hcE3YZGBNNSDDdyEiiJzdXO0dGpVDcqNb5QB293AJw7SwUY8mXgXToBmhM6CscxmonoUVEE1l5Ny6PB+ezZ830yXgTelfDlHDpXYNZxUbrcg/dbqbd0ksu7p0TtWo7B0Ow9Soi2JUuzbvK8W6dULwlDtLB9J/e6kPr62GFyIBDpeKjVrawhePN2EdO8ciZZhIMjosQYhpswdMQDaMkmji/kMQoodYHtqFqezpEgcDc/LUg== 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=2ZIaAeuMRNr8q+4QyUCgflEIANoKRryUdfAghQssgN8=; b=QKiaq30wMoxHiH6yxbfQ6myKD9bTjeAGiKdIxLqyGwjo2MXF2p20MEFS+fZHppSxLulef4KUmCtp0fj3rdWzjqrFa7WA/WnhYDj5vXtDuuh1wNiWrYK/Qeqlc81mBo+zTbQ6PPZiJ/YlMni2F/Rl37P1tQLoDY1PwqoSuxQbgE1M/ADwMkVu0Zd96v8pWmlyZtImh7bWWH06KSKpPIdCnYaygORP5qakHhdODcLrwh1XJRbYVJ3LLUVH2vUpZUFqXZhcWEmo6T32IAppOlzLUp90KpQcQU3LARPFDZctAYkwiVMg8eBTKocnOhhRzZrRKg35qHrP/J5EdNqZFCBxRA== 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=2ZIaAeuMRNr8q+4QyUCgflEIANoKRryUdfAghQssgN8=; b=PCa8Ipi+e8Y1wyABAb5SOEBhq7+TX5BJaeH6o1XL4qUJBZrltTA503NEZRv1lJwXRNCDMuTzC/0GQBthejBWYAKqjpoP3wVhOnux5e/6cOOD7aEuX4/xM6BWFKuaRAxg33IiZShcNpVqssrvPl6cDTIdZG1CAw7nZxHqmdCVDOk= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40:15 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:15 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 07/10] xfs: Commit CoW-based atomic writes atomically Date: Mon, 10 Mar 2025 18:39:43 +0000 Message-Id: <20250310183946.932054-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR05CA0013.namprd05.prod.outlook.com (2603:10b6:a03:33b::18) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: 134bf365-ed8c-4108-0041-08dd6002ff6d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: 6SV89MeYkvlM03yCV/q9+au00v7RC9hzIGV9dyLzgogpGY8rpywcbk9KJLa0vBU15S4WfUxc9+B61mOAdHDZ0s5lSihppOeAz6j+bBr86+GycA3ch3TRORJ4rnHDoSCyvz/A1FQjm6uiPr6qBooVxgd2BtuGczWzX6lEqsMvuygvJpi4m6CuyUIqie0bqS6sMpqKJRw1Gti1/bgl7vbSif+63gkAe8hMvRfpq77XUGVg6DZ0JOEHdTAG+NbtN9YpQAeztq63YUMH5MU6ABdH2aUaRIK1Z97N3FkRzGiqtMGgp8gcFIC4pCqRxj1GclpXRIG352u00OXKTd2SZoJkD2lHHJeLnfHVBXpNCDbd27OMkUIH920/Wa0VrzJLcU608xAK6QWzZ0dTkVSxR57KvUZPSqkHNdrpujlpVvWEvzsyWtyxRMymf8fZlTojnV1b3VjwKD5op/t2cKp3UAildNj4lRFMUDwNJbMEIR/b5/DR1uM1jkirrpK8OyERc0wvMsH7+ubzbqMA58KJK82/meRy1Q3QZmSvRberY5ZOi43S3vMw6MObSFukGI0KbWodq7ErOqKhWk1YUuEKhTtxPtgYIWp08oMzgi8hX9aiVEG5wxBWjcUzGQILR/E4LE/C2n1juNYqrtyc/FSmz/ETWnqJbzal7e9dk+VKyvC1JFI5XkCK6lxVbp7u4IkCbmI2+rdeuT/hX727gydfh0LnwA1bVMxZw2viLBnpGQzkxNRQbRE4UfNVO4bor4lIPelIaPgaFwuwEwPlOgDhymIeJrWM6joqAdLc+OuFjNGEODpQI1fTaEDj/INAXyiwzSpNqCXoMMNHKDiWHm/thQtRUhYi8PzvsLssbVwtLz4hR1PAg3Su9tN+7fS4HuDHgPvfbWl6QGiu/IMDeVjgROn/T6qmh0yhxiUvxuggvyth2a7HCAURvr8uzplWdseX/w8ECSQvDwVDYOLpTNhXEu0O0evE8uXc4DF4pGKGVV5klb2lBWu74u0KJRMHs2+DraTgtieieJeSicqF9CtcsrlP4PkJMho8wWlStIHtntLIeK7pOx0jE9XATDIjByNMc0K4+F8pLhVP2AGr1lNsMSMjTdPSRbVdSewiE6Enda+qGhhv5JTqpd2NnS96MPwVIkuxaW/5xma0tfVHJRtPq7X5niveSO8t1trpydz2yt2zKkLLFe+1lHce3No8R4yDIgUJ4fGI+0zIeKG2ttHGgl4vjnuHPCndo9MIoY+jyvMsYYeKFaiCaj7idLYlNh5ahuVsOaJHCuhu7/zCyeL/6qZ3mY9tj6LS7ZBlqDNFQv16cFP9rkKhuD15zcIjJRHfWE911AaSerb2Be6XCP6uucHg9fdUFvNj8O77D7NgylMjEshtrZ9jSNbyrshTedUIPzmM 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CgGOP1s8G+KzB0uMS7ITllqV+X2zAO+eadOwGSwltzEUl6xjnVTatjBP9YM33+Oolhs/nuuG4K1Qas6Lyet+lK7l74YQv7jtSmH9VhLHBk/ZmWzUG9tjJat5Z7+Yq6XdgQI9FejM+UkAUPDhPnQuo3+ept3SHs2uwI9WhdsqfrplWODpq5/RrdhoCKA+StdIbo8KMw8oypDM9/dAG5bYLLykdY3lsY2nrYhG+BbA7NXuqy6P3lgCC8OQfiY5rTcKuqtbPLNDuFM2AzNH+8eZTO/Yy4UvbEijQN239ch44nqP3iAnIM1HQeUBFlYSXP/uAhA+eAOcSaTfGa4KtZPqC+80A/OeB/8VH0SGg5K3p7kpVqyOSBjzfNPGmZVM+U6S22+N7EJMFEtmSut4g49AV2Yk9WYDy/VsqZD+myvM361j1lz5/Pp09jC+2PYxhUi88B7YjvF6xJ/2qqgvb/qqAxDDgU1MInQCnrPEpOoATJ6G03g4nUgCiLPUo6HemnCWhpvNoAItcLRTNcd5jBa8rLOUs4s9+iSASUPDBMDdneHZ6/ihCSMj/Zs8l92gKNIVDYKm8UkFVDdeTpvktuDHkduTmuNzpiAqyVrTT+LryWXjRIYCeD701/wD6XVE0ZJcaa450j8bzkGUleQgkoKgposs+k84sCA6LL7Pn1bZ4U59VUMMDn7ovcatQlMexq0HN8RhXPEmpo9pBij6Fc/3o+D/M7gZOaOU+iZxqZ5hxy+qmpkUS28WzRN8gIcNxlQD36hBaDQ5OuOqP0uz4LqqlYYukhXimA+8Ea445YX9zwup73Pb3xX1fyUOKu/3yx151PT7/7DRRFxAetfZ9Zb2Ty5Rw772iTMkUvlMDU6/JfdI4oMuRasl1xTn7J8lpzMedFQV+DhSOAnyIHWXF3nsgByWPzl7TyVus8g+4nf2/3Xn1V+a6JqpyeCWGIXM3pCFNf77lHF900lsIYh2EyxwJ42B/ZV7B8/C1aqKMnMkqOiiqhYuoSDnayD/9HLlSrxQ2sDdbCLk2KkVpV2EDvCHBnTTjRh0Uaf9gyb49G6OxHnLsM3pLk1cuQHO8wdQindnDaBBdPPt/zEB28eCaCpsLN1kiPC/ep/RagxboTQ9agORATCqCRwxbWEMuLnLwjRDC2qEMyTtUqmt3aemWDWgfWCmIh17/3/AnbxnHs5EntG+H8z8c6529c889ANfhKkpcN4O2FIXedBo4if6rsntQ69awaezNJATnEtnKCBmgHMDSmRpSbc/vy7CVCyUxZwyxMdJ5Ncx9didpkXOOn18pWAfNiJD52jhD0M3mTbr77NQP6VGrhXdZFH/M3GkvVKD8jy5uw0hdOQVuETefJhvNpbmbqqESnwnLIK2YaTRDPGaBKdnepEOw6k2nxz9urcjiA/7ZL2mXWakoO65BImPl1/Xt93U0VEezfu7QBXIazbkw6izkGp8TWIn4IywEbb/v0paPmvlDMqKrb5NYihBp2k3Q9x8BqaQgMJs7om6qXclGlkvvm7Ml25Ht7FRKOm23U3UnJ9h1sZVjOIbyK5w3tmM1/2vc1/6WgO8uMyc5rRgBwgT+h9yjZf5r1su7yi3PXBsqdaGg1xJqt0divm3TQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 9v4Cz/0Box+ku075ZXDTnTN+gxnY1PHE1RpsfRBHBBmN7ptmBBAXEb/y80o3tGlXp4bHh/6OBrZAZB8niMxrAlpMlc6ZG3KzM3EddSyqMrsPfozouD6fuH73ZF8fmYZVcTPnUQjMkCUcXTocRdmIPnYXW+yLbnSK5dYBTJ5dE9aRxNI7zkZG4Qs8WpnsLlKLQaoZcWTAELVuUkLs2XwnsG18zQJ62iC6R35AEbVkF6ljM8spaMlouiocaTaoNROLbaBzACpuFFZGnTBpxVDuqiL3ztlkpPrMkIY1cT11fGAaNp6CrfpcCWPjrzIL6lQ3l5QrqsxZ4SqucgIj76t0GHIn3+49dZiEz0PvGz7G7/A/cGGYDEQIOltRl2jbMso0vra9CTWETuIn6qguw8nbeT0bPlvB3l5pPgeYZLEtOkGfpJWRIhNBLwtDzlf7EE6ABvpYs7wovfoJfEk4eVrdXQYdKynrxHb8a2VbDVovymBkvsjQlIcaPaD1Qioa5FZmpwXRUh6nrlkVX2heWZtelJ+ulrTnIGM9Q9WQV+BiMNkleg/IVrTZx5F1NKpt3iKj+Z7F4N2af57fid8avj9HuwMnnWTMXmKsSe7BFWNPmI4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 134bf365-ed8c-4108-0041-08dd6002ff6d X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:14.9876 (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: Ryf6jaDXgFkjUjBgC+Oh8Ffsv+Y6gucp54lGIsTplRCG9Ne4GLVFpXQkCbdHxwyL3rL/XvxrFodXogLhn+fJ8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 spamscore=0 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-ORIG-GUID: HV6myyPqmgMdFeMU1yeB0iRci05TQWOO X-Proofpoint-GUID: HV6myyPqmgMdFeMU1yeB0iRci05TQWOO 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. Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry --- fs/xfs/xfs_file.c | 5 ++++- fs/xfs/xfs_reflink.c | 49 ++++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_reflink.h | 3 +++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index ddcf95ce741e..16739c408af3 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -576,7 +576,10 @@ xfs_dio_write_end_io( nofs_flag = memalloc_nofs_save(); if (flags & IOMAP_DIO_COW) { - error = xfs_reflink_end_cow(ip, offset, size); + if (iocb->ki_flags & IOCB_ATOMIC) + error = xfs_reflink_end_atomic_cow(ip, offset, size); + else + error = 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 0949d6ba2b3b..ce1fd58dff35 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -987,6 +987,55 @@ xfs_reflink_end_cow( trace_xfs_reflink_end_cow_error(ip, error, _RET_IP_); return error; } +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 = 0; + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; + unsigned int resblks; + + trace_xfs_reflink_end_cow(ip, offset, count); + + offset_fsb = XFS_B_TO_FSBT(mp, offset); + end_fsb = 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 = (end_fsb - offset_fsb) * + XFS_NEXTENTADD_SPACE_RES(mp, 1, XFS_DATA_FORK); + + error = 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); + + while (end_fsb > offset_fsb && !error) { + error = 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 = 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 refcount diff --git a/fs/xfs/xfs_reflink.h b/fs/xfs/xfs_reflink.h index dfd94e51e2b4..4cb2ee53cd8d 100644 --- a/fs/xfs/xfs_reflink.h +++ b/fs/xfs/xfs_reflink.h @@ -49,6 +49,9 @@ 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, From patchwork Mon Mar 10 18:39:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010523 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 57B8423BCE1; Mon, 10 Mar 2025 18:40:26 +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=1741632028; cv=fail; b=PbUCTxF/D/J+Pzu4XIyg1qPsqqpxW71cozKrXDuQKtB03dVe0MVwOXsHV+IohlfLpz2Z3GbqRBBV0vhZIzqVmsUSxQcmE71zUhmpDXUpeKzWnsP+foTQLYYz+dt7Kw0hvSTey+FFYAI35oLCLTvNr1wYQx6S6hkcfhvcweSQfvE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632028; c=relaxed/simple; bh=pX13wPc39QFyAj232kklLT0btC1ORumQSgvujaWoKAg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=u58uPRqnPXh6iRg/4VKP1u501yAFA33ouN4EpQMRhwAr83fOmPtSO7rLYYLU8WM0ne6swzI3aFqMtNUr016RULH/fGXviJwOf1h3LuLPznDt6sGEHhIUxwXe7k2eRh+zTTKM13cortIQqT3d+xTdqZlz4oZoTj3zUEI7Diy8CDc= 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=Hbc2KWnr; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=FNQn1/qy; 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="Hbc2KWnr"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="FNQn1/qy" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52AGfhTO032592; Mon, 10 Mar 2025 18:40:21 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-2023-11-20; bh=fT0XXEVIi/mcitAoKVtC8I8u0NcfaCeIXemd/ZIDxkE=; b= Hbc2KWnrzke1RX1O0J1Mby29sHCRJ8YHcC+G9GK6V8u9y2Thj6xNYkypSoNu9X+q 2ZXmOYpav0ThOmCfFkE6H2k7FZFxqwk5zOFQf1f4zfetslY3OmtugJjUZjlvoIt+ vI9BFG+e3Dg4ZLR+I3O8oLj1PQ/yKRO92hZ3Q/LvrOGSwdz+BDciPFDxZryE9SRS P167NEUuMIKLYwKnapzExq542YW/QHNCOOGe4qck0R17U8DNgVMgb158CnhEmNFQ EVMod2d5yM0oiufWUjcgssveVuIPRpUww8ij6//e7iJoce1/JcNwZUElucjj0ivl jUA88bK+edvjdrODf5XwCA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458dxck9ys-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:20 +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 52AIa44v017442; Mon, 10 Mar 2025 18:40:19 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458cb80d0d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mPXbOltgUmJE3fgZ+bxXzeBgooZeWMnrFj4tueh0myGT5K6qLwJOROx208l+rboYUB4DFqCjhACdnxlhjkQVRxeMDH2uPGdJEmLVZMnnFHS0+lYDbm7RraGTR9rdoA65SKQ/pBCp33H5/5NqGRQeN0ZHEfvCSjs18LO+4q7oHHUOLnKzpWoILdd6h+HchrrDQp3IhZfvB5vY/qSyvXjh/MBUUNOCvmZgOZS2QdWJSJb9xKML+dbTd/cxmFJBOaja1dqka/lOAIovegRqnndQbTGWepEi1BoDiwZ37AxVz54yipB/Piy0YI77KSd9HKF0NeyA2KKKXQK3C0mh2oZQGg== 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=fT0XXEVIi/mcitAoKVtC8I8u0NcfaCeIXemd/ZIDxkE=; b=uaGp7GzLBeJq2pBj9Ri4pXRtsrXFRhfDJVn6buGzgzKkTvSdCwOcTadpCk6ebFk07YW55FaplZ5plI66wvZzcOVQnQhgNsYKk3WOA/8WFdC5sBHh9dO+dzs/S7b4lBXrnAma9qc1E2ONq1SF3UzCyMmx0py46U7uaO09D/L/Qpj+3TAG5n8EeJJ+Uhg2t9hZqMgoCy/9h12bH6hU98pkr1n7qZaWJEo+kOJxyM3vZJD0sRVY7bfBXA8nOvSWx6uFpEtHT07O/w1R/4IqTOo6JqN81Z0sIJ0I3IOFWPe8Gh9n6eYt84Zk9plHPHnN1mxBfnofmkktp5sZP8in/ziPdQ== 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=fT0XXEVIi/mcitAoKVtC8I8u0NcfaCeIXemd/ZIDxkE=; b=FNQn1/qyP5xy2upZNX+reUacplpEbTNghDRYf8sNb/tzV4dHbxdm/M0K5p+isCCwdWwsGVxjloSn5vFugTJhnXGXkugaPWauturWTtVMhpMx9k/z7lmnBo1/A+NHqjvdw5O+mEhKMyObEEUpV8qib4ZVuqRxZKDRN5M75RyCovM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40:17 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:17 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 08/10] xfs: Update atomic write max size Date: Mon, 10 Mar 2025 18:39:44 +0000 Message-Id: <20250310183946.932054-9-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR13CA0230.namprd13.prod.outlook.com (2603:10b6:a03:2c1::25) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: 96a3f8db-dbb7-4fe5-afda-08dd600300b5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: /QnZXu/Hs4UOqAXN4Ff5M3p2VFZYN0Hp9UVBcKSQGqbK7y4KVRGXm+4UUBdnkxr+4UWjIjkBRcsug73IZ4XiGe5yvMN887islc6hV7l/rh9uaddgB1ZC5Jlr+hr7huiUclavyV5YxOSXGyZEOuVCS5W03OOiUI6OUV7mVLN+A93w6YE82E4WT8ys47nyu2II4UEtKLxIcT6vOYCK7jD9KzsGCOWDT6oRUuKPhnqKRCspu9auzlLXwsSMSEJSoQIO44qn1cmmEeZBy5GgYey+yYBQj7da2SU8z7zIYt/J29wTZt5H0HwNPdC/zJvNf/IhKhA+NrFoKyyn8RUZEteKuxp5O054v+Mr9DjdzV16knHQfmeKYtrwWxZFyBfjzkCGSiF8gjrhUL4eKZkIT1gSyCFN9WugUM4WB/aZyvkSaB8eQLwkTg3xkIGhBDCznT/7Zsu70ywjX5gRjDDB5GB9bfETsRUFupT22uLd3er45WI81ptRx06yavcsV1wYK1rAlmgL13zn39D5jjc1kLcTRUKNVX5OeUKWZJxXFDZMmYmoDLNXNjHSCJV/BaQpAveefR+hD2gfC1LsFQG8OXjbn61dI/+r4vb5LOwskTAJTrWiLkRYj+01j4nr8aGAl8gPJYzG7bKR1Q1e9JD9leju+fEjDJS31mjNTy3v3ln5yR1DWsnGMgDJSRHdloVKbX5Ij7G911MksSxoCvuMvnFdzdoBeycg6nWjBVPIcn/UWaodKtwbH8cdxDMk3lW+Aq57RPzJsGOC/9n5xAPIcjE7QRdWvIlyghntDwFDdUkE65v2sWmv0bLjqrzk0apOhmvfhrJOgh9v9suXbtqZfDs/gLMO/mfobeokvy0V7H+6rbdRfjvz2xh/aPxTN5S05T04I/+zFcEhZlXfb4J9SPrg6NNG1FsMhny7IjLGnjJr/G7H9MqSKUrBe3nKlD7hvqZG0S0E72cMz9da2cw0j3YCVaEHHtjb7MFWlXDrpovw7sONvtb03V8XcrBInpFCnq4Vdz260cSRfdROFMIcOLXWOPlhANxwhbFH2in5jNgcGMMdoDOCXJmsV7lWNGYSmRLD/3FRRyAZOVZ6R40WnG+zuhAWepZw/9FTOVXIPgwEqRdpEtJ2I9zHbA/60884ij486kF6K0FnxQknFtB2hD/vtNCL6qxyMHO3YO2+zkYEV8/oFd2iMvIXYy6kLl/LLzpmRgCvGNNKi4TqrYPLrzpdhiVjKUn26UL54RRwA8jlzKGd5zWRKLsEK2MgPYucDScHx80p07Er0ifckUnb1a3p57LrQUcESaNSD5b1RNxI63hvSln+ZxxEiwowV7pFglyV47XJqFp6+N7quUacQNWwI3K2m97Ps3MMFdhKTEQPbF8oVR8MM/q7sPZ60mjHXrQk 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RkAuh3CNm8Fts6Yg0y7GLISNgjAXaEHmaUXGnK25LlffkBy+JgqpLS8E2XbluWz/xIWdmElgr7VM+T8JqlyOFwaubtrMQzNM8ZSvWd9k8s9YRr1Hd3DyPvuy3nDugOB2n2GfuIPcxuBce4qqinwwBP/4xpHq1BM6TuHfgieAqLbcu28yND6cqC/aKW816S6hknE6juLJfjnJJzULSMaB6KyRGutQUINkH8iUQfgvhzlYC3eTWujXtrSSySSrFpNEgUVZnbJE7v8kKiY8Cd5n1XW9XzukI9sET4Gny3ZTZmnhO+iy0XH0xKsvigZ/O7bAbsi2b+sQOvzwGxL28Ivla6kUXDHA+EMiwJSCDILs8JAj33+bWp0mOjQAYLyEaghEIdZ/+90/MZNZzKTRIfgO3tUnUrAHSzyaxKIQALOjkIA5fdxetil6G97zP3fTS1H+opIhPtqsnGyP461yHcvcpWzvXis/B4KTZ1vwGWVka+QRLGoPNsB1eSTjzJQm1/7Q7QFdhshd/8CBSoqYG7lHDVygN8Gtyq8h27ZUfgSIP8Jlh66OSwLN07WsqGZqgDFwEKqDXQpByuVsXwZd5UMyyAFjPrRo+dkbH6MT5CUVTFLCjzDFKz607rK2meAl9CJF8S+xwn3/wlXILRLdvXwucWfo4EO7Peo2cMlaF9AVAhtuqBn+IG97H4P8zGUsAoL8FI4M7qaUDMRE9QbCMKcMXy5bGyklk3qPdPrRIaN5Wh7WrcNxxeV7JYoTmHUMd/i2DWuC95ZKfiNxbF04L5wcnrdm44f/M26HT9mzggT/n8vLLgkBOtg7Qz6wXGnZGLEjKzj39+lZ0IrkRgNSl5jChsULhYHwgL/jbVB1QiMvAYRWMR+qogHfAz52GsNjEkOdh2wy8K1MIk3cjEKgBoLEiYg+mSRMwBdxWT8BJ9FXGYGDr/HNzKMZcoVYDA4LsuoTO1QcL3wh4FpS4cXacbGf0mbHlLMEmXvy1k/E//+XAZN9O9UaS7eca8FBSfkWkkhp2+FK1SR9Py6EMwUIRQKS+osgdyl3SFHuf/y2AHV4xO36bfS9EuHu1dsC/XUZhG3/yrm8dcRJDDKgYcpkbIbk+aPOmuetibYHkyrbc/EiCF7ELH/AcXYKyyiAPnfQePvVvkm03zNeOvG2gd8pFdY2UkJ3V8L8MrlJ6hMf08I4WIXH3l5BpXhK83WuKdWcIwa/jdY5JJl05XKb4HsGOhQkM6mWWiT4qtQjJceqt3/vfJ38Wd9q5L/2T80jbnLHpQOzT0rBBl+FAdGZMYNUkNnRNlZ3bDr1/oHbJEXMra7sKK3fDeR7QUfQwJ7YE2f2UaAvtMuXmws4VhjwtTz6VwAGybeMO8uVNUlaZOmwJraGxFyyf7QhLylXH7pYW3QGjK2fl/eeREwjxPYMiI0blaMfQsLAZpikrU1u4NeSGoWjHPnhkLLeNyxx0ksFrfLlzxTNcp2UqrCKGtyD3zbsr3gUq6sfBN/X/9jAfPNZec8FECv9GEPuCjTox7j1mfCJah/r/YbCJxpb79WiLaBx4RMugQBNo+QziZ9cb9ywt8Y0ebDCfL31qoq5OjanPwmLBDZ8+2HBUKTvHtGZ0YLVCtZ0lg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: RTHHBGXCc7uZOGbxzFZ2xxlYIc0OFuLOz5VNVQOPKryKEE5Xyj+7g4Umymyo556tsZjzhTFwo5cAQG4zbKYWEspJ18AWNRCltRNyOAqFvieh6TmOtOt1g3IxzLf/gxWny2TdUCo3OGGTqjfIrAme8I4glaDAJ45pYvUCkqgNjSqFQQg/TlqliNI8coZbF0Tyrw+SqGbxYxp40b9UvDU4WcUt2RX5u8nRheYxIo0MitWLsEkessUdmT6ll4DMcm6gytE7PUxMc5a2QZc6nnqfdxJVfB5GE+c3HjZTLDAeMKC6w0Zz/d2/nhYlZOr1pi6yfSF02ZsI8wXH2abfqp9z7lqDipcRGUWBWZnEz/gjs2ga5SwDzTdgzaDZtAP8+ZZBdpygckWf3dGVvb2goUzoCK23zMRDGySkIc307TDeqoZkN3KME1iWWi/u3jgXTDNyvvHzp4KUWeroLpKBMX1XvmYS2Q1Tc9BvLE8KyEX7GUys8tBRglSJu6DJJGonx3UIc6uTDhMnlU0Xv0egynrXVUIBk4yYlCbWn2EzAx/Vd64Vi7ZxqpitMQR0HZSbs7kkrS5hJI+yt1nVXwn7a1GZ7KdgWezDlNy4ip+3959ytdk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96a3f8db-dbb7-4fe5-afda-08dd600300b5 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:17.1117 (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: Whp5MYPuQvaiszqiDmbFK9HiZyOiQDQlQ/IO1cTi4KIYyWLwRkIqJtMAiQzZJawi6zKA6M2YhObD5/MeHp9kaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-ORIG-GUID: 4YSw_as04Y2YDtGxiKRulNegrZ2oB0PK X-Proofpoint-GUID: 4YSw_as04Y2YDtGxiKRulNegrZ2oB0PK Now that CoW-based atomic writes are supported, update the max size of an atomic write. For simplicity, limit at the max of what the mounted bdev can support in terms of atomic write limits. Maybe in future we will have a better way to advertise this optimised limit. 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. For RT inode, just limit to 1x block, even though larger can be supported in future. Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry Reviewed-by: Carlos Maiolino --- fs/xfs/xfs_iops.c | 14 +++++++++++++- fs/xfs/xfs_mount.c | 28 ++++++++++++++++++++++++++++ fs/xfs/xfs_mount.h | 1 + 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index de065cc2e7cf..16a1f9541690 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -607,12 +607,24 @@ xfs_get_atomic_write_attr( unsigned int *unit_min, unsigned int *unit_max) { + struct xfs_buftarg *target = xfs_inode_buftarg(ip); + struct xfs_mount *mp = ip->i_mount; + if (!xfs_inode_can_atomicwrite(ip)) { *unit_min = *unit_max = 0; return; } - *unit_min = *unit_max = ip->i_mount->m_sb.sb_blocksize; + *unit_min = ip->i_mount->m_sb.sb_blocksize; + + if (XFS_IS_REALTIME_INODE(ip)) { + /* For now, set limit at 1x block */ + *unit_max = ip->i_mount->m_sb.sb_blocksize; + } else { + *unit_max = min_t(unsigned int, + XFS_FSB_TO_B(mp, mp->m_awu_max), + target->bt_bdev_awu_max); + } } static void diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index e65a659901d5..414adfb944b9 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -665,6 +665,32 @@ xfs_agbtree_compute_maxlevels( levels = max(levels, mp->m_rmap_maxlevels); mp->m_agbtree_maxlevels = max(levels, mp->m_refc_maxlevels); } +static inline void +xfs_compute_awu_max( + struct xfs_mount *mp) +{ + xfs_agblock_t agsize = mp->m_sb.sb_agblocks; + xfs_agblock_t awu_max; + + if (!xfs_has_reflink(mp)) { + mp->m_awu_max = 1; + return; + } + + /* + * Find highest power-of-2 evenly divisible into agsize and which + * also fits into an unsigned int field. + */ + awu_max = 1; + while (1) { + if (agsize % (awu_max * 2)) + break; + if (XFS_FSB_TO_B(mp, awu_max * 2) > UINT_MAX) + break; + awu_max *= 2; + } + mp->m_awu_max = awu_max; +} /* Compute maximum possible height for realtime btree types for this fs. */ static inline void @@ -751,6 +777,8 @@ xfs_mountfs( xfs_agbtree_compute_maxlevels(mp); xfs_rtbtree_compute_maxlevels(mp); + xfs_compute_awu_max(mp); + /* * Check if sb_agblocks is aligned at stripe boundary. If sb_agblocks * is NOT aligned turn off m_dalign since allocator alignment is within diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 799b84220ebb..1b0136da2aec 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -229,6 +229,7 @@ typedef struct xfs_mount { bool m_finobt_nores; /* no per-AG finobt resv. */ bool m_update_sb; /* sb needs update in mount */ unsigned int m_max_open_zones; + xfs_extlen_t m_awu_max; /* data device max atomic write */ /* * Bitsets of per-fs metadata that have been checked and/or are sick. From patchwork Mon Mar 10 18:39:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010524 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 BC6CC23BF88; Mon, 10 Mar 2025 18:40:30 +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=1741632032; cv=fail; b=kJO6Ux4MmkHRVUPQTmjQl1WWo8Gxye57mR+MA/HaPldA8qlRz+FnOg3K4O4IGEiMcjT/gMC23ozc05ZY6XiPaIHawlEVpNBeLmoYZu7t2/bstFsnTlvJcw1q/XhhNxWU12N5FwrZ/djQTkV7WySz4YxKjReacYq8wRi407/Eots= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632032; c=relaxed/simple; bh=PTTAxrpn/WR2Fi3fvHBw8iuQgRlbTLdXk6y/n0vLmq8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=nsOEZtf6KG4yiC2fK6LvuzrAN4Dnc5ZDcG+0aZ5/yIkrYGLi3rz+jwAm7i1SKO7Zs7f5125bu99jpat4WTnsow5Zb71Yyk3b1yk640yfYkIalEAEntfp48B5NEteBHzT2Bkxgo7NsrsbgIcZVyLckaZ+gFdxNpIh5RyQiA/G9PA= 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=Zg0B2Pkg; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=dOWpap2h; 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="Zg0B2Pkg"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="dOWpap2h" 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 52AGfit1009790; Mon, 10 Mar 2025 18:40: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-2023-11-20; bh=aHPCH8QqQVOMriesypDYFsgeR6ozNImmYs77HKLdH+0=; b= Zg0B2PkgAkRuQXbcQMYqhrBQOrJclyUkJXq1i5cwLTbicnboJnw1O6D+/Vn3c+6J T07gCZM0DmzGmq2W9qzZMcT5PhJnDoJp6sA5YE94W0sh1edVC8cWHxXbt4Ai3CIb rek6eFyPinteimNFTdXTpARSFO2X1Uud0m6W52Uz0MtIh+OVxssOrdsr9DpBFSHK 0SYC6wQz5wF43y1QwXoIsmtNt8xu1Jzdi34XOuoPz8QTZxubfYTxVx3nKpprcsFN lvPPMPoGJFB/obSbNZ8X5qC1H1F0p/tcA4RmzBgBJcZP1ulcApodatFGnF064Z+p LDEpialCop+W9CI5FdJQwA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458dgt38b4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40: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 52AIEx0O017521; Mon, 10 Mar 2025 18:40:24 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2047.outbound.protection.outlook.com [104.47.66.47]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458cb80d3m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hzteq7cExjd8rJPBB16fq2NIYxWfiOzt9orbfGRTBLNheoaUApTOhnAYnIsGLWreK6kJs8Pp1j0fKAiDsFKJ7CQXIdYfdWvslnW9hmDDJwyCZkX+9Te9Kjp5KAYV71EjfnWW+V3sy8sbNFZ2EnTqJT0N3LdaeX3JHZ/C0xmbrSEVojfFXuFacpnt1tpYRmonZF7TgopYPh6z4aCk86TMRxuJZpUUi3+nCgdbNVl60GkJmdcYpXgASW4HkB0/fIwySU1gAddunyJqBbfKpagDn88bCfBOfyJHm6Z4EPCU64HnQzPX1gYbYeDdR3I2X+TMZPw+PLEVuAnuwlq5GYDGOA== 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=aHPCH8QqQVOMriesypDYFsgeR6ozNImmYs77HKLdH+0=; b=wIu5K8el/grRKRE5gSjN7vXRvdbGY3F+RrORNYlRkhA4/uwMSifFDk7Bes202L55qzbE/bRIW9t0AgqY2Z66oTUfZOrU/ULQ7upK6xcmF31N905Do2QsXkN7l7Cvchj0b87qRqWO1YZRAkEuiQAFkrUVd2Hbr3SLiFpGSfvxnLPpyb12Ns1Ky1w0Fesr8rHwIwTX3pON0fdf2CC4oUfrDTiA2tA62rc8iOuJylkP4/diZE70tJqpfYGMgK5RJfhO1Q3C51wGtJlxjcWjDI5D+JHAucko4ArN0RC7KABjCltOVCrymC0bPjq4rRruq9KksIEMbtd5HNPG+40Yly2Ebw== 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=aHPCH8QqQVOMriesypDYFsgeR6ozNImmYs77HKLdH+0=; b=dOWpap2hBfKl9gftp1PBcaWY28A2ecfOkO/MgIWDKJNO48peejuvL5MLRSkdDD/fnqwdtc40HcHT2k6yiMWCwJKTjuIwYI1eHPYAP66jcda3QZE/XICe+rRWvWfNDr+f9pCLzr2tGFvLJU+IMKx/2p/llmhkVaTc0gIRsBz62EI= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40:19 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:19 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH v5 09/10] xfs: Allow block allocator to take an alignment hint Date: Mon, 10 Mar 2025 18:39:45 +0000 Message-Id: <20250310183946.932054-10-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: BYAPR02CA0064.namprd02.prod.outlook.com (2603:10b6:a03:54::41) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e05f00f-cd9a-47c3-8def-08dd60030202 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: ac127DsbmhwPL1fY22WkzqyCpgE4twqYxFSJNRfxRdbhOEczuT18wBK6psU4uqHLin+EkVN0sN/KwuKp5EbszA/a7bXI6/I7rhTER86VgYU2PSbTF1++jfLxIeeuXjIyFUXO4yvWWpyEwMNCk2hB+8EDqLBF5//uZ7xEAW/z51PwitMjagd4smkeXSWjOSBpxkDT6EfOMeVEkEcCDFWxpyokUYpZblrbaWKuM+QcehjThrI7A6NeKDTK3Qak6cOMMfDpb4BUhEkqHNB768N9eGpHfypCetYcWVHGZRnR5WPFYCd6/Gq/vNnvpbWCmdCXYgx1ZjHdP5HgRdl4dCUDl4SvsKmgvu/QAZSJ+GtWyE6aajsDfovNt/Qr9K0nxyGua7OJmVvbfb5FIlOpXpQGi6jiElacbEB6yuVcU70bh+dMVfqv4gHbzhE+t/BGE3vLJ2bpu1TH68IFRwjhdpQA7bhmv5RLDH822ETGFu7wg5AlZzbJfvKtTMjrNbYE37jN0IobBkrV6775G1uL0MtkRKe8zAjBIK33u3riU0jcPEQR6TGp0DiMptSYXasy0l4GQWmxGSIJo6vg2EhnoPeaqFIj475uIe4mtL6J0fR/RRPF1MpkIYCCwZLa1Rv2iV/jlaZoMGL14QlpmL6gM9tSYSq4ZPrAgjSr1tTHT/RbRcv0wea61mM82f9rHCu8VuWexx+/d6wGDW889/9gLnG4WD45jkBlo4jHOr8QyjBkvFsFxkR/9eQTOuhNTGAciijnL0rm0IDcwSwIe0r5teSCz7sPdpCQvCMGiCHgeiRyAJVwCp3zY0xOGfxSRaYrIXrsoLtcWK3mOF8x/mAXyU9eX07FS88V2JJsxorS7bOwnf73cuh6GzVmclnlzjvVyz2UavVPaztEbEy0nVJUN9ArAMvbHnnitbETt3aC+ZaErE7p2uircpNSpTqoA/gFfHchn1VO5+IQwq+o6nyp4F6IjWhSzhnLxp99exxs87HgrzwRIboVfx6Hf7e/BUZKbX0TO/rQBX37rvmlvHF/5Vm87EzxlppWXn7Ea3dJaQi+lwDhM7KtUCoIq9hdp8mKA6/2YluGIXfJT8rgEiSyscg70VPSO6DQExnslFNGS5Lqfs08LKpSekfSW0CBoXIP8YgWImOuXHIqLA7Xh1XgXo8Cm0Ab3hlI1ED8mzvpXkSxm8c9wjwtEFlSbQfKZxuaVKE1iK8rzw2OzH066FIaUHZQmf9xPSnvhdg3FseVaSE164j/KSdmRS+hY2wlHdbVSX66mniLACqihDNptc2mJ1EZdKWiV0PNy+3TYvPj1jfFXHlClbkDNWf8Oi4qJE9Wh2ifqSuhi2BicMoaMN3x/oopJH535CHe2Uf7cFHlTSNrJVe1S3O6bMBJnHsPJEy/+6G4 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lpPBqBLYT9KeP92vCvKqtYBjVNuU8ORnufp/xwLRJ3SGTHWvMyZ/PdK3DcCjJnovE1XzQGx0Eju4kUfAsQp0QkPqO1f4C48dMf3WHjDtMDlOdHI7lFfYPW7ttq1QOZjm6aFVeU89HcG3Hjjq1oLfGof76hdmV57BYqfZ5RNswu0G+/ZCIaj0LgkQIFFtptLT8AoMUZv0mWnYggOxaJB4+uFhBPK4HjIZu0Gx12Cc/Rm3NMuSR7MrmYdPu8zVeGgo5M9vqqS1jA0sMFAyxUZXIu17qSRY1WhbQ8MaB7kIZDYQ/Bej0DTTSDy025VcSqJstbM/fBHfEyyqGksuTeEPRvnGMUi0qPL8tq0Q0Iem+a9Zw7Gk8n67Hc9ajIR1gxSVQ09M6O34gbFBEKwL33+XrUI4C4EfjBjBi67ECMtxq6KC6IATEBMJiCusa9nw2aLhGjpT5M4+V1L+Ig2khWv4Z97GCBjMblXsfXiDBNlpIYTudLwcQDBR8NQVsc2S8h2zOqw/xmaS3ivu5OmKjzTDA90qIXn8+I09a9n9UOHOhjKKA+czhwbv1KpPQ0QgTm1bNMHWRcyxmUP5DhwX/QBNfnYZfKg4PQ1wTCjLz+Klt8n1tOzKzhfn5ZwMsTv2BBPBzHBJu8tKUivxO/quzIGUOBRR2gLFkANO8zxFZ0PBgNG/Bhu1kgPp67L1icYfXudAffTRccpudSk24mersfvQc71gJa2b1wIx96KgiHDr6fpqmXaVczdFVgjE5al9pYOQFZgYSYWFjj1y/OF06JtWfwqSxz1kb4CAaQUU4ZL4r8BvPGxsz3fa9A+rs7m95wbmrwowzMnOjfn9ML/m9GBx2+XazWWci15HbQKOrh6BlUD/5MABzeeZ+D+qcGd7lW1DWdaltfWr8GVd7HA0mPevLf6DyJOceCW4P/7MIDzAeQkW8RJuUOcGTBF9xYgxX2Bj3RK/LzrRDp+zb8EOacTKy39MfN770xQwHmjH9v/rF0Ky1nrKjGzuJN+Sh0bLEu/gSnGZLUpot/sCq2qEebg/EYaWnFkUxz3Nf6C2kQ3qvfAshceUlemh2EPYv3A1oKIuYaEbEU/kQj5hKjCix5RVibN3yOWwDVveucNAJokE/r2BsxUTp3UwmHNWPnksG+cnYSG+mxbLxnNQWmUHSCp+DY7rWObuW/ImM6/0uUUCfE7R08Gogc0Bh9e6LBbzaWNoimGUdWMh9QDemk9FE9fRn0qPQSzEpU2Ndd/X4U9/c/1ToCPu03tOOmTCa84mwIawVzlD5Tb+QiMHQ4udLeN7nURM6ekjAX2ylRuS2nBCdtNsdMmWe4NMVUzQ8Ug6q4Zs4/XsF4t2WzwE2aCfL7TqB8a00X3qaEK0/mFFP9hq63ovQies5/MBPg+Odp3tx4MnqPLo4SOr9rfWpevLHc8+W+ahjDIUpkjWZwFDuJCU1vU4krEmvSqxhiQkTRW4dM6ztqI/cVgpDCClAHVh7+y9xd7ekhbwOq1r5J2gbvfZF9sm21VoD1B5wF4wqIwdXVeOvX4XNklXhqUDgYJqBaj2CLA4Ou06e/Tm31zn4CYT8Jq6wLWddt9Gt6RtXWkL3/qLTW2StOIhctVpY9+JBW1KPQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: c3vljU5tTcAfWSnmgtYHw0Z3iYCn5fmNU0SOdSXaRpQ19LceN5G5pGdrV7czgE9OX9Lbelld5/qXfWcLYk0R9z7tuvP9KaknKavZLYKEPDVr9U/2gsahAQVfP3mNv5fNAvzJ4Izd4FALqLDKE59xb0pjYoJs99yfHP+3cisN5P1XY2AAeVB4vDvGf2GMlvxQKaIUEd5QYGxQKF/SvoQSjozT5E1Rk0TsGC1KBuHQV33Tz0BSd7luZZvDVJYMkZJjA1L/op783EMjgHHtv9VEdMMm9bLgeQlTHCx5eIGm2YbXATrPETWMWY1dyi87Gh+Fy7zw7ruym9HgUEaYkfunSesnR7smUmBM61ofUWrSX1cNqt+jcLuj5pltmdgBZAHxfGymm/Qpv8SwV/aa4+h14lX85Cj3/mb9SQHCUK0axmwKx8gxla0s4SeYubAnA6Lh1heGyxvl7emDgIcQqH42h+JAepfqSNzpWDLbMwIZusvhzQSX8uWBaTShGVjsMLKMzhjNFi10vyxJKkTkILqB4YMNJjZ937+B0BcLwXZ3ksH7MFsslao9dLJ317bCUafevF5KDMpDriPA3naQf+5b3rHFBSfeT9NSdsPvNVr+qhQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e05f00f-cd9a-47c3-8def-08dd60030202 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:19.2867 (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: kLXpA2yFoFMk0NP0+BQCy4ae+PARSCg7b9q7ptjslbPtF+nHGXluHCx9AY7Rqz22RWGtUlojZAf1Qbx47xippg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-GUID: 1XvvBqljOm6BhMC_Dzje78VcUXN5XbRk X-Proofpoint-ORIG-GUID: 1XvvBqljOm6BhMC_Dzje78VcUXN5XbRk When issuing an atomic write by the CoW method, give the block allocator a hint to align to the extszhint. This means that we have a better chance to issuing the atomic write via HW offload next time. It does mean that the inode extszhint should be set appropriately for the expected atomic write size. Reviewed-by: "Darrick J. Wong" Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_bmap.c | 4 ++++ fs/xfs/libxfs/xfs_bmap.h | 6 +++++- fs/xfs/xfs_reflink.c | 8 ++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index 63255820b58a..5ef5e4476209 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -3312,6 +3312,10 @@ xfs_bmap_compute_alignments( align = xfs_get_cowextsz_hint(ap->ip); else if (ap->datatype & XFS_ALLOC_USERDATA) align = xfs_get_extsz_hint(ap->ip); + + if (align > 1 && (ap->flags & XFS_BMAPI_EXTSZALIGN)) + args->alignment = 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) +/* 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" } static inline int xfs_bmapi_aflag(int w) diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c index ce1fd58dff35..d577db42baab 100644 --- a/fs/xfs/xfs_reflink.c +++ b/fs/xfs/xfs_reflink.c @@ -445,6 +445,11 @@ xfs_reflink_fill_cow_hole( int error; bool found; bool atomic_sw = flags & XFS_REFLINK_ATOMIC_SW; + uint32_t bmapi_flags = XFS_BMAPI_COWFORK | + XFS_BMAPI_PREALLOC; + + if (atomic_sw) + bmapi_flags |= XFS_BMAPI_EXTSZALIGN; resaligned = xfs_aligned_fsb_count(imap->br_startoff, imap->br_blockcount, xfs_get_cowextsz_hint(ip)); @@ -478,8 +483,7 @@ xfs_reflink_fill_cow_hole( /* Allocate the entire reservation as unwritten blocks. */ nimaps = 1; error = xfs_bmapi_write(tp, ip, imap->br_startoff, imap->br_blockcount, - XFS_BMAPI_COWFORK | XFS_BMAPI_PREALLOC, 0, cmap, - &nimaps); + bmapi_flags, 0, cmap, &nimaps); if (error) goto out_trans_cancel; From patchwork Mon Mar 10 18:39:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 14010525 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 7573123C8AE; Mon, 10 Mar 2025 18:40:32 +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=1741632034; cv=fail; b=pTW6pqqiugFHVavAH+MqiZqQf/ko9NR9E06ocBKRD/Y34togjmbRf+C5ymP2ivaOifUmtUdoB8FRE8Kuuz+Tc3YKvqxukmeY6gRX6j+AJN9gYFU+cc0u+Zj2QJjLqFYYQKXjVoQ1x+D1/vYg8fnc7RWeFKsDcXdQiiyJRVaNzKI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741632034; c=relaxed/simple; bh=bU7fqdOo/emgxJstj3e6ACOHqCBaf8b4sP7S5GLQcZs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=GsYgS9pX9SP+G3MFjLh0j9D4C2CkrVdtXzokUARRgLYqU4trDAHKkUek7c+KlYPQhLw+rXlxEOVWfadKMfKMTEDEERfmVnidfesfc3MxiKyMQzbEH9vMR9ca4uIPxh1HiYuT2EfHE0+JG8YTceb4aA9IJcR7WeqAUZ7TtbU/Ly0= 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=YaSHy0zp; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Tp7MEbPz; 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="YaSHy0zp"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Tp7MEbPz" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52AGfhYR032608; Mon, 10 Mar 2025 18:40:26 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-2023-11-20; bh=MDxOfXQBu1M5TFfI6RU4lqavyFel+3D1RNvns2GQgjs=; b= YaSHy0zpwXZQLpUQMTyliHbs2UuDG2SlU1LJyiGBqWOojUtdnfN4A0X52UpSclJB uSjTE0B/O/TqBGPK50yaY7nEHNgyrcQQfqFDHH4m6sP2MaJ2/RF4lUaRzFvPwZZq XyEcx3RawqggM7Z+Ox1IdxJ0/urxxAYVngG9iMbvxlE5FxY+xel7/v+ZM6nUII5j GQ8ZMUBxX1awa2er3khDlfNqN5LVORRAC4H5tQ2085osrPU/81AQ5i9KdQtw7hhS zYjMBs2VuRLyZjJAN96MmJ1dtik8BgI4L4QfoebCpI4cnBReMslZgM6qiKsrB+A3 LJY5wONhBaTeCOAWuv1XUw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458dxck9yy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40: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 52AIEx0P017521; Mon, 10 Mar 2025 18:40:24 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2047.outbound.protection.outlook.com [104.47.66.47]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458cb80d3m-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 10 Mar 2025 18:40:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Htk58tAFnCgUalaZQ+HmypXyvOFWBnRWDfq3gnVvoU70zFqVkEsEHScFlDuyySEHP/wGAVnLO1Rp27VrjaZZJMRiJ0w2T/6XBTIa0EgY1RSUUrGbdYkxDvNrm3TMCnvWX162mASVKJ1vI1fgoXLFDbM/FV8plo9TYne5vHrB/fWsqJRA1rbbAVMdXQbMnI7gdxrDuMTb7KIAAK1RoSUQV0BwN8ZiFVFFoirIb5FpORgJmemmvBL0qpT9zN3KNfNIfOYDfXXaBcMS8uTVsDzGKW2zxWftQZ34AF2yQnD2EXHuDMzx0wb5PQ6DaEieKHxdg2PgbajQdy4VosOaLVqmlg== 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=MDxOfXQBu1M5TFfI6RU4lqavyFel+3D1RNvns2GQgjs=; b=ErIKS56Nkn/imaCn7TR918zcpo+7s2AXeP4dhM84FqH92QCdu2zr1C9PHPhrIE8ATQ+a7MmJ8K5Y0/4XuaS6Thl6N6UehJUZoPCKHWuUGDbdmW6UOXvIY+00h0BWz4R4uuhdE5wuV8DttQNIg+kqoQUF51VRU4NgHlu5rwpDAyegiNseHXf9FSdq6BhvPfHvCH9GEGAnR5OcJMl/YLNuo+Ba2UzUgXEmH2xMeZsaHzwL7A4y+C/gIX30mzwXV5m47zNzrkuX/n4KXDyLHbtzJwDp7Gj5ouToW4xp8GEXZ+49dAJd9W01aXJBHjH/chRk4D3eSlPI0M4/ETPsjPBaaA== 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=MDxOfXQBu1M5TFfI6RU4lqavyFel+3D1RNvns2GQgjs=; b=Tp7MEbPzFI6gn6JHxyOFMZzy1mzOgwu4oKS4r5L8JTx0yVO8MuOlFLK8+d4OiHSyiJlXfPkSp3xBNRppEOYFpBOTbnjh1CpcUV/Fc4PBoFxezeWlZ6iMuC48a4EvadKpo6VdbYCOBy4wSpI++pDzN396dpoSfQNRyRglaukKK0E= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4502.namprd10.prod.outlook.com (2603:10b6:510:31::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.26; Mon, 10 Mar 2025 18:40: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%6]) with mapi id 15.20.8511.026; Mon, 10 Mar 2025 18:40:21 +0000 From: John Garry To: brauner@kernel.org, djwong@kernel.org, cem@kernel.org Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ojaswin@linux.ibm.com, ritesh.list@gmail.com, martin.petersen@oracle.com, John Garry Subject: [PATCH RFC v5 10/10] iomap: Rename ATOMIC flags again Date: Mon, 10 Mar 2025 18:39:46 +0000 Message-Id: <20250310183946.932054-11-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20250310183946.932054-1-john.g.garry@oracle.com> References: <20250310183946.932054-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0P220CA0021.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:41b::8) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4502:EE_ X-MS-Office365-Filtering-Correlation-Id: b1dfa770-d15b-47c7-f133-08dd60030331 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: JEQJaRhqVI0tjY8B2b7+gSjLXA8/v+DbPVJixXTv0sHiG0l/d5jGJTSe3bg0+CKvCSyhxpbbUsM/Jfkkc/GSZcUASY7gpEVuSjSoZOvt5C0vk5oOfQku9y2XZr61eB5gBviFP/k5g6xqyiQs9j1qDiZ0ON7UvBmHQ3GqJ6fO6Ccz1lCr+o3tT+xaG8E4oXiLMQGbMWdQS2VcCF8VATM1KDVt1MRnllCc72upH8roFOXAFR9QbjAEw8q+koKasg5hhB1AXrNQoUAkExcSNRaE8YoOzc986wWZ8xl05sYkm5rKpnvNpzxCMG31t+juceEi93ggELXgRStRXaBcn33iV/YP/4e8pXLy3sku1S8Wavl3mw1uAsyXDrzPniIZaYgsSnnLlph364a91joaAXaZ66WtCSrVs+LIlUU40V5xqwHeDh4sY/BW9X4bUc1v5i5u7fTh0Y6CuALKnQXXeoksCE9KJkppzpGoNi7S2JhI50FIX8sZ5hGQLpb+l3LQpF5LX1JLCznOaLijrek1s64kMweFZtvDQI/DC7/BHklgvHXhnGkD5VZiSDRTwKw6HxP1QblbydWi+WE9z31+KD1vtfPBJ9hYuv1Sv5FK4NEJKhbfcfaKweMnsN+OHKjLN1xcgbR6U5Tu4lbi4Tw+dCIQAB17bHPRgCfvXpgR2RA0Mty7aWhwpZsA5eRimzlsujDygcqYaPYwblAKQNgvqG8Ry9NckxCsd59qz4kBex2mYIU7/9t8epK8/8f41tzn8N19/lXtZr+TQaBZP+6KpcUXQvv/kL9xLu70gJCVMgilEncnEWDKcXH6fCLOD8P6nPtE1YQK5q8vE6vW6j23GfOnfmpEZmY9Tww4tuGqg7kVwhGj9dv3z3L5LI0A6KxNocGujFQomTFpsLUMA4CdCDf3Msz6BYXN1991Nzr/cPfq9rhiXLKjIhXpztgXByqOx+IBo+Nft188sbxT0uIu33IyDgmu7pqrZrSQda5xzAY8v3VkyJz0BAov8TdcBpbIGdiaGD6mTXLfkstxMFB0v+tHijDOSdgICymGX9WNNrlkHFDjLjO8u5EtSY6NyPZ2ErD/yh4FEhlLRui3VgzSOPmrEk7Rtn01CKUT5DxLqX/m296FddxnFDXQSmR6yLAG/qwyXt5BgNbPOg3Y4lgKg8x7r0xH95z6NB4HTHCK0Kl7xw5GoFk85c2Rx+FYWLUiuecuBoHl75FW02NsQZLbgv0s+CAKJsFhKNMQmlkjeqDcOEjM6oEZy1JIWedoM5JsmQ+6kRrPnuAOpZb9DXe1CdZ8whH6qzNS4CpynLfhnw17oO0MfL9BF+/j69Jdtx27QuFxKkdpTpiLAfno42gewjMwN/H1WS5TwRor1vnUMMlqcycLZADjQr7qPVv1FycslPXE 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)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dMUVOECHsP7pyuUZDdDsUNYKRSvrmMDgXQC8knjWLZwPagIVy0VM5IEbV5AS1Rogqpw8qk2nNZrFx0fxro2SDvTS8IpYgJsPHoP/1B5CK7e5vVxeURjEKZ3Da3QGWIDNEbzeOYB96htgdaXaYffklIrnSalGGAKG0Yz7bFd6QjB6HiT+/huzq3p7+sa0vcRMnqlN1uC2bafzcEObEbhQrt02Q+TDz8jrob8Y6K5iYaJdCd4xo+tpgRVDceHrGULMQ44bKD3HGyjLwiP+ikGj24oqZkG4u8kBBqoicGyO0f6shO3Jx9q4RyDE/q3/ENEu2NWtVixKBToGvlART67QImaaV3iyvyu2rBqExNs2nPgJJKgO6r8OxdncLcrVL4blieR5ZFowDfJWP2Bjs9+ipxvIdjONjCIREWh2hDWxO053grVnsPg2+CcbFQyUioEWoDiaf5F9PyKa5OJBbQ+PJP47RpBA98dFi/9quj2cqSCf0QipsurHKNvqp1+TCPI2SDPUowXUtntsh4LngDQF1JoyFfsz4/tsOI9uPoHDjJp092cbC7hVSMhcjz/0VoxBxKar/KhNIe+Ftb1obU0QhAtHJnL0P7Q+0HAFXFnTd07QRKRYmt1LE1ibRologz6SGRoq7LSMn4KNJMvckX9t6Jg0CPD6GlDlW3D5zfSoYrz6xZBMmn+MBgjwaMYPuN1ejjQRVkwdEllqUNkWknPsbnWcjG0iF4JPG9DiDIIE/6+bUyFAOx2xcnoL1X3Y38MLNK6HrTlJxy8hgj0zpqPLS+Nv8+1rxj1nu4DlEDYVyolSkT1iV2Fm+Xyd3DsuCaDgmeIuSDmsLhsior+keywX7w5WesxMNoSvwHKJpfeyUyDoKNYwquuWNimbP5cFZTf8vgxx8MxnJcyYiLecsVXIjK8BkZ/D0NqAXsCgPgMXHUILtwuvMWr0+69AvlmBSICFM68ZajD9pCd6CkJLTyJP0wVfE6H4+YnTcicAcvKzDJWKBFDZgcUZBEMr7b9s67UTECx4aGPMpr300ZE++58ueesWXCVn0O/e7ggK4i8lhlIRYEZ9mW6dCFHS0lli/RBIXyuUaZtPadktzbDeJB7M/6MOsFnkDUta4CdWzahlKB00b0NHlEYc0EKhIkc21wrQzfAu8WOYKheXf/qeJAqwIbz43B4gkqTAVVX+zyp/w9ujULumZpCSILLZJyEpUuFmxnI3TeE23XhZu5L6f+bD17ST/8LhL2y/aaPLZcnrLMrZfwY+06dXxCLX4F0CqOjSwQIaDHxQ2R26uQhwRu3kV3UoLOT8ZNCnXmcFsuNqxNqaqEDqh0HPBgOIpbSHnrZVF3AbQRw3WnaHljNelmYDiwiZnzrrcVzHBX7uExFRrjHLZEDi7vIE4r4mPoNphh6bqeH3ld9Zvmr9I4JJX+3JOXM0asemZ958t9+1DNZAGitScLMlqpzJ0+tVw0ShH9NNcf4s1cgPDacmB4iL3z+tLZHlPeuxzbGDBN9FTUGUS/3I8DwlV9vPXs7xQ9wnHy+oEWAR4CTPQbesWCabBb1y5JeINAzBoHIhSH/KKtW2WjjW1L+D3Cyo/dWe6WA080Yv3xf5FpaDfli8PH+onZmRew== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: QRo8IYUc1/EgujAvzJSyZyzwQzOhCqJACDjUgusbqRP+YUJcTL0ddltdDOjhDVI/+r5IiWzq7K135tJ8QLx3jmG24Bm9PCb2AITclroyvVn28b+S1dG0Hi1IyEdksjw7RdFuZp756DwdGY02aWLMjZZ7I9Rq2SO+55Fb99dbQNt6r9Sf36T26cdIlh4vMNiWnrSeo5H3B/XvfirBtssRtQ8ra/h+0UEfUXzrJIThAk6IgXgWpG72+NYbCK6iU56kEvMUuVtDr3qomhZ+aJV7Yikn0toUQyvklAfTOoSjAHabbFYf7qD8xrDhzVqDU0q0sSzarPbEJD0W6bsszSRtE6mvvzpxYGK4q2bjask8oTnUOW+A38axwfsn/ruwCKt3SnLHKlxLcGsAfqVDtTCyyV1pb99DuCcV06EsgqnNxVvNu8C3X87LavXgli7Li/egWdj9exc6cF/K5ckaQBiMI5Z3F8Q4D1fTRA92RwZtQWkZg9LZO/yhtFNhU2w2wq3rBWGf/9QHdSAfKG1CfTSC39agdaUl9b0YtK6K+So94xfXei8G0z3SCiFOPZxCKm6WZo7VwUh/LHEkWHQibNDwMkrqwpt0YFQ9JRdruDrFmcU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1dfa770-d15b-47c7-f133-08dd60030331 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2025 18:40:21.4195 (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: 0DonTbeJ+Y9OCgGt269R8F9rBM3eOmPo5LWBfHC07kPBgfwLjsAm3sdlkhBwadP6vef24E3Ui5gNjJtoeAJJ+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4502 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-10_07,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503100145 X-Proofpoint-ORIG-GUID: VYfQK-tr0F1y5Loli3yMLGieTntqKuSn X-Proofpoint-GUID: VYfQK-tr0F1y5Loli3yMLGieTntqKuSn Dave Chinner thought that names IOMAP_ATOMIC_HW and IOMAP_ATOMIC_SW were not appropopiate. Specifically because IOMAP_ATOMIC_HW could actually be realised with a SW-based method in the block or md/dm layers. So rename to IOMAP_ATOMIC_BIO and IOMAP_ATOMIC_FS. Also renumber the flags so that the atomic flags are adjacent. Signed-off-by: John Garry --- Documentation/filesystems/iomap/operations.rst | 6 +++--- fs/ext4/inode.c | 2 +- fs/iomap/direct-io.c | 18 +++++++++--------- fs/iomap/trace.h | 3 ++- fs/xfs/xfs_file.c | 4 ++-- fs/xfs/xfs_iomap.c | 10 +++++----- include/linux/iomap.h | 10 +++++----- 7 files changed, 27 insertions(+), 26 deletions(-) diff --git a/Documentation/filesystems/iomap/operations.rst b/Documentation/filesystems/iomap/operations.rst index b08a79d11d9f..f1d9aa767d30 100644 --- a/Documentation/filesystems/iomap/operations.rst +++ b/Documentation/filesystems/iomap/operations.rst @@ -514,7 +514,7 @@ IOMAP_WRITE`` with any combination of the following enhancements: if the mapping is unwritten and the filesystem cannot handle zeroing the unaligned regions without exposing stale contents. - * ``IOMAP_ATOMIC_HW``: This write is being issued with torn-write + * ``IOMAP_BIO_ATOMIC``: This write is being issued with torn-write protection based on HW-offload support. Only a single bio can be created for the write, and the write must not be split into multiple I/O requests, i.e. flag REQ_ATOMIC must be @@ -530,10 +530,10 @@ IOMAP_WRITE`` with any combination of the following enhancements: the mapping start disk block must have at least the same alignment as the write offset. - * ``IOMAP_ATOMIC_SW``: This write is being issued with torn-write + * ``IOMAP_FS_ATOMIC``: This write is being issued with torn-write protection via a software mechanism provided by the filesystem. All the disk block alignment and single bio restrictions which apply - to IOMAP_ATOMIC_HW do not apply here. + to IOMAP_BIO_ATOMIC do not apply here. SW-based untorn writes would typically be used as a fallback when HW-based untorn writes may not be issued, e.g. the range of the write covers multiple extents, meaning that it is not possible to issue diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index ba2f1e3db7c7..da385862c1b5 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3467,7 +3467,7 @@ static inline bool ext4_want_directio_fallback(unsigned flags, ssize_t written) return false; /* atomic writes are all-or-nothing */ - if (flags & IOMAP_ATOMIC_HW) + if (flags & IOMAP_BIO_ATOMIC) return false; /* can only try again if we wrote nothing */ diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 5299f70428ef..d728d894bd90 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -317,7 +317,7 @@ static int iomap_dio_zero(const struct iomap_iter *iter, struct iomap_dio *dio, * clearing the WRITE_THROUGH flag in the dio request. */ static inline blk_opf_t iomap_dio_bio_opflags(struct iomap_dio *dio, - const struct iomap *iomap, bool use_fua, bool atomic_hw) + const struct iomap *iomap, bool use_fua, bool bio_atomic) { blk_opf_t opflags = REQ_SYNC | REQ_IDLE; @@ -329,7 +329,7 @@ static inline blk_opf_t iomap_dio_bio_opflags(struct iomap_dio *dio, opflags |= REQ_FUA; else dio->flags &= ~IOMAP_DIO_WRITE_THROUGH; - if (atomic_hw) + if (bio_atomic) opflags |= REQ_ATOMIC; return opflags; @@ -340,7 +340,7 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, struct iomap_dio *dio) const struct iomap *iomap = &iter->iomap; struct inode *inode = iter->inode; unsigned int fs_block_size = i_blocksize(inode), pad; - bool atomic_hw = iter->flags & IOMAP_ATOMIC_HW; + bool bio_atomic = iter->flags & IOMAP_BIO_ATOMIC; const loff_t length = iomap_length(iter); loff_t pos = iter->pos; blk_opf_t bio_opf; @@ -351,7 +351,7 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, struct iomap_dio *dio) u64 copied = 0; size_t orig_count; - if (atomic_hw && length != iter->len) + if (bio_atomic && length != iter->len) return -EINVAL; if ((pos | length) & (bdev_logical_block_size(iomap->bdev) - 1) || @@ -428,7 +428,7 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, struct iomap_dio *dio) goto out; } - bio_opf = iomap_dio_bio_opflags(dio, iomap, use_fua, atomic_hw); + bio_opf = iomap_dio_bio_opflags(dio, iomap, use_fua, bio_atomic); nr_pages = bio_iov_vecs_to_alloc(dio->submit.iter, BIO_MAX_VECS); do { @@ -461,7 +461,7 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, struct iomap_dio *dio) } n = bio->bi_iter.bi_size; - if (WARN_ON_ONCE(atomic_hw && n != length)) { + if (WARN_ON_ONCE(bio_atomic && n != length)) { /* * This bio should have covered the complete length, * which it doesn't, so error. We may need to zero out @@ -686,10 +686,10 @@ __iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter, iomi.flags |= IOMAP_OVERWRITE_ONLY; } - if (dio_flags & IOMAP_DIO_ATOMIC_SW) - iomi.flags |= IOMAP_ATOMIC_SW; + if (dio_flags & IOMAP_DIO_FS_ATOMIC) + iomi.flags |= IOMAP_FS_ATOMIC; else if (iocb->ki_flags & IOCB_ATOMIC) - iomi.flags |= IOMAP_ATOMIC_HW; + iomi.flags |= IOMAP_BIO_ATOMIC; /* for data sync or sync, we need sync completion processing */ if (iocb_is_dsync(iocb)) { diff --git a/fs/iomap/trace.h b/fs/iomap/trace.h index 69af89044ebd..4b71f1711b69 100644 --- a/fs/iomap/trace.h +++ b/fs/iomap/trace.h @@ -99,7 +99,8 @@ DEFINE_RANGE_EVENT(iomap_dio_rw_queued); { IOMAP_FAULT, "FAULT" }, \ { IOMAP_DIRECT, "DIRECT" }, \ { IOMAP_NOWAIT, "NOWAIT" }, \ - { IOMAP_ATOMIC_HW, "ATOMIC_HW" } + { IOMAP_BIO_ATOMIC, "ATOMIC_BIO" }, \ + { IOMAP_FS_ATOMIC, "ATOMIC_FS" } #define IOMAP_F_FLAGS_STRINGS \ { IOMAP_F_NEW, "NEW" }, \ diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 16739c408af3..4ad80179173a 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -755,9 +755,9 @@ xfs_file_dio_write_atomic( &xfs_dio_write_ops, dio_flags, NULL, 0); if (ret == -EAGAIN && !(iocb->ki_flags & IOCB_NOWAIT) && - !(dio_flags & IOMAP_DIO_ATOMIC_SW)) { + !(dio_flags & IOMAP_DIO_FS_ATOMIC)) { xfs_iunlock(ip, iolock); - dio_flags = IOMAP_DIO_ATOMIC_SW | IOMAP_DIO_FORCE_WAIT; + dio_flags = IOMAP_DIO_FS_ATOMIC | IOMAP_DIO_FORCE_WAIT; iolock = XFS_IOLOCK_EXCL; goto retry; } diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 6c963786530d..71ddd5979091 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -830,7 +830,7 @@ xfs_direct_write_iomap_begin( xfs_fileoff_t offset_fsb = XFS_B_TO_FSBT(mp, offset); xfs_fileoff_t end_fsb = xfs_iomap_end_fsb(mp, offset, length); xfs_fileoff_t orig_end_fsb = end_fsb; - bool atomic_hw = flags & IOMAP_ATOMIC_HW; + bool atomic_bio = flags & IOMAP_BIO_ATOMIC; int nimaps = 1, error = 0; unsigned int reflink_flags = 0; bool shared = false; @@ -895,7 +895,7 @@ xfs_direct_write_iomap_begin( if (error) goto out_unlock; if (shared) { - if (atomic_hw && + if (atomic_bio && !xfs_bmap_valid_for_atomic_write(&cmap, offset_fsb, end_fsb)) { error = -EAGAIN; @@ -909,7 +909,7 @@ xfs_direct_write_iomap_begin( needs_alloc = imap_needs_alloc(inode, flags, &imap, nimaps); - if (atomic_hw) { + if (atomic_bio) { error = -EAGAIN; /* * Use CoW method for when we need to alloc > 1 block, @@ -1141,11 +1141,11 @@ xfs_atomic_write_iomap_begin( ASSERT(flags & IOMAP_WRITE); ASSERT(flags & IOMAP_DIRECT); - if (flags & IOMAP_ATOMIC_SW) + if (flags & IOMAP_FS_ATOMIC) return xfs_atomic_write_sw_iomap_begin(inode, offset, length, flags, iomap, srcmap); - ASSERT(flags & IOMAP_ATOMIC_HW); + ASSERT(flags & IOMAP_BIO_ATOMIC); return xfs_direct_write_iomap_begin(inode, offset, length, flags, iomap, srcmap); } diff --git a/include/linux/iomap.h b/include/linux/iomap.h index 9cd93530013c..5e44ca17a64a 100644 --- a/include/linux/iomap.h +++ b/include/linux/iomap.h @@ -189,9 +189,9 @@ struct iomap_folio_ops { #else #define IOMAP_DAX 0 #endif /* CONFIG_FS_DAX */ -#define IOMAP_ATOMIC_HW (1 << 9) /* HW-based torn-write protection */ -#define IOMAP_DONTCACHE (1 << 10) -#define IOMAP_ATOMIC_SW (1 << 11)/* SW-based torn-write protection */ +#define IOMAP_DONTCACHE (1 << 9) +#define IOMAP_BIO_ATOMIC (1 << 10) /* Use REQ_ATOMIC on single bio */ +#define IOMAP_FS_ATOMIC (1 << 11) /* FS-based torn-write protection */ struct iomap_ops { /* @@ -504,9 +504,9 @@ struct iomap_dio_ops { #define IOMAP_DIO_PARTIAL (1 << 2) /* - * Use software-based torn-write protection. + * Use FS-based torn-write protection. */ -#define IOMAP_DIO_ATOMIC_SW (1 << 3) +#define IOMAP_DIO_FS_ATOMIC (1 << 3) ssize_t iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter, const struct iomap_ops *ops, const struct iomap_dio_ops *dops,