From patchwork Mon Apr 22 14:39:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13638582 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6CD16C07C79 for ; Mon, 22 Apr 2024 14:40:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D77AC6B0096; Mon, 22 Apr 2024 10:40:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CF6AF6B0088; Mon, 22 Apr 2024 10:40:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B095A6B0092; Mon, 22 Apr 2024 10:40:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 8C8C06B0087 for ; Mon, 22 Apr 2024 10:40:44 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 335B0A0CA4 for ; Mon, 22 Apr 2024 14:40:44 +0000 (UTC) X-FDA: 82037429208.23.B663C9A Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf14.hostedemail.com (Postfix) with ESMTP id BF46C100022 for ; Mon, 22 Apr 2024 14:40:40 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=JKNx7Css; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=bMnDHCBI; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf14.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com; dmarc=pass (policy=quarantine) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713796840; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=2Xn5Oquli+l4IsJVekV6nhgZjHWFufS+Ek7zvaqQCU4=; b=eVPwwn0dq2C2a6BZu5hQPEKGcSC3I2FCuRjx18gwSmUiUiWaf/Py4R4Btke6uooo/yKsA6 RfenhHyFuy/QX8F/58n0Z4e47B3NScbyxM47Ta/LCUjoE/zYp6pV+DRcjMZ/96uMdvdYGi q2X9GUT3sIAstWMayXYKDlpct6TQz7E= ARC-Authentication-Results: i=2; imf14.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=JKNx7Css; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=bMnDHCBI; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf14.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com; dmarc=pass (policy=quarantine) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1713796840; a=rsa-sha256; cv=pass; b=A5hHANk1dWhvGkKN4ZB3gFEyEHQPtt5roRv9uiIP1RxNoi86JxAyLN2j06dO6OC6Qt8MIF TGb7DJNfK9Kif7RoPBo5QeubG8ObDuSoXjfmUjGu/wK/1mKPv/k+SjZZ+9fqC3ZAqupTyK R/0qkvA5yjRk7q7ZDQqRntL6QQdHkeo= Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43MDYCVD028754; Mon, 22 Apr 2024 14:40:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=2Xn5Oquli+l4IsJVekV6nhgZjHWFufS+Ek7zvaqQCU4=; b=JKNx7CssMorgnQUZmuCkJoAVMCuow0teeKlxedHi7FWKRFz/w2HWlaBG0VVsn3AFKVpq KrNP3+7rDRK5/V3n8kWWUqdizyJrUzdkCNP/97YUsKW2Wowo3J27LfM+flqxptfeAKMi IqW39rC6kSKzSEHD/OJJsZfVaBT1earVoKrBgKrzBRqJeiI+I+zBLvnV8osZHgvzV6cX mfJY8KhED26EcEB/Iw/H5lJBExy/VFCNG8Fux/lEFPa9WiKHkXkbqsX7SMsDIeD26fQS GIeS7SYr6doMlKLtcTgtUMI+IDaWZhvgAjokoB5dhjWMPX2dPSWu8U+JADpqUCsR6Vcr Ug== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3xm5aujsyc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:26 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 43ME3wk7034978; Mon, 22 Apr 2024 14:40:25 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3xm455qv7e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CBOixMceyXTbiX3f3BVna0tDjF5ue0lShPvXs1t8SU18kqsgNNCHVcYm4Wp/RU6mOi6egJazwpFWau70mbVMPgIAM0mvwuxvrBC5ZJ8aoeOKjEpqztyd0PVEBg2j3AtmCcn4EeuKUTcVDOGHXgkXoDncugTrjTHT0vYyDQdQ/6cC/KaONtawUhsCTAWTXK542EwhV9GSmMFsdEBgXPu0Pn3qW5gqWgMenVwq6avcGv8/m+VjhnLOSCHLeqonig2sdBlvJKvl7mbYKVy65xs3SleoHLkHDNH0RRHxY64zf/cQgeMrWtuXuFthOGtDO5SX9GdBIrCmxoXQSpXnB3sV8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2Xn5Oquli+l4IsJVekV6nhgZjHWFufS+Ek7zvaqQCU4=; b=RT9xW18nB9grxwzebzh2xDBML3meO1kv6hHwne13cLTzLjzmK3ILf6X2L5/d5i0B9QNuLn1okThyuLBqbRRRSyz7myhBwcUVahBLrBRx/Vb3wTw+OwCkHra8skpZGAS34SOSD/Untc7vkRofXB6TQE4ym4ePpA5QxxF+HVuigL4m4GQxUDKERY2ZhPASH2l2gBhsr2PW7C9oIGAUu7DKvmjSdglCLexG11oRLSOXk37tQ1KqmhiA6DnCIYQl/R0AOkk08qvrvLOM1o+0iGDUjHU/ueGGhpLCQncr0vyU1rDE3veaXq+auWD+pJXkxkTfJLzspc4hHloN2ZagW3CsBg== 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=2Xn5Oquli+l4IsJVekV6nhgZjHWFufS+Ek7zvaqQCU4=; b=bMnDHCBIfpOslhj9Lx5LkS5gP6bncTIcFaw6MnXzUBTZ016scisP3bDfXovS9jjZw58MqmAefSOr2j+5LJ+VXXluFhnSRu+EeTgM1APTgOekO4qQ9QFRUEbG2R91/oyXS9im6FGi0VMsfzC3EWtpeQRxAPSO/8hC+nWCTDrKolw= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by DS7PR10MB5039.namprd10.prod.outlook.com (2603:10b6:5:3a6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 14:40:22 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324%4]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 14:40:22 +0000 From: John Garry To: axboe@kernel.dk, brauner@kernel.org, djwong@kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, akpm@linux-foundation.org, willy@infradead.org, dchinner@redhat.com, tytso@mit.edu, hch@lst.de, martin.petersen@oracle.com, nilay@linux.ibm.com, ritesh.list@gmail.com, mcgrof@kernel.org Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ojaswin@linux.ibm.com, p.raghav@samsung.com, jbongio@google.com, okiselev@amazon.com, John Garry Subject: [PATCH RFC 4/7] fs: Add initial buffered atomic write support info to statx Date: Mon, 22 Apr 2024 14:39:20 +0000 Message-Id: <20240422143923.3927601-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240422143923.3927601-1-john.g.garry@oracle.com> References: <20240422143923.3927601-1-john.g.garry@oracle.com> X-ClientProxiedBy: BY3PR03CA0019.namprd03.prod.outlook.com (2603:10b6:a03:39a::24) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|DS7PR10MB5039:EE_ X-MS-Office365-Filtering-Correlation-Id: ee42feae-6dcc-4c83-28d1-08dc62da23f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XX0Gxw0SIgb9ELWkJjZyFkOImxruU9LeX65ziGK6XasRsUHirWMUsMhT3wzrOcckw4ZawpIcYOnW0zELpZuTAwdyUC903rGXp9J5Jw7qBSiefGtrdcWAKD5mDn/rnBlO9GP3jf3T+YdaISl7BmfRLa8i5ulWYh8khggg21eqrjE3V29UYROIrQq4HmJMyX+HGYafE7Vr9YzBujA5jzhOwrUJ2timuvRJhN3T47SS8yQfUsMYjk0OEx5M7Vl7vPH3GJol4YlFzZbJqstxW0XbL81g1t8O3a0iMxcyFsxqHhvQHHpeZjFgDlV9xAhObV8SEnkkSkTE0tPBt7A+TNY1gIpr9VBYUO3wmR88uHJr3o0O8YvBBw06UAhXm3dTx5ui/Hi5oPIceqIGg6ksvOtVWIvNAb7nsQRyMVxlDybZ/osl8/h9OK4EakQyqOsioAPTnvI5Pv2jB8HlZuIETxWyywrG2J9BKNT6igkO52flBkYs4l5uTyvWsO1wMRYQYUBbWlo12KehbQC6somr2vO0/IV9J3LuwoSp7+3XqCpfZMG6Oe8wvHu2dhAGfzn6T11UI30OYnAjNt3jHOKdLMFJPsVA7axJ+6Ju4swDwv7lCGpauTEH4ILtYMXJvJhWGR8q7L+X5Z1+0G+kR4iwPM2EEbeQFROrjJyr1RkendjaxCtlry9u6wRhd4sNHddtuafuUW6UQljhz2OCTfIAXOU8hqUncbmHrRaHk2o0r6KOppRErWB6c4ZM5Dpum8/sWwoY1vvBmCYHrTCHO/8AVWQH55X7GrzpPmeOZwq5m+wrsH/prSVXElnOOA0JZiFK/VGxmCNtj2Uv9kG63g2m0RxEyVL3ZC4nVPyPJUarQYvBazPAM5pHg4hu8EKdZ2gTSYPI6K1Q8zjy7gdTvDngRY4Zifpb/PG/wIvHj9maNWVrSB+nmpQf5WNBorzfzRGAcb1kPPKx80KfqNmPTokfmd6+oTjuCtiyyrfZKVQQz/XhNeV9/WU9HMjT7aeaNn8hI5xDkRQSIs7Q6D8fw6vrpADLrO33U2VDWVc4bu0Lq5j/wtwnc/W2Q17kdMsSx9MQsdPyCLOEebGbI7kNNJXtjnnx+TlW0khHaSVyet87IcINyOFnVD5kY6LSPXIhfXhHrJUngKki7zNQALVfRR3aFWfGIVGQii1AhfA8wA3KYQI8DKBRpbZvMjqywogg+hTgM34WAGipZ0wzur0oP7WkXzpu8WGYRyDCDfqDjEi0Kv/2KMgjITJb7Ef99563CVRIFF2e6JsH6aaQtV2KVvYMe4B4NF9dC8CJUDcG7hBKgYUgysW4OrilEwZ42386eZALeE+m X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(7416005)(1800799015)(366007)(921011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Iwe/tex1X1AwjdbSJTrRiEM/DNDLbRX4K7C3r69/SIQFmfz4dwCWfABpyZ8A/dKKzdbm/njAS98l3RLSIsbBhGvLBKzzmWvLND6W1dpqDzgh3GN+9zzTZzFFlFyr5DNxbcKuMteqP4Unvvq/HOucaV3OWzaNxe7RXmWtegTDKMcRCqMAtVtryMLWf52GK6R7LmtxqEaBW4ashTM3EPQwA8VZSJ3a3zVq0FM4Y2FYaumHZhIvY0YhSuOpbTPq7Rat6oak51mAVqClXV5tURnHdOACDSvLrUx8J25a9MC3neTp7ODIA8Ix94qx9SyWdIk91Dd3M4BcFjG2Hj5KW+0UoDn4/+PTm2HFXoJpRhMuqeDPa29ESrBrakKknt4y9XWESxhgSPkWhoIAA4zvf48qaZM9TinzftZJHVpldNoZrObPG50tNt/3+MyDfHYtegSnN9MjLemyF3NiJkea4fUWs/jqe31pVJ8W7BLhWND+ikJU/rK2Zqx3AGsEm0W8MbeRIQAfrHPSTeWXNsQLb0aMOECYzZjDmNG6MvpMNWfKTTvGX2N/ieNnenmLGmsIJbQtm63mrahXxpJ9E2pPcwHZ2d/VA2noaxtS3CzVlpoEHKZ38QVCwigRrpxPnX8VKabiB5Zm8CmPiRAplRx3U/IPCZsZZ6HGhGqUeI0gtQxfLJHCRWRRAcBKVQFN5of1lOzZbQpt3JLZRc81iWZzLuM906v8VLlYT3sKGYeguGgIpigXJ0K4BJTlYxYqshWCykWjpTCzR6Z2FaIp+8FFiEhIjRQyS2ESfoPJnWEB0xpWZJo6EjiNQbN2KSO093vP20EseMf4cvYJymdJCPMg7tflvJLrDPtsFftV75ukkmTQmumVN0T/3nkWz0gsjKpWazRuv5FmHGQDQDV8JWvedas28zj6Q52QSZD/JL6Aq1KCqIEzfIQTYvW0vMi07DhpB5J+WmSTvE7pw+OdC6l/54pOzwjvcsrl+Y6hZNFRWvo9GxellOtFGYKJNxIRjdlZ9iQuOHFg9VyEUiRbYUnfC9x3dQKZqvNyo+JUda9fER44Gqg7LwKGd6NKtnT1hsZms8oH3Brb2bzaAYDI9aeeX1IO6RXm2eQYE4XOeKSHBvOEdadOeePJpEdVNgVlnvva0exwAx0bS7ixfbLXQTCdh70AsP+OMZheiRNDKZT1HQH15iY0DwjvS0ADUX6YSB/kk6LUil7fyDo/ffq3pU7dOqFvBPVJOOPGIbpwUsBHXwOhW/aULWz7OvblLJr3HIJMDXBAZyYumP8Gdgu/n49KGo5+suSXnawJKVrlVgbjUfIFpuVcQkEsryzLdBgjqPogHs1v3JLbNk3myHegVTudoMaVczamp5SYWV2THJXZyCGQf5UyBRijVsWeyXoRYGJm+t5cFphDKZbxlwdqoLGCQpLJTsuejoAK9/qx8MLRDxkVm+y455074CQ5G8ltXklI51MrniOD8F3aLW/avlGOcxJ7CcOEFAZwYd3o16cMWg1Tb5lM6uIk/u59VyqViTb7r0cydX/RpqCwyKze/RJ42yR+FVkUtEoZ5Zly6pv+37Bf+M6XwMCjw59Kk3N4V8oIowjLUmmqBg9VWEX41I1/9pkyiw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: puhXGsFzldkJHKqXdSsn35ncaI4A7IaTjc4fsGo1K1kTyi29SNY86EWE1WwXCkm3fDIJwSuRwvpqZH1yG8sCYFS6ab8vCfpCNw6p9EU7V5B30rD36h/rnZ5PhSgF65d6lQl0rPWwcmuLOIf06oP10RVYosHS1mglKkFa+Alrcw15mKQcwXh2jmbMjYi+iI/hCu0t84I3H0B08iW7k2J5oHInFZCo69GSCXgFIfL39s/kOJo+rgf1hiQSmNqRQ1NutZxF8eQ+74Qz9MXuL8YAp85LAG+HQMmRKMJ6NWaZmq6HF4GLqvl8oHVQkJ08q7Xdgm1IJ8Ura4GZS4gFDzgzWjZEcQsG22ykAQbYEhJUQkBtaDWeleLDqvYvSfw/s4ss+9YWeHX9SK8HJK2vNIpIl3QgaHc6LxUFgMZBXjTIrYc1siNEw0HQYHXSJUN2NCETeUmesYI8U+NzQ+nDOnd8zOIbZxHWDBb983fxu5etyvikiF1cetcEtW8WbgzfHsB+F+c1+3yRgvBtxN6DJquhvZ5XhoEWmth/PkGhD5OE6Aoo/nkGyuoCoKA45HkGV27kA6+kiF5HskeREnbWCZGvfoLCwoDr74KqSjSEy1v6xSI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee42feae-6dcc-4c83-28d1-08dc62da23f6 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2024 14:40:22.6363 (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: sD5oj7108LaVvLvDXF0i2efhkFZYYaN4I6ZHW/RhsAzhaeOAjfA2qnQgZgVSz1dntUnL7ybXbcKpsytZSxpsIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-22_09,2024-04-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404220063 X-Proofpoint-ORIG-GUID: _02o-5q_qYeMjcHU_hlFTTylJf5Tk_QH X-Proofpoint-GUID: _02o-5q_qYeMjcHU_hlFTTylJf5Tk_QH X-Stat-Signature: h8snp6n59r9ptppbptwzib77w7a4xwhj X-Rspamd-Queue-Id: BF46C100022 X-Rspamd-Server: rspam10 X-Rspam-User: X-HE-Tag: 1713796840-822260 X-HE-Meta: U2FsdGVkX1+GwrGbUHU3drUXtx4uOChHZq2YEPAxLL9nOKtAWMO8/uvIWhRKhxcpcuJohZK7PIviYQ2G7Ba2965C1R8oysQAFeTbnUb6Owk8Kf8CTSDnsQdLDrGsAG2nNAFiYKcxM84FwCjQGeTqYSkSp1hQjb76bejE+yau+igjGanPqp9LqEVXwRNgKw2kr5YSJ96YVuZAH+GyJXFw+T3gQXdB0flGM0BQF9WZlGPKE8j6yt7xWa877pLpFtOGhZCuSfTB7eAqjermr7PUKc4J/3H2HidJr48NOpqBEt/J1p+QMEF4PQxI8bRDX+c6aA0Wp9IrpI+B4uCkoT+yL5SVgPsClVqBuYQwlEV9DVzfVDlKdcPx90ZQ4KgCQ5XQ7MamWNnmOCw6a/xSaTPSo5vP41aJYeiB879LpavgQa07TddhgwgOo2lR5t9GwUv4XogSdb1+S4nzmpDkud02MFDzAe95LKj/uRdy1EcMLjJkRgLNjv2Qc3hJnS087g9dp5kV7zv5qyoEv4apqwmj6wT87ljnvHXwbrNMDhEJU0pk9ML9FnmN3L2UgpL1L0opi2gTD4LrKZHDEDnuuRdvZ5bz5gZW59WoWf0ItDr6tB1WwRdSItLoVVw99K37nGkcHaCCWci6lrL3T5hvim6mdYKiR/UxLK3osYECwYwAA9FbIB9ZIDNC3EdFmUE/i1ZTVB/Uzjc6OJfnCpRGxKexjAC/XPiynhGcsrJhNRkKukpc9+Gz+0zQw8AQ6GFL1hVlFMivgGxkMJ06ty2OG3vYu0awl4nurQK6ZZ+L0bFekWOP7eO8k5Ad9aJRIHETRnwMbPfNC8TrJQynPUhMi+MTfsNWtxK2aJ8eFfqO/gFTZPLU48Hll/qfv9oKrN0wD8jQlfWFMjm2KFxUGUcXThEugw12foTK1SdqUecR6wZsPGrt3Mi3Y0HJVRy4RZmcgayvZwh9bZttMoGNglUyNdx fq1Pd3LS El/Hjjk0W5ziUieMJ4l3dEca0MRk/US0fg47MojmU0nDYa9YnljEFhQeoywVK6vnf/oAUoJo18nCEbrdArciLxQLNUsz+lWEsHfrnRLjjpqOvchAtw9UR2iVb+t+Dr6ifPQr8rSIGeDcEg2FJ2yWUgTDwer6c2Z+rhKlE4gypYKeYW7rAOCr5DPXhyj+D5nKwMcoczXyc2SA4+FWy08bI83suYRwOmA6IXW43qM3ftSAUHMjBmmme4tP9iyTaqf9qO03pJOo/6daqG2ZUZsmRgnpn5xjQznL2XTdKK76DszO06XDd/9ZO/GdtLX3XfDtALQrwre9u5V8Z2/Hiy3mgFavUCCHAmEwqjIBcIUl7yfTGfrTug+AKv2XGqBE1pLNZ5J5CYMZGrGcEkZwSkZSnVDN1LQ4uej0Rs5Do3509UucQhhllf+cdAxmEL33gtrOv+P0qH55GA+HClBhTUyhwxFHBpJ2IQtFD+Aj6LtZkB5LGT0l3e4lpuTbEew== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Extend statx system call to return additional info for buffered atomic write support for a file. Currently only direct IO is supported. New flags STATX_WRITE_ATOMIC_BUF and STATX_ATTR_WRITE_ATOMIC_BUF are for indicating whether the file knows and supports buffered atomic writes. Structure statx members stx_atomic_write_unit_{min, max, segments_max} will be reused for bufferd atomic writes. Flags STATX_WRITE_ATOMIC_DIO and STATX_WRITE_ATOMIC_BUF are mutually exclusive. With both flags set, neither fields in statx.result_mask will be set. For buffered atomic writes, stx_atomic_write_unit_{min, max} must hold the same value. Signed-off-by: John Garry --- block/bdev.c | 3 ++- fs/stat.c | 26 ++++++++++++++++++-------- fs/xfs/xfs_iops.c | 2 +- include/linux/fs.h | 3 ++- include/uapi/linux/stat.h | 2 ++ 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/block/bdev.c b/block/bdev.c index e2a9951bd2e9..b80c78aed9f6 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -1213,7 +1213,8 @@ void bdev_statx(struct inode *backing_inode, struct kstat *stat, generic_fill_statx_atomic_writes(stat, queue_atomic_write_unit_min_bytes(bd_queue), - queue_atomic_write_unit_max_bytes(bd_queue)); + queue_atomic_write_unit_max_bytes(bd_queue), + true); } blkdev_put_no_open(bdev); diff --git a/fs/stat.c b/fs/stat.c index 0c0c4c22c563..cb8283534616 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -94,19 +94,26 @@ EXPORT_SYMBOL(generic_fill_statx_attr); * @stat: Where to fill in the attribute flags * @unit_min: Minimum supported atomic write length in bytes * @unit_max: Maximum supported atomic write length in bytes + * @dio: Whether filling in the fields for direct-IO * - * Fill in the STATX{_ATTR}_WRITE_ATOMIC_DIO flags in the kstat structure - * from atomic write unit_min and unit_max values. + * Fill in the STATX{_ATTR}_WRITE_ATOMIC_{DIO, BUF} flags in the kstat + * structure from atomic write unit_min and unit_max values. */ void generic_fill_statx_atomic_writes(struct kstat *stat, unsigned int unit_min, - unsigned int unit_max) + unsigned int unit_max, + bool dio) { /* Confirm that the request type is known */ - stat->result_mask |= STATX_WRITE_ATOMIC_DIO; - - /* Confirm that the file attribute type is known */ - stat->attributes_mask |= STATX_ATTR_WRITE_ATOMIC_DIO; + if (dio) { + /* Confirm that the request type is known */ + stat->result_mask |= STATX_WRITE_ATOMIC_DIO; + /* Confirm that the file attribute type is known */ + stat->attributes_mask |= STATX_ATTR_WRITE_ATOMIC_DIO; + } else { + stat->attributes_mask |= STATX_ATTR_WRITE_ATOMIC_BUF; + stat->result_mask |= STATX_WRITE_ATOMIC_BUF; + } if (unit_min) { stat->atomic_write_unit_min = unit_min; @@ -115,7 +122,10 @@ void generic_fill_statx_atomic_writes(struct kstat *stat, stat->atomic_write_segments_max = 1; /* Confirm atomic writes are actually supported */ - stat->attributes |= STATX_ATTR_WRITE_ATOMIC_DIO; + if (dio) + stat->attributes |= STATX_ATTR_WRITE_ATOMIC_DIO; + else + stat->attributes |= STATX_ATTR_WRITE_ATOMIC_BUF; } } EXPORT_SYMBOL_GPL(generic_fill_statx_atomic_writes); diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 37076176db67..05b20c88ff77 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -655,7 +655,7 @@ xfs_vn_getattr( xfs_get_atomic_write_attr(ip, &unit_min, &unit_max); generic_fill_statx_atomic_writes(stat, - unit_min, unit_max); + unit_min, unit_max, true); } fallthrough; default: diff --git a/include/linux/fs.h b/include/linux/fs.h index 08a0b9a4da93..1147d031d5bd 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3243,7 +3243,8 @@ void generic_fillattr(struct mnt_idmap *, u32, struct inode *, struct kstat *); void generic_fill_statx_attr(struct inode *inode, struct kstat *stat); void generic_fill_statx_atomic_writes(struct kstat *stat, unsigned int unit_min, - unsigned int unit_max); + unsigned int unit_max, + bool dio); extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsigned int); extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned int); void __inode_add_bytes(struct inode *inode, loff_t bytes); diff --git a/include/uapi/linux/stat.h b/include/uapi/linux/stat.h index 05f9720d4030..9eef921b3942 100644 --- a/include/uapi/linux/stat.h +++ b/include/uapi/linux/stat.h @@ -161,6 +161,7 @@ struct statx { #define STATX_DIOALIGN 0x00002000U /* Want/got direct I/O alignment info */ #define STATX_MNT_ID_UNIQUE 0x00004000U /* Want/got extended stx_mount_id */ #define STATX_WRITE_ATOMIC_DIO 0x00008000U /* Want/got atomic_write_* fields for dio */ +#define STATX_WRITE_ATOMIC_BUF 0x00010000U /* Want/got atomic_write_* fields for non-dio */ #define STATX__RESERVED 0x80000000U /* Reserved for future struct statx expansion */ @@ -197,6 +198,7 @@ struct statx { #define STATX_ATTR_VERITY 0x00100000 /* [I] Verity protected file */ #define STATX_ATTR_DAX 0x00200000 /* File is currently in DAX state */ #define STATX_ATTR_WRITE_ATOMIC_DIO 0x00400000 /* File supports atomic write dio operations */ +#define STATX_ATTR_WRITE_ATOMIC_BUF 0x00800000 /* File supports atomic write non-dio operations */ #endif /* _UAPI_LINUX_STAT_H */ From patchwork Mon Apr 22 14:39:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13638584 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 534ABC4345F for ; Mon, 22 Apr 2024 14:40:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4440B6B0088; Mon, 22 Apr 2024 10:40:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 37ED06B0093; Mon, 22 Apr 2024 10:40:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 10EEC6B0089; Mon, 22 Apr 2024 10:40:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D1F586B0092 for ; Mon, 22 Apr 2024 10:40:44 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6267C120C56 for ; Mon, 22 Apr 2024 14:40:44 +0000 (UTC) X-FDA: 82037429208.14.AA6DF81 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf25.hostedemail.com (Postfix) with ESMTP id D99B4A0017 for ; Mon, 22 Apr 2024 14:40:40 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=BhwPhjuq; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=gwvtoXby; dmarc=pass (policy=quarantine) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf25.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713796841; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=taroF7H7egrJK7Pw/kJDYZMg7eDmZ06EnDskm+PiDNQ=; b=hxOY1+qfYveSiXuEkTRgH7CM9vTM+szSqF5suPDBOtcWNe2LqoJI7lShor1tpJ4FxreTk4 kQ9odxtLka87Qo6r/psMvfYV4jUy+rY6n1RiJXEtoSQJmUCYS8FuQFbjfea2ajK3igpNFb Uos3ndh3pzmISHkT+2cZa+l2ChCECN4= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=BhwPhjuq; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=gwvtoXby; dmarc=pass (policy=quarantine) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf25.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1713796841; a=rsa-sha256; cv=pass; b=DTwsOzRdsVgF9p0dHKMxRMPHy1bUHOtk6CRL/b6CsBSh6sRxA4oI+YN8MW+DXrb1cnxtL4 FsBslixCQeydXgO/s0eBOb/okU0bwpDNC8LCfasPQLUkYZ/eVc8zKpcqzxZqMqamukK7de PVVmZVYdMYW1hBLplVeFwcoeAMHPj0U= Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43MDY0xb005886; Mon, 22 Apr 2024 14:40:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=taroF7H7egrJK7Pw/kJDYZMg7eDmZ06EnDskm+PiDNQ=; b=BhwPhjuqA2w59yTi3pOKNql2zPHiMdb44iHJtEu/VGvDIkO7lFO3adSTjeavzWRKO3AT vl/TS2AqsuK0WerUVG8Wo3w2MRAN3MotD3gNSgZhCdkrp3Mzvg2u8oSFcsDQvAuO3oSN 4HtWOGDft3QlGb498jTn6ohj4l7lGunv0wbQAtv/IJQVz+Bwp4hpEg92JwA//+u2f+r3 DrEprtN8Mf1TS6qFYjmRiPQcMO50W5DcoAv+6a4xlmJliccrO+QAuvbGOYM5o3MJqGSg OTiUYXCZawx617OYoUbLPIJNTKxTC8KM4pypUW+8P2w496nuotEMoMvjd9qmq5z8EYAb pQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3xm44ettkn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:28 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 43ME73O6009698; Mon, 22 Apr 2024 14:40:28 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2168.outbound.protection.outlook.com [104.47.56.168]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3xm45byksu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mwAtI3CEaGPPWnGHKziNieOCqMQbroxTDMRxBx/JUdOvb7noVfEWwUaocKztXUnx/3z7Snrr7RCjXE3MVRDSgjtI5Kpevi6JF2jo0tHhh8ouBiYrcmSXNO/DdoMJUfmof3c+WufKIuo40C06XqEA417QNKp+Lu4YXPXKB4Cx8xUsxP8YruF5n6GxNTL6gjnKPlc1BEWnQw4Qn1XuMGE1pI377XDvtDJUYaeMCvdQwbUV7VmVtlMyBqZfzuAbc6oglQ/TloHj5VJpA+LUli2t4RK73EFABk+kB5ub+8mlr6+0Qk43NaAfYXD/4ZU4/6+Hm4LLwzwOgQWyzhwr6CG2Wg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=taroF7H7egrJK7Pw/kJDYZMg7eDmZ06EnDskm+PiDNQ=; b=jlEevv2OWZMz2z6zBk+x5vRX0Ihw73Wx88kmQ7jeuOVVKSt0CTbYfUGaaDViBVE++IemGS79qss5lI23obwkXrVgzdjgATXdvChJT1yak7+rIh7XbRUbuxAolCsNKzBJN72Jr5Oz2s/q9e94zRManbO8isTD1wRf/3s7ZQYY4FRhTwa6gws3r0wjTIAXUeD0lvbf8XKCXE+iiIkUr9MYWfK3n2xaoOpKxC9fF8tJNRX4zND4zsBVGqeSRha0KdTCF0uhf3FlMuiAOA50TqZKcR1xf2rlYjA3zMyW5ctrMgPh7jdgATIvz6ronfA6tjuU+YsWUjQNoHIMsCV5pWZupg== 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=taroF7H7egrJK7Pw/kJDYZMg7eDmZ06EnDskm+PiDNQ=; b=gwvtoXbycNJ5Rsk+5JGG1KpyyiIZ+X70TYG4R7t5INa7Qp18jI1h/jFjKX1WU/rzPZlZgh22RjEGjU7uklLmz9dtPNnOx55kVRK05EVt2EqItXcjgxIZ/2aFl+5w40KOEWO8vcbpq3abre4O2EhdiSg84+3F802WD2RntGK67D8= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by DS7PR10MB5039.namprd10.prod.outlook.com (2603:10b6:5:3a6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 14:40:25 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324%4]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 14:40:25 +0000 From: John Garry To: axboe@kernel.dk, brauner@kernel.org, djwong@kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, akpm@linux-foundation.org, willy@infradead.org, dchinner@redhat.com, tytso@mit.edu, hch@lst.de, martin.petersen@oracle.com, nilay@linux.ibm.com, ritesh.list@gmail.com, mcgrof@kernel.org Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ojaswin@linux.ibm.com, p.raghav@samsung.com, jbongio@google.com, okiselev@amazon.com, John Garry Subject: [PATCH RFC 5/7] fs: iomap: buffered atomic write support Date: Mon, 22 Apr 2024 14:39:21 +0000 Message-Id: <20240422143923.3927601-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240422143923.3927601-1-john.g.garry@oracle.com> References: <20240422143923.3927601-1-john.g.garry@oracle.com> X-ClientProxiedBy: BYAPR03CA0024.namprd03.prod.outlook.com (2603:10b6:a02:a8::37) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|DS7PR10MB5039:EE_ X-MS-Office365-Filtering-Correlation-Id: eb47ac47-80ae-4058-f4c4-08dc62da2548 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rB1eh7mcGR5wskUc5CTOWu8lvYeN1OtwR5jSSIhzmB4Ljyz6qk9wQldClS783w5ZKU3EjeuUMcyJ9ZvMN/TLiMwb7CEunEOm9etFGQKSrVZ0tDSG/vJJuJLPvoPunKLsxCFtwOkmy0XBbbAIrs7PjI35jJvxFaT/3RBiAeKq/99tJBTeF5PS/n5kIvLim6bAYlr0yImUzLyZYGnX6/3cindh8YCETNnqpSSFYHpbSuNboYxkroXoY044f6nYD3s7VRd5CHjs8OXHVvRDa+rVmuCAITBDGEvG7riZpfTVkG6cdAHiKKnfSjaXaIfuA61+GDD2EtUz/jTrBRDoPQOskiGltlew0a/u+GIS2dR2Bn29741JO3/77cL3frHz6LzsSA8L9+pMS+H5z0OHeeXZZYueMu00W4rfv8oKFHYsrPoygD07LMGtRHCCora/Bi4KC1lWybH+RS63Zk09yVpF8T3Ui1WNOoX7Vh+ui/fSoKhWOZ8RvGYr+ZeCTwugOCRZi5u7p4flqTVdNSchSvCiiylNSIjJu3REIiuYue0OgtYWHlhgQ91PGygkDZqisWCNSXvbROkLd1saI5IteITJC9Od+5Y1Vv6QQJpZGknJ5n1HXB7EXZnTelHRq/1TwZwNkw41xaU8DBLNQ9QIfGMsQPin5kdOmWeuws82Wzcu3OuSraGWLYOeaSOWcw1IDzChr3d7ZUVxANT9ODGBApPju5qaaSWmjtHfmTZEaihjPfruZOlhrk2wnw+pl8c7eMS758RKHycbR2RcsxB0av22CBkEuLaGQZyIPk4k2hWwuQ4rLvy46+Ub+vGhmOy753jSsG2Yd/o6CSRtL/Z4vGcHuzHv0bvc/EGlHvzNq8scg+JUa2nPZI3ZkWfC1hucSIsaUwP0LlYxl2itZcaatyBStpbueoWHPQel1x0VgXVDe7I4Gq/FZQNm4WwGi0Lcq/gVxwBbnKlgHEFPAMo79tPbCJNaooR9y63H1MQGaG78yYP7yP2+vdNMTIAEqWnNZa0TAd9XqCoLu5CYsL5ozM0SEUvDDlxJVz+ESLrQbGC4/MNo/wl3O/N2uUWFwgVdI5r2uLBqA9H15k5K0SkKWdxgRqAugAGI0GEvbsfMMM3pT/K/Xs5ey6si9EbFwrMCoHAnL96Y8K2QHMFah/7xWw5/uys0YKuf3IO4wB4+2+9YckqnOSEZDymblTT1Zu62EvwyzyYmhy5rahTOBdA8WS+TvetpsnsYuGor71j9t9LXfu8nkNWUVIukh8AjF2Gzkm21KkZYQgvYC5RX7djDY5pg4lMw88+CtcSLhAH2tvYEARfYE/cQwGagikJT9C1ysDhP X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(7416005)(1800799015)(366007)(921011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w8gviT6NdX1aPPpzDJ+HJITzUAvCC5Vd7mzgfsmPlnBx2ZpeMhSbqaWsL8SQmKnUGpvgOFiIxhYVH8IopqDLLXnG3lrZ6H2pUAAMLUu5atujv/uYy8n88003DMJkXTX8MHvchtIzc+WqSI3LJWq8HslIOHYKuJB57GlRuayMXKD2VHwbkBACPOyjl6H/p5Qn6pOYsGRvDCYnGr5WZH0Ou+0eUnJtKQ52HYNyea8XAZYBGAiVpkhJR9x8uY+m84+9hNzv2+6k06fKBUETCyZmVmNcORBJicjUbK3hez6V+OXhHZUlI4iaQRgFAGapnDvpwIPXncjuK+ZPWhD1HMtRFUhQEfPkYY39M3rEBn5s0gx/QRRV8inIZXgGE0p0iL4aIOalxIsWiCS2lOVIwyd6Rw566N5UnGTdw3xpRvFndoXx9BMNuqWeKPbvpTpI++W9s3vnlLKpH5Z1+XG9VG8WWEuEPS4PlGyaTmyUqOVlEvzdvYqa+PcXJgqxmkdl8bkViPUxHYbV0ZjuGWTc/TPE3kpbTs9WvdiGOc1GlAPnJFdL3V1BegcjRYZHvzHX0q3xsdEby7TB6hO/uvpAbhJQILBTT8/muFLmeaj/v3IhhfMPJxLzdzL0bXutCF9WiYwHoFX0H8+DnPYil+h9tbjrMyVM3UqKXxC9vEX7kvA6qRwuFbrIY2PU2H+nCGD8xam4XIbrj5LBCs5c2m1qGk8EBVRoPVPow1Idd7azLn3sA7dzQCG3AuPTm3m9M0GGtjkeEyZMybOEVCaBQcBf+gflqG2PAZ2op0DO8TcbmOOLUlIvJM/KBzPqaoVVclesVJBh0c3kRxxylieYPRQoxnZh2H8E9Uyfp/pihpls7WgtgMVReM8Fe8BzTpO6vojo2LnLsDfo1diwHEEL5Wc7ZO84UdOzVmJsbwhyWamdAP6kkMk+oit7+71L64oqfbgjWxRPZnAUKVI/TDRQR79SILRvrqf5h/SneWGB6NwPhJfV3t8LxmqLP0buCtK63fBg1hncqxjrmriDmtEbMxA7onO8Qx8BPfJ942fx+Ln/v2h+SsxtHN/oheSV3kzKtva8ftJdVLUBdGCuz0l7rGFDzWOjkAJKpfovd/xcPWl0hInaDRItkj2NCTQufrS/1tna9mJDe77n+kr5tAZHkF6D1MPLme5p+HSA+sb4edBkdxcfo5fGuLjLJSKYPOR6bcsEWXqPKgZ1/FJwun/WbttvgH+IUDN/EpwJCmJ14CSC/OUjlc7RL7POKcC9gry/BGim7GYpbWzLvIpRouzv4NYufntsj6C+wjRTGBsCwwBsie1+rhFtclImPIA1X6Gb2Zqh2hAd6L1JqilhYe3JL0h2f9CdKa71mcErlzTEIOtF3JjozNkb4ZnOs1OfXKBnU7d6zFtI427L/w4K2WsKmMQ22uzep+DPfTHzUjNPMBoRjLU5Y27558Vx01wo6vn+VvNJYf7Y5w8zWlSeVj+8TnJCJWS43iuYsYdd3/LQeSHsddLZICPy4jYmPzklNQMMtZZjHx3xfPlYY6WOnu289W9zL/oie7T8ifzEmJ6xTw+q0AsziHXG93gBfAGnHu9w6Lk4hreJRb4mOYEL2P4wZNO5MXCQtA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: iMQ1leu0l6zcaMq5gYg8MwdJafGfmO+Tg8rkrUVaokUubVJfp6BvBCGHJAUcSJdggzUrpH69d1HTge/ZT2Y3zvxTm3rydZTtnTEsip83fkpYlGeiep+oecH4RK7PharPcQAf6gRT7rOyEZLg76t1VEADyR0RPTpq0r4JsMubT6kFtpS8sCLnPpDqfg9AKyUwlHbx+j1H8Y3V1xBlHfjJ9rI0Sv1iayPSuDgbMYGuVcG+0gjskz/N+2z1fva85a9Ici9uBjBpkanLb6f6NMPM5ycEzAL0HCOnvjfb8zd8CXk+7CNAqNFK/v2WbDvgOPhbTvkYr7sjK3s1IxGJMb4qAJMnIWq001L7sA+vUcerJDLHQRvJNrrmsZah6/hEMgH6IE6ICdvZW+mnvDGLMh/jkkJiG4B6xGtiEkf9AI5SgpswYxFk06HvN2YJ+Ae+m1oAxLfgC21aOMeLAEK479RKs5v3vOIGiu0Rdiwf4PnvaWFqeAocWaTLlB2zziRLlNoZrxgUNKZKYwlLe4cAf/KCYlFaKaqxlMbo3+1hwTudWUZpyRL1Opb6gCNVXIvSmnUOmKn60stzsX8cLzXtSa9M+wkygRStb2CN0xn1h9vtois= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb47ac47-80ae-4058-f4c4-08dc62da2548 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2024 14:40:24.9493 (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: EyU4QUJSaQShh/uz0X8SuIHChrzKdgWW4JnX4FDZqVPcC9M6VzKos8zWICuVqoH2/i1W16eHhi/cjgc6nppZKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-22_09,2024-04-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404220063 X-Proofpoint-ORIG-GUID: de4RcoK0WpeaFunLdETakunvmUYU-xgk X-Proofpoint-GUID: de4RcoK0WpeaFunLdETakunvmUYU-xgk X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: D99B4A0017 X-Rspam-User: X-Stat-Signature: 9s1rbjj43q3t39gh8f1ukmxpdu8z7i7p X-HE-Tag: 1713796840-583893 X-HE-Meta: U2FsdGVkX1/L5no7gMXnq2QRQSyS6Q9Zv4mN0Eys1g+NPIB5lYg0RTXwM+SmuzR7oJ/J9UJezeJdGUJFHQ0w+QnOqXOLx7X2gnGQAqVdzFrNbB5fXW+XK2IwWh7f1P1RGhpGg/5eqPNR0sYIU/kfClTPsgU+eDVJzce10RKAI/+B/Ngz7rVrir9Tn0cltUEAi2Q6Hrlzkbr8kF0ONKXJS6d14GVZxPxxhwlSL26NCQMz0X3CqvWTBGN94BE3eQtXVcYuhElb4c0RrWiVX8mdu/iW5Wg+ARo52xdtiOGxLs7STFkaQrWq3/QIlnnG6uFHBbeaKYqOwNhhGi0/AniAvw03BtT+3LbuJW8ZeiIGCpmXHVSTnE0yhz32vl5y9a9+DUI34hKDi4a//VVRjccCAmUD7H18pl1YAus+dSG16bF68lB0PZV75tkyxiVYZ6VE+Oq9FWE+TwmP7Ba6LZ33AGB7UaN8KnImjpKSeQPH8d78yVDQmbNNy0bL0HrbHixAVW11QKPbmHinpxH2ce9rvAjiZMQg5KAPww/J2GcbhtB194GRkJEYoYxOsWqi4RTc4FXinBXmE8qjrJKYkoYNvVPJ4TXuWhs0v8wDtXBU99sb63pHowqz/sA0XICwS3HYthSl0geIIkX3Eu+78VYqxLJiY34Ks9JUeLDMKgpaBWXINNQFVvQ/U/h4wOku0hLg4ZhZvh9jk4uJB204N3V5wxuoSdwmJgCZbbkl+6zEj329pjElpH/zMtqCL18czR8djAYV7nSTIYqBvIatHvmDm0zGv3yYZ9sB3N0+QG6VGywqwgQwfqfA4OxBjkZs5yS25bU9CjKxNbCCi1KHux7GTqtq8Nkrfl7WML8W0Ud7pCg/ZJl7Pa0YA0fWY6IwHZXrk7n3DZYlqf1LXmWXJxN0lNbLy5F7SCJjgeO+Kvff2oEl4v/yeOCKYAv9ideTqF/0g5lH1ZzcEyi4vqcVB3U 8VwbVTZo ByZcdRASDrJtjbpy6KJil6DpOimnu0LwEpygBVkQbxuU3eDfobbdsyJHJN9qRy9s1qOu+86YM6q8dFHyOLdoRizveYSA9wKjjn/6WWpoby3vUALOrmyX3IM8DT7E9UBEzgqjwEvAUUBtnwNrZz/Ms73zc0lvf9M2mAOg1yESGPBpnPJtsfpnXA2+87EMCPtfX2dqmWQMD8r3ZAwQ+DDUssW0G1gzJJ7gunbNO9pAJNiaqlsK1O8ITjYbX3kcJZ+i/m3wcHSapYEbbc6rojNJPdhoYnZe1gx3olUuYIvZjlXVS56FyMVwjRjTUbuUXJKHvFJRMkcKPnfz26lRCegz/iS3URH+KKiZXSaYk6QrjeTFfymp0OuzomxrySnJ0lIHEf92U+pQD3IGmXoSdeeq70mBUihO0gw3yyyw90c8u+dL20ynhPIFg3qv8lZcNAKc+dFB+mcgPYOe8xsTlunS6WuEzd8bUFzdXDtfAxMKpF86aecJHsvWYWFP01aUtPTglq+Rv/flHUpO3q+9//MhCAFrQCRsfPqlAcVO93DXDvvDk5BO5CTT4BUNBMf8oeYxJuQDf7q8VnLpuRkI= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add special handling of PG_atomic flag to iomap buffered write path. To flag an iomap iter for an atomic write, set IOMAP_ATOMIC. For a folio associated with a write which has IOMAP_ATOMIC set, set PG_atomic. Otherwise, when IOMAP_ATOMIC is unset, clear PG_atomic. This means that for an "atomic" folio which has not been written back, it loses it "atomicity". So if userspace issues a write with RWF_ATOMIC set and another write with RWF_ATOMIC unset and which fully or partially overwrites that same region as the first write, that folio is not written back atomically. For such a scenario to occur, it would be considered a userspace usage error. To ensure that a buffered atomic write is written back atomically when the write syscall returns, RWF_SYNC or similar needs to be used (in conjunction with RWF_ATOMIC). As a safety check, when getting a folio for an atomic write in iomap_get_folio(), ensure that the length matches the inode mapping folio order-limit. Only a single BIO should ever be submitted for an atomic write. So modify iomap_add_to_ioend() to ensure that we don't try to write back an atomic folio as part of a larger mixed-atomicity BIO. In iomap_alloc_ioend(), handle an atomic write by setting REQ_ATOMIC for the allocated BIO. When a folio is written back, again clear PG_atomic, as it is no longer required. I assume it will not be needlessly written back a second time... Signed-off-by: John Garry --- fs/iomap/buffered-io.c | 53 ++++++++++++++++++++++++++++++++++++------ fs/iomap/trace.h | 3 ++- include/linux/iomap.h | 1 + 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c index 4e8e41c8b3c0..ac2a014c91a9 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -586,13 +586,25 @@ EXPORT_SYMBOL_GPL(iomap_is_partially_uptodate); */ struct folio *iomap_get_folio(struct iomap_iter *iter, loff_t pos, size_t len) { + struct address_space *mapping = iter->inode->i_mapping; fgf_t fgp = FGP_WRITEBEGIN | FGP_NOFS; if (iter->flags & IOMAP_NOWAIT) fgp |= FGP_NOWAIT; fgp |= fgf_set_order(len); - return __filemap_get_folio(iter->inode->i_mapping, pos >> PAGE_SHIFT, + if (iter->flags & IOMAP_ATOMIC) { + unsigned int min_order = mapping_min_folio_order(mapping); + unsigned int max_order = mapping_max_folio_order(mapping); + unsigned int order = FGF_GET_ORDER(fgp); + + if (order != min_order) + return ERR_PTR(-EINVAL); + if (order != max_order) + return ERR_PTR(-EINVAL); + } + + return __filemap_get_folio(mapping, pos >> PAGE_SHIFT, fgp, mapping_gfp_mask(iter->inode->i_mapping)); } EXPORT_SYMBOL_GPL(iomap_get_folio); @@ -769,6 +781,7 @@ static int iomap_write_begin(struct iomap_iter *iter, loff_t pos, { const struct iomap_folio_ops *folio_ops = iter->iomap.folio_ops; const struct iomap *srcmap = iomap_iter_srcmap(iter); + bool is_atomic = iter->flags & IOMAP_ATOMIC; struct folio *folio; int status = 0; @@ -786,6 +799,11 @@ static int iomap_write_begin(struct iomap_iter *iter, loff_t pos, if (IS_ERR(folio)) return PTR_ERR(folio); + if (is_atomic) + folio_set_atomic(folio); + else + folio_clear_atomic(folio); + /* * Now we have a locked folio, before we do anything with it we need to * check that the iomap we have cached is not stale. The inode extent @@ -1010,6 +1028,8 @@ iomap_file_buffered_write(struct kiocb *iocb, struct iov_iter *i, if (iocb->ki_flags & IOCB_NOWAIT) iter.flags |= IOMAP_NOWAIT; + if (iocb->ki_flags & IOCB_ATOMIC) + iter.flags |= IOMAP_ATOMIC; while ((ret = iomap_iter(&iter, ops)) > 0) iter.processed = iomap_write_iter(&iter, i); @@ -1499,8 +1519,10 @@ static void iomap_finish_folio_write(struct inode *inode, struct folio *folio, WARN_ON_ONCE(i_blocks_per_folio(inode, folio) > 1 && !ifs); WARN_ON_ONCE(ifs && atomic_read(&ifs->write_bytes_pending) <= 0); - if (!ifs || atomic_sub_and_test(len, &ifs->write_bytes_pending)) + if (!ifs || atomic_sub_and_test(len, &ifs->write_bytes_pending)) { + folio_clear_atomic(folio); folio_end_writeback(folio); + } } /* @@ -1679,14 +1701,18 @@ static int iomap_submit_ioend(struct iomap_writepage_ctx *wpc, int error) } static struct iomap_ioend *iomap_alloc_ioend(struct iomap_writepage_ctx *wpc, - struct writeback_control *wbc, struct inode *inode, loff_t pos) + struct writeback_control *wbc, struct inode *inode, loff_t pos, + bool atomic) { + blk_opf_t opf = REQ_OP_WRITE | wbc_to_write_flags(wbc); struct iomap_ioend *ioend; struct bio *bio; + if (atomic) + opf |= REQ_ATOMIC; + bio = bio_alloc_bioset(wpc->iomap.bdev, BIO_MAX_VECS, - REQ_OP_WRITE | wbc_to_write_flags(wbc), - GFP_NOFS, &iomap_ioend_bioset); + opf, GFP_NOFS, &iomap_ioend_bioset); bio->bi_iter.bi_sector = iomap_sector(&wpc->iomap, pos); bio->bi_end_io = iomap_writepage_end_bio; wbc_init_bio(wbc, bio); @@ -1744,14 +1770,27 @@ static int iomap_add_to_ioend(struct iomap_writepage_ctx *wpc, { struct iomap_folio_state *ifs = folio->private; size_t poff = offset_in_folio(folio, pos); + bool is_atomic = folio_test_atomic(folio); int error; - if (!wpc->ioend || !iomap_can_add_to_ioend(wpc, pos)) { + if (!wpc->ioend || is_atomic || !iomap_can_add_to_ioend(wpc, pos)) { new_ioend: error = iomap_submit_ioend(wpc, 0); if (error) return error; - wpc->ioend = iomap_alloc_ioend(wpc, wbc, inode, pos); + wpc->ioend = iomap_alloc_ioend(wpc, wbc, inode, pos, is_atomic); + } + + /* We must not append anything later if atomic, so submit now */ + if (is_atomic) { + if (!bio_add_folio(&wpc->ioend->io_bio, folio, len, poff)) + return -EINVAL; + wpc->ioend->io_size = len; + wbc_account_cgroup_owner(wbc, &folio->page, len); + if (ifs) + atomic_add(len, &ifs->write_bytes_pending); + + return iomap_submit_ioend(wpc, 0); } if (!bio_add_folio(&wpc->ioend->io_bio, folio, len, poff)) diff --git a/fs/iomap/trace.h b/fs/iomap/trace.h index 0a991c4ce87d..4118a42cdab0 100644 --- a/fs/iomap/trace.h +++ b/fs/iomap/trace.h @@ -98,7 +98,8 @@ DEFINE_RANGE_EVENT(iomap_dio_rw_queued); { IOMAP_REPORT, "REPORT" }, \ { IOMAP_FAULT, "FAULT" }, \ { IOMAP_DIRECT, "DIRECT" }, \ - { IOMAP_NOWAIT, "NOWAIT" } + { IOMAP_NOWAIT, "NOWAIT" }, \ + { IOMAP_ATOMIC, "ATOMIC" } #define IOMAP_F_FLAGS_STRINGS \ { IOMAP_F_NEW, "NEW" }, \ diff --git a/include/linux/iomap.h b/include/linux/iomap.h index f726f0058fd6..2f50abe06f27 100644 --- a/include/linux/iomap.h +++ b/include/linux/iomap.h @@ -179,6 +179,7 @@ struct iomap_folio_ops { #else #define IOMAP_DAX 0 #endif /* CONFIG_FS_DAX */ +#define IOMAP_ATOMIC (1 << 9) struct iomap_ops { /* From patchwork Mon Apr 22 14:39:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13638583 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE8DBC07E8E for ; Mon, 22 Apr 2024 14:40:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 221DE6B0087; Mon, 22 Apr 2024 10:40:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1D0E76B0092; Mon, 22 Apr 2024 10:40:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D6A396B0087; Mon, 22 Apr 2024 10:40:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id AFABA6B0089 for ; Mon, 22 Apr 2024 10:40:44 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 4FC4BC0C04 for ; Mon, 22 Apr 2024 14:40:44 +0000 (UTC) X-FDA: 82037429208.08.D580E54 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf26.hostedemail.com (Postfix) with ESMTP id 92FE6140017 for ; Mon, 22 Apr 2024 14:40:40 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=dUhIns7w; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=k0XH9+XP; spf=pass (imf26.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=quarantine) header.from=oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1713796840; a=rsa-sha256; cv=pass; b=0408n52GPxGpGmHFlfNF4zHwGU1pVhtW9cG+Uh4+NIhfgDmqnG+frJAb1WPDAS2EGBlees 1tKeoIeupZXO8XPyPhscZgiVBFTgbTiiQpU19dWyUbLrW87KMV30ETogpFSh+p59vwMxyt HQiuMdB+c5K7aE5P1ZarUnsi36veTzs= ARC-Authentication-Results: i=2; imf26.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=dUhIns7w; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=k0XH9+XP; spf=pass (imf26.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=quarantine) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713796840; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xefVs4tJk5WRWK7zeBsAkORSf9tgcB2s8eHLN7n+TXM=; b=AoVDKgASdtuAe0zTDyWzaJMjqgfMxU+PzDtsvb/vzmJh907Dshp3XnWCnrq+mmrwWqZYT/ GdZHEOOAQtMngxm5c/HudpqEA4HVjKkG8BruwzhCuLORubK8jhOrOgcp2bK6iuojOmhbJh Y45XDaisr+9+6XZY3UkHGjwcZUb0pLo= Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43MDXwDO005320; Mon, 22 Apr 2024 14:40:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=xefVs4tJk5WRWK7zeBsAkORSf9tgcB2s8eHLN7n+TXM=; b=dUhIns7wKTHEYDddnTYjBsOoC2O1fJqva18LflAITTgRMS8//JKQQqtlkYkMeUDXmUaj 812fccUEeMQu22MuOvHQBxTJvJ8+bgVQnZdDXwcQXwXYv9u2Rzba7jQuFkxNqu41Wcvj Lu/0+Z/R0mOFpH+fH2mxKtOFM5YrXRpvTtPR7sCAI/eQZeFOfuDQFzyVLEPsVdwyQcyV GF0OSFzaOZwCBAda7+uV2qI57vUiIi5y4Bzun61xIzJEpI6lJdJcWeqPlfZPXPp7S1Vv E0HB8y+oiC4uqqJ7UnOY7lhwtG9KGYmCbov79Iq9sUZl3MY49IFhUgpRVXsT7sZA+qXU Rg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3xm5rdttq6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:29 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 43ME73O7009698; Mon, 22 Apr 2024 14:40:28 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2168.outbound.protection.outlook.com [104.47.56.168]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3xm45byksu-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dSaWZ0GsRznrrRlegO7GUo0GusdLNW6RZ4rxeES6RbDLM1ejzDLhuN3JljWYDGUHjAU5G/0zj+/tbZZgvCoslgi71VrRlt5psCWgXwsAuUWAJyQ6dbHa8P/JBb8gSoV5fBeeW+Zr5M/VCEfbazM9XXav+ElyffVVd02knvzglNEnqOBo3rznhlF/72hPqOFWL33uoh5jXJsuiXXeodFHdpI6xQ6wIBfBnvyumfN2FNfW0lU5FFmKiNHm/NLIW3IJcn9zteXhiIfqBWXZmzwz7p0w8CSf8C/KtVMivkUebwRMrCQCABoiTkN3H+gJQVkr7gIwIUmqkjJqVD+4ajFp0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xefVs4tJk5WRWK7zeBsAkORSf9tgcB2s8eHLN7n+TXM=; b=DruwAtGRZ8iIVO1dM6IwrEpcFZ1zAtKOFCPnpbEPBJYjRDMzc8ZVMGfk+vt7kQZ9WrI9PueWbaor2MJ84JuqsuSJdi8eAdqcSmqI1TZdLh3z1TKRgsyPfxAvi4Yy4Sj83aOpkj4Ek7wLXbPUDq3M3jyurAA/jpLhh/whW5x/lPUDcdSW30gXJCbPjjQD8ILp032dWPfa1kR3PG9mNxiCkMVeCmEgckzXcpnCAk9XSUBiZpM7otfDdPawNzdxoQJ18UFn0R8zWJceBlB8ltX67SkgtODg5L6JWr8NKIU2ppzxB3SOtBtEUBv4mQHzGHSR1d5d6eBJLOW6xyxckIw1eg== 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=xefVs4tJk5WRWK7zeBsAkORSf9tgcB2s8eHLN7n+TXM=; b=k0XH9+XPaft3FeCnUSB9Ye+sM/YXIia/BbG+ey8S1Wvy+sso6wIbMQ36If442g1FPPEnLy/amHZasnGSC17qCazDv+ewfbE1VRUaG55iGdsb2HVU77GI6mEQ/+E68zW5DJr8Ww2jshha4FVoOkgNno09i2ceUJW/6kT3A/iBygk= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by DS7PR10MB5039.namprd10.prod.outlook.com (2603:10b6:5:3a6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 14:40:27 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324%4]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 14:40:27 +0000 From: John Garry To: axboe@kernel.dk, brauner@kernel.org, djwong@kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, akpm@linux-foundation.org, willy@infradead.org, dchinner@redhat.com, tytso@mit.edu, hch@lst.de, martin.petersen@oracle.com, nilay@linux.ibm.com, ritesh.list@gmail.com, mcgrof@kernel.org Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ojaswin@linux.ibm.com, p.raghav@samsung.com, jbongio@google.com, okiselev@amazon.com, John Garry Subject: [PATCH RFC 6/7] fs: xfs: buffered atomic writes statx support Date: Mon, 22 Apr 2024 14:39:22 +0000 Message-Id: <20240422143923.3927601-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240422143923.3927601-1-john.g.garry@oracle.com> References: <20240422143923.3927601-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR03CA0227.namprd03.prod.outlook.com (2603:10b6:a03:39f::22) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|DS7PR10MB5039:EE_ X-MS-Office365-Filtering-Correlation-Id: ac170589-52dd-4bfa-e223-08dc62da26a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LiI4/SO/aCHPjPGACdZ8wKOzSl7/EM4PstNrkx5mNzG2d9B20LxiFtFLf4Q4m7p14equDqxjctvSEbLyZ6x6dgI4RMrdOhr73OXMWe+ZabcUfZGCv+jKAwmE/8zrXa9tYxr/XadQNwnmzREeP6xzajQavCUCzHcsz4KTHoYOHkRwzcxSC8afErMq+Vk79DkIbLDNdXqBsmKdfk1d9yuOo5PInWF2OlcKEfgyQIJwWT82tUoVBMsvENBxQL/wpc/k7azesR5Mk1pesf0zogho4jtEdmUSGfm7li0ZtMzs8fQUP5+bx0KB4DuAH9cK/OGoezQRtwlXvJjua/RpISOUW6kOPdt416SebYiSoe17MbEgokGhY+ZRKHt5av4bZv9YSs72Ij5hbvQ79YWMjAeBhrw85SCTKkCP/AWEnl7U8ZC9v57+ZPYjLppoYsrPvvO3cU/fY0He4iIarQ/qBFJhZNmRDyZ71sYrXBFFB9C5WI0ZAUz+PbYIPkTPs7fjCq+n3JTsPzdE90S/QRy8wvRNjDT9MXyIAOWSHzkwxrcASxEuu6VSYId1GMwF98hHeDPNhqxU7oIOjafAaGr66IXuFiQhF5Plaqnd65jhZUPOD7PUdkPsuYNq+iSv6OGr5//TUw8NWQT17DlvqpTDf3Mo8zgAmczpB9sbFATk6s9V/ftuOBh2/D1R5yUWtE4RVxqd3sIEMBerkXDrwSH9u99Xu1qA2R2+jTGbMSSNT7soGujZJqyif3YHr9HuucbW4eEPTC9dxs8FXimubiRft2fIQdJhtMa8Iox/RprPgpAfE0DOITkN30yVULEAOeT/Vh0JmnY4NxM7zk88k8Afe1osRm//8AdnJn3dFw3y2LlvWuR1Xa31QoHmInSbfbmqUS6slfQyPLgn9YZ5BenzHIAaawVqsXY3Fo+rtUeVecynJXueaqzkkfQui7/fb/c3b1vGKdeTCCChD867F6UhEyeZcgz1R6o1h7n7/iU5uuo38OZxbjyNCd+uU2tzwGGVIJLu/bKneF0PfcfvMt6WFgoewzqzEhOTt2HoiY124WKaFmY25rqfNZDTOCzA0aGYWx2pKNeIN5X8885kCHFr8jkbHhj//6nov2QzEl0cIS6FDIBzsxsWE8jhmxDAqjfrxx5WaO5mHVTNQCxCyQaW7SYJc0Mo39o+gviWuby/TEPnzf5b2rEzCxXruoSM8gw/VRvk7G6m/Kl3hi9LG+s/VbJW0HgOyyukgqbgkp/MeuLGBNOJzOxlKVaLf6KcpHMV4sZgOTH3903/l+fF8Lrld+WE+omRs2/9YhN6L8aATZ+ZaWendJYMECu3FfhkIrpMJMyf X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(7416005)(1800799015)(366007)(921011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wPW9obOt5Ddm+/RFtoq8uBTXUStdVA5vKBH3QlS32XKfGeg2R7/GoKGeD9OveyhndDnPyWHaW5w6mqqoGR2y3Urw8ZrnjeDcvc4RDrsx4qFfwqyFicOY2QwAds99LMR02ENfJfDenEGu6gINU29Uy9SueoB+J5WowwExSNvGjIV0pGBgeSRUFBJAAr79xoPcuoaSudd+C6tyqQZcY0AeGgEP/ZhvC/ZZiUuwCqwLLe4pQuHRrw7vGhAFhqk7+/erWTwx8l6TLC33XhHSRj1Tiz+jZCb89mT6pXxptvVCnJVC8KKNqV4ZPSL8ktFQkOgmOpgmNnjOEEbbMBEZSWxfe0EiUZJiy6vqcoPV2u4qVaw0IVxo/GEY2ur7mlmJrsFqw38XIueo5UNFTjh4pECd0iR6SNy2es0sZwEUHWjycZWLGfi1ugAs+mPKr8i9paWp2Er/UCY/GxElZ+HBLHdS7SOLQPsvZ8DftZFLOF/NuslJHdEYtT498mm4/DUUqI5MJv8rsz9wE+Q7bZw3UYroejohltAJp67On7pmykabGmZPP2vu7R45xufwLJdM3he28pzHQQ9R4luYn6alcWxNxr2Tq0VuwaXlsblHnLPwoACwqn5mUnhxOb9K9wvpi2hYiOxCrXU/8QHbzOW0qd8kW19tffzjpHwBUHBcMeJIl9WbfBrRRnFHdRlP0bd2wfTd3ALafptZnPNZd9jfLFf2JztGOX/V0t68FajUBg5rKknf1N9O1j6Hxtf2L7MstVuu/2Zu5UzbBM0qMBL4s2WveJTJtsZw0p8TP9wxsDYgTUDJArVMa1qHBueYUfCIXvV9tRsJ+yNLXBDJmf6SteDwdxp1jig0FCNnGmpmhL+KyelBX/mTDYQlP/fP0cVBYDh0RAYEgkK+/Y6jQIL6NfQTL3rN5DNzNpkGtYfoWKNPjUSAxvd+CJ2T7MRu6gMkJuVJoSBYeG9WUVzpkCdJBtZ5A4x8c0ldjFeBQSNGr8eYISsf6kkGwb0u97qBLnrD8epxh+Rz/w6fucGdFPD7EWjQGsOeRerctMvjj7nAP8n/pSJM/Y4igoH6EdmXveDPFXXsZHYbz7xva77zmVEjpbzEkARuNC4x4t6Zwc4tENILvWZ/mcGNsw8ue1f56fLO82pyD+O4lDEXiT7yKVRLfOnwHevM+rPAxzOFHbgX2Hb6UwhE2H2VY4VuX1reyFgvZaNOxHyZBkZx4sfL4LJ4A/IbRx74+gVExf6NFABh0q+5GikJfzCY2JI/VTMdCkc0JM2VZbM6ju9HJIk0a9g5Qc7+IGPF7Spgqbt/wpedlTLCpFxGSpEnoDYz0gtarwB8c24doOuw48rqtGvGmA4UP/HaIAFIg9JawyEZIofBE0QyPQa7dnmp2e5+qQssEUZ1aiLbE4PdigipzogEVQVzwmXTz2fFH9NQGH3eqC1aVJ0WlWvrsmQlFTwQbZ8CIMdP6/pe9RjAbCq2aBxaJ6N4kHwY8cjyzXXNEFu5UR/9KoV8ZVy6KRQt38Ns7NRL/8cBKZ4A4BJn07wkfWABBTUSZmespzD1CxheZWvUZc2yV2u8Ty8YukHXk6yFCucaEvath8Ikpie8PC7s594ZsB4es6Aubg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: xoCdW8nECbOonv/YBN4EqjD5cTZ3lA+68/IKNn8V6rJIoCPmj/rZQ7yJUSUkKDj8/n4UNAT+akjWPBkXlbwPiCqW17hRFbnpdghgm5lzppquRW0G3rsVU/IshDAb/N9/uKvxy+vCESHp2iQhSWYwE+2B2rdU+M0XlxISKGHP/WYM8hJZXqz2XINVrCPbzq16bbjAF6ZCpsiusPn8iF3FcUA+8VZXJMU/5fNB8+7hc2VMxdz1+smnevtE/ET/+LOj36JqvZx4mz7fYOU2p7Hr3DNpss1AKrAYFLK+6apE7f3Nx2B+16Vf5B1fAuqQlunCv4UBqiQsY+LJziHXcRyVw4PMr7qXmd2E1/UZba7SJqXKv0a4a88E7iAyTaZKxBwf4EnztvH2UZCgavUbfXmx2pUPwBTJw8LVvkJLeFxb81gLPyUIbz6Q730gNRqyhwmAm3oc/YJnuGp3Zx1jdZ2Q+3WJF8MZ7G4X7xwq+XloBt46lOABHQLMXBVCnXOUuUR9QUj+rPpFgdctyX6cubLQA8wzmsvrrezodEAkQt1KFqzlRpC1SQ2uB1cJEh9B6v3znpGX8oc9ZJO1bwrAlVwkx/Jc94+fv1ltZs3Q6S4XBBc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac170589-52dd-4bfa-e223-08dc62da26a4 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2024 14:40:27.1687 (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: jzmzxJlR+twt7I2VV11Sskfcz1PJ0Qem3OHz8lXSUNo/pCPnbcIrWauvgdfv2+ee+NRYwlKAyJL6xHDIIGeF1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-22_09,2024-04-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 mlxscore=0 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404220063 X-Proofpoint-ORIG-GUID: qPHEibSr3geO_zjDXyDw2XwNDBdWlA2G X-Proofpoint-GUID: qPHEibSr3geO_zjDXyDw2XwNDBdWlA2G X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 92FE6140017 X-Stat-Signature: sd8y9unq7t6womyarejfnb1s874rsyfr X-Rspam-User: X-HE-Tag: 1713796840-114387 X-HE-Meta: U2FsdGVkX19EljvMKJY50tiT2zqK8clHEjZjJw8j6uzvpWJ3fSv2pvpJ5rZqLJ/O9J6A+ngrVex1PYjZp4qa8z/53kaHffr1G+FiiAkTvqN5RNub8jHuxBwzt4kNT/TMVlgrFRqkaAahbhBJVh9Tj5YNNfYxqXbPSnXvxj6tLFC4AYliN5I6vFoMpQtPf/YQQvszQhzIJ8BBvAZDlJ1JSdDSnS110M9wRzxocuSGQKSIcm7N9TpMTIiF5Ia3YrXFV3eyFUQrWIED1o+tY66y47OofwRD7bgk1rIVBZ/Mvwk1Mq1aE+3r1siKXnS4M32CRItN0dvAc5jW2vu9Seo1pSUt2U/MPI+sDNQO0ugo2bWQV5nzzI8/pg1CVI1uf4Dy9KD8CNzTp+0kmblKXHX2Bay1A4UR8yzVdAtxKlZZuYTUge9Qsu4+KqzeE+J1vAaNmoLBrVH47poImBoZ+Ir7/0sKKW26m2XlxeQ6OGV00MQn1x3uhYcIJOD6qXQnqw7pUrMjmx/yVijSW0esne78y6doS1MA0LolM15pR/4nSNrPFvLo2IH9DHa/fkcyBfDKngs3WGspgorc0n92YUg82pTzJ/B1ZT9W98Vb5lfAFuFtOwvbC8UyY05u3QJw/ov+/3UPjxgtCA4ipjwh3bqyr9rOrzys1+bX83KZdnpelcRprTqHupe5PaAsh35MK2m2gq/T/3b2nmILsLGXGW0lrc6aglghaIt71iBeqIPLXt0zRPW+NZOimi7jupWvVxxt6fgBcbwvf9RLp/auBjdY65nKI2K0vN8iu4TKjJX/2nyXBSVmydEyOGZxDSHPnWjoEYZtmViNKbtSWpqeCqZ1O1qCQsqy5oY19sLubSiEjTztEpVrnM5YEk/X39dAhKIeJ8dS4TodDZ/vsqBs6umgMoLT4fEZsgZvp2bFpzx/fR9eHC5h9GsdfZtwkj/4RCIv25gzYovsQNhqxx6Q2Ak K2XYFz4H Xks4BVDESk7LSOPd4cG0jsEjrIY0Pc5uVkNx2g9pxCXc2t+kaX/ewNpu+uyEF4tpF5RGJJDqR95AepR6FIdHORkfOeg85lxBZ5Oiui1C6ikErtRafgAzKaDEb3RVCoQjFmLyRTKjjxgLQjM467oaQJvw74Jnw74MOhjky7/xQ/t++N5ZCrZJ/eQJC2Cl7u7J/xqx/YYKfv3Hj/uCBM0+3OtE5Gb/uzO9o3xETSOWmr6lBpKounOrH10qI4iOOgmEe8XO9XCRV5xvyy6mkU5IL2932eWKp24sEfp/B36sCDrygPKi+TIfolUsnWGPMydGXP/vemEf0YgWxhNG/b+zGvi330FSkDWbaZMHmGuhjbIDCPwlH5J71ytf7T8dZU6LAVbbmafqEOdbhpjgj6INDX6FiNnKWcGNp2EUhV9s+rR0b60ZWyaNBIUHPOCU3Cd+5AMo5olSZ4rZhs0or2pdjxAl1z/HARABa31TaDzeLbEIsWodFeS+s8tsJzRD7ZVOjY/Rp6p29dfsz4FTiQVZ9pnCnIoAaXzfbTH1i9+bf3Zup22soKDTX+e5Y+IfnYcKI4xWAF0Fp9arzapE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: For filling in the statx fields, we use the extent alignment as the buffered atomic writes size. Only a single size is permitted. Signed-off-by: John Garry --- fs/xfs/xfs_iops.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 05b20c88ff77..d2226df567ca 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -650,12 +650,19 @@ xfs_vn_getattr( stat->dio_mem_align = bdev_dma_alignment(bdev) + 1; stat->dio_offset_align = bdev_logical_block_size(bdev); } - if (request_mask & STATX_WRITE_ATOMIC_DIO) { + if (request_mask & STATX_WRITE_ATOMIC_DIO && + !(request_mask & STATX_WRITE_ATOMIC_BUF)) { unsigned int unit_min, unit_max; xfs_get_atomic_write_attr(ip, &unit_min, &unit_max); generic_fill_statx_atomic_writes(stat, unit_min, unit_max, true); + } else if (request_mask & STATX_WRITE_ATOMIC_BUF) { + unsigned int unit_min, unit_max; + + xfs_get_atomic_write_attr(ip, &unit_min, &unit_max); + generic_fill_statx_atomic_writes(stat, + unit_max, unit_max, false); } fallthrough; default: From patchwork Mon Apr 22 14:39:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13638586 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 02572C4345F for ; Mon, 22 Apr 2024 14:40:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D6BE46B0089; Mon, 22 Apr 2024 10:40:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CD4DA6B0098; Mon, 22 Apr 2024 10:40:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94C446B0092; Mon, 22 Apr 2024 10:40:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6C3A16B0089 for ; Mon, 22 Apr 2024 10:40:46 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 200CBC0ADA for ; Mon, 22 Apr 2024 14:40:46 +0000 (UTC) X-FDA: 82037429292.04.FEEFB58 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by imf19.hostedemail.com (Postfix) with ESMTP id B72971A000C for ; Mon, 22 Apr 2024 14:40:42 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=MFIdc6q2; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=WT1DGBga; dmarc=pass (policy=quarantine) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf19.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713796842; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=49ljf2saGMeHE+yHQnzEON1DLcaRD15VYQp+BpxZ63M=; b=aILDIDh5LPhR6E7De6MN3nWDb/aBqljhSjIXTeSLBoYSZLBsvVmQZdpoAGnqOFmOU4UutP /+qzEIqI1c7aZxi+kv4KfNYCEtche0lutR4e0+G+doUL132KTL+53tGwFKG4GQqUvsGIlN nBgJjSsbiLhMWwUW4O3yHlxWEYcEPa8= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=MFIdc6q2; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=WT1DGBga; dmarc=pass (policy=quarantine) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf19.hostedemail.com: domain of john.g.garry@oracle.com designates 205.220.177.32 as permitted sender) smtp.mailfrom=john.g.garry@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1713796842; a=rsa-sha256; cv=pass; b=G2rvcGH8YoxKuc0gd2v9e7izLk3znHYWMUv0yMphcOIbte5roJJQ0N8PTg+tuisY1nLK8v +u3IdgG+3Ftq6VWiR+YUvNWOFNIeskCFR4JroRNMgmXnvlkDgUp95/Pkr/BdacEeJzneiD V1542Yh0A4A6TbHtNzYHLHS+tm8xaW0= Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43MDXxpD005865; Mon, 22 Apr 2024 14:40:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-11-20; bh=49ljf2saGMeHE+yHQnzEON1DLcaRD15VYQp+BpxZ63M=; b=MFIdc6q2PHY5/sYhZdluCdul0D1yjzpoFil0+T8CSUaWDUtG8kbcaGivOpREPK6LTW8E iZNjAVAl4UjHmR4n/A4+7DMiF4DiG3+xqGvTvrwSeIY+FsyA5rk+6SXp6HxbG5z58T6+ 4FKaq3vo3MY2spx0A9MQqzCfvkxSUQIqwZdziavAY7Y7F24NpwGqRcWTr8yP0W60VNZe pSc8PaiHtOglyxNDpiyHvEXC10Ooj4rV0V2QrH4jfFbZ+1hxR6Mebah7fOydyl0gxYZ7 4tpJrg+mwcFHKf+A5EJVGl0EB3p4Xkai6N6g1pQRJ/SsALtuc/suayFWmH4KtYMIb1zd PA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3xm44ettkt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:32 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 43MDtRdq020139; Mon, 22 Apr 2024 14:40:31 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3xm45c7wtp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Apr 2024 14:40:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GJNymi9JuaHTNTbg+QCS4+J3gmHc+YFsQ56IC+BKtgT74EToW5o7QZA1OCoibBbhEqKFtq6n3coQmqk/2ZiayohemSsOGsrWBfNmVFYQbcbjEXa8faE4IYx0C/BOa392OYl0X0vqmv4RBbpoqNoJuM1mdT6Xl+WXWfzENoVSt6YbBLkji+nMfS/N2lYhgjPYSyL/Dh+3d4k/0WGL7lKOxUoz/rg2EnoRycD9bW4GQGxfjUGbL+GrXKMN7QfbuRjJtke0OzHmmZaArrxFikmIcWuQZkRVwamKpC2Be/4RgCaYJerrrUEkfblELeJskNgm38NAM7lp+k3+nFcrlYaVDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=49ljf2saGMeHE+yHQnzEON1DLcaRD15VYQp+BpxZ63M=; b=Dg9jZSuUuLHOSbVBHP+TlwlNuZnJK6IR3NGvjHv9dSP8xc4PSKJHoIQ5dAEggyZcxeWB4lEjZPi08BttnOCaM2hbKQM5hdl8iEXu8Lid40HqKRuG8dvEXGAT1kPt9+DMRwOEnljsaS6D8W5At9VaubIoCdMwNcGhhI+fwBdXEHy3RVWcnJ/AMbCqZIW+gG5H7X+nyWuztjXpT9QPXi4Zvgor0s2GKmumha6AxP7ZFBVSG0g3BzAMvJ0QVhpgQR6FI06id1/M/49YlmyyMEFsKTNKUJkWCoTS8NUmvtOJleiEf2fjeeksxh0YywRjess8r11/X8Pzw+WJPwG48BLT/w== 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=49ljf2saGMeHE+yHQnzEON1DLcaRD15VYQp+BpxZ63M=; b=WT1DGBga20bmArTahxr18MAQyUzb/PMHIXc3mmznjWdZM95rp5kEKW0Z7uaaTXkDVjlJwRh3nDbNYs2tlOKtntkXE6V6nfTHabN3CY62OQXsgJ4nrmACXeWa3RLb/vQzPBb6ougqvrUwGEuQKsiFo9Pz/7odeHru7UEMHTGzGvY= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by DS7PR10MB5039.namprd10.prod.outlook.com (2603:10b6:5:3a6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Mon, 22 Apr 2024 14:40:28 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ae68:7d51:133f:324%4]) with mapi id 15.20.7472.044; Mon, 22 Apr 2024 14:40:28 +0000 From: John Garry To: axboe@kernel.dk, brauner@kernel.org, djwong@kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, akpm@linux-foundation.org, willy@infradead.org, dchinner@redhat.com, tytso@mit.edu, hch@lst.de, martin.petersen@oracle.com, nilay@linux.ibm.com, ritesh.list@gmail.com, mcgrof@kernel.org Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ojaswin@linux.ibm.com, p.raghav@samsung.com, jbongio@google.com, okiselev@amazon.com, John Garry Subject: [PATCH RFC 7/7] fs: xfs: Enable buffered atomic writes Date: Mon, 22 Apr 2024 14:39:23 +0000 Message-Id: <20240422143923.3927601-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240422143923.3927601-1-john.g.garry@oracle.com> References: <20240422143923.3927601-1-john.g.garry@oracle.com> X-ClientProxiedBy: BLAPR03CA0150.namprd03.prod.outlook.com (2603:10b6:208:32e::35) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|DS7PR10MB5039:EE_ X-MS-Office365-Filtering-Correlation-Id: 43d443e1-91eb-4c8e-c1f6-08dc62da2782 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zRM6Uv6Z0Bbq74ih3W/3ysGIBIN4YmVk4mPARry70/xVM9mZBKM6ryyylKH1XSicF/ifHvH9HGRcO8CNaIw7u36Uu5ASfEND+GcuXZI13a2maJxg0sy13iQgmRdB6aMpI1QegtebP5Ow0xk1mDCgD/sOrOj3/w67ZKMdKI1K65fX0QI1GCL19EwWNGqzIyEA1AeN688cUJD71ACijQl3lkrCoKvpqL23KUlAhy8Lcqw/a+W2Y1Wyn1i2NI44c9/dSyCxCheG0JlwrIKnT5ivSE7TnmehVsinNx30FYCVUbgYvLPay5tXG/R5RqrXXSeUfbb7pikgShGdCbM6Fq9ZP0uaD5zauSk1+XriX3S4tf5/obILh6fWwujJMb3CR26oY8IuvwSI3h3xsCk664PfEWK1rpJz6WK2lUFOnl75EMatCvQJKbTDf3uv1nNdrdcRcFCk/G8xUIw2jo4Z2ZAhIM0twzGHx/sqeG7QBNW8qf9geDQFO8v4pBCz3B8qM2626DKSdNwfFXjYsPIhXGxfSRxz0h9DSz/09tizmxVU0vhxYnhMO2GRUckVAl4PbC6lAQZ+7hBTaZ9TNxXqe1m6dks4UfCeBS6YcND85Syhg3+mFgfUiAlWCPCoWkdMXMzGKmqsgdq7630Z0W+VvXWsJFNli69R+tnZn0GTB73OQqk53QQWwBCkT1UZyV/YJMHv0RMviRUCouN+aHFQeEKaQrOJrrEhS0U81BQG9Q+V8h7QwDrIKqbAL9tft1J/aHMjNrrqD70iukjP809Xj8E7uS4diYGJbOuwISQsON7l3mur6DWdVyJYwhIZFMHvbx9T3k+7rUZJ91E7sup6CYhJY9nsL5tyQIq14iZnhNvnviVPDopJTfFST7IyaQSG/dL+vgsfEfwksi40JNVwnq+TUu+pxMRjYQ1gTwoi2onjbT02IOwDBhmMIyW/ukkERQCJvGH+pwXCUSfjbpbU8IHlScEW0NPXzlWFCik92SMqrdRU3USsb/GrnEDibLl+bs6kHpV5S7TWc1g3FuVS7jomLCeCAzrqkLxAi+mt5NGHZo1SUv2oz97kVc8J/DyShQB2yy/cTC6YZqyr2dwhTyiDEeebsZABnshSghyY+H6ffjCzVLM+qWEstlyIkaWthRERbrsVqryI/0m5Z+vAoaMofMx24Sud0Wj9WhCYDZZju5zlblkVBubkepMUtD5hgn1Z2j/KJIdVrcpbaLivaPW67v/bkfI9nxCL9TUgKCOHHKqLo0CRsyYDd3GgyBH5K5w2z2n8xKjde1FUpVhm3IOyXDEAq5LcCebmiI9DpqyIhpz3zCV/ozxTyERWEmItZOV9 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(7416005)(1800799015)(366007)(921011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: j8HHgEdiSA2uEdNWPYI7AzOiNe/HFJRgm4+2FmnKEFr1gHes7jCNAAh1ZgJQKXpCypjON8AkZBamQn4MXqeD5BU+JU5Zxv2V0jlJheVlwTvNHMF9u8z3GPj8jbTCctwfLZdz1pQUtBi8F3vB/Y2HN+oL3a5AVMJG88OUV+GtO0BkyWGABzdn21r6pT4QiCRwoRLOqw1K7nUS+TBQLepSTG4YyqYCT8MMQH8g5bffaqqDGFaZDb4J0/vNTv+cUIO6Z58kuuUH7jKO41yTRLE1RYIg99+kEgivQkBmwiJm+WZlM0Fs8NMymzOZECuh8xxgsof6cWSas6bROCQQndxku1xA3YGxAUjXu5BWiRUUf8qaODJ3Q/7gv9ftqjJs36teVucWjcygaVI1tcEnXJAHq01pzbPiyL9/rGPb6G0HjCXT/wNCA4pSYqhSpZepTju5iUuuqgKipiuYEz8uw/9O+DxvTzW1NWjw2gE6KcttFVLxhVcGL2Mqc1DjG1awAEtF+IpZpomeSzIyuol7+yEAUcbZ5DwygAP7PgvyDzpALGQRZgPJ1Cs0sC79ctVm7gaPiggi6GAV8A4hfSPEYqzISk4pFiOTXVxM/Ijswaso6e4Lr0pKinLB51vRCsOEoNVkIHuxm4yKv60XVx0FddzS7xpOfNvUwRKEXEPz8qnDt9643UdLjUh7//r1fwTCSstjeFLB+adUMkk+13vWWot98OGLVWqgULcmIJIUFjwo7mTRbVFOwMyaEgzvMBICrZ9krTTQY86K3bZ8Pe7d+uP5+FyVk1g85wNJHJ120nWYkgDrHpznbPJdcjzhgA9BXNLsHB0lVvtSjB7cmJ9ql4tmDsDtaNYO+ZHkbQPNe95QAtxrWtYBasNOOTQMeLNDuaUkbjsNbWIKCLzAh5UaxipuphjYtgqk3CoUWSoyc/yk+LdsLFDHpSHhAthDMKB5JcAl4cXt1Y40T7Jx8RY3PNxKnmENNIljeyUBdp3cKDkjVMTry7Vi7pK2gpaLWrrlWeTYmz6ddP21YjsdTJvfk7/okccjnVlwG06qGSoSsVaadYCOvBiT982yga2ZdxFVSXpy7FFulKp/xIAtHqtniHvdaCVKwMIwtueRskYuntt/D5ba3k77N2ybmrNDbSPBV3SSj2X6fYbYLCBtZwBaB8IZU293B9tJY3NMBzWVo4ao/3/wJ2zUWVkMl0p068TJ+S0un/16Z9wpBkMmvp3aNK8XGw8eH3aLP22MqRSCmx5M9N8hH0CW9tbSZGyWtmRr698LLZxgFcGCEaXAoBQok3IWgl0Iogs16lHlYVOauB8zMAN7oh6q61X7aePIJ+Wsup4bMtKw70fcD5JWeqPbTSOfvSbFFVEHz9hCevBjAJtkAIr7/HHiVHN8Wso60plbPG49MsPNPDSuePIZBbVEb1ryPIbc9lvpW7dREr9isl+4BsZWJu47jJXqRIbUIYOHIKwOAJTC+NJ/KFbJvyjUvWs7ENC4lMqki7UWQgt72pekon5JK73F0rcxoF45lKd+z2GfCQTn0gMhVEWw9J4jPLWOCvywha372VcJ8xrRvwBpljj9rXy9yii8YLm4UJGFTTnCQvTORcSpvDEmRWoJakg2xg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Vq9UCMnHatsSovFh/02kR1sW3LEwM0TVCcjeS1ya+LO54JVVOCipjDDtwk7SKFlpwqatZa0UY4391uZW98OwIaCl0prCxubO1FwaF3zlRdrHal10xmrgbWOcXZ01lghBe2sj1pOI8gjXxoHhVLnjDFKsZR4n4nQY1tsJwvFXN5sGpa497uyPzWe5NpY1HSRLE+0CCwKn2/5raUJEug2sQWU2Q0Dzoimpc5egrS72yjMmKB4gzRGirtSyyKJFCYjeRRlpwRkPlTXdX2ni/qU/J0fw98/HpkDdsCRT5JdSM3IfsvlYVRTF7rRs484TVH/oxPgFQJZZswWkZeYTQI4EXCqFXnlHwU2Vgn5e2YkDZ3KMpbOQzjICDzneBHyPcIbDZkcOT/4F2nP7cWPJsjICmZ29Z3ko/mfyKEAVwww7gKMaSazzM2cJ9okpGmTDKhBCu4nWriD5GVinjS+VLZM8PaZaLeXSeUOIgHx1QacrONnxnYJ1w5nERanZq5OtDuAK1EAc111WCPVSQ+gOCgvQwtwB/ceONV8zoKpU/p+aONZBFih/WJ5dHL2ZOIeoO/sKjVzgZo03Zi3xo9TFAIXlj6jqmr5DHINP5MgGx/PbubA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43d443e1-91eb-4c8e-c1f6-08dc62da2782 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2024 14:40:28.6172 (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: a3jiSkxdK314/w4cZby3Ijx7FD0P/gFuT+xmfpc9aut0a3V9sx75UN2cOvvqJrNFTZ8UzJzhZNEyCA/smRpLVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5039 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-22_09,2024-04-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 mlxscore=0 suspectscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404220063 X-Proofpoint-ORIG-GUID: Z_U_9O15snWMq5vMoQPfL_7A70juNBRI X-Proofpoint-GUID: Z_U_9O15snWMq5vMoQPfL_7A70juNBRI X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: B72971A000C X-Stat-Signature: fj9i6ip388w9ndegteimccyo5s4uknpc X-HE-Tag: 1713796842-229115 X-HE-Meta: U2FsdGVkX1+Js1HyF/ZhdmhWaiyxsGNkD5c7l0kdHxKpdtgRJf8hbyZDGiUTiTjpzKctVC3M+ogty7nnoxqWqHqPUOA4mo3qOO+UulZ2UjJ0lrzfEz/mFG0DFUdBsj8vQh8KHP7N5AF8bJYMhVpuuU/Bf+OsDVKp3zxocXl6/IW6y5wvGAcjdkvULWrfAix9Ty2NGaBL319hLjWsqfC7HUO1E20Ew7CA4xA5zfYD38AFmKziJJa8Ewle4hLK1CrbWXWiyP3rKPhxpujTsaVDXIP7DqY9vwYUeNPSAIOQk+JPIrslCjw/ElYO4sqk5eIAz1LLpToym511QNtkojZMdM3lU8EIE3/Ofh6Vq+7l0xrGYi88pWxYF28eoAnS5ANmafMrlgeoxqBtDm/rulokqX8cF5A1xL1h9kHkcHnA2iVMPwR87gtJcL2L292d1hsDi3gtjZs7n/WdAOkmTPB7uYPbCQTFcpdlI169xgGwY8v6PiFA/+16iqfDE4lHFDyTLzT06IGyHCQIa/gT/JE7FbIz1Br+fxThsbD2Uf3vTaBTNNnrz90Nvie4iseBRUlHUFlCxOXm3sJE0rsv6frhFiMYtIPbU0XteyLYc48nmUzjGH4FU7O5yslMEpFVvq028x7egF/Q5j15tkjxsYBVOG7wSesJc4/HFCHFGUb3FcmojF6PfKDXV1OFBuIXf9CEq90HsyA+JdSFbNFvvPbsXaG7Hxc5G9or0mP5cOJY2U3nvUuET6FJ+o5tsnyihRrMeTfsKphqdRi00L2wApUzaRA3jC1f9kfEV9ZxSNVsRX18TNzyO2HvM768zK9fiQs/Z3T/VYgmVzFWL+4dOeRP9W7nD5xVAGfyI1/Zp1MdYnwSvCYRKaZGtnivXA2aN0RxVahyydJgOHlaheoAcPcBfHRPhEs09yoVhvcBwpDXoOaoJnyYB1IIt7yjdOoQk4NDBnVmuBhNbBD2qTkIWKC VxwXiXvx YxUi1i6IfPuztOR4WbY2RmJUA14Obva+dyVb3kx2LWRuPadAefYAgMdjaTzHN3Yl8phsJDkvH8FZeTcFVTGe7auF/0BRS3lOh6O5mon0nLJPkXEmX7RM2COMGhKCdgzLDecfxqRWv+30WeZw2mcs8KWjvjDjSEBokuwIBltu6WTMK9otEMCzfOLxL0W6HmGNwc/LORzeyyKWz967xyaECttTtIkCu01k9q0f5FJbE3M+5Ma2+NbsldY9YklIopyM0PwAjwbKI5jvrmtLpoYeLNm5JCyZeH6lqjhIBbdVkp6eomAqTrBxy+7ZRK53zpr2XTdqhwAS4ayzaR1/LIwbLVwpaVZlnq3urhLecdPQMp9a4ewagBu3gL4eNcGycB5gV8xZG9toU/leywjMbd5Nk3ZhRueRjfpJnJSeEWXDnSQY8SblVdPKVeE3yzZ+P4CqdgwEABpJd/ce7pPK2OpmADAsQFPLMA5YryelMgTIyy+sJnfvDPP1pp8HSKQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Enable support for buffered atomic writes, in addition to already supported direct IO atomic writes. The folio mapping order min and max is set to this same size for an inode with FS_XFLAG_ATOMICWRITES set. That size is the extent alignment size. Atomic writes support depends on forcealign. For forcealign, extent sizes need to be a power-of-2 and naturally aligned, and this matches folios nicely. Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_inode_buf.c | 8 ++++++++ fs/xfs/xfs_file.c | 12 ++++++++++-- fs/xfs/xfs_ioctl.c | 3 +++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c index abaef1137b97..38e058756b1e 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.c +++ b/fs/xfs/libxfs/xfs_inode_buf.c @@ -181,6 +181,7 @@ xfs_inode_from_disk( struct inode *inode = VFS_I(ip); int error; xfs_failaddr_t fa; + struct xfs_mount *mp = ip->i_mount; ASSERT(ip->i_cowfp == NULL); @@ -261,6 +262,13 @@ xfs_inode_from_disk( } if (xfs_is_reflink_inode(ip)) xfs_ifork_init_cow(ip); + + if (xfs_inode_atomicwrites(ip)) { + unsigned int folio_order = ffs(XFS_B_TO_FSB(mp, ip->i_extsize)) - 1; + + mapping_set_folio_orders(VFS_I(ip)->i_mapping, folio_order, folio_order); + } + return 0; out_destroy_data_fork: diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 2fbefd60d753..d35869b5e4ce 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -782,6 +782,16 @@ xfs_file_buffered_write( ssize_t ret; bool cleared_space = false; unsigned int iolock; + struct xfs_mount *mp = ip->i_mount; + + if (iocb->ki_flags & IOCB_ATOMIC) { + unsigned int extsz_bytes = XFS_FSB_TO_B(mp, ip->i_extsize); + + if (!generic_atomic_write_valid_size(iocb->ki_pos, from, + extsz_bytes, extsz_bytes)) { + return -EINVAL; + } + } write_retry: iolock = XFS_IOLOCK_EXCL; @@ -1241,8 +1251,6 @@ static bool xfs_file_open_can_atomicwrite( struct xfs_inode *ip = XFS_I(inode); struct xfs_buftarg *target = xfs_inode_buftarg(ip); - if (!(file->f_flags & O_DIRECT)) - return false; if (!xfs_inode_atomicwrites(ip)) return false; diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index d115f2601921..d6b146c999f6 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -1169,10 +1169,13 @@ xfs_ioctl_setattr_xflags( } if (atomic_writes) { + unsigned int folio_order = ffs(XFS_B_TO_FSB(mp, fa->fsx_extsize)) - 1; + if (!xfs_has_atomicwrites(mp)) return -EINVAL; if (!(fa->fsx_xflags & FS_XFLAG_FORCEALIGN)) return -EINVAL; + mapping_set_folio_orders(VFS_I(ip)->i_mapping, folio_order, folio_order); } ip->i_diflags = xfs_flags2diflags(ip, fa->fsx_xflags);