From patchwork Fri Sep 29 10:27:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146500 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp3953652vqu; Fri, 29 Sep 2023 04:31:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEfn7M3SIyhj5klcQWF03ZX+j35wzQPUgg4smFE/STji++Le+uVaG2uWSHIwwElBGHyCbCc X-Received: by 2002:a05:6a20:4405:b0:15e:5952:4fc1 with SMTP id ce5-20020a056a20440500b0015e59524fc1mr4659008pzb.29.1695987072779; Fri, 29 Sep 2023 04:31:12 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695987072; cv=pass; d=google.com; s=arc-20160816; b=A2LLALq3k6qZoj9Wv4RiJfr49t5TlQIsS1TyJ8R9PhZkM35cIqwC4vM3a3OHURR3xR cn0UGX8thGhptvLa0rlY5swCOYy4N64YWO1Mqy/wItDZ16/gawB0pGXM9o9AKvQx1Hoh p4DVIL0ydPYZCw5hjA5ys3TQypBFbCg1YfTwe5dySgX952MwUo+stTbNnYGe1NgkmNQ/ aS5QPVTV0w1jRXiWcBPn2pMZIpQU8cDylGph1SDGYJb6z8+cBdIzJFVI5OnHLNMahYqY 1FRK6eDENWTWesws0kdpgLeMDsj37wpxCfEdcF5/aDrdegoVLBlkAXew9tdYHw86FuDY LhJg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=5Yri2Hpansj6Fbkf29Fj7VdpbnPQlQs84jW6qRSp9Ro=; fh=MjJbzGx1dCrA0aAE5qK/fTc7gesf1DO9f62YgRmgdTg=; b=FHqltJizwCLyZp7qQFilpm6cqz4lXmNngFOmMijNcVgKqRi/j96pdOnUfu1aa61UX+ Ie4EK6C/YwSG1y0B3W1S1oJaUyquxtn9KnW0VlKp4wqw5oovFsUO5K/ekyNI21FbdxOb Q4amV5yDPuEv5L1IeRlxSnq2TUDThLrIQy8/kdEHPSoRt+RWxEbmSuG6piT1YI2X6vgs m1qw78gYMSB6zyDT+/tlOuW8Vga3lDoV1sYjlofVhqPRy5udbTkmuMAZSTPFvao4jKGi 8jR0eV2oKHJ19+9JK5K10mDXIb2FtKm181pkuy3qLNqEhzQR/uevjiXUjrl7Z2pTPuSm QUQw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=HZHsYvJs; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=k0PFSglH; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id p15-20020a17090a748f00b0026c198d8182si1379717pjk.105.2023.09.29.04.31.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 04:31:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=HZHsYvJs; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=k0PFSglH; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 7B67080A186A; Fri, 29 Sep 2023 03:29:23 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233074AbjI2K2w (ORCPT + 20 others); Fri, 29 Sep 2023 06:28:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233075AbjI2K2r (ORCPT ); Fri, 29 Sep 2023 06:28:47 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 503BA1AC; Fri, 29 Sep 2023 03:28:29 -0700 (PDT) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9bvI023136; Fri, 29 Sep 2023 10:28:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=5Yri2Hpansj6Fbkf29Fj7VdpbnPQlQs84jW6qRSp9Ro=; b=HZHsYvJsCMWfaP0LXRIQUJjfsLnyzsXpDCBFaW/qQgdK177QwDGr4XFgNh5nG9Ruy4Rv iW3CwBna0XYMWW2a7feXXXhcmbq2QoCIfU6l64nGLDlUkTNdYIbVQgH/iW9rQeOnzYOW Mky47rVGT6Qfla7rgQQTc36tfUEwJ0lxUTkaudO3zcFgI1B/OKxbzuhQo1GB2tbQNWLI FzJ7pRQ2fRWgCV2IB1Jn8DgSoXh9lbs6xF/3AsXX5JxFersO5hzBBReiFSZUlkSSRZc2 /lRIOa8kjPrZw4BYAKGE2Mvm1/Kq7GecxiGv5lSWYtIq/Hv+VwowCllac+bFKK/eXQb0 zg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pxc6k52-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:02 +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 38TAIC3L015784; Fri, 29 Sep 2023 10:28:00 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2100.outbound.protection.outlook.com [104.47.70.100]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vgq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gKVOlEpDeI/obMsnqU6eym6qZ6j7CMRbHDqECOSOoeA9PIca3nfnv1ORflX8RmsxaSMkZ8gVR9Zs5KizYL2E6slQf1addg9fAcnI1iWMsAKLtgaiDkCMUX/FSeAMt/Gi8t+RJOqcRNj/f2MVm3EAvsVvhKM8zP5eC3hXCN0h2ZOeQjxBi/nio9Os1IPuDZjpeE5oBoFv5QCzReGTnfZZkz1J+PQZu2sdjKNfilel5+YqV76tvY5Dy2GfY/G5D640nURX0Iydj030vAQtT7w0pBDcjxtMzcmDwWUjckScHsHivArYefRac/OKw2jAq2oQR5slb/mjvbS59lS+rBKYxg== 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=5Yri2Hpansj6Fbkf29Fj7VdpbnPQlQs84jW6qRSp9Ro=; b=BxYA4/6eS5i+R9KEOGG2PtRBaXSRPcCtv2lFwdGOgy6NLYgqpps9T/Hu5+39hZ50jXJwIqNFIIqt6r3i0Kp4hYX1HlIsiMA38yf7FeBwSdE1ADIAgSzCfhOIscZQnt1n3a3yOiQGyXUYhbpe5VG16MCxapG+f2kb/8NwDMkSHWQZruneQ2LHoGhMdRuUWCwcY5WTWsFP3UEdJT+yo/p8E94DljACk8t9R/r6vK5hooQGPaiarepxTMazzf46nUKZwmkZOsx/huo0YydfYzGUVmPUbt7qyd4PRPi50JlQtYJ7YTjUBgMHlz7mpM6sqF+/toa+2ILA+/CtEHgtv1ZthQ== 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=5Yri2Hpansj6Fbkf29Fj7VdpbnPQlQs84jW6qRSp9Ro=; b=k0PFSglH5+1FxyJDn8kUczQCrL9EFtqBMFbNU95uloNNM3prIS5oEVG7X4pNd2SrsncMYnq4fSXiqSOXgFQKniUAfplOA1BddnPX61yFradWnMvWH9Q5BX0ion0MN6PWVgt9vnHsAMIMoJtL2xbe1Ou+BAZ+/tAIM/vq7DFth24= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:27:57 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:27:57 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, Himanshu Madhani , John Garry Subject: [PATCH 01/21] block: Add atomic write operations to request_queue limits Date: Fri, 29 Sep 2023 10:27:06 +0000 Message-Id: <20230929102726.2985188-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH8PR05CA0015.namprd05.prod.outlook.com (2603:10b6:510:2cc::16) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: bf63e440-3065-429c-ae18-08dbc0d6bf9f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MH/2gzfrjLY60lLGxzG8MBnb5JKj+4ymSFlRXy5ftSlWO7jHkGZw+GCPTOYSp4fVzvR5QFT2jhoFbowsQp4tBG7Zhk0RGg7pqC1HqXcH2LEMIxihCScONXqU67VqtbFTVS/fjbxRTOPbA2FyToxG8Lb5bw0wySwqD+h9L05fMbGcoRE0O8UEACxAe4WhgkD0wBM9Gy3nSc5NY+0H3c+8rEmV8H/PkuiHExS9SwL544CvI6cQC5kPSe7LRrP5gkDkHhg3EVPv+YHWkygLfke9CcQSkuy0WpCQXFBmNlhpceRueRrc+npVtSMPwCVwW0+RuaDXe4lXGbVjNpIwMX0iCoolb8ZmeSNbw4713DgG4lLOk5wKfepXL6HmC1kErndBXa1NkiuXa/X1T+EAH/35p3NCuZwLNXN+oXh99U3g35wY9qwm9ChTb0fP6eLaWB4wL+x2w/MCQ/rZ1BXHm5kBKeV8WBqm8iBG6ma1+fzSQKz2MIMVBJnNvLr3uL5s0q3mOI77qdgMwZwUF5j9ekl6z0ldqkw4dLXqLUt4Jp0WD6hmKM+wbWrqwJ9dgPY8yrXqi6BQf8QAx21T6a4sikNK1DlOb6ILWpVuKDKsxD6H6Yk= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(54906003)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KZaVAfIth7xQypef8vnnST+hVglXzGWAVA0/fxpzGGl8hfG7GTzgCo3S/cbpwCJ9fKwIE2LItGqkonuvJTqYd3Egs4mdZV9m8+OO4eJVB3NiR9tpEVaTfs5y0DU2KXXmRqWt9rwUbCNmu7y3pE8iEgXaspl9hYUzmKTGnOTuWd5Dexx0qql5ZOcDdFeBHGIGZ2DzBrd6ZmO+1bajEyn2WpfqTu3HNt33j/8OVh5lf2jQrc74FDM5HNeQK2GWwiIwSWuWCExr60g8k74m0CNKiz7cag9I/1crCHc28u/YYJhQDXash6LrQWqaXlVWaOlZiDbi2y5siRuECjkR7YdJGcqW/DqkFrK9vrYoLKYiXTjSXabwTI3RR1Q6QPauLoDIS1GMJr3DViagJlkgwzkhlhI7idaZV1Mt+zeYoVdqPoeBYMrdtjLvB4ajb0NhalEAsCf6bFZtFiVNKBrIOJsMunbJb5xpU81tQg5Pnq6zatrUNXaLrsFYacCijh0xKPGLD+4uhVsk14/IZnJOF4QAC7uXbJTZRbbyeiWf6WJxSuDDSLPPn1bypL0V7nmAd/yQ2dqaVNbp3qxEo/cfFtEKcnh3bPV3QOmvW41nVQVt878g/d1XgSyNfiWNqmfJHV4pjaFopIwvYSQzPfy24efDr+D+53tYppjeL//a3rSwIT3YSRqYz4ybU/mS0bdYhkqGYe5ljZqeIxosY4v6y6pi6v06DbUeYdt9Px3gpWTYwiF+p+EM7JvpVxWSFEO8e1H6hBEPyw0fQYKxcwoWja2eS5eXu9qfRMZRGZ76v4BWCN+k6h/GOdsz5oG66X+vDynS0pIB5OeAD8h+zPlNbGltJ2yTc3vDOrjyHXAERaeAnmdwhrPBhYfjc4HMH1spsbYudsvkhphVSip/01t/QaUHvtC+Heh4RBE2UpZX905JxADYx8lkiQpNPlsinrB68FwRA9o15GL4622ZWosvRGjnaxReHP/SQm6x3EGkDPwMFAIsp7xei2gy0Xf5uFm8sLUqRuBD2ONIIJ6B+OD3SJ8g/qrI5Ir02Xq2OJQX+7gCTCSQ7hYtpsDr5HkNqvfHBzrN2a8P3z+3B7322Dx7ZGUZVpS4p8hO1aU2rRkf5tcvy7ZIp9+Obn6gvIE+bawjeXbVqMkl+n6LsZADk/19Bbqf9JBwC/KBJrZZ7+VZpDWVrObMpLLb/mV4bN4QPwuQOS7aybKnCc9AFyjUZUbIgNcRxxvxgRzx69PAXMsKrjYKfyibaIjpQIxr32bwC5o0DVvd1mRAD61i926VviWR9bK74QgPcRsAphDs3ZEHHvkQIi3i+7ygiBBGgc18Uv0A3B/huBV2TkjaSQSZb6fc5scxswk2e+yZA1LdB3Nv3MkMTzGUWYPeiS0K2GJGMKx3S/7ZgAIWpRMXBjzYGydEn3n2BARno52G1ZzgAlyK28rNzhviSkLLZPtonQwy954Z07eJU3HQ9T4tZ0XNdzRJtzISbvhkRxGZHheOrxBsdVMFr2+dGJsg//5udjGjFpH5woJwUH/HgwchbNiia3ItEui/FPy8144R7ayuHEo2ZhKGJzM1ToDLOBC587AV1GoDzhvHHWjMBHyBi1zXDbhz6iz5qQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GTlDs7k9kljlQ8cslDD4/hokpPiZpni8T0HoAGsXY1Iw+ICIx9eceVNoEpHRl/4MGI71gEfTnlnLpZTZgg93SAQ0NiXve+8VY+b0r/6I3PpEqBmNc4DoF91ucl/dJzHjrzMxLBMOtZRMtFWvKTFykPsGk7MXRd0FH6DV1TJ9WlWvWJ0tBmtdh0s97uFKMEW/GFJx/XlgKnv4Hqy3NMreEDpY+5Ttp/kGJBxqaBabP2+yvgEtxIY+TvcYnVd/i2g8PLGwJvLUIbCkx7oHrghstVuXUB/pHBDm8nXPrSfpPx7/BcacF/wJQM1mB4iLH1Wv3I2XWgLpmMnCux3D0Tty5eeGsN15Ruv/x2mdf4M8nlaTAyA56GSxzQPzg0Ev4V+kf44DtuwhejFaUQTcKwmdTZR3a47hfURRu2SmeCOvxr56kTTwGFWPvaJCPgj1e+p/u8tDyJUFDhqGaXtfeO79sjLE3jY8xTFIKnZpZoZhgLkcbPPXXxN+5HiSG1U+ruzAI4TWmA0qLJQ1QfXkMBYsKXqkKBU+4i6ZH3y64We6gP0QN8eS1O+eumg2nTAA/86RPpgeK3E1U+AoDcUvj4K5cGgHLxWH+abMqdP+YmBlNZgMcNuT+Wy4lBKbKHjX0wgyN1vLBQzDjak1+sRnikKiB+qEDLAtPTVLTKfmeFmJF3SRExXSBR860pk5PXRr27dEtqtPqACEn+URrgYXNSgYUKfVJjX75divrwvcRAJRDfA5WnBcCjOKWGBUqx03IcIrkZso/ec+KUq0plpZosWSRV0atSENvKnLblT6g2FXA3o5mGCGF7CCkPbjZqjTLDG6nrw9jcKdKMOBCr3ThuggzeaqtbmolNPZWq0GLJQEDEh+eqhR6X7NTgvyhOnoIvLUF+EOXb8RyT2iEuXt4JmnXByCQUKJ4oTN1o9YBqyyOg+fsNE2NET4ZzzlHwoypkzFqIlgaC0ko/OMGZMQJqK7xrApN/1o3xYwUth4N9B67c/4Nzt0ZIxgB2kLhtLoX0LfGPGLZWjmUyac/tO+3KnZJYFCqQ5n581PPoiE4/IvL1/wkiBOa3ZSfRzjf6KhsjIidqbBpSCKDFw1uwp0n5kyAw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf63e440-3065-429c-ae18-08dbc0d6bf9f X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:27:57.5017 (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: kk9jEqvciOzu0r8Miz6IjJzZZDh21UyD//iEFTKc1Fm6i9mq80CGVDCMH2gcdDw7gX2v1N918N1+/Wl89jLMUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-GUID: j5PJEXBrdo4uGWBgFceyLihEs8yhOECT X-Proofpoint-ORIG-GUID: j5PJEXBrdo4uGWBgFceyLihEs8yhOECT X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:29:23 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778371340949737357 X-GMAIL-MSGID: 1778371340949737357 From: Himanshu Madhani Add the following limits: - atomic_write_boundary_bytes - atomic_write_max_bytes - atomic_write_unit_max_bytes - atomic_write_unit_min_bytes All atomic writes limits are initialised to 0 to indicate no atomic write support. Stacked devices are just not supported either for now. Signed-off-by: Himanshu Madhani #jpg: Heavy rewrite Signed-off-by: John Garry --- Documentation/ABI/stable/sysfs-block | 42 +++++++++++++++++++ block/blk-settings.c | 60 ++++++++++++++++++++++++++++ block/blk-sysfs.c | 33 +++++++++++++++ include/linux/blkdev.h | 33 +++++++++++++++ 4 files changed, 168 insertions(+) diff --git a/Documentation/ABI/stable/sysfs-block b/Documentation/ABI/stable/sysfs-block index 1fe9a553c37b..05df7f74cbc1 100644 --- a/Documentation/ABI/stable/sysfs-block +++ b/Documentation/ABI/stable/sysfs-block @@ -21,6 +21,48 @@ Description: device is offset from the internal allocation unit's natural alignment. +What: /sys/block//atomic_write_max_bytes +Date: May 2023 +Contact: Himanshu Madhani +Description: + [RO] This parameter specifies the maximum atomic write + size reported by the device. An atomic write operation + must not exceed this number of bytes. + + +What: /sys/block//atomic_write_unit_min_bytes +Date: May 2023 +Contact: Himanshu Madhani +Description: + [RO] This parameter specifies the smallest block which can + be written atomically with an atomic write operation. All + atomic write operations must begin at a + atomic_write_unit_min boundary and must be multiples of + atomic_write_unit_min. This value must be a power-of-two. + + +What: /sys/block//atomic_write_unit_max_bytes +Date: January 2023 +Contact: Himanshu Madhani +Description: + [RO] This parameter defines the largest block which can be + written atomically with an atomic write operation. This + value must be a multiple of atomic_write_unit_min and must + be a power-of-two. + + +What: /sys/block//atomic_write_boundary_bytes +Date: May 2023 +Contact: Himanshu Madhani +Description: + [RO] A device may need to internally split I/Os which + straddle a given logical block address boundary. In that + case a single atomic write operation will be processed as + one of more sub-operations which each complete atomically. + This parameter specifies the size in bytes of the atomic + boundary if one is reported by the device. This value must + be a power-of-two. + What: /sys/block//diskseq Date: February 2021 diff --git a/block/blk-settings.c b/block/blk-settings.c index 0046b447268f..d151be394c98 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -59,6 +59,10 @@ void blk_set_default_limits(struct queue_limits *lim) lim->zoned = BLK_ZONED_NONE; lim->zone_write_granularity = 0; lim->dma_alignment = 511; + lim->atomic_write_unit_min_sectors = 0; + lim->atomic_write_unit_max_sectors = 0; + lim->atomic_write_max_sectors = 0; + lim->atomic_write_boundary_sectors = 0; } /** @@ -183,6 +187,62 @@ void blk_queue_max_discard_sectors(struct request_queue *q, } EXPORT_SYMBOL(blk_queue_max_discard_sectors); +/** + * blk_queue_atomic_write_max_bytes - set max bytes supported by + * the device for atomic write operations. + * @q: the request queue for the device + * @size: maximum bytes supported + */ +void blk_queue_atomic_write_max_bytes(struct request_queue *q, + unsigned int bytes) +{ + q->limits.atomic_write_max_sectors = bytes >> SECTOR_SHIFT; +} +EXPORT_SYMBOL(blk_queue_atomic_write_max_bytes); + +/** + * blk_queue_atomic_write_boundary_bytes - Device's logical block address space + * which an atomic write should not cross. + * @q: the request queue for the device + * @bytes: must be a power-of-two. + */ +void blk_queue_atomic_write_boundary_bytes(struct request_queue *q, + unsigned int bytes) +{ + q->limits.atomic_write_boundary_sectors = bytes >> SECTOR_SHIFT; +} +EXPORT_SYMBOL(blk_queue_atomic_write_boundary_bytes); + +/** + * blk_queue_atomic_write_unit_min_sectors - smallest unit that can be written + * atomically to the device. + * @q: the request queue for the device + * @sectors: must be a power-of-two. + */ +void blk_queue_atomic_write_unit_min_sectors(struct request_queue *q, + unsigned int sectors) +{ + struct queue_limits *limits = &q->limits; + + limits->atomic_write_unit_min_sectors = sectors; +} +EXPORT_SYMBOL(blk_queue_atomic_write_unit_min_sectors); + +/* + * blk_queue_atomic_write_unit_max_sectors - largest unit that can be written + * atomically to the device. + * @q: the request queue for the device + * @sectors: must be a power-of-two. + */ +void blk_queue_atomic_write_unit_max_sectors(struct request_queue *q, + unsigned int sectors) +{ + struct queue_limits *limits = &q->limits; + + limits->atomic_write_unit_max_sectors = sectors; +} +EXPORT_SYMBOL(blk_queue_atomic_write_unit_max_sectors); + /** * blk_queue_max_secure_erase_sectors - set max sectors for a secure erase * @q: the request queue for the device diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 63e481262336..c193a04d7df7 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -118,6 +118,30 @@ static ssize_t queue_max_discard_segments_show(struct request_queue *q, return queue_var_show(queue_max_discard_segments(q), page); } +static ssize_t queue_atomic_write_max_bytes_show(struct request_queue *q, + char *page) +{ + return queue_var_show(queue_atomic_write_max_bytes(q), page); +} + +static ssize_t queue_atomic_write_boundary_show(struct request_queue *q, + char *page) +{ + return queue_var_show(queue_atomic_write_boundary_bytes(q), page); +} + +static ssize_t queue_atomic_write_unit_min_show(struct request_queue *q, + char *page) +{ + return queue_var_show(queue_atomic_write_unit_min_bytes(q), page); +} + +static ssize_t queue_atomic_write_unit_max_show(struct request_queue *q, + char *page) +{ + return queue_var_show(queue_atomic_write_unit_max_bytes(q), page); +} + static ssize_t queue_max_integrity_segments_show(struct request_queue *q, char *page) { return queue_var_show(q->limits.max_integrity_segments, page); @@ -507,6 +531,11 @@ QUEUE_RO_ENTRY(queue_discard_max_hw, "discard_max_hw_bytes"); QUEUE_RW_ENTRY(queue_discard_max, "discard_max_bytes"); QUEUE_RO_ENTRY(queue_discard_zeroes_data, "discard_zeroes_data"); +QUEUE_RO_ENTRY(queue_atomic_write_max_bytes, "atomic_write_max_bytes"); +QUEUE_RO_ENTRY(queue_atomic_write_boundary, "atomic_write_boundary_bytes"); +QUEUE_RO_ENTRY(queue_atomic_write_unit_max, "atomic_write_unit_max_bytes"); +QUEUE_RO_ENTRY(queue_atomic_write_unit_min, "atomic_write_unit_min_bytes"); + QUEUE_RO_ENTRY(queue_write_same_max, "write_same_max_bytes"); QUEUE_RO_ENTRY(queue_write_zeroes_max, "write_zeroes_max_bytes"); QUEUE_RO_ENTRY(queue_zone_append_max, "zone_append_max_bytes"); @@ -633,6 +662,10 @@ static struct attribute *queue_attrs[] = { &queue_discard_max_entry.attr, &queue_discard_max_hw_entry.attr, &queue_discard_zeroes_data_entry.attr, + &queue_atomic_write_max_bytes_entry.attr, + &queue_atomic_write_boundary_entry.attr, + &queue_atomic_write_unit_min_entry.attr, + &queue_atomic_write_unit_max_entry.attr, &queue_write_same_max_entry.attr, &queue_write_zeroes_max_entry.attr, &queue_zone_append_max_entry.attr, diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index eef450f25982..c10e47bdb34f 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -309,6 +309,11 @@ struct queue_limits { unsigned int discard_alignment; unsigned int zone_write_granularity; + unsigned int atomic_write_boundary_sectors; + unsigned int atomic_write_max_sectors; + unsigned int atomic_write_unit_min_sectors; + unsigned int atomic_write_unit_max_sectors; + unsigned short max_segments; unsigned short max_integrity_segments; unsigned short max_discard_segments; @@ -908,6 +913,14 @@ void blk_queue_zone_write_granularity(struct request_queue *q, unsigned int size); extern void blk_queue_alignment_offset(struct request_queue *q, unsigned int alignment); +extern void blk_queue_atomic_write_max_bytes(struct request_queue *q, + unsigned int bytes); +extern void blk_queue_atomic_write_unit_max_sectors(struct request_queue *q, + unsigned int sectors); +extern void blk_queue_atomic_write_unit_min_sectors(struct request_queue *q, + unsigned int sectors); +extern void blk_queue_atomic_write_boundary_bytes(struct request_queue *q, + unsigned int bytes); void disk_update_readahead(struct gendisk *disk); extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); extern void blk_queue_io_min(struct request_queue *q, unsigned int min); @@ -1312,6 +1325,26 @@ static inline int queue_dma_alignment(const struct request_queue *q) return q ? q->limits.dma_alignment : 511; } +static inline unsigned int queue_atomic_write_unit_max_bytes(const struct request_queue *q) +{ + return q->limits.atomic_write_unit_max_sectors << SECTOR_SHIFT; +} + +static inline unsigned int queue_atomic_write_unit_min_bytes(const struct request_queue *q) +{ + return q->limits.atomic_write_unit_min_sectors << SECTOR_SHIFT; +} + +static inline unsigned int queue_atomic_write_boundary_bytes(const struct request_queue *q) +{ + return q->limits.atomic_write_boundary_sectors << SECTOR_SHIFT; +} + +static inline unsigned int queue_atomic_write_max_bytes(const struct request_queue *q) +{ + return q->limits.atomic_write_max_sectors << SECTOR_SHIFT; +} + static inline unsigned int bdev_dma_alignment(struct block_device *bdev) { return queue_dma_alignment(bdev_get_queue(bdev)); From patchwork Fri Sep 29 10:27:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146590 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4089421vqu; Fri, 29 Sep 2023 07:48:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE0AZU4ejeIVWpzsjRsa0PnATwEPhfJ8gZhELdy3tcSQvlY37A4Vlx/+nOd8wZ8f3LnizvL X-Received: by 2002:a05:6358:7e92:b0:14a:e8af:1279 with SMTP id o18-20020a0563587e9200b0014ae8af1279mr4547325rwn.10.1695998922847; Fri, 29 Sep 2023 07:48:42 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695998922; cv=pass; d=google.com; s=arc-20160816; b=w2rDL/crVyQrDqdhGRHeembXKy49xJylmtBqneLbsfN1zci0LJ+hl2c2idTLHItpD3 eOqNrRVDYyjkOh3Kb11DPL80y+FhG7vXc4q+uv0QX0gFvMtx5dDxf4oWNk2EruT4JrRG zRp/nkVK9ZSXE0RFaoNFimnOxqjQlBuk7fUbW4Fij8xyCOAqKHheMwtb97XISKsbKA4j Pd85E8CnU5jZnhGLq2x+UiBUHeXq9V7Fr0wxLSYly1BdsPGKrK0ex9LeHX3ptN0PLkUd WGPhZWxGX99mKUSscA5UEJZD/HcP1GoJZJWbI9R5FA2yDjU4TXSX8uW71+OaSxymrCX/ 3Rig== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=31jc2+OVZmwNZGcdfaPyUtUaj9QVTZmwNDv1+AWRPKM=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=Q9uG/nqCJWvrPP/FWKGTnXikh7d8C9Q735GAQPxdRfLONS8m0rY6oMVG9/E/wHAybl FMQlucPvrHevJiU6V9bwu50ILnDvigWagfI7hMMqER7dP/BpYrl76Cqye0zjSDgBguAp 5gftjsffJ/IG+52Lqq+jM1vyOnp14vyHZtjqC/vYUvAIOwcbTPs0JhEMIZIan0plS4rB 7orQ7l9NTa1Mk6kqPruIp6KCFgfJ98xRpGVGgbJS+gIUf+1SAtF/iOjlapNRcx0aK26O gywhgSqQMxRsr401zh/ADaTwL6bJSr2N6GhD1kbBMDkpFxhyC3d6X39JBm4dw1B++hu9 CjeQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=Jxup28a9; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=EYt1BgfL; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id i190-20020a6387c7000000b005649d5fc097si20976116pge.820.2023.09.29.07.48.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 07:48:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=Jxup28a9; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=EYt1BgfL; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id D6335814972E; Fri, 29 Sep 2023 03:29:06 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233052AbjI2K2a (ORCPT + 20 others); Fri, 29 Sep 2023 06:28:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49852 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233017AbjI2K20 (ORCPT ); Fri, 29 Sep 2023 06:28:26 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C8DE1A8; Fri, 29 Sep 2023 03:28:24 -0700 (PDT) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK94P2018441; Fri, 29 Sep 2023 10:28:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=31jc2+OVZmwNZGcdfaPyUtUaj9QVTZmwNDv1+AWRPKM=; b=Jxup28a9iuN3naNKs5NGxS6AVWOPoOLtueYEjtRmqGOh2kqMyhBaOGPv/MlmrxFS1OHv vTA9oVBQNAkCwhwuiaNuJ46kNHoQm58awmrr4D1+pdZ/C294+3HOW7gFlOnnzyWmQfIc R8AO9x2g+0BkCVL5MS6ppNmEFqTyskt98ygYEcCJ/+CdHXIOx7c9fFLLDVGBq7WEaJ4+ 4+fFPwyxB8FwydbNPSAm3qR95b55DGP1ty83O0Xzgwhiuh1tOIWfYW6naXN+fkZ8XaSV zmWlVrmiYetYVNO8Az/1d7vxCkLgUvKhYkKLvhlN7jc6OsPjthVtsNiMxaZ8uXT8kGdh mg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pt3xebs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:03 +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 38T9bA3r008251; Fri, 29 Sep 2023 10:28:02 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfb83ju-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YfmkqUlNo5eNfDTc3E0zA9iJ6Zlmp/eCEwekJJZ+XVsQcx9dpjDwqrCLo8cO//tVXz0OTs4rpR7vONDKTAvBAtCIhXxno2N/Z3jWhZIrhoNu3Y1HXOnnk5bWSeHuVdku3O37MHmPC0YYKDN7ZQC7OxV7dTxxxuLq+AeqJ07yjMNVDeCJQ8QKYfiryfxvOhgebMoIOWinZoDmaG4zLSqs8Lz6fLraXnWB1gXJhcWq2L5n35YRpdxJ+Pls/zqP5F+gnZF3llCbdD4jJOA775mDWLChfx3PRCRpd7BeCRJoNxfY/BoVocCvPtTaqinBxYnEvzmX2w44f38vPwayOghZgg== 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=31jc2+OVZmwNZGcdfaPyUtUaj9QVTZmwNDv1+AWRPKM=; b=JGoePJEzJkC8x8PlJ+JPOGak3MTYyYE1lPpfO16AYjg8O3Du7e3E/rL+UKgRtYEbDbOCRfIZLto4C7xSpc2Hyp87dB82htCJu5hY2rPdaKluH9kTsegemBHvwE5GNnCcCWpLi2TaPKJjIWgIWtrmPFgVdijx2Hxp250St44N/3YGopFZetbR9mlENYLDT/LBiAy6eqppOTJMF7wVWSJt5ng3Hm42o/J2sW21Gp2T+M4ysUFpFspux8FDRMh5HJyzGwMPaYVeIUwE7j0bDT/RoBEtF0j9HZgd7LJUuCODz3Ry160DXieKn/FqHb1neE1XuDIUQ17Pz37vF5kzV7JVJg== 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=31jc2+OVZmwNZGcdfaPyUtUaj9QVTZmwNDv1+AWRPKM=; b=EYt1BgfLHjZVRUPeXBGXbGYvx33bG68uo9rKvDCzUIom7CaHr3RyRzEFf3MbVALw4Lzzg+drryoaQSEHiKZyYx/s3c47ceETxdTQ8PssAFfaHQQxhc1NYz2bfRG0WKXi6Nf6V5tz0t+YQNaIL08IPBKvktHYgtjsVgIWFvW9O3s= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:00 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:00 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 02/21] block: Limit atomic writes according to bio and queue limits Date: Fri, 29 Sep 2023 10:27:07 +0000 Message-Id: <20230929102726.2985188-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH7PR10CA0011.namprd10.prod.outlook.com (2603:10b6:510:23d::12) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 95cb4a4b-7fe6-4547-9df5-08dbc0d6c107 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: v8FCtPaMEiYy5IsOdKRmS84vzrA/TkfhBC5eZLJ6bVu978Dk1ZYr/mrd0W1vENMM/jMI6xoWZrsJV2e94A7D2Zidxjz8v+BS/0RrLLt+eohsGhGHMsZQt3/K8GOhT7zLVtqtQYmdnSjEUngU81ph0n6yRlh/mJIQaVME24JxqBLZCH7ApQgUGNXRFDrSvbOp9T+FQYheta2/W6yhrj4jhmOVEzNlnspujyQjUfwlG5y1Q/KKBdK4vSeU5bdboaWkN/zxf4IM8n06vHXkWXqVwLOHOOWJw9uFWNeU8J83Y8+nPwuu7LUkqdNC5kH9G74ooNgRiBYTDULbUXOVrK4ErN6JtYGCR4cY2cDBsh5WRUQjjdZ+ZYmPyujSuDaOdKle+VKh5BmTc04F8Gg9NuvK2co4qWgb3XKlWnh8nmJUJvCZ73SvzrQvgBIqs0Odw4yR0w2LcguZhsB2vRvgZwVNYWXf/SDTu1zv5f+eaudSFYd+/3ogL/7Z5HS4SBTxsOBEVm4BMILmq3yLnfiJQM5/0g2ZDTqoqVHMJ6QfzYJiLWoKi7JwQcFeY8Am7AfOiQtYobTsZA99RDLnAd6oDWnBGBXkRCcqxwgWpcUluPknZ/Q= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w58v2LJ7YEHcZGophxosc5x/X752J19LRNIZZ1vYn1TGq9LoOLC7WDKUfpA9YJkOYSkyw95bOUlnqSaaCpTFAzLlX3K2EAXQVRQRmGlgqH4gD2VhleMxAJFccLXM+R64s/Hm54a7+TnqD90H4NAjwwMFFQRbFmurV9K0FbX5HseQa7z/nqlw9mRrtr/mQ5qok7NOYPN3Tfgmuq2X2Ji7JKzZEEzEu07byN2Bnk3zE0jblPF/aZX00LM6DsYsDa1XEZg8W9wTaGEE2xUrJw+2N3Olvj31aSoXDbUi3qj5etKlSJGH9E8w52Am/xRrT0iEdBKTcHlUoawYmCiZv8rtlDA9wmtMCj/askXG//z8uhFVQaxFMQk+alc50t0VZRxtJoevDzd9YJVuLKLIkMcwbR4aTsCCHy2kTlW2Hh6ziP0619dRjg3KRGNAl/H7BODAbqch7PjV0LBaWb7WbTGWCQYX9IJKtkaTfZKPhHqQWczFQe1SN4SDov+oW+mG+TfGiiOfzCC3VldhDcvcVaqn5cWA2mutJdNzfFrnxHwnBrY41MKpJmX7BG3Ib+RJsveLm70EV0iGxH0OswWw2qemyThy5UKdgzq/rmbbK526b3nYgsIZd5+gKODJDyvNoRJB4ZZa9YUb59fHAC1yycYihfvUxNzhrO34gFbN21KUAj+JHKqltlMYKnXhyo/zBnSADknpB42E+3tqkmr++7olZqh3MTdkvWpcN6FyqlbhlNGE6+CUyJnRY+pwbr7cnNqy4DflYnGHDWGbh5yuR++225de3FGLJsNjnILoEDymbenQ52+OOw/1Ubl9qJ1qTypua0Q2RDWmRP/3QviWm2WXQ1++R10n/f0hVj87Wd3OZFYMUK329tUMHi4BU3KBTjlPhYBHSFi1VUSoO4MRyhLjFRvOGh9eRH1gM+5pN1jupUhX2Ig0yXuIzOfq7XBmUj3Cx1M610ZgKdznMxDvIfGJJwLzMxDL4YflEj2oMMJ/ixLyBFpb17RC7BsSivgCiNBuKCVhFwosAT80ekK+8rK0F2Na28WlOzodslDrkjmYzbpVi1A2csiMF8j9qjUP2heKmISqkxWoAZcR5T7iiCGNz/uL4SqOhhE8LdgcknB/OE34wXfc57NXBhsyCQdIJCu9TPqoWGX7HAOMtXv+4bfpZFMHsSGllyviHpbULZhH6ljzPOiLoOdgv8zlqbUiq29hBcrdibKV+e9gr4Nkido4SftvI5fhFdY3vywYqhRWY+qjZf5LYCqwZotjhCxBc2JGYEG9p41hd6GiY/OfTCfzh7kejnaDnS1szEL6HIVecrYRGBzg/Of4IiE+XJL5BM1zeihvB4GH5WBpRT4cc4EeS7l9+HzuOL53OnPpDYPhJTA5Xk3GjeZ/8Tf5fJgh21dhoJdpNTbgcIrfFQTC3lSkKVmnrXnwMrLAKxeaO8YtmK3cKU/fPXQwClnYIGqyU9e97cX0fRVL9T1uvGk//uv7C1pzMbsxy5mQDgxVa5F1ctmz797nx7wY+ikgAWKHxo2CWr9zPa7DD5Uko87jNIbxuxTKPXX69rR4MflLE2Kjx3pDqiVulZQqbR93aQSGAbYdsltaoZu1UlEwyDp/218K9w== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0z/PvhbXGt9coWmcU+O7MXB1h/lmDqsixU98t3Qiai0kJXHOGdSuVUo0OKeUu4pXPi5V7QjPo41d4dArBExQxQoBX505lezFCrjVsAlzUrFFoaKIWmyqWyH52k+I3UMqn5aUOsdxjWXMmcRNjKNIRnhFokGkqbCTNt3+28qcZXTnjxasZMCxaI3n7Q6CsRkvIgB7924L110vu+vQwtaQyGls/5xuOUM+VlxATsbJQMmx2eCGibPUAgZorcbZQCJ/MaoTwAAge9iqYHLp3QRKhak45Mr0tYv3u1GIlSOa03bqykGAWMOE5o5ZjEsf62ZocdcczeVSmtEmR10jLI4ovC7Wu2YXZXRKxi2wZmFAUteuCj8Qb9fVy8KeK+F+FEFIK21Qz7RDRsqm2kt8Z4hF1FjQ2553iiKTao38v8wEiAdoL+dwy4oo7xLH1KYZp9oSgAIyiklDOEO7wDePB9CO4PZ83y930S8ulpPg5i0z5hDINhwWGwiBtyN70isSXiqIVfjTweDbIJFWMdoqm6fx2mLVO9tfT6G0LorxsiIo5DcWSTUPMIi0i9Bine/HQapojP75g8+ONeMblaIorM3KAiV+Scm/gv3Ub+VPGCvUCcDgEi8evUF15CtI/nviPd4QF4q3LnjivTM1gbjqq+ztRz6B3FfeuqPW9JifeL8kvaY+lVKFPHZAMg2KiyUBZels/lHIt1ycOrC41WCIR/7qB75OKqqRb3wEU16wTMVaNDCAV9NxXWGFl1+X8HlQZk536vUPLA9AsAQg15iC86HmPCT0q6Ig2QD33upk+HbqzrsPjib5ChpgqWScn6D6lnnLgYb9S54vVwuULy7PCa9Ny8e26+Y1m8MjELwla05m28hPmXQKRFhx5g6VGKWs+qIbJXpLWCg4k4uizHVettD7nPr6sGGkaA0KD1T93pCJtglOrhBNbprmo5GPJ20l7su5Fh3WShuOJx8u52Vc0VyRxlzYOHF+i8JvmiVHCkMHnEv+1Jzu6d1rVSaWBP00ldsAqVHdgqjatVfh3DqS2HIQwBwPC3bPZBIqvs7DarhpMJCJkVDCJC41C5FCjOXu2cW3U7FhbCrCZ6ZRr0by5a2pfA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95cb4a4b-7fe6-4547-9df5-08dbc0d6c107 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:27:59.9869 (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: V9q8y2DeiKlJyM0GfMG0V3HcC1KPLGhCre2xoEnjlPLg8ZvhekJiLUEfM3xlHHzwk6l1LCGVMh7DIlWEfwY/8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 phishscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-ORIG-GUID: Z_Asfb5nC2yHToOJLMDmUFnYHZcTfEeE X-Proofpoint-GUID: Z_Asfb5nC2yHToOJLMDmUFnYHZcTfEeE X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:29:07 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778383766474132808 X-GMAIL-MSGID: 1778383766474132808 We rely the block layer always being able to send a bio of size atomic_write_unit_max without being required to split it due to request queue or other bio limits. A bio may contain min(BIO_MAX_VECS, limits->max_segments) vectors, and each vector is at worst case the device logical block size from direct IO alignment requirement. Signed-off-by: John Garry --- block/blk-settings.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/block/blk-settings.c b/block/blk-settings.c index d151be394c98..57d487a00c64 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -213,6 +213,18 @@ void blk_queue_atomic_write_boundary_bytes(struct request_queue *q, } EXPORT_SYMBOL(blk_queue_atomic_write_boundary_bytes); +static unsigned int blk_queue_max_guaranteed_bio_size_sectors( + struct request_queue *q) +{ + struct queue_limits *limits = &q->limits; + unsigned int max_segments = min_t(unsigned int, BIO_MAX_VECS, + limits->max_segments); + /* Limit according to dev sector size as we only support direct-io */ + unsigned int limit = max_segments * queue_logical_block_size(q); + + return rounddown_pow_of_two(limit >> SECTOR_SHIFT); +} + /** * blk_queue_atomic_write_unit_min_sectors - smallest unit that can be written * atomically to the device. @@ -223,8 +235,10 @@ void blk_queue_atomic_write_unit_min_sectors(struct request_queue *q, unsigned int sectors) { struct queue_limits *limits = &q->limits; + unsigned int guaranteed_sectors = + blk_queue_max_guaranteed_bio_size_sectors(q); - limits->atomic_write_unit_min_sectors = sectors; + limits->atomic_write_unit_min_sectors = min(guaranteed_sectors, sectors); } EXPORT_SYMBOL(blk_queue_atomic_write_unit_min_sectors); @@ -238,8 +252,10 @@ void blk_queue_atomic_write_unit_max_sectors(struct request_queue *q, unsigned int sectors) { struct queue_limits *limits = &q->limits; + unsigned int guaranteed_sectors = + blk_queue_max_guaranteed_bio_size_sectors(q); - limits->atomic_write_unit_max_sectors = sectors; + limits->atomic_write_unit_max_sectors = min(guaranteed_sectors, sectors); } EXPORT_SYMBOL(blk_queue_atomic_write_unit_max_sectors); From patchwork Fri Sep 29 10:27:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146573 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4053661vqu; Fri, 29 Sep 2023 07:03:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGcSxxd7CTdF1StCOQ8qlouL5qEXAvr/D1IKaorGCdkna4F2Lx+njcWtOrBytgOJ0WbsMhZ X-Received: by 2002:a17:903:1109:b0:1c6:2acc:62f3 with SMTP id n9-20020a170903110900b001c62acc62f3mr4671616plh.9.1695996194794; Fri, 29 Sep 2023 07:03:14 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695996194; cv=pass; d=google.com; s=arc-20160816; b=cB6A8Sk3soV43UZjr1OJh5KWsmc4ukfdk+j2P5AP1hdIV1cSBMQT7rUQ/WQTEc2L03 2zjtK5M7LfG1ZZ68ODsUKP90b7zw/A2kT+cznljGIsqaofWQXoqLTBK9FSMUxsApaRYM I2r4P/qmruMa5575BF/xw9gDBhf3FNkPPso2yKZy2ffeb3q+aY7r/OHd2WcV1eQ1juh3 2YXoil1z/hYwFY83rFGpaT0NHnA+vEZrMwYJQO1X3JrXyOLjmBj5L5Sr+guxpP8dFEdK y+2L4T9tfr9v40eyemeMNi1OzVgcdi0rs/flgVKj2gCFuZBsRgcknHuu9Cq1+1ldumIJ 7m+w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=2i2V0S+XBJL3ajFOnCrlyIQZGlKfn5xCyW2+UtdJO/s=; fh=9G5Rk7kYUUbC45w/ckn1HonTVf1z24D2/EBItJKwYlU=; b=yIs1hQItTUYIyKbrsJ+gafMIn99ZHzHmf51GPNZBIQOvDJCTzJ4TBtSwvLHlUEfj8h DqCKY2zZDlfhv2ZuAIvXYYVealjf9S21HAbt1KiCYLNtwj8TzfUWeMjAzq98kVithjL/ sS8k7cEB1Z+b3CkglDFLWZtNI5t8XM9Me3Q+Yym81VEpvR7EURrze8nsLxkenFZIKt0I KKuBMvtVjxfRrgQH1lM0zEKgBnQsQduPZXa4SXoD1jpUi7l3kBnMsCFbys71q5TkRKoA dh+jSSOm6jgjnehRVW6ZqaHWAY9lQgnydGRjMqWv43Njv4ogq9deibUkFQBWrHQVIVRz 5OUw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=YB6z5pyq; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=txF36YSk; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id t4-20020a17090340c400b001bc434b9d95si21434402pld.156.2023.09.29.07.03.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 07:03:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=YB6z5pyq; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=txF36YSk; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id C4F808047059; Fri, 29 Sep 2023 03:29:25 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233157AbjI2K3H (ORCPT + 20 others); Fri, 29 Sep 2023 06:29:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233071AbjI2K2t (ORCPT ); Fri, 29 Sep 2023 06:28:49 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3CB1BCC4; Fri, 29 Sep 2023 03:28:32 -0700 (PDT) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9W2n011907; Fri, 29 Sep 2023 10:28:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=2i2V0S+XBJL3ajFOnCrlyIQZGlKfn5xCyW2+UtdJO/s=; b=YB6z5pyqQdqBT1qJ8DkVRSm9vokDJ1ykLBhzRxyJI0F629YvOHuh1pzK4UleKUPjC/KA jwQM2GjQMNqM6vb74Ffyf+Zrsa52w5PeKkn9tEwBKXc2HDg8QhyQonG/r1NUXniIT6P5 kbauSR6MVRZbt6F6VL8uxnr3kERhOjz07RpL1mlb0A3YOzKsthBgJI/sIqdov/eKOg8G 1inc/gnDRREvkHZayYvT5EX9QJNmPtg6PItWWmyG6qkpX1AOJm2nFEmw6Up75gYfjKwF 6prH/sAOzd0q0JWgeb28K+tFqlzZ7/yxGp2gL9mrb50IU8ygIFx6k00wFolC9m/j9opF dw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pm2ehkj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:05 +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 38T9UgwH008228; Fri, 29 Sep 2023 10:28:05 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2172.outbound.protection.outlook.com [104.47.57.172]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfb83m0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fVE80oDK6zHDEPLxgkdS/wobDsuYEY4M1bYVOAYrU5c7xMscb36H8oP9/5/sYPCRQ4h/nlEGWIuXMLoXBMB7t2phjOVuhMmzILrMgA1JOKgE4HQC9qO5uKaBVRLNEwbTMvXpjfLt20d/EiGr+/jBDVddYk1MUDt4R/Kwd3UMx5J4NUMhRxu5W4Y0sh0PT5oWMHOR9EjpN0vctsYsrbURix4f5yvKU65Gy1Vd5R+nPvk4YNgyx1m0pXONX742pXRVCnk0I0Vq9ufJ7LLinQPD0wdA8d79g9R6lVWCkKRo9PyoUyL1llArcyloqXeVWg7UhbzvAGVb4eCePYmJiJ7+Og== 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=2i2V0S+XBJL3ajFOnCrlyIQZGlKfn5xCyW2+UtdJO/s=; b=RBU8m0XnUtac8AOvAwuGw5i9hUZi9NxZuos9xfT7/63jR8Su5OBFLv6jJpqQlvsGCGRjgPtki1y1y4fAa0f18t50ZGvfHTLqLoS6jzZwdLwKEbaMp6d95VLlWKzZMpT/D68ssntnbq13oP6jH7winYgTdKOAykI7eXxy+XAmI79sjaaWjZI4OyxcOOQ2hNV3K0E/zOt2rSepxAQMtPYLBKJdPri6VJSjagIlUYWC4awVK59RKU3/q8Sl5e2POCYmASZy01lE895HnvY7t7GwLkQL1JpW/adkgpZ60IBaXMwiBoAou36cuys/cuZVcHQwJbq5D8Tsgkw8qaA0MyKX4A== 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=2i2V0S+XBJL3ajFOnCrlyIQZGlKfn5xCyW2+UtdJO/s=; b=txF36YSk6mt6PFBDUjdIppjSBnnpPMg529tpyx71ygWWuAA4vXl1q85xNUCGSxfvEv8qFXNTW0IBZPEdcJPJ0D5AaOk4iU+jX64BnOwsAaNrJwwKqps58y52set6eAJ7OmDpeuzWMZdvR0NqOpstlOvUWCI8pMlktjmyUUjhiD4= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:02 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:02 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, Prasad Singamsetty , John Garry Subject: [PATCH 03/21] fs/bdev: Add atomic write support info to statx Date: Fri, 29 Sep 2023 10:27:08 +0000 Message-Id: <20230929102726.2985188-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH8PR21CA0022.namprd21.prod.outlook.com (2603:10b6:510:2ce::7) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: f54e208b-0856-4824-8a7f-08dbc0d6c2ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wQhJ7dIxIGvvz829fuPxtqr4O50LenedPCpZaTNKr4U/szXMYk5oO8OV8V7K6KnfNPKoSLgexPEAdywzDqAteEoBza87KdBIlyThhK6yFhgfUsqY7ICT8O+n/JG1XdD5vF1Q7cFGwFNDMKWuCttLhgsy+alQthJhPfEi7SDcTrnLoFPzaWHsi3tN40nD7XGcd4MybbnFUcGAp34liVhkls/Fc1PRtENWDZmO++0wDqfH7A8WEYyDuiX1Ku2Du8b76DMkHYTT0oFja5Bzv30WQaahBgNlEtg3XwZ1pKmk4VAU06Px91mDP9wkDLLLtncHbqFBV7qWAxHXdJUEcIsWhV0fPi0DdAMzOj98taisXZ3DjSDM22dg0XIX4JT8+/xR7v4hZmwQJ49Zsr70tqwOE0WRz1W9NABTdskkYg5aeR3xKT/t4WqaXBYFs4W7WottXe294yFaRElO2rdLK9yxMg0B2eIIy9SlrJ7PimqLdz1/qFzCldPYblMist7JTCCBGyPUMBVhTcqcebK564rYiaOIFrDJmHbC/DUdf83Xe7xWCb5uoKjR7zf02gFj7k2bqcVFdPHqxhL1bPhwcDty5s8iT3qpDD7dF3zw4ly+7VU= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(54906003)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: n11AQedrkOnwmpg7xK9pz2yX3slItIk/kntpVrlP6f0I/uSidMV4RTCSj8OQ4YRJqP9Uglh/w0gylLFuImQzGcmzmMhayx6w3LPmzr70kgNTUhAgy4OxmyBrJhLFvkQjc6kZOczAnNCD7SoJYchjlbx2vRMO/1V6akv/H0utMmG0sZKmNQ9xzNtDuOrUz9py1wS0PdfWc15/1EzVigTyV9C7BFJ2rXSwM7drEyeuHbrXLp7OVTqG5ubqL1hURn1HIg82FZL1e7z7JUb8m/ZVrW86fIm9T7UH21PiNfuywquAqlq7UNjGsetZJxBGgqV9f/TgQTA1ZtymL49DtPq9pLyCT5RXL6XXCfZZbRb2kLmEuUHtPIZ91T2deu+R8rb5x8o/s8Mb1STKVwiauu2urXKI12Yi0ZDLlTE7ybmfDVtrlFiI4yjLFTOm6g7Ah82hJ3F8Unrq1ixMyNsMer1o4ts7gcATqv4TebOTkq6TBc7jl2opKX7Nw6tr2V11Jzd9sNfB3oKQXodNKtz+S3iO9GEftSv0PLyrVplv/uxQBGl44Es197paCjKo15SuWL/pL74txMaH0Vio7+Sedc93sEzleMz+qmAa8gonlKyfIsD249XNFPAg3cboLIzMfv6yZCD7XuOqyb7ykErAipj5jLviFMuuvZ0N6v1zUiUay1krhwt7PmPU9yFUSYQaxowPvUVRsDDwYMgFz4UZ9/kCTDIvdpwwtVKfBiRZ3LjoSIK5C6KKrQWHjja0n7R+wK8GQiD+dI3Ns1GCTjXG9ilgF+bV8yto05Ich98Mioil0lmpx9j2+WREkpvUVs8YM8C0TEolH3WXchp9HRYgjOJ6ppKuhMm2yZQb0D6deQqxPVyf2Wk1VEzdvVSlpjQ8QHNTO4MeyZUZ8LFVYf37uqMwQI/rNkC+wF9JP0P2BPSzUW5foqvryTi6SjaN8qA95kHY1TLeAFqmiA7GD5DfOQViNY60iPbW60tsqOQvL0EVkOsS/FH6zKpQFFAJW6SjlgxiM3R2TCO7CUOX55jOQab79wrd2xC+9RU+S7lpPcR6m/Fe9D45G1VTz61kfBxJQ/sTo0bzZrRRaZ6uqCfHgpq5UvyhKT6FmhJuGdyUBNOQRSw3X0O2+6aMczqMTpVR7hjwzM7ZT85ZOVE+y0EImNeBwwkiwbQlcGjV9jJ6K3WHxcqjtjpXdBHQpXs+/mjk80eWmb1VB1UdZ+A/1hy//sloQ3bVIpkoimEuC7aG/gLVISB2C2BjuBfVBJ5uvV7hOQMH9RfltB+rt0NXKMdMqyUe0a4FqvkFRl2avJtD8SuX4/F+lut4bG7FTiiUqtwL2WISpiQ/1XOSTGDHZuC+R21JE/8qFUCubz27BHJYviR5MWFPmOgFjhI2xR13LtcJsqgHjy21Gjrfw+EFmNt5qCNUZVvudE/cCSAC2vSwmgxMxg+p0nJ3txT21nwm8s0yifCU8MQMR5QTjzoO3VHUK8n5D80NADtaRlYno/yUKANUmxNdnxwOB73mZHvnl7qp++wCVKo+Vb2L0/YKkAQnFORaodTFCumkBnY2hNwpYqKLTx5C3N7KrAhGa8W0A3uCb4u6HMd9P6/FulCfqXNVqy0i1w== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: YWqutcNcxB8S3d1D+kkHlIwiTt/l8RO3YiYe+8l5OqC031fL2i2oglA2zgwKv0ucB9QK5BwVwIbUJiPYL0BqqYo/aK4r29Uu+dnqLkiT/kdVfzMzIef2hFgVq5WJFGCD4pR8D67rJ8oHoUIjXVbM5KvHrmgxxdpHFuwPrRwBsSTIdz3yfNfIlTlXtVfx8FXdmAviQ2ny9RXaory1iuWQk1E1bC6vXKSlmOq8qtz/jkkPVMiF7GdwfeBYUPNcdSsReBaJQeL191nosoYYDdmRtwrPs9/2yKLg8IsA3vPKfGfwcZiGblR5tP0MiCOjIA2E6Jgc9hObO1MoF3lcz7qFzA16g2+O9ftNXtdvQMRtRpHX8JapDW/u7xyQnvOavL07OOb6ACVKnJEYCBtZ0Sdttfa/+9OsX7tO/Vd7Boo7ms27AfAj8trqWA8vVr9hjnF2oZ+ws/+AofOn8OE4M/Ad/dAxfiaNYMCvlql+OhxfpiGYGymZvgvn78DwepmhBC3QITemC3G8IpQKgdgqFmkChY9xqG/eISTiJs3Ud6NC1AFVAGkEbv7QC0KjZZ+DXB8A9qMtzFc2A7StMLAXsOLopWr7HNVyKTgbJLiYJHu8w7bjgFWeRixwy+RD7z0TTwCYD6Au7x8LH/wzeXscN3+HDuRObuNU5S7/NJNsiV66eLmVsLufwkCsk86DQZtCojrAnHGc5M3p+9MfJ7ltwpBXXauuUPD/3KUUduIHSOjim8e7HV2iWlIEMSlV2vExlgGqP8+TC2xQBfsvx7LuMSt7eU4OKu4Pw/0Xdo2EPfS6afY6mk3lV1yTnW9UPjEt/iI8bUzdINYHhKC4m+H9/nyJ3D4z+BMFGz+jxhXIBjqgBxuXgXevT/opHK5L8xH6Uh94Ezngfm85gqfMcE6ouhfexTWsc4oVJgmcKobsDYwhAszBCY1m/HJVymEEQACA2yG/Bk0OoMxXR2odmdFeAZp8/jszWrEurawG5myjHVw+jXtf02LFTcz32GSxU4bUYZIi/5zhwmZPDuo0L4JKqR3i1ku92K8lTEIG6Th8IfYwTTtFtLdmeR4Iu4ugYjmzBQBWfkS6FGfEHsIII0UZPXnMxA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f54e208b-0856-4824-8a7f-08dbc0d6c2ad X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:02.6038 (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: xKAgjYLNd4dRamOsz2IoXNsy073x1VTvx9E2+gkK/j4mNrH+h0yR2PpFLdk/qQl/wTRsW/YzIWQzYpKcdfHcoQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 phishscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-ORIG-GUID: t33RmsLwIf1CyjpbsVZHPuFbQH9jaI56 X-Proofpoint-GUID: t33RmsLwIf1CyjpbsVZHPuFbQH9jaI56 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:29:25 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778380905800323226 X-GMAIL-MSGID: 1778380905800323226 From: Prasad Singamsetty Extend statx system call to return additional info for atomic write support support if the specified file is a block device. Add initial support for a block device. Signed-off-by: Prasad Singamsetty Signed-off-by: John Garry --- block/bdev.c | 33 +++++++++++++++++++++++---------- fs/stat.c | 15 ++++++++------- include/linux/blkdev.h | 4 ++-- include/linux/stat.h | 2 ++ include/uapi/linux/stat.h | 7 ++++++- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/block/bdev.c b/block/bdev.c index f3b13aa1b7d4..037a3d9ecbcb 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -1028,24 +1028,37 @@ void sync_bdevs(bool wait) iput(old_inode); } +#define BDEV_STATX_SUPPORTED_MSK (STATX_DIOALIGN | STATX_WRITE_ATOMIC) + /* - * Handle STATX_DIOALIGN for block devices. - * - * Note that the inode passed to this is the inode of a block device node file, - * not the block device's internal inode. Therefore it is *not* valid to use - * I_BDEV() here; the block device has to be looked up by i_rdev instead. + * Handle STATX_{DIOALIGN, WRITE_ATOMIC} for block devices. */ -void bdev_statx_dioalign(struct inode *inode, struct kstat *stat) +void bdev_statx(struct dentry *dentry, struct kstat *stat, u32 request_mask) { struct block_device *bdev; - bdev = blkdev_get_no_open(inode->i_rdev); + if (!(request_mask & BDEV_STATX_SUPPORTED_MSK)) + return; + + bdev = blkdev_get_no_open(d_backing_inode(dentry)->i_rdev); if (!bdev) return; - stat->dio_mem_align = bdev_dma_alignment(bdev) + 1; - stat->dio_offset_align = bdev_logical_block_size(bdev); - stat->result_mask |= STATX_DIOALIGN; + if (request_mask & STATX_DIOALIGN) { + stat->dio_mem_align = bdev_dma_alignment(bdev) + 1; + stat->dio_offset_align = bdev_logical_block_size(bdev); + stat->result_mask |= STATX_DIOALIGN; + } + + if (request_mask & STATX_WRITE_ATOMIC) { + stat->atomic_write_unit_min = + queue_atomic_write_unit_min_bytes(bdev->bd_queue); + stat->atomic_write_unit_max = + queue_atomic_write_unit_max_bytes(bdev->bd_queue); + stat->attributes |= STATX_ATTR_WRITE_ATOMIC; + stat->attributes_mask |= STATX_ATTR_WRITE_ATOMIC; + stat->result_mask |= STATX_WRITE_ATOMIC; + } blkdev_put_no_open(bdev); } diff --git a/fs/stat.c b/fs/stat.c index d43a5cc1bfa4..b840e58f41fa 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -250,13 +250,12 @@ static int vfs_statx(int dfd, struct filename *filename, int flags, stat->attributes |= STATX_ATTR_MOUNT_ROOT; stat->attributes_mask |= STATX_ATTR_MOUNT_ROOT; - /* Handle STATX_DIOALIGN for block devices. */ - if (request_mask & STATX_DIOALIGN) { - struct inode *inode = d_backing_inode(path.dentry); - - if (S_ISBLK(inode->i_mode)) - bdev_statx_dioalign(inode, stat); - } + /* If this is a block device inode, override the filesystem + * attributes with the block device specific parameters + * that need to be obtained from the bdev backing inode + */ + if (S_ISBLK(d_backing_inode(path.dentry)->i_mode)) + bdev_statx(path.dentry, stat, request_mask); path_put(&path); if (retry_estale(error, lookup_flags)) { @@ -649,6 +648,8 @@ cp_statx(const struct kstat *stat, struct statx __user *buffer) tmp.stx_mnt_id = stat->mnt_id; tmp.stx_dio_mem_align = stat->dio_mem_align; tmp.stx_dio_offset_align = stat->dio_offset_align; + tmp.stx_atomic_write_unit_min = stat->atomic_write_unit_min; + tmp.stx_atomic_write_unit_max = stat->atomic_write_unit_max; return copy_to_user(buffer, &tmp, sizeof(tmp)) ? -EFAULT : 0; } diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index c10e47bdb34f..f70988083734 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1533,7 +1533,7 @@ int sync_blockdev(struct block_device *bdev); int sync_blockdev_range(struct block_device *bdev, loff_t lstart, loff_t lend); int sync_blockdev_nowait(struct block_device *bdev); void sync_bdevs(bool wait); -void bdev_statx_dioalign(struct inode *inode, struct kstat *stat); +void bdev_statx(struct dentry *dentry, struct kstat *stat, u32 request_mask); void printk_all_partitions(void); int __init early_lookup_bdev(const char *pathname, dev_t *dev); #else @@ -1551,7 +1551,7 @@ static inline int sync_blockdev_nowait(struct block_device *bdev) static inline void sync_bdevs(bool wait) { } -static inline void bdev_statx_dioalign(struct inode *inode, struct kstat *stat) +static inline void bdev_statx(struct dentry *dentry, struct kstat *stat, u32 request_mask) { } static inline void printk_all_partitions(void) diff --git a/include/linux/stat.h b/include/linux/stat.h index 52150570d37a..dfa69ecfaacf 100644 --- a/include/linux/stat.h +++ b/include/linux/stat.h @@ -53,6 +53,8 @@ struct kstat { u32 dio_mem_align; u32 dio_offset_align; u64 change_cookie; + u32 atomic_write_unit_max; + u32 atomic_write_unit_min; }; /* These definitions are internal to the kernel for now. Mainly used by nfsd. */ diff --git a/include/uapi/linux/stat.h b/include/uapi/linux/stat.h index 7cab2c65d3d7..c99d7cac2aa6 100644 --- a/include/uapi/linux/stat.h +++ b/include/uapi/linux/stat.h @@ -127,7 +127,10 @@ struct statx { __u32 stx_dio_mem_align; /* Memory buffer alignment for direct I/O */ __u32 stx_dio_offset_align; /* File offset alignment for direct I/O */ /* 0xa0 */ - __u64 __spare3[12]; /* Spare space for future expansion */ + __u32 stx_atomic_write_unit_max; + __u32 stx_atomic_write_unit_min; + /* 0xb0 */ + __u64 __spare3[11]; /* Spare space for future expansion */ /* 0x100 */ }; @@ -154,6 +157,7 @@ struct statx { #define STATX_BTIME 0x00000800U /* Want/got stx_btime */ #define STATX_MNT_ID 0x00001000U /* Got stx_mnt_id */ #define STATX_DIOALIGN 0x00002000U /* Want/got direct I/O alignment info */ +#define STATX_WRITE_ATOMIC 0x00004000U /* Want/got atomic_write_* fields */ #define STATX__RESERVED 0x80000000U /* Reserved for future struct statx expansion */ @@ -189,6 +193,7 @@ struct statx { #define STATX_ATTR_MOUNT_ROOT 0x00002000 /* Root of a mount */ #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 0x00400000 /* File supports atomic write operations */ #endif /* _UAPI_LINUX_STAT_H */ From patchwork Fri Sep 29 10:27:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146564 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4041358vqu; Fri, 29 Sep 2023 06:47:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFInDdnS75j2vV92R74MbasPCKomu2cHZ64bOt5IJalwdzeDSlbvsYZIN3QipZuZxJttkiW X-Received: by 2002:a05:6a21:3282:b0:161:4459:c62c with SMTP id yt2-20020a056a21328200b001614459c62cmr6755782pzb.18.1695995232882; Fri, 29 Sep 2023 06:47:12 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695995232; cv=pass; d=google.com; s=arc-20160816; b=REUMdkX3HsAXJlzqANeiWkqvTr7QLAewi1UZXtLKtdF/5q4dOL4DSKhiA9hx90uJRa OffVqwMdUc/i4sBSiB7IXE6ZpK5NRh0vX24NuszcQ3yFzwB5jz4Q7ezuZ+9vOj2m4Mln HZkYz+pEUQJiFpIcpIaMlxzMJ2g15CsgYw4JyHFxruwWM0JVj+byrcN77mUZkp3fXFTj 9g4TQOWzHzRXsB2BYv73W+Rtc+GM5acbh59P/ggrst0/wMz58tK+zNw+rUfQyxEtPYWJ M3mwL+ak+Mi/dVX5cEaJZJsySiMyAjoMkHVgZHRMIWfztDOjJTaxENzaqVqES+ohSzft S7Aw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=KtPTSzdcV8V8QQwAZsysfSVzMBIG6Bu0nf5IFfytxI8=; fh=9G5Rk7kYUUbC45w/ckn1HonTVf1z24D2/EBItJKwYlU=; b=gV0+BzY47a3sQm+CMTcFsGe5STh0JIHieH/nxPUnoxDyJmWYckikKHlt49ul4A8nhk H+mPOVIne6WH1aC3ntmIBKnJWyAGZkbqOzRhicFFC1a2Wu+CXA3orcrE0tqUDaL7ddPi n9xHv7qQdDj1HHCxHBZUGMWKPECQTymmbenjK1nSPJ3m85PJZq3v5S95HvjCqskT5qCM 7vcmswxqpVTbl+IJ0/xV3dDCIlSa0Ia0k7axvbsUNaGGKvUN8/s8Q25Fkj4hVodNU47Y 0jiqukvCgZalx4xM1vgTeYTY05Pbwrk0g4FDPoTat/ioQQkn8l4RCg3pp5rQ2/vdwqBF Mlaw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=fbAcyR22; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=seTKJA7i; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id z3-20020a633303000000b00584d16c6439si10019853pgz.622.2023.09.29.06.47.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 06:47:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=fbAcyR22; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=seTKJA7i; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id E1A1081A7D03; Fri, 29 Sep 2023 03:30:03 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232977AbjI2K3M (ORCPT + 20 others); Fri, 29 Sep 2023 06:29:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233094AbjI2K2t (ORCPT ); Fri, 29 Sep 2023 06:28:49 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7DA46CCC; Fri, 29 Sep 2023 03:28:33 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9Tna022482; Fri, 29 Sep 2023 10:28:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=KtPTSzdcV8V8QQwAZsysfSVzMBIG6Bu0nf5IFfytxI8=; b=fbAcyR22Gc1LEJvKVpaHJe3Q6/hoqm/NKgqPAJ3VFwxbJBIB59xVdwgcDDi1EIb0crK0 6j9u1L1oAo8Mx4E2k0yPeFiFvSVU3HR+ybXL6KHV0t2agnJriPaFry5lhLiyec6EjJ0I 3MscpDiFFU33v+B6zCiUWEtj5Y6+EPRdDxfM/U5+1wYL0t+6eo6Dsy2Bg+HnvOIO8BQm 4B5dtKbL0h0rJ6j7u6xkUwnzSVWDfKTJTyiffLaxm5/3m+BCvTU1rT565m5Jl/flPJpq KiJscQQ3PidyT9p/ddnrrIxaw+mU9Op7I7OfBLKd7sW1lfQwnBXFpy1akJ0+LpkPf9iP Fg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qwbpbqe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:08 +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 38TAGM2H015792; Fri, 29 Sep 2023 10:28:06 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2173.outbound.protection.outlook.com [104.47.57.173]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vku-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kYQT0UCer5IyodTj3Rer5D3z9gJ+fvYvnAXgV1t9tu8BP7XbQtf2En5rr1dGAc1DOYPHfs/dL2wTuJ/f4PS6BSdMKQgDvuEvPuG04FboMz1ePWbtswvz1f25nEHq7pclz9LPiAeEvM/1YNDU8jgVSX7ayPv9/dktezprQc/LoxFHQYY9M7GBBZ33IUmxQ4TnH5D/EdprQBUyrIf3B/xkg997u/2wVcu64be66OyEWrF6o2wbK+Wr13vb8GGwuLq6V7BgmTPnqp3YEKtzWea4ExvU+MayT3QhdFRTGf/owM86mv5aHvA2tEJounlD7tDPGtlBLBYuT158MWE1Y95Jvw== 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=KtPTSzdcV8V8QQwAZsysfSVzMBIG6Bu0nf5IFfytxI8=; b=IISIWmrpMBGdYk6kcfik9ScQUebdswEZxAH2u4o1To0wR2z9WOFqHGz03eFkx+kkxscmQTyZVZs45d6No9mYE5PDKVt1hz4p13qVTomG7/Yc3SsDFW7zk/SiIFHZY6dpSPSdOJ+Is4Vm34LFNWIUZWD0JRBnQFhZs2sfQL2+DLVSu/EDa9OrzoRmyetC13NK+8aIWCw2Vsw1t5Qxc87QNdiHV7oOQm0V2I6adlKc3oWV0cgKVSQMQgvrBuxDQtPDVH0cku9kddnNbALpCFLc/Jjif/fgbO+pNz97zrow8bh00SNB/kQAPgB73lYMwaRYM8Q7/PPTZu3vacMF1X6t/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KtPTSzdcV8V8QQwAZsysfSVzMBIG6Bu0nf5IFfytxI8=; b=seTKJA7iNTc9HVamUYyHNfw7HLcZhQPxRSJYz2bhFM77d+tNF40PhK1gmS8vP5u2WLDghSRFURDdxn5ZeLsiw5plki9ewWEsMlSxapOCxsvIy8kmcEvf2gV085iz6N6URNRtg29Iz6f/Bne/q5hF+gJDA6Adc3S1tyw77u5Y9n8= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:04 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:04 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, Prasad Singamsetty , John Garry Subject: [PATCH 04/21] fs: Add RWF_ATOMIC and IOCB_ATOMIC flags for atomic write support Date: Fri, 29 Sep 2023 10:27:09 +0000 Message-Id: <20230929102726.2985188-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH7PR10CA0001.namprd10.prod.outlook.com (2603:10b6:510:23d::23) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 2caefeab-1db7-4013-d4b5-08dbc0d6c3e5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9XojNLjQp2KOQcAocMMe8sZveVdkIUVfR7l1kS0pLwLGm0sj9TNH7IgItiEfzsbW0hwBPda6pEZs3JD3rRWwGlfzuv5FMZwWmOR6M/RJcrqI6g1bUOsLLH0z7DqoIlBexi1ZwTCMEytsqZ1WL3OPcZQeHbv15tBmr21xliorQEpZl0tO1b1v74QOa3xT0Q1eNVsLTt58Iy3l53HnERdXBL9jrZ8ireZpWp6vJd5c1WBwcrbNSQtKlWr/eid7buzWfGHUV5M8yxxhIJjSDRQzbSo6omvoOavA287w28p6rOBRg/oWtMq2cywHfNnjBZrOgMFu3P4uSD3x/U3hUpvjUmmyqFRNIIaEcYnaVJ//GVY3VjLvy0cFfg6NFc4zjVOJ4qoRFltO5iHIG12R3c+G3gAYQX1w4xoKm40zNTfGaebWKcL4Zs3va0uHDjKzoj+RQfnvEUZHMEneTq3bU4Arlqnd+OXmHQHxKe6OeZdFuhw4Yp8r+xS2i/1QXn8TB1l5zKDwP+bm/MwBFbIK0j4nkvw8BgFhfKu05zQco5wIeE3U9TH+rvhoTM6Ob2yERVKINhuYDIpv2vNh7SQ1h27OOO4CNh/iZrNS3b1iYEv5Sx4= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(54906003)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WIdeYez5Uw+UAKTrFEnomzrdo66dNnWBhwAP1CvfJb4zLoS+WvzvueuflCgoaHb981xbWXSUlmjz11QkC5JbSZV1sVZThWst8NpavaPhn0WZU5vJEWAfCKUKq+FPZHaGjhfRDTCcf6hT4Bv6Pp96bYSj0FnBWreLocSnyVwqga96wcorURdnGZyIZlVcUGC86biST+hb/b+F2eNA326251TUTv/VKcnDe7/wMw57hgMVxT+rw24bHd+Pyw9M6rgFhfvfYOwYCx//N0Q20KYdIA+e0Idn/2iqHHD214tfgaT55pdM9NP0hjMqLVk1DxQbL2l/uStHLDZ7bHt/1yRwNZ3OFaBhDUGg8rmUNJ8HxbS8bE6oBf8Y1XUacUjx80mQe6mX+dLt+YtPHXpF9dZDo1HsDDQ0D76hfG+LnHd69VOhM6gbu8WDzVKIm5NC1aolmishV/jn3GiMrwRCvxf58tiG0yUQS8X6y+r6a+GLvUTPFN3PcKxTMpj4uB7C8OKWMnYgQPVu/5enIDIbdaRibzR2v4s4EYjoylSTuSyO4GPOTgPuZso2VHVqVtkN0oTMYbcGGx68fY9AXreOgCyYUZ+L91ewCahcg/V0ctLMmZwBl5vZ4upJsL9UYWIlZwedARdvOY0NeGBIxxGZDWgoxwv18nVOtrod7vB7MxPoTZrNPD6fBVxwxLUO6e4eC860HPbj4UaMoC3d32Gg4SozQi7vVuFMM1t1C7VAL/B0dN1/B3c0tio2InrxVyEbpS+0EbMu7HQXVfIfskfgHqx8GTg5UNjB0mWiJjWA4p9Ld94ybz/9GdDKg7PXAt7Psargyj9d3Vjgyl1yjGLylXr74LitIhoN79BarvzMiHnBHlxex9/vR4aOmqaRaFAdZ95T0kWfBQZ9hi1BSdgqPgWOKIvT0wOxrhEUioBGudJi4Xz1rZCxHmMXE7rzyaORkBwqbNDunUQ/FF7HOLWEHZyxWJcd+EEzAu7eA/a4yJU7pVPcepPIpsYLt5yurvXxpT7refFlJjP2ET6CNPFtFfyrfWIul2r4YqgQfS4kp0x6ptgHERy3iBGrZh6D1kTuZsQeQy0MmN4iOtdFvrLtEV6rbdLkBY9PPoOLnXLc34b+WXkQrcXXAiMxkLdZsYrfxvsN+GsCgMJq6y8M80UJ0Rg4g3g1HsnOFBDWdlvHbcWAL6yADbrFrWBiX9qrj/Rdt1NvMV+IgU8P1nsgAOz9glmAxbsRu0ZdS4lo+uTetVDvkO4QjE0JCYcxnZggGLNSZmYrp+XUPPIwfxaFyEqGNoZYodvZeWDE8VIejsaIfcIZSpQPtha/ryUyCC2uy44jlkHfX0IxUceEB4v5HXi3Oip98Q3uGyxbQkkcToJqDh86CbzS4KGOwjxVgTfvtPPq1Y7HXrMETRm4qiX0/hIcaZ7UEshX2RVK/sRdhVlE+JEuAsmixfzHd2XIZUjN+qdmvocu1jIWIm2z2+MdGcuOqdVUeaagHo/NvpWs0MW6fuB8JgDandY0CHiwN9Na8PHXx6s+0WIgX7Yf+8GEtPmVePpe63fdfbowJN36INMLiPUopDbW7oDIme4VdpoS+luIJzhRR+xOyYwIr5X2wJ7JAg9NJA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: fwzMv9JcOmV/uMdFDZGcDqpTF5evxOQCqYsWfZKnczierXtTYGpRChHQzpxIojUjilwvnhzm3KdgK5xWfkr7R2CwBx/Dr1TKsrBxG7wHOO/X77M9xsAKLa45PNXHZ0SCpkNpTtfzzOHXhoKURL6QjaGbBAuEcFIaqkApx7QkkK6Kde89mSJMsK6Io9FPmn0pz4+BQRuKitcURiJQysDp1lQOvGf+9kPaNFUEY4P+OvrPDpcEMeCLw7D0jhbvUKa/u8Zj6bEHDoGNJeDsDa52lYFy+uKUcj2d0kKBybaGJm5+UPNqVdj/ewWFydtyzhCcyoHbtkNnrO70oXZ0YsJ8V2m74QsNYCl2PqSIvEX9u+sw66nKp5p980nnTgsLvHRSx007pHLV5kXQf7GkfhLHIMT2NqY37h86UKDfh4BG+tpEULKUdISS8978w+0XDcPZcTR4jiXwXBPaNVojTah8T8/nUrWvlNzYduVB68yKaSnIRxkHmmTZpU1YEKGuvilp3aDen7awt+4h8Z9n5lQYTdVSzlndY58OwY/Z5MXSzaceOrPZaK2agq4se/NT6feAO2JH9gw5ARVTZ5fEtVKJUm63/JO1h7Yzx4jwN5rXagzZ5cM4ZVjUYc0FMU/XwiWOUZ+BfdZ6a34UJOZWq3g9R3Be3evdR2CKE+Aa+p3T7rdycmlU8e3eRu41QvgcN+JzYBQO9BG/TBq/TqQ/gZRiVWzIjEYKzjGu/4VhYLnaEzHNZ8qnK8vhUoH43rkghir8nhzr7l5SR/qynbZUuxVG5qUXFPo+2N9vBJwRzKXBuf4BLyWkcVPoOszLEmrsRpbEAE/5eFbnCyUaqZ99GAdXayCclEXh7Ky5A/EouSYncRKGV+se3dDxN5DoWLICxfM/qTsB/Cb+CutyvdrT82TletU6p5i/5Rlh4l9LOsl0KnN1U6M2LTKoR8en3fcQ0Sy7c8EhltxswRhrbeO0jAto5H21DLyQhcNxmbhqJfWXxSu/n74OjQt2mSVFF/BO/dINIMjmXe7phaI6+BLhrEVVY6ntQZPOYb9zb0b6Mbc9VS3SK2pV6/RThz55fvF/E+iXj+zAxOejIhNgf7r0zvhDGg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2caefeab-1db7-4013-d4b5-08dbc0d6c3e5 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:04.6919 (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: /H1OEu1u3OWtgisvEf3u6ziR8hG9z5qbkMp/okR00K3I5OmkiUUj7sGKwscMqqVA387xDwN+kRcFVDckANa4oA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-GUID: q17oT2fE9g3F2plciu8-Fk2NJ9yyT5FA X-Proofpoint-ORIG-GUID: q17oT2fE9g3F2plciu8-Fk2NJ9yyT5FA X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:30:04 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778379897463732392 X-GMAIL-MSGID: 1778379897463732392 From: Prasad Singamsetty Userspace may add flag RWF_ATOMIC to pwritev2() to indicate that the write is to be issued with torn write prevention, according to special alignment and length rules. Torn write prevention means that for a power or any other HW failure, all or none of the data will be committed to storage, but never a mix of old and new. For any syscall interface utilizing struct iocb, add IOCB_ATOMIC for iocb->ki_flags field to indicate the same. A call to statx will give the relevant atomic write info: - atomic_write_unit_min - atomic_write_unit_max Both values are a power-of-2. Applications can avail of atomic write feature by ensuring that the total length of a write is a power-of-2 in size and also sized between atomic_write_unit_min and atomic_write_unit_max, inclusive. Applications must ensure that the write is at a naturally-aligned offset in the file wrt the total write length. Signed-off-by: Prasad Singamsetty Signed-off-by: John Garry --- include/linux/fs.h | 1 + include/uapi/linux/fs.h | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index b528f063e8ff..898952dee8eb 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -328,6 +328,7 @@ enum rw_hint { #define IOCB_SYNC (__force int) RWF_SYNC #define IOCB_NOWAIT (__force int) RWF_NOWAIT #define IOCB_APPEND (__force int) RWF_APPEND +#define IOCB_ATOMIC (__force int) RWF_ATOMIC /* non-RWF related bits - start at 16 */ #define IOCB_EVENTFD (1 << 16) diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h index b7b56871029c..e3b4f5bc6860 100644 --- a/include/uapi/linux/fs.h +++ b/include/uapi/linux/fs.h @@ -301,8 +301,11 @@ typedef int __bitwise __kernel_rwf_t; /* per-IO O_APPEND */ #define RWF_APPEND ((__force __kernel_rwf_t)0x00000010) +/* Atomic Write */ +#define RWF_ATOMIC ((__force __kernel_rwf_t)0x00000020) + /* mask of flags supported by the kernel */ #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\ - RWF_APPEND) + RWF_APPEND | RWF_ATOMIC) #endif /* _UAPI_LINUX_FS_H */ From patchwork Fri Sep 29 10:27:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146499 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp3953194vqu; Fri, 29 Sep 2023 04:30:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHVH3omSTfGzAGnULkO2mhuXHzCONgFs+uxYSfvwHbTHMc0eZE9UaB7P2v7qWbflsqzccBx X-Received: by 2002:a17:90b:701:b0:274:6503:26d with SMTP id s1-20020a17090b070100b002746503026dmr3558598pjz.33.1695987034846; Fri, 29 Sep 2023 04:30:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695987034; cv=pass; d=google.com; s=arc-20160816; b=Ygj2UUpt1hZ6fISvRm/ZAaJat0fTef1OebOwtwHMy4HPoh+Mwh5Yy9JBJa5dkUq07E kTiROw8KOH0dzQsx5WQLh4kEB5VHoKyewAXCw1+BCi65eb8TWOr7GRszz7kgaw4YVyhk r/MpHCDSMYGlWcdO0xw++HuFeAewQLT1/B6talRDNefZuBPyzByLs19zekCK3GgsuvCQ mQbNE0rN0dHaVjhJW8qVzRsORimegRRYCjBMAeVR/KcMCHySnIJW/v79ikl62yqyVc4e lo9XMAemwOMMaSyfFL7h3AiXNUwpdk9kLRH3Fw+ofc4RYQP+N/K1go9b0qpDgXSie61r qULw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=Hh+sabUZxE5t2AiX2F92C3C2r0/XAU9GCIRsPHsFTZs=; fh=MjJbzGx1dCrA0aAE5qK/fTc7gesf1DO9f62YgRmgdTg=; b=NeOaSgg3hITNtPxmeGl4Riycv6TJzYbLmvVbXymq5RUywFUzwAndQw8OrY7HHptEF0 bNIBWDLPHA7MEgJNjJbXMuwJkx+jIp2vaOU/5yualjfwhqU1fTjbDHheABYDP7zRQq// HGR9uCk0N7rSY38u7gGRZLbDocPqGo70cvl5qk6rdMXWiCS3yfHkYoGdOELXi6RqBiyr A72kYJp5ofiSsosRwgc9xYRRpE1ICzsjfqMeBPOaxLlKgCmNgkR6x+yn14Ra3X15cKHh 8amZu/WTqEm/DJx7T7BieX1LfP2MOs+1iDPSv9IlIZFf1mwj7iq0L4k4XwDry4RxyATW fz4g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=Gma7xSSZ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=YzglmD9q; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id x17-20020a17090aca1100b0027749a1fe74si1348641pjt.182.2023.09.29.04.30.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 04:30:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=Gma7xSSZ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=YzglmD9q; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id AE612836E595; Fri, 29 Sep 2023 03:33:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233204AbjI2Kdc (ORCPT + 20 others); Fri, 29 Sep 2023 06:33:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50424 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233179AbjI2KdC (ORCPT ); Fri, 29 Sep 2023 06:33:02 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9F4E2D4D; Fri, 29 Sep 2023 03:30:54 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9Tnb022482; Fri, 29 Sep 2023 10:28:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=Hh+sabUZxE5t2AiX2F92C3C2r0/XAU9GCIRsPHsFTZs=; b=Gma7xSSZfduChzJi3RPPJ+McYgYEzaknUCgHEPQgoH9MKFurBqYn7/k5EDl6snbG51lq E5+vTypnr+dZd0WU+PeS/N+U1gpzYLsX/7t6x2D+5mlc4viVg1axsVpc3QrzSKKk5PNZ 2Hj1V4DKBHagRIAuYdLEoVQYIIPYsYL1/+0C5epfKzQh39IRS9BwUsRAj3AiORcyF5cd r79Jz5yIbwfRZQLTWcpbcxoPx3Ld3YoJeTLwtcP6H1ylmwiFHUeDjG2g7vtGFniDgeeC KlpjW8n6ZYxqEWjnJbS120Zr34YWVs5iwhUsOgkDsnXXt1UWgAlIYqyBtEeMoS9yakqp Xw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qwbpbqg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:09 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38TABUBD013823; Fri, 29 Sep 2023 10:28:09 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfbmm66-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YqqH+lRomskUYQzXI1b2vxADsKcHXpGt5Ih2pIC1JMRqRv0B06Lh8nWjrZ7dIqO+6PmaKduNRQgMi8mnSLIwXb61u2ibGww9tzLPgwc3QHe6fXpvM5JjEbHZthOc5reVKmxiJ5z0xrQlRJDbnYXkcMAH78b0K5cY9U36q+cwuGrTuvT3vKB9+r80X83CfjMSIGinGBiugjN+3trRxkrohsoA7fK/qJ+Q+ymP1gpmapkUTXUv+7tKPjMiL85AP/Nnqzkft4vn28FTeQW+wZ6NZxsX7F/ujXHUG1hJBb8+NcfalREODyHGL7iMG+aeLMTVtV/q1ituDe20mctU4odLvQ== 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=Hh+sabUZxE5t2AiX2F92C3C2r0/XAU9GCIRsPHsFTZs=; b=i6EBr876oZKMm2pYB7+bbtRy9x7In5IqWu7vvFbbZsPCo9WlMdpSl/CJ2lxMrMF8JaCq0zKde0Jg+C7MFW5K8xHyQiEM4Gt0+a6a+D9J9dmC61eYLR16OoIK7A4VE0/G0U5+fzs8nT+dWqxhwRSKqHohEampr5/fBT1YUFSVJv9nmrTuuEf6CrqU9ooKE1lcLLMVLFYExBQenXHNm1Lkde1iBk/kwnSFdcquJoMMZtg0oUdPLMnRQ9V40/nFH+FLZsadEknInXmMO9eKk5pk9edtcHd8VRkKW3TbgR9618wZQCQM/YJD5O4mvkahK2Oijx8UJJGiYocJB1HDTw1AEQ== 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=Hh+sabUZxE5t2AiX2F92C3C2r0/XAU9GCIRsPHsFTZs=; b=YzglmD9q30v9imVn5xBhAjMUEMZ0Bi7gtf49lP+xTlcIX96OdCaPkYA/of27r0NfTndygZz3E1MrVhRhhLiNlYpYqZHeMPDO3inXODaq/CLp47fpCHMy+fyoC2glLKRasQkD+79M495ZPnyiNjvbbIuCdZk8j5eO9bABdTcTQA0= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:07 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:06 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, Himanshu Madhani , John Garry Subject: [PATCH 05/21] block: Add REQ_ATOMIC flag Date: Fri, 29 Sep 2023 10:27:10 +0000 Message-Id: <20230929102726.2985188-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH8PR21CA0014.namprd21.prod.outlook.com (2603:10b6:510:2ce::28) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 23b4c389-a7e3-4d3e-b064-08dbc0d6c53a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JxgFImOCVtINpTKD8krUJ7umirg4r1OibYnawZ8zqSA1IZUb9P1xYck0bY3GBuDYQFqKWGn9jvFnos+d11kB+oOFVdsQDVz07m/tZ8o49u9BrvIofo3xXETeurUB/7ArJ18LmKjYzH4c5cgBPciNV5pvtTQ695E6S2zs9C6XhmhIXVMUmEniXQFa+fRVoJCqQNmQYlZ+zreCs6oRdE7mtLrp2+V67GGwfefutoIpIgdXl97LYcAQh93sM3tv1xzLSYeOFb9hk5Ukw3ewrQA2bjYJGaVpvPddOTjZ36gqNpW5D/MQxlYMeK7envG2gVt9M3QFcQB5Qz5XHxh+9w3wGDOKXGIinZEZaZo/tuUqYbGhB87xu2fpU8kYJjlgSkwBBnrbaU/Uin3it5T4EOtrlMZF+RG5RyPpaQcDCyfnRWdIp9yHDKbf8vEu9o52NkDOq7uN/9DGjoJNu7YjxJpaReJgsaG7K6yThykHs+XCy82a8jOlcrr220WGRrUZAZJZ2a+4gf+nGjttMGorMQh5mt3HhpjcDQU6wir1WrFA5AKw6YjfF/p5PSmsjZ/q5HeRlLm2FZyKJmtNybzjNJ9KZ1bl8q/Mn0RtWdn9egO38hA= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(54906003)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xBadnKgVVmU6/v/HZgKrBwHVv447xrhff9ygR96b4kmAumXF/uwI5onc3GFwTTrhfi4xpZ7mcXok1cCKyT6NHqfggIGCy9ubZsl/DuFzgF2N18JhoTe+gtEv9gQqP9poAu0MEzV0HacKdV5GbZgnFJNZrCPdYMHlVYRe1px9TLGGSSawvrqjtevIqh1s1O3Mb+XorKJ1EwQb4MI7Y6vHYwmALf+EM8PhAthgNSuAI4UCd0sU1o30S30roaaXeJrsnhYNBVpxd7+lypvRIiujWYQLROVaLPf17k7+Bjfzs4qVzj3RPslvz3BVe2h0KMShcxHiImWHztqZEAU0XZJ5e/pyS06pEVwjbIylKKjEdlF5ZNLLCBWGgA0/hkvg0THDxeL+APKtHuugU9Pw9xC5iS74x7i2egulfY6q30k2VcMXCyUTLEk2klLR3Ijs8bX+uKDQZ6Xv9J79U71CyRlZ4MzAbXPoxCr5/HAcFchP9ZF60nW7qeYfezryuxc0YBlmPsyG0FQ9BVgMeeVUESoNRMPJWRPWcQxRaorlHpIqQHza99FXjinRs+vaaLs8ETM7bNCva8q6CDUZPaB/9/l4iq3tL9Ye73nT4imAB6XVb6df5pUWjnbV9vgnf6tpu4YAV/GWgYEfeiEuM4SehLjd4/irKZ71Xrdi/2zxrIqHJgtIeDoS6K1jxR23MqCZebqRWK2XqFRgEkmD1/OR/2zc8qTXitrL6URgy+mM+HjkNm4eS93M/KVb6GkhWkFXE6HfeN1jW35LV6wbEAEWPkweMDPR/DPSBJqHM516azgX2JUhfEHnSqAHX+H1+xpEd1UyHSBWoU16zUg8O2ok3J16YBB9CwAM0HtvcEO/kyR1NuRpKkUPIY8SVcD5M2oPUlH2i1PS/VjUgdinqCP2uSi3fVl4CmjlKoBCxH3V3gG1zLzTdKPRR3lVKHqNRbqMavLISR/uIyWSvvg2w/L8L2Q/6l1BIWDa/MjL8ZRe7RqtJjT3uyMM2G/srhv7Romx9OoytIS4NzD0PLKnqEyhkRHqxOV65yjRnp1llmw9v5EidZTq0L20FByS/LjnF7h0Q8QuoYOxLXn1jmrelmFoqsgUIhT1TZMDdweZ1jqqX4dJ4olhCQbZ1nlEwk6J2dlGb6uAqXVCaB2zwV6KLkyaNgkGINXbnkTRg2TW6QyjO4bcSYPzGckYKsjwyEpMIXRKDYZMyW3IUyJ4au9b0qhPPpbW8LttHcUCad9c/Fl0dXAGULyRLiU3B7bxeSpT6pb9nJc8JmY9DdcP4K6yNQRUqbfJjHJAX3g/dHvC2ef5kw5yNVENX6zshQJLAKpE7rW4r0xbCyyKKaULZcYAYTmJlOMulb+kgDTyXyW384lvISc82igcWREGpTawIm2g/tum3cfR62dCq6ZniOQ+cZ0wBsIgWFmz6Bk0s0yhhu3hiMsAfqpkfRVzSesB7w0RDFjY1r0cm6/qMMJbaIkS8HlWl3C41Y1JcsGRqXqABPajxdcLFN6wHQwtRe44rK+cIdvASrQ1NncP9zBVRYVA8MtLX7lXuOEFURQmMWfDqBccnd4QiVsbzd7FMcYVjFDoClr2Tp+kUP7rtpM5MV3FU0rJjAndfg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: nR7/HShnQuOC3QSUT8MdW8pYTtfaxWzJHFAAUxj2tDMrgj7CKAXk9l27HEJ5kEt5qu8/2NMc3ur2kUfbJZQiNw7ilndfbz6sB3BHMbNhzPE95ZKEyzo9xS7UjPWu11WQUeNR5ml9m1eA5+E0WpYZEeObhqwvc47BZcFjnG8X2gSK6cF4D1uRu2BQO7fp1S0Nf/8PyOoz90rjWsRiZRsLl22SmMgY2jp5pXccOsgTkk259M7paskua+eR+gKflemYQs+CNfC1vtsKtYXBZ659IQGChfaXry5N0TeD+AwIXYL8ggY2PMMcE7nfGbsqBo6PcorVJgaj7eKkro+b6Djv1dW8reg7SyZFV7ATElJJmYrjGxkpBWqrizlXwq0vs8MEXRxTDewCmDEemKzpjiw62AEQ/NieTANaeb6/aEEhUFJbc3Ejb8d5tUfo8MELTEpmTdHE1xxO32OiFlqtQjTOY8QPelP3c3WXzPHDdGcBwt8tm4pei7qvIr2pDtczQQ+izWZGKI7NTngJ9BHuKdRTt9jvhvaII8HmdSb37D4lATny3ko5e3ENeeLrTUY/0uKc623FaqxeAPQtesanf+dH7HpmhaWb6YF2YFpHNp5uYIVbvYNyWBiWTF5WvqADTD3sBjEQtwkiKtyIgdwmHp1sx/Lm452MA67BEOvHax8hfENHEdiuRFvycWQyfCsxG7Cv3iyODRZ85IxgYmbzRURFJcA76p3qETsXEF7wtvh97rHjoOqydF9ANc0mbsHXrEr1829NHluxPBdraFkw/UH8tEeT1DxzwY4pKwPm9XSDEl9cRAp4JHdrTYf2S4maRnBNYVaNFqUIEjiUqzvgbmiPL239oSRnd5vkO1Bae4nTWbFWFgDd7T/nwPh/Wa8MMdIB6nib7p+gf9rErdS3nGp0/ZaNfA9Z55+67x4jRp1RzbczbIoZgmtT9uzjmKHee6BVL9VWsmyTm+eMLlJGPD1J0nCqfl0OiIAwSdJ+LT8jAvMrQ2InnH8sP6F9770O99Qxteu+kR2RptOa9Ml3irtwg9qFVtAJZgI+Q3mP94xg8rH6CkpiLteghnrmIR9l8c8R3ocGbpILDGbcdFj9ZrqoxA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23b4c389-a7e3-4d3e-b064-08dbc0d6c53a X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:06.9383 (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: RzRdQidvWD+zsF4H4LryETgguHAhOwzkxCFwi2lrbOO0h4/FfxXc/zxX2oSNuUGShNv47h0zGZ/RGJATXS9pqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-GUID: GNX09taFMZ4gaOV11LxQ5sjX4Ms9OD5G X-Proofpoint-ORIG-GUID: GNX09taFMZ4gaOV11LxQ5sjX4Ms9OD5G X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:33:54 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778371300974537786 X-GMAIL-MSGID: 1778371300974537786 From: Himanshu Madhani Add flag REQ_ATOMIC, meaning an atomic operation. This should only be used in conjunction with REQ_OP_WRITE. We will not add a special "request atomic write" operation, as to try to avoid maintenance effort for an operation which is almost the same as REQ_OP_WRITE. Signed-off-by: Himanshu Madhani Signed-off-by: John Garry --- include/linux/blk_types.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index d5c5e59ddbd2..4ef5ca64adb4 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -422,6 +422,7 @@ enum req_flag_bits { __REQ_DRV, /* for driver use */ __REQ_FS_PRIVATE, /* for file system (submitter) use */ + __REQ_ATOMIC, /* for atomic write operations */ /* * Command specific flags, keep last: */ @@ -448,6 +449,7 @@ enum req_flag_bits { #define REQ_RAHEAD (__force blk_opf_t)(1ULL << __REQ_RAHEAD) #define REQ_BACKGROUND (__force blk_opf_t)(1ULL << __REQ_BACKGROUND) #define REQ_NOWAIT (__force blk_opf_t)(1ULL << __REQ_NOWAIT) +#define REQ_ATOMIC (__force blk_opf_t)(1ULL << __REQ_ATOMIC) #define REQ_POLLED (__force blk_opf_t)(1ULL << __REQ_POLLED) #define REQ_ALLOC_CACHE (__force blk_opf_t)(1ULL << __REQ_ALLOC_CACHE) #define REQ_SWAP (__force blk_opf_t)(1ULL << __REQ_SWAP) From patchwork Fri Sep 29 10:27:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146624 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4113593vqu; Fri, 29 Sep 2023 08:21:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGd3paanUEfUUK/dVoI3sYK7icd7sHqzmtOkYTEuxoLZp12rOou//zYX7bPHOkSmQU859G1 X-Received: by 2002:a54:4711:0:b0:3af:6595:e53 with SMTP id k17-20020a544711000000b003af65950e53mr4770690oik.13.1696000912113; Fri, 29 Sep 2023 08:21:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696000912; cv=pass; d=google.com; s=arc-20160816; b=vbOq3VreN64PihUF3oh17rGcIdbMPJbrdJSyCr7AAUHoOLBM3qQBe+Ge08lj/rS6IK CJbXGu2Xh+eYXHAT8mJbEIACNeOKkRIFc+ZIkj+PcBcxjhU0Rij4nVpiaORFSY7EUfCE kc7HxiWDOt88ldv7JsnA8OIGC4EZhsqmEVIg1iVXV6hZfJ2Vdg5P7HwKZagXEYiNLnkN ueCxp2yWeF5APb9zdc1We5SRRV0bRF9la9VkII1w4LDENV/mtDPwBxr71A0Wakf42KLQ wcOIZ6U6JZQ7smD67/hgWqCcD64gHWxZVNHRcNlBz6nWHxjWgpbhV7SkpXK25Xh4A5Ao l3Cg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=tPL7+u6xDDgxB9EABLArA1FPAVoUubruW48wl7gOW+k=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=P3ckPe9+DxMGypFh/B1eihtdb91OcMpttv+g/V5wMBzxvzLx/DevzMvhN+s2wJg+UR /o8tBZ+rY3oY8Y85Hvq9ZReAUpLvCT7pGoZyVnBxvEKAO5B/qQTd15jkAKxBNdrA7CWG /9aPzpc5Wmj4mNE5JsjXCPb/2+8laODDf4GSOrTYyM5BFilCGhfHPi304w2HN3wL0rQ8 5sKA1edN/0Edlt17xeqa4gYNgDU6GB5rGuCTumtohMyQv4W1+aHSf+8PaGN1/uKonfZH 3kjExR36H6QM/1QSVQGKuq/x5cuOTexGsf2Rw0XpsZf9VMkHqkcuk4ijwLPyw2TStiIc p4rQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=xqZdfZdi; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=yGTAlhB4; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id t184-20020a6381c1000000b00573fdbc93c0si2287899pgd.892.2023.09.29.08.21.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 08:21:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=xqZdfZdi; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=yGTAlhB4; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id EA934802398C; Fri, 29 Sep 2023 03:44:34 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233274AbjI2KoF (ORCPT + 20 others); Fri, 29 Sep 2023 06:44:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233103AbjI2Kn5 (ORCPT ); Fri, 29 Sep 2023 06:43:57 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8BE3D2D52; Fri, 29 Sep 2023 03:30:55 -0700 (PDT) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9a4R023082; Fri, 29 Sep 2023 10:28:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=tPL7+u6xDDgxB9EABLArA1FPAVoUubruW48wl7gOW+k=; b=xqZdfZdifjT6ibJpJSZbDYr5qvTlg2gEUzjUxZZ9dHUGtdWtQdBnuCbu6YgiCbFGjomy 6NJsA9QULwnoCu12IzeebkW8lC/sLELFEuCi7hhpVAkAfOsdNDxRbR/o2GMeLvCSQxGK gUuFbhPzJIp61Bc47q7YpwGjS4UsOg6BimTCedhG+xYl68UJnn1eK18jwZd5BpKVLCZR v9axkT6CZYE9kKwVmQpXGlwP/mT88fbTJRR2W5pJfoPW5IcXmlvMt/r3aHf7sLFsw/s6 jMPMUZBJ6wrjImynIy2UvTWFiXvflIuwlzPs9Qo85aKxuN7AyKhJGUANusH5Vr02UugU HA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pxc6k58-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:13 +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 38TANkCA015849; Fri, 29 Sep 2023 10:28:11 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vpf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LOZDnLPWl9B4jH7rbsRIYzK0nB78qFN6eXp/YWYDkEWXAIaTDgXqBtEig4q1Q1SHpKjmFAM70HuoJUvNqK+KEWkHPtY2LEPouZy1Q49t8JHhPiP2NKq/qg83NKaVy+8Rp9YuQFq4cMmdASzvjQOAmACnx3xN7X6TVPJ+yYG8Zau0hjk6wQzBEXEJPS7zKiFyMXTey88NtouNqkwkqEa5pO0BE6qEb/Zc5WCmr42EUXcfHocCRAN67KOzaK8ziCzrrQnnacclm+xmy/gBN0Hs62yNtAknx0FZALK7bGYVbq/pcJP6pgHbPlA/1v/xkJDcN6KL6qVBXqEPIImPFV/cGQ== 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=tPL7+u6xDDgxB9EABLArA1FPAVoUubruW48wl7gOW+k=; b=EiRb1zexKxqDakp5cAFRtXZGg/q4Q6rnNqKn7FO3b9zqdPuBNkDnODqCEM0JTyDPzSrxV1pnbAz63Ul1l6NS+yubbuc9GLvBMnBVWRHxXQcBAYWHHk5rwc+elTawDgrfwhftHFXEc+gJIR9b9H4XlQr9CqAKDrBV9Sx+pxJp5byETPTPIwRsNZV5BwuGP1+zToZCkUFzWPjmqo0D70L8TmxhFVQ4+gUH/4gwH0ofhvCq1GECUczySOtZT4d115+z3Jab8hLv6ZtefLXg2pplt09WeffWpw9UAOia2qNpkQLWQQbyoTRzOM/aeuLhpgjTE1l3IXhWs85xc7W6x16T5g== 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=tPL7+u6xDDgxB9EABLArA1FPAVoUubruW48wl7gOW+k=; b=yGTAlhB4yqyukV+OLvh2KNY3DGiplSm1pbF/tVWHQaLdpFP2JHZG6XUIAOSRG78Dz/XMeHmzkGbcnIzlPSWdbOSBBSOnnVbweV8Fzfb/lZAMSkwR04prsWaCwT2Uvy4+jMzCj0wu9qrzr1aKNyV2MoCUh3/u92kI+6BBWZeNYbk= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:09 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:09 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 06/21] block: Pass blk_queue_get_max_sectors() a request pointer Date: Fri, 29 Sep 2023 10:27:11 +0000 Message-Id: <20230929102726.2985188-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH7PR10CA0002.namprd10.prod.outlook.com (2603:10b6:510:23d::28) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 85d98b4e-6d0e-4181-cc71-08dbc0d6c68a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aehTGb2vUA3Xvgtlb/sMl9t1fMTrC6g+7Z57zoz/vM17IYuWwh7Z+PCd8xA6DNN8NynoIO5M8IarhYsjX5TPjHRZ1OcZbta5dwJvBDloikoYqvXKWpQyt6ZBotNGu2QIgrtxDwvVXoCLP3e7dsONK7csEC8fH1r3Gc5vg2ipzkoGNS6zvrz6X8Yrfsxh+m88YO+Xhim5Vde11/yMTqaAYcmKUtb/6CJ6Bnwh/ZRKeXDAEMLwP5v34FnF8G1CUeHoqpQdXjU9nKr794B+xxjGC1Sl6fgFVnKLoVOT2KS2n+5AyxH1AWwOZ9EZGqADeIu73502hZ7+WTMaAH9twkZL3sbK5wkUNkbUhlsTv7qBClP4iboHCv2MeNIlYOKqXas/f342o7Gh4+3XKtHU+Jp3uON2lAU3yBGzSRywXrNZCvzB6frADy/fP6gd2+4GeSRLkOvPU5XjTm7p8KEhN9fDp5aPRJnwYkzqbIIEZNrJf+cGgDgjAFdJnP5GPMoJp+M694GOTNzL7XtT5HYd1/+xx78pP3WPmGDpXLFG+lOKYJwrLESweZZwW/u33KWtrntAOYrLe9YRhiO9XQhntwlYGca1JSJZRuPMFj25beK/Qoc= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ExUGDIH/EczFoc4lWrjlGLt6yKUu9fcBytJ03WDU54akgs1+J1lzD+Uy/B4s+VKFUlHRKzIUF2fPWJ0RkODpNlJHIl4e0Teo2jpyQ7ApA37ymsgi8iOljfmslOMF75PafQeHTwgnMVRZshn4yNBbiGfXBASpxsbWNrAR9zA+xNFToX0YLnWw3zYsaErsAsMCyUYS+3wOvca+D+bSm0wtTZoYk8YbLkm3qnO3SyVfQouHF9dzOTBhk2SZFgC0IhnfsWjbaMglMgYUJUiZwAuZ1Anf3xYsj+y4UH3oe5Ql6SsWYfbxA+hdBGtiEZiqskA/rrqfGnphxzKFYdfKKyN4F43lkilkkP2rgO5KnEPQq98UpdbFPQ367cvygkD+HY/j019Sy5iwgNZY/gJ6SR9Ic8egnk7Et3OaG+1ZCJvyWdOaIsqUZP0Vwgi4IdQwRFv5/BzrjWV+QOv7FJWc/77GkgvZskieIMxU+b/AQeYvwPpoU6ZD92SKhXyBkkIBkHAX9dEPQibB4K+FFoOtXGCTGnfVL27pcXEk4qoWvgmJhptvb/TckUsEqD+j7nxgv4wgMloeKgfZN+14J+3BWUOJ+ZhKOaJrkXLT4DDEPREzdmMFZDiIm9DIMepr9KloKf1PW3Dwi2IFyKbN0yNdg70I/uni2yBETn+qVaEpu2zlr0ivssFNinfKf83tqaeQqlk0OI3IYH958YzmRFn8Z4GY2qCCGD/NMXIfZgGYf2I6iOcSJT2DcEQEduB+2RMPZAtAf0fLNVbRD2Uu02eEuLm8ZdnmQhQVjFFZ5CRTXDIEwRiwi6hKIrGI9w8tW0JPkJBW/I1azE3c7xlsTyqXucU/jhVR7kMvBmgT0Yg2sFDH6yeFwdUSyvgysKJX4ds240GsMpAfd3akVn5iIjha8U4YAz9IW5zwrfkydPuS+L2Y+uwPndUX5ycqu/dyuBzQZase2dZxxlV32YW3yt2TsZN1cTdIoe4ClDWVjQ/rTWEIICshx/7avfvGL8f6HrkqK0nLcVbWCWpID5+74yHTXcpFWS0RTFG4YPDbL9bo7wNqp6UQSSsdJ0PgUi9+kZQNCXCEYzrVt3Ekz5N6gKWGp65k6hNCYz91pmS6baLVh5dHb2c6z3hytG8UJ3upb0Of+u8RKjYpaq5kr5fllo8YNgJOwP9EVXsZRJIL75/KaDSAV9LkpyvWNwR6WgrjTvUp29xCfcZGhhDos3I9BEWNmcIr7G7AUtzdZ0PnqRVtb51pwynYVX3wwbD/NZEKTEE4NuRmYUnegRonJYm3gK73nnxxe/0UzcDFnQg6cUWBPVVqVrYSp20LEaF5vu4iMvynOqAFrTPJ7BSluioaLwmnFOeBocVFr6L2OJcHfo22Z8KdpinGdWGb8zxVf/wdaqfObKAr9kpr0ksd29C5pUwLNkUpDKv1GBKnnt30Rf8/EThzkjVZy4k0vgXy+uUbo+RbMQpI02DsJdBdz5RB/JA7pDDRkyfLq6ht6xNNXT4zZkLvMmcecKuVlNXam+MZIvW+0JxPRi+1j+z6iS8phY+F2tWvDMmqGtPwkP3Vc+T8ZN136+m6vjfcYDAVZSMDper2PP5nOqZrgfnx1qtZoun/WQo3rw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: v4CRRh4k94ym5UGSOuJ1qR+KMZYInySTkpp6TOG9d2XE4+VR18z78T1E/6D0HHcwsEaPxGYyAvvz0mXBAEg/DodABDBc8eDjlgV9Abjv0OnRN/fWyHgv7M0pi+gGnvLYMAg/nxI1TJMxOhvMacZ+hsJhZUnrn6hFrMWQiORRBN55pal0DTKsI62U8i5rfmfZxO89+8VUCvMA+K8JXOfJtXnewNzMK5g/Fbz2WcfptCjtr2VO+b/so9aUN+Q7S61uz5og9vSQ1Ub68kMhtZNbPGKfK45M5ueCZ7s67QWic4+q7vTsdmitNCdAJB3Duqqc87qjfaYrJmhIM9JPYOh2xG1U1ApLofOFaaeumTscfkjpGLSeUbfzgVOl2JPZfMaafgB1LMhIRh9ul7J54s53kvDFU9ktyWbEb0i8JeFZuQpE203eUTJGWyJ7C6X3524p4oPSXJfp2pmPsm5V9ga0FaLxQV8nQxLz2SWqLasbOzF5fgmmciyBeF8s+2nKHRWHAmYoeG/uN3MRwUnyK56bszQfIVAsmKiT1PyTKltuCmeErZBINLgeT+VQlHkDgcz5G5uAL8Zq+5OBCmNM+QbJ6wm1K4bCZEFRvo5buhBRWZXraq+mVK51XddcQ70rkP4wC761HORYvKvKiBKWYfCG4+uN0W6xjQS8JaJBNR9Rjmb5Mgh5uBHJrW2sfpk2ZRhB9ieOZU+XMYhFLvqsr1JolZp0iDGtzf4Sgl54s0id+/B4LoripvxC1kq2eORtzrTGyMsMbKbDM7KGnx9Gfqrrf5/h3gpraWPdp4djXkK0DXuaWgssOl3SduhX9kO7re4O1ouylxbGqg8C0h3xMvVr1Q1O0w/M2Qd6HrUlOwsy5fCEDNkOHdnrSKzu4SFg7sRxiZmxkrcMH0Oa9cHTR8PDE9RqT70C2WDr0nNSbMHDapKaTmjLF1if9eqvcGQryxspvZ74QdnLkfL4UK24IhhecRn0920O2e18DpzKCUd90QO9Nzck+RwhsMEYBngPHO+mAx5dfZlZsDdPXTDurjVcB0l2epzfyD4O5CqwARDT8F6xrtlXqMxHscIXr6zmgoCy89G9hRAXTiY9IpUR9Xw1lg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85d98b4e-6d0e-4181-cc71-08dbc0d6c68a X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:09.3448 (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: rug3f4/OgGNnTD+nnSYVuitwda7y9+0PW+8hmj8wdpe6KdU2PCf9ddB7o+u7lOVWb9d/YOiOyvQx7E6i0G5+xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-GUID: l_TcCT6UQQkf77YA7LaM9UHM5Orn4nzT X-Proofpoint-ORIG-GUID: l_TcCT6UQQkf77YA7LaM9UHM5Orn4nzT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:44:35 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778385852278485179 X-GMAIL-MSGID: 1778385852278485179 Currently blk_queue_get_max_sectors() is passed a enum req_op, which does not work for atomic writes. This is because an atomic write has a different max sectors values to a regular write, and we need the rq->cmd_flags to know that we have an atomic write, so pass the request pointer, which has all information available. Also use rq->cmd_flags instead of rq->bio->bi_opf when possible. Signed-off-by: John Garry --- block/blk-merge.c | 3 ++- block/blk-mq.c | 2 +- block/blk.h | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/block/blk-merge.c b/block/blk-merge.c index 65e75efa9bd3..0ccc251e22ff 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -596,7 +596,8 @@ static inline unsigned int blk_rq_get_max_sectors(struct request *rq, if (blk_rq_is_passthrough(rq)) return q->limits.max_hw_sectors; - max_sectors = blk_queue_get_max_sectors(q, req_op(rq)); + max_sectors = blk_queue_get_max_sectors(rq); + if (!q->limits.chunk_sectors || req_op(rq) == REQ_OP_DISCARD || req_op(rq) == REQ_OP_SECURE_ERASE) diff --git a/block/blk-mq.c b/block/blk-mq.c index 1fafd54dce3c..21661778bdf0 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -3031,7 +3031,7 @@ void blk_mq_submit_bio(struct bio *bio) blk_status_t blk_insert_cloned_request(struct request *rq) { struct request_queue *q = rq->q; - unsigned int max_sectors = blk_queue_get_max_sectors(q, req_op(rq)); + unsigned int max_sectors = blk_queue_get_max_sectors(rq); unsigned int max_segments = blk_rq_get_max_segments(rq); blk_status_t ret; diff --git a/block/blk.h b/block/blk.h index 08a358bc0919..94e330e9c853 100644 --- a/block/blk.h +++ b/block/blk.h @@ -166,9 +166,11 @@ static inline unsigned int blk_rq_get_max_segments(struct request *rq) return queue_max_segments(rq->q); } -static inline unsigned int blk_queue_get_max_sectors(struct request_queue *q, - enum req_op op) +static inline unsigned int blk_queue_get_max_sectors(struct request *rq) { + struct request_queue *q = rq->q; + enum req_op op = req_op(rq); + if (unlikely(op == REQ_OP_DISCARD || op == REQ_OP_SECURE_ERASE)) return min(q->limits.max_discard_sectors, UINT_MAX >> SECTOR_SHIFT); From patchwork Fri Sep 29 10:27:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146526 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp3986800vqu; Fri, 29 Sep 2023 05:26:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHaDkqcEiriQqWj9cQxTxC5z7pQBo0jyzBA4Rchzns0gnh5IoF9iQpOU1qR455MLjPEO0O8 X-Received: by 2002:a17:90b:3b50:b0:274:c637:4b97 with SMTP id ot16-20020a17090b3b5000b00274c6374b97mr3813598pjb.16.1695990392737; Fri, 29 Sep 2023 05:26:32 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695990392; cv=pass; d=google.com; s=arc-20160816; b=I6fbciHOhp8VHaCZPzDB/bTz1z78AsUBFackWDw0SsfQ+XbGfic3qX3TktRDIfzSpb T3twI6LcZmgVou7k/CP3NHiOs97EeTCisGmhGl9GIpufjl58Zr6QdpEVzBSl7Xka1APn C74CMlafMCCs2Jmvu+OIhOp5ajg42VCtpHPUCx6s+Ooz8w5D44gb+N+g7jvdzUShMXQS NvjOnZpq+u/scNuAmqBzZZn33y55V+NuEuutizgHuJV6WnCr6QVnOC6tsWwQf6uDG+YV i4ggRRNjmBULqhwmL1GemOq+yaEXDEVQSD/ar1B8n3GsK9G1DeWzmihyX3CSZLc7Un7w LYcA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=cVuZiHiJsxm4zbLeUGXsGcN0aXuQSv3J86nYfRkukD0=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=uK7pbzebS5HMeOA0o3H9ley5zryN5st83JxaitLzU9GR3lwlFMmWEub4pBhsEzPJTT lzpE529kcmm+loOhHwpTZ5sUuNnLWHN+eSRnn3DLhqJhkPBQQDEDdTPjpew47j9TPqvZ KcIxvY3o2FyQ3jinqFX14RqN9mOhsYnujHp8/pTEDic8vqTJqOBTNJkAbP5dGZmdnw6l ZcPJ2KmdhlSnTHU5gzcdkwH8bzmeW81BTSBHDf46wlLXzzcn3HEpRuJXGJHO/LFokzF8 2bjzwuGsGY8btAuJnfyJCAx58TPEEwr1U9j4wvUV1WF4bA/n95dtQ/EI4t9aI2xXshaZ Yt/g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=AHw+n45a; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=xbXLjL8W; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id i18-20020a17090adc1200b0026376acd6fesi1402542pjv.22.2023.09.29.05.26.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 05:26:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=AHw+n45a; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=xbXLjL8W; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 1827E801C1E4; Fri, 29 Sep 2023 03:29:39 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233064AbjI2K2s (ORCPT + 20 others); Fri, 29 Sep 2023 06:28:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233054AbjI2K2a (ORCPT ); Fri, 29 Sep 2023 06:28:30 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2667C1A8; Fri, 29 Sep 2023 03:28:28 -0700 (PDT) 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 38SK92ww009603; Fri, 29 Sep 2023 10:28:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=cVuZiHiJsxm4zbLeUGXsGcN0aXuQSv3J86nYfRkukD0=; b=AHw+n45aLWAP88COCvnlkcGWLywqpcYoPdX1AEbHF1xjFpqf8Qx0vH8OUOHxv+ytm61s T18+CDcRz/RBJWGdYUnUdOZhaYNQ+ZRc82Ows1Vy6yzTlJU2osjFjqqKLwSQXehnPaTU +gXB/sDKdVTlr3UsIK7C3o3jNVTfMhAQZRuaBf5ZhRlF00xOkunEN3CF2rIX1IudiLBA F20tiB07WiYW22lkYu+lvkbz7Ct3r+k84YcEpoxyQJHOi7UDULHe5CmOBNMgFW0wlNBd bT1Lkq/DArNGetQLjzPrm1M5rqpd1LuxKMIjDlzRQv6wX6NGaC/OM3JRd+vUL2HeHkjR cA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9r2dpjk5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:14 +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 38TAKh39015906; Fri, 29 Sep 2023 10:28:13 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2100.outbound.protection.outlook.com [104.47.70.100]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vr3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LzCLXMdpPj+IT4vka/mnL7osUe0cexKJUuipl7r5s2LcmnuVgYLTCWX8Ap0KbGuIPyKZlheFE8FIsdtxSxxmmK2g7f8Y0g3yiYjf2z6daG0GePImK9BnYL8YEZHdqOTDtNyxdi/Q4V+CXAXtKG/Ow1iGwCBNzxdv+OqREgGVdbn552qGEG3WKYrZWSLZhYwbjB/QnCotaln0X+ygaRzuxW8EtUR5ed0I3OoouUh/cT8w+BZNtPJ4f3i82O0IX/KSfULmJ5RhI9Fx6NVZQ1FDctYOAlz4k7CqgCDJmx9P0YRbSx6OeZxbQ2kH7AK6K3w7EAgLcLw4zTZMdqbwVJAZug== 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=cVuZiHiJsxm4zbLeUGXsGcN0aXuQSv3J86nYfRkukD0=; b=TX+HiTjIT3hGRJxiQQFtKRCU2AXEN4g8G75cbHn0Z/ET/OTnDaBZkZNbd9yVTYSTWJtE80iyBr5G4t5TUzIYYsjBIbfEZPo/M2IySfAZCdBKHv5cl5AMRQqIZjZEe9dRaWVnfYPkuUrXjmOH/9sKjJFbpYj293S1QJBDL+WptcXrFH16FlBz/Gft/8RfwZqIbTr+j2FJfR/W1LjMw8SZqRlUYKo1qz1W2FtNpHeaMMrfjEz5oCVSyoQDZidrGDqiujNcHyUqRvFNQ5UQLUawUn96T56k3/Yi8Dc1DH+PKDk2AMaAOo3mN0NRopbFxr2B2rBJbbGY5Wm2t7NUiQRsUQ== 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=cVuZiHiJsxm4zbLeUGXsGcN0aXuQSv3J86nYfRkukD0=; b=xbXLjL8WHByauy5ZIRMIXSlXSdeenEqmbHK1sv5VK8fIKGUvQPbbbXpCNtVTMgo/eEMQMWoi2SKYv4DELx3bSbvF7ociCs+v0eZ4iQP5lopaNy6Zr2f5IvIjSSvzv7tOqhkjNGsBOeG/eo2NwiTFpOeB33ilx6PyVJBkK0lRvr8= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:11 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:11 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 07/21] block: Limit atomic write IO size according to atomic_write_max_sectors Date: Fri, 29 Sep 2023 10:27:12 +0000 Message-Id: <20230929102726.2985188-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH0PR07CA0052.namprd07.prod.outlook.com (2603:10b6:510:e::27) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: d3dde887-7db9-403d-44d0-08dbc0d6c81b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vJf7GJ35ZFPwM9xrdi6jsmHBYVqRaVAwPIiBrg/Ki49DpbG2QFXB64RhrMpAhW6FdCblIhmZGEqG0EiaqVDfXhg0EnIVtzAKMvUh3M+wHKZPuTq8ji9xkPVsYdHMGCNzgtXl5mtlbXZ81cJCMlgr+ONK/EM8aVwrop5+S1VKH3UcT9z4Dk2WibLQwG3aSUhN1ZfGeV+xCrQgNq+qlzHWQVa4479cyZFA8t8hepXqMNG+iJ2u/d3LUC9OJGviL+wUSYEczsyIy3zapV6x0xZPK9tM9wPEoYHiMPC/CstQDLh73clj1nX1ICc2dluCuGgH+KiVY6YfSgAkTGCH7vE6nzH0myAPjqYtN7o8c3fw3N5pBIcLcG4Dp88qR2gfzJhJ3ASW4qCqODu5Yf9RavMNwItJSmaMofMs4AT5hHwIAV6ZJ0ZYMNRERgegUhuyaWvHhw6qpjoNHU1ao2vBM0z6Ds2VoEgHm/SyJyMDE2FB/T9hTiU5prAeRYkLnt2ir3fVJKZg7eBC+oBYkQ0rctqc6Q/eVcg8yqROnGNblmf9nXYYYc0Gs9vzOzRhW2UKR8BIcLdslvmVGqUH91NT1xBbDsV5ujQMkFQ+25k5rOcQ6ws= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: EhmaTwfPMi/+q6vSiDySN0uI9VDxbQkO+RUP/PrGK0MgL5NOByw+ovpWPULBBWCnRyjdh9gJXODthrB4CBdczOB19B5WhMACKvWAm5GHEpy6iWggOR2X852yTv9keusxIwINHfRA/Qo38wHT7L9IniEikHQx+16LZwRALWcTD9pxDLPgOWpq403VfQVnZ3d/xBEP0xxOu3DjFU3b3mjiyYK9btQsumyhTdEdjA0gdjKymnS1f6UlVA9QTzkfVG2s43W9V36bvfJ6KkMbl35k4x+pNyH6jVejDfPJU2xnxl6Xji0eZOVGcIZtw76SetR6mAoPd9D32e4tOSV1HrLzi25drof/m5syxisfvrv4dqV5LFgiPUkKZ5HP5W5QSSj2mZsEDeAa6lUFzeUE6mkkycFcuoFRzSJ1zcGtO572wC/5AVgt/czGhNiw69YZYGYWLEwQ6otQPUlqQQjas0RobdF8xvFI1hpXTqeUu/t4By/e+x1yJLuRVe8iTXRKIJAC1SSluFK2HmZjxIJRpKxC/yaxSnUOCu42pr7/AyPrjvNSI7TrnamK04TLBvWAaPAd+d4h88lH7LQNXxQFQGPtC4bVz8CRKhb7Zy+1qOGvM0+nZbpS8cvO52UQCqMU0YYKT4ViLWERGyjXeCtj4QY/2XbjWHEwZWD/wQ/2l9GZ4qJefAwAXuzn0w01rYmEFiybjfHnJJRDlUpF0FHvpPOxal9KzO8hSYp5YXdcWlLy5JAafaJ5a0ULZ/2sIyzDW2lWMNAFTfavcjHrO402yr0jUpa1nP9GSWnfMIJ6yF7UwYwW4UCS9ZxJMm/XAv0dKZPyoM+qPtHu4ipQif2azVMJ/9e9QCo0mjwuDWARTdN6/y9PXV+qxiNArXkUF7LaZ87P5LScjkaZhmhthmGedl7W1ZyKQIJJRBKP2eUjs1Rk8XdhoRroSelIPCOgl3Gkmh6srrX0xvqK4MEYwGjtiIP4aAcJSGqJ/DLmAGVqkkgQssLiNNpdW+2M5B7yi1zKo18xxXSMJ/4NbQaZX76OxCjBDD+6UW4/e9D+smeaSqxgfuNM4xkIm9JkWAaZMPvTu6cGy/wqJ1MhEsK/1KNUIuPZT2ATy6q5Mgunnvj9kGIIBnQkuPY1QKW/7q+mT8rwA1DYq+F8sLFkO+ye9xaAyCj8PIxINA8O4Buv1qkAq4QKBygqoN3+hK5EkghPXw+TwedQSujNkatH//6QMhyeh1TzfnSVhNPTDRBy5zp0/jmPPgRfO2Ypl/TU7CJGgqh7Pp7g/aFfxg9cajFTHFwt1R+b2lleAdH46aB/ypfYpO4D0gSfzdGsMgQ9ENXL4LNUeOMj+B0QmzX3hX7sT6OVeAyirb+GCCxdwM+JTfB4bxoxk92kpkgZxrZCTKzdjSqEQziS8PgzPU95tCuX8lxUVOeSm88WBBMCjUUaKAh7YBt3134xNfpgFrNwPdKnMGSEpqHB960lsKF5XJpSAjZ3nkt3Zg8+h8F975U0/3qd7Aj3FuX6sRC1D7LjDpgTmqOo+3IjfikP/EAijudxw2NAjqlQIu/8vIf8BQF/7Qq7a79ZWYisBr2uUQZ+uFwAd3Y7cXPzyF+Y1YrWIz7iCwOPKzUJIA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: JARnJnYzP1BwEsUFP7iV96gQdwx4w+qyffEb+lXadv9Lo/o/pR/IKy4IlCWr21+oaH6VMb42fWveiueIWF4p9YqWyrF8R6CFt9XKDvo7Ulk2h0MW+QU8oD/RR+94I9lrynnY9t4n5n7W9b8x3s9SZF4k2jmw0tXPlVqXKZz/NlPa7GYO6og1Tfjyg2kZ0KP2T8/Ui+9ntg0zfAxyHUX4s72lQIwu+RtPcBytntDrXT0g3lYJqRqWMB3ltfsLLqD6CNeX9ND+O8p5cw1ae6Cneo2a0SsnMWqhcZBIQ5CEkYsfZ7NezFMWUDc9Xat9dV4zPLNALx8enUVPfXcf6B6FglI+W9rVT94IHBawGGRJvHAd9fE+wTjtICfxgJ0fbf31cmXgkxioN0dSWpPJssmUMnGcqQD7rv8HJeL5XOrc6sgTQDuZBOYSi2XzwMMtn/wZKyTrsGrWKkhKy5AWtmQDH+EZLl76MEyP4L971ajEKoY13Gp7fkYEEDQqWSN/c7IkPOggsOusDKbnxFFaUNB/XsMbdRU7tdfpYYaL0c8teHjH/h++0kWF6l6TlS12tCPuO3UFZPukT6db8dzCTWzlgXStT3rhE2WAb5gQ1OVHjDCEfgVC4SAPVJhFMySFL5OYakto+yn6MP7gPJYOmWlPf1l2j/LlHPXI9qU9/yKKWw5P4qHtbLekIOTq+QieUnm5vnKed+686cVdimxX+1Xe1DI+LDxLXnU66lEkmboWkNpbWo7jSkQK9HwrZvU3tZbq5f5B8+3921PEwYjl6tuCnM7i3Jqu06r0nXyusTJpKhu/hSiZgv4Dj2o1Seye6I5eL6B0eZ1WYzvYWbB3U8u3Rvy/rLx30QqgTLCsEPPpAshPC51BZUg28qqTDcFSEXTXjRPfod+KUwGl86EFAHK+aQyAeAxQMsQVV8G1YNa6yVzNbZA81VZZZRYP0ORj52KvWFrR+gQnDutZzbOvfPjLAwYQ7Nvz8Y3oOHI80rL+eWOuSjfDZWaDbi16km84Gf4DcKWRSElnnpwz9U0FpYHgFpuBOrhXiluF22y86O9fd3pYlfYnKSWW32zEHL7RvRFthOSKpt20xTTaXbtEDsWTHA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3dde887-7db9-403d-44d0-08dbc0d6c81b X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:11.7002 (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: fgWKZOfdmunQGsQsmQsLhXZDFNxCoD8NbRHDAToBfWMj5l4CgxG450mr3+OqSIbQHBEDZTtdvBLVbXDuGuCFQA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-GUID: dafVnUl1F-EIX_RZaatTlGJI4LOmzBAH X-Proofpoint-ORIG-GUID: dafVnUl1F-EIX_RZaatTlGJI4LOmzBAH X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:29:40 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778374821641534269 X-GMAIL-MSGID: 1778374821641534269 Currently an IO size is limited to the request_queue limits max_sectors. Limit the size for an atomic write to queue limit atomic_write_max_sectors value. Signed-off-by: John Garry --- note: atomic_write_max_sectors should prob be limited to max_sectors, which it isn't block/blk-merge.c | 12 +++++++++++- block/blk.h | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/block/blk-merge.c b/block/blk-merge.c index 0ccc251e22ff..8d4de9253fe9 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -171,7 +171,17 @@ static inline unsigned get_max_io_size(struct bio *bio, { unsigned pbs = lim->physical_block_size >> SECTOR_SHIFT; unsigned lbs = lim->logical_block_size >> SECTOR_SHIFT; - unsigned max_sectors = lim->max_sectors, start, end; + unsigned max_sectors, start, end; + + /* + * We ignore lim->max_sectors for atomic writes simply because + * it may less than bio->write_atomic_unit, which we cannot + * tolerate. + */ + if (bio->bi_opf & REQ_ATOMIC) + max_sectors = lim->atomic_write_max_sectors; + else + max_sectors = lim->max_sectors; if (lim->chunk_sectors) { max_sectors = min(max_sectors, diff --git a/block/blk.h b/block/blk.h index 94e330e9c853..6f6cd5b1830a 100644 --- a/block/blk.h +++ b/block/blk.h @@ -178,6 +178,9 @@ static inline unsigned int blk_queue_get_max_sectors(struct request *rq) if (unlikely(op == REQ_OP_WRITE_ZEROES)) return q->limits.max_write_zeroes_sectors; + if (rq->cmd_flags & REQ_ATOMIC) + return q->limits.atomic_write_max_sectors; + return q->limits.max_sectors; } From patchwork Fri Sep 29 10:27:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146549 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4020026vqu; Fri, 29 Sep 2023 06:15:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFDNeIIGS4X9L07o/jUfdda8n0F0jn8ojHqv/VXz18+HLRlcLrHmpW7hiFb5PfTTsvfVIto X-Received: by 2002:a05:6e02:f91:b0:348:e9e4:4902 with SMTP id v17-20020a056e020f9100b00348e9e44902mr3944619ilo.0.1695993313149; Fri, 29 Sep 2023 06:15:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695993313; cv=pass; d=google.com; s=arc-20160816; b=WiQffBaG/Db9MLpatOwc7/Dv6TzE76GOJcusTowT5B0XSNzexpSqel8x6+lFZGMTCk fi56Km3x64HtCioxTlE/VBhz4CxMfYgUrO+7Vz3bg623aBm6WHLPcNC6K9mmTudSSIOX 03jNf8tXfUKmpf6wCWZ8zVlw+TzIdf/tnE+UjZzxhllPrwcOSFAYNhZ/4Nx7EWxoab3f SGfz/WuhhvnKn2RxeKPKhyKi3611RHHy5149edGGPtDN/y5h0ePAuGCL5+W4bvOxGu1n oq+4IjbdLgQTC+/131SgjWZJnehjjYx9YG4vY9YJEUWVmwCTmeLnpo43xdZmpBa+ovdD Al4w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=wKQnTlekCZ9343QFec+axFCxLhLvHWxYR9RAFTQeMpI=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=lJCJ0c6nMvgKo7XflEmViwSWjEuTMwQqL3yTtz3DwXnPBz/ez5/ci/lqq9AxmRtEHo fJ0TRrJ3RRUTPpK18KIVnc1etErcORWYcavrzDBGbUmL8hFTy2ix8cqnNPosxQxG8//3 zUVg3QoqSJRenQmufA8l6pEsKxs+xZUx7YP1wlJXGNzNJXEFaR+m+678EVqQzdDj3vA6 h09qaR+qycpsUs0nkzJD0rRFBSTW+HDyxSi0wiyhaDnILepwLIeXMPYYRVixeeruV1f2 RM/nctCKzb5KoYK/mBXMxGdug/AutncUPlLPJP9yYTubKWfRva7nJ6WmjVpW0ecZ2Lzu 2rmQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b="ycPLbL/u"; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="EKIaAeO/"; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id bg26-20020a056a02011a00b00564bdf6958fsi20762437pgb.649.2023.09.29.06.15.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 06:15:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b="ycPLbL/u"; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="EKIaAeO/"; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id C529B80B3B61; Fri, 29 Sep 2023 03:35:58 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233227AbjI2Kcj (ORCPT + 20 others); Fri, 29 Sep 2023 06:32:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233142AbjI2KcX (ORCPT ); Fri, 29 Sep 2023 06:32:23 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABCC319BF; Fri, 29 Sep 2023 03:30:42 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9TaS022472; Fri, 29 Sep 2023 10:28:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=wKQnTlekCZ9343QFec+axFCxLhLvHWxYR9RAFTQeMpI=; b=ycPLbL/udujskk1QzMLVVaSWSRPQ8MsATNKJGbx7dNnbYa5yI3Nts/liE5eum/qu4n35 leOVXUkwdYAzHjwl9FzclM6zubAIvdYz2Waz4+36ofAX6PKJF2QQiUpIznhDqXg8KuXp lK8oE0hpEQe3x9jhD/lQJxRmSQMC1VPG9p0LLiYu2pWkXxwwzgmJ54WmY18MSzsTw5uG np+u8qhvgDZD/COSAaXB4P51vLUEOmEMBStB6EyC9ZXX3Np5EoH1NppJtZseuTqbdVW+ IvQhpcEijGR2zTIocLzoXMRjJupbOozSSF9zG/+gEQAhL7Sz46CcGMH2ivp9hO/PyhCA 0w== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qwbpbqn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:17 +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 38TACjjW040728; Fri, 29 Sep 2023 10:28:16 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2106.outbound.protection.outlook.com [104.47.70.106]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfhd6r7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Acus1aaAqtjTtHhNbHl9zLj/0JuvMMURkmIotntxYPSl9+b5Y+FodjTouC/u1KwjA+9NdPjQzO7o3h0BvNZoFTn7Pm7WhqbD3oSLPcJwi+Syqnk+h4D6LVVEXM7zC9/pWLNmmPf+fQz3hD4KkaiZnjnoD6UfH479T1zR2EuhNsxcGJVJgntjJ+u/CJCdHcMUl6AiO5rhZCmXv1eri9uMloKyP+DBojhElak/CpxbtHp+vvKarD41ALqgPpku7R4dDzfJ013IVk/WtGX6HkPUsdEQbQuozGdbqaqtuIMBEd3I+jWmZKLXv2r7r6N8WgwDz6DRUDlclNuAmHcaFLcVrg== 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=wKQnTlekCZ9343QFec+axFCxLhLvHWxYR9RAFTQeMpI=; b=T2OduUHq3NPWGwpd1j59b0eJ4QPmUwC1XQAWknBSuc6GcNMFswzs39kSmY6xIWZBXHBWawMqyBREGLBSpbX+Y3c2KCIaeXRJrOfirC5AI22IO58ZmlzHjstQY5zBYhP2l+iLzJpwl2LkRwRnScjAuxSCe4G1zVgt10u40wmfVX6D6LqyK3SXN9bnUTfvnOgBCkTBPASrmv5R3Jg1tsZGOSks0bbqeuFVFbLGa2qznkWm5XkAP4yJnc87rG+IQ5vL1xSwZYDoFEZJzn4VSlJEZz2VZe/uqmFE1UJGSYYwvui0kjdTLNmQcCY4OKmdqEeQNeQmjva+7vauSd07uVwBSQ== 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=wKQnTlekCZ9343QFec+axFCxLhLvHWxYR9RAFTQeMpI=; b=EKIaAeO/RmlkjET/pVbocOyUaV2Wne7r4/5AoqDg7MQHqXsSqDWf+JeyyftUeIReet+OwiAlw4SLYkfbVQYuemPPFtWdEFZKUasC8Vzj/B6ZCq/PVjDglDqI4U3XdP1H3o1xSx/Et8QQFYSQ9bdEXfDVZmQgLNYR1KgbfaRN+7g= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:14 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:14 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 08/21] block: Error an attempt to split an atomic write bio Date: Fri, 29 Sep 2023 10:27:13 +0000 Message-Id: <20230929102726.2985188-9-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH7PR17CA0027.namprd17.prod.outlook.com (2603:10b6:510:323::13) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 60c10223-5fdd-4a26-8767-08dbc0d6c972 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xOgy44rwFgN+M6CH8ZK5cBcZujGZmsxOVyM51wctQ3CB/+WnP8pB3q7E3zC7Lm0TWiIQXZ7UtnZNhgdyxaEZZ3oQ7NocofcHz8MWzdn7YbfHojVfzAPIyWW/NwcLQrgX4ZkxexbHwB7SmZhaQwCHTukFINmV9xQNNjT53P8pTiQPNaTlR+vD+nzc3YGzwgkXWVtPCzuvjBZFthcjqWz1EFBlCyIWrK+p7CGRA20HB4tKRpydV+N/Dr4gJhtfZZ6DigrNri0rqsG4BOnoTne6qFcnFdKWZKLt5LVYo0elPRgRboFWEH2aGKxBGWlMmLGfeFZEZmlBOaJs3PcQ9xBTYQlNVEIalWYgnMNFNX9fTxuiM/PUQ6KNIi/4FRu0ItQDIVmFlMJj9DpUnV8eViUV2T6nKqg5bZJMW+rvvneKFTJ1PPTWU27nQlx5hUuMA7u0w9OPc/NcffZw1GEdIZQKrdPRwrBTyaSJQ63Rg72Gli04kQ/mr26OfIMDegRYTaZQ1TygQGLbrb3CiOX86tsRcpNLhejuCAM4tcH1H+Ajp0pvHEFXD3kpwmS2qG2MiA0dM3EjdSBjF3+LKU+R3OfqdodQx8mUP3NTrj0i3IrMH6w= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(4744005)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Lvxd8LEcDiqsdyT0+fQGpV6XZOXjo5u/kzLshq7+xBpgnB0q5W54SpZzfWP60abVQkJ08M1xLYIP6fV40aVaa0V6frm8UVlZypbeG0tATbqab8YCWAnAxXhFeR8NrCQVF2T/qcVC2nJ5kcHx6cG5oaAYz/htGi5JZ8w8S3YlaYSWBiB6Jk0sAnG1nyPk+llM1gukxWEAuc7pWClh4lngoWoDAgRq1V2zVqT+JrCvuayh0i5y4EACZbwqcUeby6HbQh++K4Z8DyYzMsfMk2sec8EV9we8QkKs/D41yuwzTcnlkU3LWzQ6YCnRv+ZeQAh0pJFQq8TyJx6GJFq+saIJSfK13yEv7cCPW4vytp6ito4Yxnc963U/aPJT0p1VcnW/5Ly4O1g8POaI7bc3C7RjvR9eiQ8C6YxT4oi7Ak6YKxcJUGAgHhYdF8hegH31JEvGe63qhYPwQ6hemEjiG4d24wQsMCkmZBsyNV+VaUKqpd47kR900ivQBHacfYXoJ7sEkjEBYpXO9UUbL1V1CP/H445IcUSC/r7zVM0PhwK/+Of+dhVVjyCbVX/mK+J8CImz4iGY9ziwSFtQT2P4OU4qRiKXf9mNSAjM57wBRNjYgjJDBH9DsQm/CLjKkqHoSU5sWmrFrDeakdJMxs+O6VLipXPY6tZDERg9EWrP+uHtmwAEVA0lPim+CUud/BW/jn6kb7IbH0BxncQJtkRrnbvQDskrV90GgHFqwECTX2ZL9836G7dtNvCfwSN4CX1/WpsQE/laoJVGmL7/+wV3LTd2meFBAAnUIEXT0OFSrvlIESVIfW9qhQC0wGY9NmKtiGkspi6pOPGIzheH87g7Hz5da7gDQPrx40EKX7sBq58sZEnbar+AT7YIRu+jLF4pD8PnXfJ9kYyotA607wOspWzCgivG23ahR10d+ZFjz1hcFPyfMW2rLRzYi00NCBF1bp0ecIrdh2nEvy4cC2/HjjoFdPWQeSQI6BJutoEh12RNT1vEuvX3FpwkUabRVNs1P5+bQhweizr8nxLuJTEW3BUQacvtOvAmBIs0yrA08ZzeES//zBy6FVqTPuElBZuVi00F/UMjt/Q/VownRXtWPGcUy6Jv8fpfbX70l/tAkOsssRFquUwJvTu1DUTMu/JeJ6LBbewqF+UMXX0fK5PCnih7zNYyuerf+j10IBEaepz4W+Mk3aPBu7G1TAavZfoCcZKDuLoFKXrXzuW6yrgUc0taGENFWdlH8WyQxnQc8PCbUf4mJiOUXLGnPdVq9WSUML2vxasqldZbI5SDgp6ccaHolZca8lykNBF+jb7k3w3t3i2nCVOKxX+t0mqd8dsVICl6aNhfr9nUNtap6fqi7a49iUkSy55P0VT8Xdy84LChtHoNueMO1md8kLMFW/DVVt/L7pbxSFIKrm3bhmGtClTk6JJaEzysa+orqfYW2/zYZ68seBKT8JNb8s1QFGluG8z+9BEzb0HqUxYv04dmnyBysfLtLAFYBdncQtDWmyMHDK5CaGd3IL6fXoBf0/KJO4GBKplCRuONzKWB92ENkH/ol6WI4pxG6qNmqTVmDSoHesYUxir09FZkjX7/6GgYgkt+FhYswYNfP4HT836nm7LO5A== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 8jsPgEGEHt3HFDd42JwW6+lnWf0yvbnoaxvVXnTTsuNMSlLv08fbhgxN8WZ4NJNcpVzdDU+HC07YBHT3jrJH1ev2+7WH96gHzV3ypcA2ScRrMHAgYgTxj49J6QrHdruSxCdaASDktXt3UwhSZIsQNWi9O/sfEYXb1Kt47fu33SGg3no+vKhpLk90E7/QNu/vl4Yd6wpP7wkBsRiTw4K+2z024jDqoiD+cviJRGVwRA58T56GkfzkoeyljFIfDJtjHPtb+nHbEjxDEI+HLgoliSL8cjKAteNlJ4FVtBHkRnByR4lcf7OY9arZriK/iBDUjoPftnQY4cwGCgesj3UNTdwmaobbipsiwWynguYXdZI9hF4gf1uZpWqqU3gOjOstn0wtUP8MLdy7yXXGEfIIWPtyFEC5xhKmwAiyJ01DgKGtp7IUpzZyt/Orj//NJhuGU/bTHs8cpKYFHSpYMgEJX1G/OZ52xoyeKfgeXx5uW75fRS+SEy75BrVNzW/uucf2NbojNhpslWCCKtgzBbkAbeRjCLSRCDxJ/OA/g+dg0a7E8goW+JRovTzUrvx9PWfVTvP2uzqgMv6B31HYF+aVXjEauqwB3N0ReDxBXGHx2vE4KJlVs0CEMXYUfBiPgb+f2DakC+G4DVO6o0B5hulztWR4cewSgxTrrce7p/bbln7ZFL1dvagTXPi1yD3phbLvRtPJHIORDwn8wX6gT1CRDsd0ibK0cq/nXglCo4Lmbd3yv1oDgulo2c2Tb3/CXn92Lv0qCqAGBmvYQx1BXn+H7LAXnBTvMlaCk6kfd8yguDWOwhcwKkoqyIWwa4ajzB3IZMBNbU/MPNWFvVTgqqWlh3dXXTEwRABmMvZwzUitFuUe/bgMPTbMNgd27Vq7um7TKKYbKQOoSaGKJeGkDT3+yRqfNxCInEGRy9hpHNuR+dkHb5YSvANnhxMw2ZLfCT6r60aN+nT7kSKT+iNwSji1svIS19uCFMq1EFqter0ovROYGXfp6qCl6A4iSpSZx7Z+ftO5L9YoWQ4PFvsjNrR0CofuaZF6xsVfl84d9AbCcbIDHc2lp5nxr5U8QVZEPHY/ZYKMGzNDPq2eba0MLCai3g== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60c10223-5fdd-4a26-8767-08dbc0d6c972 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:14.1702 (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: G2DcfwNjykjswhdnr+6NCegkoxvTe6W+U2E77Q37Zgbx33cu9trQmNkJ+BRg3FMJbJTE4uDQ1K4mynvrSXM5rw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 suspectscore=0 adultscore=0 phishscore=0 mlxscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290089 X-Proofpoint-GUID: kOJZhJd5YMZG4TBxHCQATIXUj-pY732s X-Proofpoint-ORIG-GUID: kOJZhJd5YMZG4TBxHCQATIXUj-pY732s X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:35:58 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778377884096197290 X-GMAIL-MSGID: 1778377884096197290 As the name suggests, we should not be splitting these. Signed-off-by: John Garry --- block/blk-merge.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/block/blk-merge.c b/block/blk-merge.c index 8d4de9253fe9..bc21f8ff4842 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -319,6 +319,11 @@ struct bio *bio_split_rw(struct bio *bio, const struct queue_limits *lim, *segs = nsegs; return NULL; split: + if (bio->bi_opf & REQ_ATOMIC) { + bio->bi_status = BLK_STS_IOERR; + bio_endio(bio); + return ERR_PTR(-EIO); + } /* * We can't sanely support splitting for a REQ_NOWAIT bio. End it * with EAGAIN if splitting is required and return an error pointer. From patchwork Fri Sep 29 10:27:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146489 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp3930495vqu; Fri, 29 Sep 2023 03:48:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEP+XjEkDUJZlyieQd5XP89YWaesoHlDqTfIzwNGmcnruqeR3FTHz/YtsCST80Oii3Igm0w X-Received: by 2002:a17:902:efca:b0:1c5:d0ba:429 with SMTP id ja10-20020a170902efca00b001c5d0ba0429mr3122805plb.4.1695984493896; Fri, 29 Sep 2023 03:48:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695984493; cv=pass; d=google.com; s=arc-20160816; b=SMAlryRlsqScO+s2sRW91pGEzuxxuwvAhWBPjyLKSXCG1Piog3tE0lgNZLzotFS2ZK 4Dw8QncwIfWfT3nbUTpTfnw+lw59hk37WQe2exqoQ/A8rKcvSLSZ1xnbALaLOnXrMWUT 8pSK9OLxwNowpCbow5iK/gpeibDvfxs+wSciKn462S8ZE1Xc0v6Wou5Hq9CLDUWw9Efz +Ps6wvGYwbbWnX8n4c9slysMIueciQ05sPJsdDxX275yuTAIDBXy28OYAa+f/qk7+caN WPNgZ62t2YlC/CIjE7TLcQYqqNDZ1fq5Yf3mDZKbKR/kKC+IDF/zw+oy96ibrqZOzOxG sa/g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=TWL9VW7+Cjx1OP5x8XjpFmdVa1NlzbdA8NRlY5je9dM=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=FrzOvMWxGRA+0On6vH/uXtgsQL3+Ypyd1+CYDKExAuEdSL4IC2hXccYTcNziOlG5mY SP0fyUWUOrpxna4rEL5k+7cgxGu0FMZO1rZjNdjHGmYRHjSVJkc9+cGwS9PF3naNMYh1 u4earM6HXrdFo/VfrTu+ZU3uSwT3QkiA2zj79YoWL/d38LqJE3BUYhY59+h8oR4X+mvi 09b1tBCGYxr2jV2r877Fdf5sg6oeU0IogisdJ0AgX0VeWfDLeM/Rep0qikSrGBTPwAdC E+Yi1M/X5AhFwLR9U3xL7cPelNLjMbO/OgQFt2wzl2M6XDy9z9JCmTKFLMpl3Oa3TdZI 2qlw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=gVR+f0kZ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=kFxARJU+; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id ij14-20020a170902ab4e00b001c470e70cf7si10474646plb.273.2023.09.29.03.48.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 03:48:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=gVR+f0kZ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=kFxARJU+; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 954B5836E5A8; Fri, 29 Sep 2023 03:34:12 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233126AbjI2Kdh (ORCPT + 20 others); Fri, 29 Sep 2023 06:33:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233214AbjI2KdE (ORCPT ); Fri, 29 Sep 2023 06:33:04 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0120E1BD0; Fri, 29 Sep 2023 03:31:29 -0700 (PDT) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9bcZ023115; Fri, 29 Sep 2023 10:28:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=TWL9VW7+Cjx1OP5x8XjpFmdVa1NlzbdA8NRlY5je9dM=; b=gVR+f0kZqers/sAulFwvz0PUuhSwPDfhVfOojsyQ3rXJaHTpWQhqalAE68mDBjf8I1+A rYhttKZsAW8DPoIXkFOkbrETCMj0HnnNfp1gt5QXh3LGmqInuqKZpqJ8PueFRr3P932+ vy4wY9HySkS1deloNangfBo0DqvLmfJILeVzGl62ivHjkBBDhHzU16X6K8tX4+xRuC5u QxYsdVL8Ty4HtJQ+S0QHciNJfR18EhgRG5r5EuCu4rXj/xp+G3vPIHPEsjTNKQeyKiQN AP33BJ1gj/TJ3sn1AWSBkNCWPBcOPgOz6lWdOL+klWm84FKmOiGkfKvjST6vitseBJNt 5w== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pxc6k5s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:44 +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 38T9iSO8015821; Fri, 29 Sep 2023 10:28:43 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KHtID17+bk1sW49hYXUtVcMsbBFYBNg4hYvHIGNahjmnaKF2hTzsliQOshdoJ42f8qWYHqCI7MlZgQk0i/roYSdXB06XZacroeyDDh2mwEfle9Me7CiN/i976J/7xBfbufPkILnVPMDc64fXi74epU/A6Fw0Sm5GD/B1yYB5NaOgLxl5HHzNai3Hp0MFdiZc55WwwXZbtcazzvRFuVD8WfTBeLh9+xS3YlXZafP8kXr6s5JNtOpD2m/iLODw7ueVqgkyuUOLYl4p4BghrfSAslEWsDejZ5oMjgiphmH/NcY28J23edo/FAKzQQCycdWPDT2qaLew0XqmxWgA1uSZ5w== 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=TWL9VW7+Cjx1OP5x8XjpFmdVa1NlzbdA8NRlY5je9dM=; b=ZGQOCkj7FSISfVVCGrAsTQjxXFLhEF6nN5clzaL5Of96eb+yXjCgPmE4B+Fhgerd0qK3KyMFF+TfzkIkNSwCNNO+g6Iytek9qLa+ARZGpePwqXeQO6CaDjkADV3jIyiOhNWrlFqJbhhqa/gEunX2I8CZZOuZxB4DeOLK9LuMsBMV8aEraXwPXD2ks7gcr2Hs2IclGWfuYwGEoz1J5GON1w1Wgn+y4+XmZDH3bpLsGXUScv9hh/ZjMIw4UATvKZvIOk4qB3ikMROl/sXeShTRC4TEH5hCdS7UyjHZLuHOs9mCJzRAeviOtJY4of6+MpTndl3yQE0hKZifAJWF6u5xdA== 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=TWL9VW7+Cjx1OP5x8XjpFmdVa1NlzbdA8NRlY5je9dM=; b=kFxARJU+8cJvILv7FQcNY12hFQiSdOp5GAR6Z7ubGQGrgT14hdHAGLP2g438MDZbjW9fjUqJRh8yuSn4WPYu3SOcjhafbyV+kgcB35OCyXEFp7wzjINy3PL7Z0Wjx5YCtcup4J1Bdr65PwUEybK2P58H0Wkz3HI5hqWedX9UBLg= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:16 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:16 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 09/21] block: Add checks to merging of atomic writes Date: Fri, 29 Sep 2023 10:27:14 +0000 Message-Id: <20230929102726.2985188-10-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH0PR07CA0041.namprd07.prod.outlook.com (2603:10b6:510:e::16) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 9fd9ec22-ec02-4b7b-620d-08dbc0d6cb05 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KvpDWj4J4csqDFax8cgqJgdFZdLjlbZSsdWzHQ/yWbcUf1NTcjKorAegdo/ix4jQHTDIznd5arHnqjn8z49sEWRlLgt2XO5FqyFkaPAYABs357v5brrkWIifvxi5D3EPVVze65QDhNgXPyax5bK0zi8Z6FORu5m+snmJNJZs4GQR2VfuwGezF4KkIhZFNACiWdhgw/ZCcB8OZsSsI7ievDSiItsVwz5owBd6wR59ntKT31M0Bdx4JTfmQ8QqfHPzDpn8CbYCCY9jPYF5IyZOEaczGD5gvMU/kHkNb/5tzfFFGf/OWy/QHx0YAiuqj7yVBLdcmKRj6IbjEgDuwWJevSY1mR2BG82QmX2kHKKoyo3yF85zU9EX1BBvUQoD0zA0wE/7AgjCZiqCuypdBwqYINE8toWptOU8WiOc9Zfw/MDknx0tw3pf8jUX1/9pBz3J4KzC122UimJQhds2/ARhY8VW35ny0ygDFVKLLSu71GRDTL8N/ViQASQVXQdtwDU6zzS8SrEpAhXeTapzb5TfS/V8h8e8Upf6+s/v6ctNOwqT+2IF/3CkDU1a7XnUZmGZ8DMzdnAYc8tW5z3Txqz1WepIgz3R0u1NFtQLTT2usLM= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JmizjJCB4lR3jrdunbbTGVEyyIst7xgwZ1sUiV6EPKtHniNCHi5Qo9lFbdXVHnPe1J+tCzaK9I6IFtsj7WnnEtDndWcFWPOBYT4LxQGwNuyeKDc4PgW0oWUADOuxLIDc+K0XYc24lsVqxB9PjAuLiyN+R4eQaKvTqLovxXtzTRz7+nIolATq7GeVs37CeUtQsWXO4C5NFBjMKhCSyGxz5ZGmVf562V/iEtBE29X34LU10Q6C+aKMmhk81MTFLeitGiclhdZ6pNjHvmrXZbc6LReGK3AiEk3ylaERqnsNlIag2L76z/yf9ylMf4DCFyYLp93th8gJW1qKD7uL4E2JhZBOC8ngs3XQ4jLJXkkOG9sje/iVaOFQoXeXxkrx9qqPi23hHSsLK2qfEvrEChVjZcFfFy5xhM0BtQ2/UiDwqi046+UvTHWotruXybJ4LTR+wW073UKe+peBuz4/nV88Ksc5mV40A7LESGrfct+/hwAOQJ2SLzLub9k3Pnwn0JwMWIcflwUuok8UiuWGGtV7wYCexuQMTaNQBU3S6Inlx+D6dn2lL0QknikYMgKect5Wr8TYuJxKmbsUM9LCQbmjmtuXF0Abu9l0EiL/i1PQFgIA1TlsSW3n2ZKO9C+puazmIJHreIOJOmJ43EukMIHatRwbmByTgYOrat9PNKV4ZBpwyMOga6bNrbcuNcfyjJCCDSKVTsGxb7cld6Jn7igh+GFiB91XUPbwrQrWVSFhhVcJRRgIRwynZxxFnk2OB4NqKbseDQLyAm+xYL2yOb6sgKPAlWJgh0X3woXvX5vgUCf9PvlREJyOd8fGGXCKFlYFvcxV6pSxRdO9ObmJTvOhskRd9gSNevQfzs2fZB4uOx5CYSe7Jsm3NOpDp64E6SPUyMbEFrUtp69UAlJDUNwcuEACZAXuuaSoaNWowOoIaVcJmY3ZRGnNEzdrdhG7myi6K507ltQeiaRHzKQSQxfPcXkjzNp8FXLhzKkduOeL7WDoYsKlJItlDk1q3jUIIrToRmfzS9WvhACbiFYzxWvi3/ha5dmpon6Un0pW9NqLxV1PH+zqAOmN5qCqsvWgPS98xJX3x6sb99g9rc+47Tqfko8hec2LOXaxDhUtazMpXefUqgi7a14K+IL0cckcOXloTufU73W5CaCTqqpYlUfXiAoGt9XJuCRRc2suwgWcsnRmmnR7qpNB5L5JuTQu8LUmUsyDpR7P7W3I/H+PVm1Oc0dei3liQu8AlyEk28xumcS/+93GOmgL8WtJThebrA091IH6JdsXkLE/RQRAeOZ+7wJNRjs8FEx233J3BgRoS94b/vhJpN9kD2qSEt4kM0VK+GOYleWJoe9kCCnk2xjNxwO4fIa8et6X1K6CLVDjiexPAg/pbSoJ2fDNVpsPJRD4oRulgVKPio1uvn09pBp5OIcqynP4cyLIEUBkVZ4uh6HeSSEG4zLmxJ0/oL40XZv9QjMFUMQctqzoaZPNvX20MhTNjGvLsoVRXHZYjDXouA26lC0aIb8+0hNpcXD5Fi0sOIj00/1p3qfbWs7kimf9OQBue/FcwMhXVPKEBj9ZmLtDqEN6Pvtv4tNFRHMnKBaoIhk6FpTWsy2KpzTE3vSjHw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: dNfZbTihwY2tki9D7rgrHoqGES4H+VNpnPkfADiK03IRZDOcDoeygiantrITbugN1V5IkwfPzjsUmEEs0QqNd7KhwISu0TVFPm14ARdLBV31wF6PGmZsX3+NjYD0a3ik4uQsFeO5PLaBSCDfCXjRlAesM+w4Cu1wNl+eaBj4OLLczRzH9bhA2gVnNC6CMcoqdFo4Ic2OCwPLW4fuhoTw3Qy5TzzzxsnNLzrc+/a3A8tqQvpWMCMq4AFnZZghK4ITUjC2ISz0sVG3Nx2sUThJS+v+Eevoo/aubCCaK45k/68PdSRB4pTVFtt/OwvZooO0QQY7U5/BmkDmSU1KTEnPZ9tcolQmKlvuZCbbqxqH55E9WehrNrvV0aSBP9xtuwNiGopiofAsXqOH9KaeYM9AgiZnS4C/E1WPoGpqIn+uEBwunFLw+ZWP5PgLULOAoqh0I3d+n5+XD7i0AXfpJiO/IYiDHC9RK6Ka0lvcXeKNiPdmjG93nm2kF56oyGduO2ht4QGX5Ir0LkZo56x54Y2DH1ZfyQisKaPvalqLY2JTT5lIj0Mb4EgO00h6tgfbmBYIDy5uv36/K+pDmZVM8mnAZYLjtEno+foHw4HavYOSX9lOD35/7mad2Gw5GB9xLsKtAgx9lzD5WkJM1G+eSNLogaWE+r6bIA2ygUPsp5GIEqxct8C6NGr7Ocd9tVDhxIoEC+wwV/QtRxomVLnnXKFq8t5CDVYzJ5FwSUziP5YhZNnTBSM4aSvRN7Q34Cap53X+q6AQW3lH51w035zTipO+uHyrJvOlOA0y9+6M+A3aMuSJdFSubxpAJsHfQ8KV4rfMoiWrXPyoKgKp7wFG5Z9SFtwWWertRjqzfGKHZgm9kMVuyAv5kS00lLMIOfwUn3G5orLAtML3WN+V2QiTcGOpdCXudnI6hOeYTlYnLQughhYKRQtgSQceIpZ2mfDFnpNDc2EaNqlxsVcI5icESiguKXqoF2E0O0EzVwKj9xhwrFbDVk+VMMKD34JLSk90DRLT5kJa6Dk9DVPjj6ujUximZugFjme2WBimMtODmODPpQjZ0KW8nBZgWQsmFf5wtHQdbU8pHudsdl1/F5elzVao6A== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9fd9ec22-ec02-4b7b-620d-08dbc0d6cb05 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:16.6204 (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: eyBIF6xlNXXWy8Xq9iip+VQyC34EDK5XibbH75dqTXT1Nnb3jpr81VDhRhjcgwY//QN9oqGndgepjrWpesQA/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-GUID: _c-p59VYDQUJh-xtoTn0YzrIewPbxDjV X-Proofpoint-ORIG-GUID: _c-p59VYDQUJh-xtoTn0YzrIewPbxDjV X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:34:12 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778368636494014474 X-GMAIL-MSGID: 1778368636494014474 For atomic writes we allow merging, but we must adhere to some additional rules: - Only allow merging of atomic writes with other atomic writes - Ensure that the merged IO would not cross an atomic write boundary, if any We already ensure that we don't exceed the atomic writes size limit in get_max_io_size(). Signed-off-by: John Garry --- block/blk-merge.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/block/blk-merge.c b/block/blk-merge.c index bc21f8ff4842..5dc850924e29 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -18,6 +18,23 @@ #include "blk-rq-qos.h" #include "blk-throttle.h" +static bool bio_straddles_atomic_write_boundary(loff_t bi_sector, + unsigned int bi_size, + unsigned int boundary) +{ + loff_t start = bi_sector << SECTOR_SHIFT; + loff_t end = start + bi_size; + loff_t start_mod = start % boundary; + loff_t end_mod = end % boundary; + + if (end - start > boundary) + return true; + if ((start_mod > end_mod) && (start_mod && end_mod)) + return true; + + return false; +} + static inline void bio_get_first_bvec(struct bio *bio, struct bio_vec *bv) { *bv = mp_bvec_iter_bvec(bio->bi_io_vec, bio->bi_iter); @@ -664,6 +681,18 @@ int ll_back_merge_fn(struct request *req, struct bio *bio, unsigned int nr_segs) return 0; } + if (req->cmd_flags & REQ_ATOMIC) { + unsigned int atomic_write_boundary_bytes = + queue_atomic_write_boundary_bytes(req->q); + + if (atomic_write_boundary_bytes && + bio_straddles_atomic_write_boundary(req->__sector, + bio->bi_iter.bi_size + blk_rq_bytes(req), + atomic_write_boundary_bytes)) { + return 0; + } + } + return ll_new_hw_segment(req, bio, nr_segs); } @@ -683,6 +712,19 @@ static int ll_front_merge_fn(struct request *req, struct bio *bio, return 0; } + if (req->cmd_flags & REQ_ATOMIC) { + unsigned int atomic_write_boundary_bytes = + queue_atomic_write_boundary_bytes(req->q); + + if (atomic_write_boundary_bytes && + bio_straddles_atomic_write_boundary( + bio->bi_iter.bi_sector, + bio->bi_iter.bi_size + blk_rq_bytes(req), + atomic_write_boundary_bytes)) { + return 0; + } + } + return ll_new_hw_segment(req, bio, nr_segs); } @@ -719,6 +761,18 @@ static int ll_merge_requests_fn(struct request_queue *q, struct request *req, blk_rq_get_max_sectors(req, blk_rq_pos(req))) return 0; + if (req->cmd_flags & REQ_ATOMIC) { + unsigned int atomic_write_boundary_bytes = + queue_atomic_write_boundary_bytes(req->q); + + if (atomic_write_boundary_bytes && + bio_straddles_atomic_write_boundary(req->__sector, + blk_rq_bytes(req) + blk_rq_bytes(next), + atomic_write_boundary_bytes)) { + return 0; + } + } + total_phys_segments = req->nr_phys_segments + next->nr_phys_segments; if (total_phys_segments > blk_rq_get_max_segments(req)) return 0; @@ -814,6 +868,18 @@ static enum elv_merge blk_try_req_merge(struct request *req, return ELEVATOR_NO_MERGE; } +static bool blk_atomic_write_mergeable_rq_bio(struct request *rq, + struct bio *bio) +{ + return (rq->cmd_flags & REQ_ATOMIC) == (bio->bi_opf & REQ_ATOMIC); +} + +static bool blk_atomic_write_mergeable_rqs(struct request *rq, + struct request *next) +{ + return (rq->cmd_flags & REQ_ATOMIC) == (next->cmd_flags & REQ_ATOMIC); +} + /* * For non-mq, this has to be called with the request spinlock acquired. * For mq with scheduling, the appropriate queue wide lock should be held. @@ -833,6 +899,9 @@ static struct request *attempt_merge(struct request_queue *q, if (req->ioprio != next->ioprio) return NULL; + if (!blk_atomic_write_mergeable_rqs(req, next)) + return NULL; + /* * If we are allowed to merge, then append bio list * from next to rq and release next. merge_requests_fn @@ -960,6 +1029,9 @@ bool blk_rq_merge_ok(struct request *rq, struct bio *bio) if (rq->ioprio != bio_prio(bio)) return false; + if (blk_atomic_write_mergeable_rq_bio(rq, bio) == false) + return false; + return true; } From patchwork Fri Sep 29 10:27:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146521 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp3985381vqu; Fri, 29 Sep 2023 05:24:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHJoKnxK4ZHha8ncrQDS4i5h8tatXVHVsTdYIOUFR3Q0z/Xd7PD/LTGn5ozzllmwQkv24gz X-Received: by 2002:a05:6808:7c3:b0:3a7:6b1c:8142 with SMTP id f3-20020a05680807c300b003a76b1c8142mr4030043oij.25.1695990244536; Fri, 29 Sep 2023 05:24:04 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695990244; cv=pass; d=google.com; s=arc-20160816; b=kgcZ7HlV0YvXXmHtEVo9lauC62WxGjlbIzEyJMaD6589dmNR0mHkH87zp9bQPwD9x7 K67/C4GoK4EcgagPKiRAPN8Yidl2B+ekecTrRQ2D8WTtBZVPnfwHV36/z2iwseRfTqHe krvEvyiYKZ/uCd40vk2ci6wQ9IGpkwKEJtbj/0ojumaSVqmACKH5/NkM7dWvWZbkO4Yh JBgpXG3ytKDWVzfHSLrKnRiw4jLPMeBJNf/PYaPtdF3ZZeDi+1gxI6KchA8Tpg62byid HileHpXlVuOBYC6Oh9tBGYSQdntJ67anMtzMcVfnLtwX8qj3lWBOaQ67CZxb9CeWwee3 xgdA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=6dpfvd4QexpFHlVLo6uba8WrCzFwMvYjqBcVe1g0GAU=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=ueMtdp4+qa3JCUGyhuXvxDqez5Loc/NPDjXNRpB0txNQpxEtvse/dozsov6e+tmu3h jkS4sXZuuiIw5+0/4RSNiG2e2Pc0Mquu64OpDvgqTu5pTNGX1HEZdtmsFwh3TahYpszS vPrukjReV2wkRHl/0PzPEpKmsAZkiZTsLTtWeUMODyfOarK/Zkq1N6kJEV1S9U+PzNdu me1XWu7EuFtNl6mT+jOO0smgNSOhgXUIsW3rAI7K7eHuqF1o78Y5rAiOfccqg0yUfvK2 QwwPoAKARp1PrMt2YbbjrhcZMSG340xTXTXiWw74DpNK6ao0G1sNVXDK0cHT1MTLncb2 tM2g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=M05FVCy6; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=YRC3+yRX; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id s123-20020a632c81000000b00573f76b1f75si20868142pgs.592.2023.09.29.05.24.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 05:24:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=M05FVCy6; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=YRC3+yRX; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id D92228293CBC; Fri, 29 Sep 2023 03:34:43 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233106AbjI2KeF (ORCPT + 20 others); Fri, 29 Sep 2023 06:34:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233165AbjI2KdP (ORCPT ); Fri, 29 Sep 2023 06:33:15 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B6D31BEB; Fri, 29 Sep 2023 03:31:35 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9Qm4019170; Fri, 29 Sep 2023 10:28:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=6dpfvd4QexpFHlVLo6uba8WrCzFwMvYjqBcVe1g0GAU=; b=M05FVCy6ewd+ln/Y7Xow+rhOvmeL+Z2fLi0sVsDKCgdRcfDt6dy0ffTspj0KQHxvC5LO 949zI3gHw6v8GP1t/BaOH8EEd2bMXQRFZSa4LidSrehcrKVSeE/74ysdIrLGQ3uWuYiU g6r61j2kjGNGY9iiyEjx3DjWgzn1ZwLVqODGPihtboJH4e9SPC5qJ+Jj9/zEIv7pv3oZ rEB/cLf3bSWWAV3zs/BaacmHnKj/EJL2VH9UCrRVxyaPPsmVEF+rajK06jW09qdei15K d4ebNBNjW3VEVMiPiRmsh0SdCJuAJxfv+Z8FQImF9ETa24ZRFlzVeE3zDgDmoumJwqii HA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9rjupeug-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:51 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38T81dGq004840; Fri, 29 Sep 2023 10:28:50 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2109.outbound.protection.outlook.com [104.47.70.109]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfbj374-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kE95REGDQiyxCRUi8MAjAQYegi+DSBenwCP6U4+gFADN7HMoULFh+uNUgWKYEAy3ycsu37u5aNLF0YqW62tYAE2GE/4rdiOZcnmjLoJGSLUUQ9b0EwvBq3MCrm1XKIBDOtptWvJyDpe/+i9ArUkZ3wwwoeoSjKp5iLq3eutPCDC+nkxCL981f6dI2bOFUKa8iOOEnA+Gt3Rrt1Iibf2IeB7dIPPiSUQ/XOWYFgp3GSW/FrhvkhyJMI/UWwaCz3Ip4TGk5931GDSaFVExQXA+HoX8WLD6hIat412zpm1yZ3YDgXe8cf/3tzGQ/aDgvwqWU0UQH29UJmj6SGozVHZXRA== 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=6dpfvd4QexpFHlVLo6uba8WrCzFwMvYjqBcVe1g0GAU=; b=O8uJBAVFSXQDKa9hVySNzSmDO81HfkQ+NsRCC/86/ON3aJ/Vo4JZbTvwc1ZOA2akYRHo0stiytWZFuTkAjinR1IwwS4MhkQ42yHq1lJp+dWKYrw7YCruB34X81EB4u9E4smPPVU9vMXuJy1paX8mZ1K3j8Q7GNlyi+gwC/AUVJdGmqhQ6/g7pEuwWGq2/ylSda3dnhYE5XQzHCkqSLA3TEXwedr5ItWjm0r8dqcqNjVxG1SCxoCwwVfMfoG33vEJB6FSeK2ZbGEi9HN4E3LEuUY3Di6YY7yelpALQpR8kZPsvjbGSbI+a/ML6j0vcjesKxKfpVQykxMpfC7WKLDg8g== 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=6dpfvd4QexpFHlVLo6uba8WrCzFwMvYjqBcVe1g0GAU=; b=YRC3+yRXt+Szk6WXUVUpi6aHbAlY0CAU718tJ+y4l0zaAGEb6pHwRan1PhnpLMU5qXarf6ZlBqTrEEXQpthQ+Cg1ue8QRMyXrTioqFzJTUc+SwLQujbqYUwhrGc164Wz+2Ss0/uKqU1nh1flUyAeN9OvM4dyWujiLmfwtOSAE8o= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:19 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:19 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 10/21] block: Add fops atomic write support Date: Fri, 29 Sep 2023 10:27:15 +0000 Message-Id: <20230929102726.2985188-11-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH0P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:d3::6) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 6fbf8b5a-a925-4b5d-15f6-08dbc0d6cc91 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tze5NULcG2KMQ9XsZLPWlx+wKXFxc95weLnQcd/P4a0jwLeBC0/HtgOukJX8c7HEIjS8wD09wb6bwD5+b+Q/CiNGQ9HB1wxssf/gysqGPJXD4k03GAWlJphQEDZ2hRrTPYAoDT3rOFfhmohAl6ukzfMLey8WrDA/o4dw9WLagzrJAy7WoMhaeEMRrE2dFpXhJ0KzUD1aVe3VgCm1O5IlYqVWFKA4n8wxuzSijWJKKqOr9yTuWCIWxPW2V0e7BeWBHqNPUK+L4JVYaLU7sUyL59KzJcODBloYnNL7GGAzffQC+ml1Du/cmrrx6lN2KDinKUY4NvJ1/KzihTFhN+pG5GE3n2qphxTHU2prE6oEuZNLafC9rABTIHEBJl2rx1a2SzQTMy06HnZHpvFJG9l8tXLIy3vvfLFoyxjiYDpOD6WQDaPUkD2oO6E9pFYBEJxafTGmB4mILlayOlV2hh9KRxU2pDHfyZ+ZWJtz83RmRc4vg8DAuGC7yCCfn+W4yTmCvLibDBg9IAnkzzvDSd4k1vFGLdoLPtD93KIX2QOW11wZKO4Hdr8VWaDsyZA9vZ9jI+t2GFG2NhixyQ2EqM8s6wOSiss88lqL40mtgi0hxFc= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gQFdOk/9oZLWb1GAG3V5gbDXlfjR3Kq74SuvSz5RWeWk1EA2Q0lbl06w7fEFNJTRmCQ3JkPUv/hRhdH+da6ENdg4tvrx5I8Iqq1aRXGjnfFz8i/prGyfujejVNmzUUZpA+UsmeK+S6mj7q9uUWSiZYzaRdAvpVSbVDvnlDadFHAvC6//XHLle20DtDiSNceUSHkEC4c5GTe1NRY7m7+t4yE13QDtTXkcdtGESj9PuP60ISRwVvMnbreEIe0CIHDrqGDslHVMkv3QPDHzoSDgnqGLvNxOLfuwMnnaVlULWtgdOTQAfq3AHttfI3GLQg83Z23ixDHyvpkh+2+d82euEvgHoljP9nWQdU7cY+yUP9okA1sYGyniHa+HqeoczDqevQm1pbjcn/Q72GiCdLFFScQ0ZJ8rl0iPry/h6VNcA0kpc+G+EAP5pvkmsXIAlQAUzTeUnIXNZ//Wj6Q8khTsig8zYkRTHdhCqk/xdH1dLC7oZT9GabZjVamwWrtY3JGn/Gw8Xy0Czi2NxpWMFBWYZChp46jl03t6o5WJA+xZ1NKnxeCBR6+S9GuRVjwQ3muyg1irPSpRHky77h53jWuguyBsQeKKFKLWBvJT3CNiPEMmHHxX2tkdHLwCysjJC9TDoYdCvwb+WpyF4A89WCv3Q7Rznt9qDKuokjGy9N/StBS+pTC9TZLIvX/g7zCl6jd+FdsPhO/U7nN7mvCCyIzdzFAHrfoZlfcytKIuNuGJ4GP0x6EWzFCQnL1GrBt39CbdW2RW31PHykq8BAT+dhmH8E0iAPVkiKQnGqIz1t41Wt8smlxorcZkQpKl+s0I6Y0tyXVIDM37zufYmJSxwGWU3dGo/VtR8wtrOWGodjjM7kJ83Sjk7ZoTcok6r52SRBXvE69AHUU3JqB90YB7FkptqIAZy+p9VmN32mkn9T/0whgTpdTG/uwuHYpNMBHwdDZplE9l/V3TlRHKViYN3oYD8wuQS2SbcIvSOIORYIEjekOHlEXyH2ignuwz8oErJaYfsq7n33pnel3tJdRHZY6ihB5QNwesSVbNcpbmJsl/g8fqFCG/WmiEoH6OTdp6QVRif4XTTWw4736VCTuaXJE7rkqM6cx60dW7obc6tGlKnLXdlk5BH5JjOf+QSmw2ke+TbhcPyvdjUW4xyfDXM4a/5zYm3RfTcnpQiHyp+xdO0xXfbBwGnGPwSTdGIsUB/PrV7PW5YgBHqNM53HmpCK5dnBFQDquh9CcbnswEKQNHGcVf1VvMMWGfSZFB6cZQoR0qTP6Vlnu29dlJVzpWY/3twJGXkIgEOT2T5FGiUinnXsO+GwlTzw4abvs3en/lc56sAuUYFtCoxzOpU6Q3OdHWdKbIPU3Wkq0ooUZ77nZAHpWhYq1z1nyYHqxIDfMUWRmMAgfCjebgncaW4b5tJ0m6ayvjONoFpvGdrt7EQgipHw6GxLlIGaJGeeQ+bi0o+La2/sxPiOxUKF/hb1UceRxZa405rE6NzTcmS1gpzKG87TtPXS/EGwB+a/nytC/GrA9HQHPh+sFrbaeeRRZQOAXHTr5hMYJ7Z4lk5NYwLUtgGV6FjmWCLoUXOXPAwaOc+KnUG9720zVHAaPR6uwL1pLu4g== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: FV/zhekTmLuYgdqBbaa6GMckie0YXad1pYgw7PwrLUyrBfRM7f1fxasc8vxhPjaVSEB1pERO1ldI+bgvnStcoj3NQ6mKygbx/CSowr/0Ozw8Co8wMqBWJtQGzAtNc30xc8n1uStOVuPOaX/Ek04bttCOLsyja5yOMWytc9fOvRBz9kIqgBBPUi335youWP7PM5QBvhnYjPZQ39rACPY9TBV2Ajd+brae/nuxJOePcplrpS+ecwY1s7pWtUVXNDeUc4jXkDsMllYhbT+seqZYH2fgSnMOC4PjDUfynmwSrZ93rgCYFN74m5QLtE+DAneh4SS8wXauvAYYWBUb5WTgPQi8ONNRBO1fHkgjYC8kvdoQKLaELYg6g3SrpKGIuVJ9b83TqXn2jRzt6OvZ4l8HoQKefHWnfvOQwfrvJZuVPeNLm6jK3dRuPKGXXxJ3eb3Pj/wADQc3WIlpEzjEvaYNJNYSUIbWrRRG4AMsiATv2SpUNgxpPancSAiZ75AwDF40HSTzC7kY2GKC3rBR9xXfKDI0XbqHBJoUOq08RCz6MNLjV53Thl73/ZbzHxx8i88qBluznSkt8iSOfZUxYmBd1G9bWJzzbTXsgcddurbRBb6S8hL20e7nX0syfCCVx9lviDR3Q+xxgp4gF1291OxvIjgPkyPtdKpusq01+u8Gdb1O+G/EqVO26gA3IIdd/7PaQXLCEipTJ8ApuYn33LijiU5PIofvO7/rpeP5wPA+pnKj75uxcaRM7+vO8X3MFKQjiEzfdPPKMJ0zoTXoIFuS4ROYtZh0Wb+37/xPb1Xg5RaXmdDWU7HD0KrQzIXknHCZ3Ba3TD94ghOCHM8r/GkQKSolM5ntL/p3LWrT8DzJR+q6Kj61JWgT5RPzPWIYxMvhE0aZd2GGXAtIAed1BtaaiJ8GpwqClBckSf60Y/8QgSm6wxTtFE1o4LazuOG7i2P9f2U4SwCTXpyuO7IHsldtP4JkkxdlwWoZHno29kQvCxduspupKxEIA8CSEvyWitI06vD0ncqX823xNxdRY0GejTg9dyK83CKPUr/6zBEWVXcaEakO0gHJGId+G1oLVL80ZW2wLVgAY3x3iD6NdsqQnA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6fbf8b5a-a925-4b5d-15f6-08dbc0d6cc91 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:19.2183 (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: adXVzi7vP3Q7EBAfZvzsl5OuCvppN62L4Q89UL0sz61VOeRfuG7MW9HhkQBE6YDIn5/gtjTYmtBN6tXLSfDjlg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 mlxscore=0 adultscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-ORIG-GUID: IBwO50uRtkvIDU46NwWnYxSbmDjvVWvT X-Proofpoint-GUID: IBwO50uRtkvIDU46NwWnYxSbmDjvVWvT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:34:45 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778374666824841193 X-GMAIL-MSGID: 1778374666824841193 Add support for atomic writes, as follows: - Ensure that the IO follows all the atomic writes rules, like must be naturally aligned - Set REQ_ATOMIC Signed-off-by: John Garry --- block/fops.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/block/fops.c b/block/fops.c index acff3d5d22d4..516669ad69e5 100644 --- a/block/fops.c +++ b/block/fops.c @@ -41,6 +41,29 @@ static bool blkdev_dio_unaligned(struct block_device *bdev, loff_t pos, !bdev_iter_is_aligned(bdev, iter); } +static bool blkdev_atomic_write_valid(struct block_device *bdev, loff_t pos, + struct iov_iter *iter) +{ + unsigned int atomic_write_unit_min_bytes = + queue_atomic_write_unit_min_bytes(bdev_get_queue(bdev)); + unsigned int atomic_write_unit_max_bytes = + queue_atomic_write_unit_max_bytes(bdev_get_queue(bdev)); + + if (!atomic_write_unit_min_bytes) + return false; + if (pos % atomic_write_unit_min_bytes) + return false; + if (iov_iter_count(iter) % atomic_write_unit_min_bytes) + return false; + if (!is_power_of_2(iov_iter_count(iter))) + return false; + if (iov_iter_count(iter) > atomic_write_unit_max_bytes) + return false; + if (pos % iov_iter_count(iter)) + return false; + return true; +} + #define DIO_INLINE_BIO_VECS 4 static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb, @@ -48,6 +71,8 @@ static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb, { struct block_device *bdev = I_BDEV(iocb->ki_filp->f_mapping->host); struct bio_vec inline_vecs[DIO_INLINE_BIO_VECS], *vecs; + bool is_read = iov_iter_rw(iter) == READ; + bool atomic_write = (iocb->ki_flags & IOCB_ATOMIC) && !is_read; loff_t pos = iocb->ki_pos; bool should_dirty = false; struct bio bio; @@ -56,6 +81,9 @@ static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb, if (blkdev_dio_unaligned(bdev, pos, iter)) return -EINVAL; + if (atomic_write && !blkdev_atomic_write_valid(bdev, pos, iter)) + return -EINVAL; + if (nr_pages <= DIO_INLINE_BIO_VECS) vecs = inline_vecs; else { @@ -65,7 +93,7 @@ static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb, return -ENOMEM; } - if (iov_iter_rw(iter) == READ) { + if (is_read) { bio_init(&bio, bdev, vecs, nr_pages, REQ_OP_READ); if (user_backed_iter(iter)) should_dirty = true; @@ -74,6 +102,8 @@ static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb, } bio.bi_iter.bi_sector = pos >> SECTOR_SHIFT; bio.bi_ioprio = iocb->ki_ioprio; + if (atomic_write) + bio.bi_opf |= REQ_ATOMIC; ret = bio_iov_iter_get_pages(&bio, iter); if (unlikely(ret)) @@ -167,10 +197,14 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, struct blkdev_dio *dio; struct bio *bio; bool is_read = (iov_iter_rw(iter) == READ), is_sync; + bool atomic_write = (iocb->ki_flags & IOCB_ATOMIC) && !is_read; blk_opf_t opf = is_read ? REQ_OP_READ : dio_bio_write_op(iocb); loff_t pos = iocb->ki_pos; int ret = 0; + if (atomic_write) + return -EINVAL; + if (blkdev_dio_unaligned(bdev, pos, iter)) return -EINVAL; @@ -305,6 +339,7 @@ static ssize_t __blkdev_direct_IO_async(struct kiocb *iocb, struct block_device *bdev = I_BDEV(iocb->ki_filp->f_mapping->host); bool is_read = iov_iter_rw(iter) == READ; blk_opf_t opf = is_read ? REQ_OP_READ : dio_bio_write_op(iocb); + bool atomic_write = (iocb->ki_flags & IOCB_ATOMIC) && !is_read; struct blkdev_dio *dio; struct bio *bio; loff_t pos = iocb->ki_pos; @@ -313,6 +348,9 @@ static ssize_t __blkdev_direct_IO_async(struct kiocb *iocb, if (blkdev_dio_unaligned(bdev, pos, iter)) return -EINVAL; + if (atomic_write && !blkdev_atomic_write_valid(bdev, pos, iter)) + return -EINVAL; + if (iocb->ki_flags & IOCB_ALLOC_CACHE) opf |= REQ_ALLOC_CACHE; bio = bio_alloc_bioset(bdev, nr_pages, opf, GFP_KERNEL, @@ -347,6 +385,8 @@ static ssize_t __blkdev_direct_IO_async(struct kiocb *iocb, bio_set_pages_dirty(bio); } } else { + if (atomic_write) + bio->bi_opf |= REQ_ATOMIC; task_io_account_write(bio->bi_iter.bi_size); } From patchwork Fri Sep 29 10:27:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146886 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2a8e:b0:403:3b70:6f57 with SMTP id in14csp235951vqb; Sat, 30 Sep 2023 00:00:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCcXk19fTeBHiJ7NGHqzP943s05WgrdC+y/D3/4JSxDdxNujbc1pqEAvVMLcK6hBV6SQku X-Received: by 2002:a17:902:7682:b0:1c7:2740:cfb3 with SMTP id m2-20020a170902768200b001c72740cfb3mr5908522pll.35.1696057213495; Sat, 30 Sep 2023 00:00:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696057213; cv=pass; d=google.com; s=arc-20160816; b=reGJ5jw14Mn/wvxi7+9v1LRfoeJZgP2Fb18+jlA4+alX8c9zs0G/kkepaJhlPNTv8n 0NyYR5j9Yuxkc448G/SvPhaxZpQdsOR/o0ywpzadeAPRXZbftxnc86VvC6Upde0tgd0w TrcNNgg/V47dLfazzq2bMrlEOifh4YXzxjUrdTnDGDFGORrjfX8SpjmNqaMBEoT9zDBe 8zgPIUOVr+nJpXPi7etNA51o2K1KKd7tiqG6KOi7kHEJoTGb4GHb3R4HpLj6MNKJBjSV m4XbR6pIdyM4+DFrZbw0M7insOSClATDQVdFbwFobnCwqGsDZQqVdbD2TnomdUeL3/CX /zLA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=m+7AvDx9yW5qI8bkPF30T94MYRbkTwt6XcN/+CgEjBs=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=NwSbqzGmhobzOMV6B4sRFQjx27ZU5+6LvZDBzJu7UlGh1Fqi+1I2/u8gawp2UFleOf xetJoA06sZf3A0ndesmW/VTioGtgSZhBucWYqmU6MxnPK6hVNOcg/Ag/eYXuz95aUYEt DD5/bRee5/De2L5zzW3RJyrii+ak88UjaexwsU9JoyBjHMboIb4bUqP1sH2syx9MlwR4 i1/9UCn7uXgrwiJu5rwcSmeLYzte+HbJtNKpfT/s+KfCb5HYL+tppPCy9594aLlMBMXk PugOfyMo3LMkOOuEUsHVgwRa7tEqP+hAOb6Xkf9gPX/kmeWnSGqI+O7tiOIa7icpGHI5 dKdw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=hXrzUSF0; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=wY8oKXGn; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id a7-20020a170902ecc700b001c370dc4445si8757729plh.210.2023.09.30.00.00.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Sep 2023 00:00:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=hXrzUSF0; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=wY8oKXGn; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 5DD4F81143F7; Fri, 29 Sep 2023 03:34:21 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233326AbjI2Kdz (ORCPT + 20 others); Fri, 29 Sep 2023 06:33:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50466 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233232AbjI2KdF (ORCPT ); Fri, 29 Sep 2023 06:33:05 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8113F1BDF; Fri, 29 Sep 2023 03:31:31 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9STr022442; Fri, 29 Sep 2023 10:28:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=m+7AvDx9yW5qI8bkPF30T94MYRbkTwt6XcN/+CgEjBs=; b=hXrzUSF01iMuOB07c8YlFZsTNu7UySaJm4IKKM0jGIxJbPkoQSYEN93eS4Ic3De2wD3/ 2WiS/BqUkZ16AyAOdwytA1qCRD8Ep+6l/ILug0oi5fVh9cEfcQ7jTwTav0J4ES0jxd5v pkpU6CrcgqTAJTee+gGF3cR3qIBKPFZklMFMb8H+f2abeTFo881zrpFlJ0UwL0nKDwRV zHzafiikU8GanzKGw9Gh/e4n9HnMeNECC/jg+DdgadwfFxnOEaomwPvOQM/4ooINo+BX I+chWtTws8p8BHunD7McCq3WipMHnr8y7uRl0wkx1Q0RCAYcgCId/VbN7h5wiB62DAxx Ug== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qwbpbr0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:46 +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 38T9iSOE015821; Fri, 29 Sep 2023 10:28:45 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DBzIpqvO/ALLBkPujpMZGIEIhRbKVUPPCb0AIqobEr06V/CHyMaV2Kvd9vrqCYkGti1QxdBZ1yfD7OFnCt9ST0Oa7c8WzJypX+Se6tD5ej8KBt9XbHvgKbjAOkwtZdZED4BTL/IP6VuEO0gshU4CqIPgSPhRY+EG60jVbGaeg0IpqHC/NinCSr6obgtoOjklZJl+4tYUVNO16Ene7yudlHEUofUBsXPOb9nduuKixIATXt3Z8puLHtpPr0zBxj+/4YxdA4ougZ8RLoP64EJPN8JDVITzhUBnmh6/eNpWgyuQibH6W7kNRkwYuVRDgaGrOaNC5WQdb/gt1pm5SYPzlA== 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=m+7AvDx9yW5qI8bkPF30T94MYRbkTwt6XcN/+CgEjBs=; b=M+TwEOXp9nt0hyB4lMG07DGbRe9HDiMSKS7EeiMrnQj8yMr6kW90fTtgjC3WguAhceQsx9ueDWeyDSJLc+fcCcb0tGbymW24MFa9ftcf5inBUguNcqWUMVicGx7UWeznoYjzUUqMyJGIaEiPiS1ruUbow5yDlH7Du0xQ6KmVpeYXYZSEbE41nhF3CRQWWy5mhuzTsNzgoDXvbjnrPkti23P7eYRgGg8fHjbPqMtZqbUh2qmV6iyQYWBdI4ipMc99/uGNkXlEi+esyVMwfKyDx/d1GpvRkD32CLgktVnP49czs1hm7yHBjFe8wZFGsvOFMtgpDMEqUmanGVQAFFFGOg== 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=m+7AvDx9yW5qI8bkPF30T94MYRbkTwt6XcN/+CgEjBs=; b=wY8oKXGn/f3L0f9X7SdTq8BQv7VoobwJswoElyfCNEbOqS3+kMI69QgsRiuUILhjHcbOQGm8IRRckpKTKxynXpkmLOG169ExHJ6Zj9nePwS2JDMR3EJv4MTW8zE8DCuEEKgMGdX3pa3rE8RbbYnLDQ5E4lZJ6ldq0Pw405yFzrY= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:21 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:21 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 11/21] fs: xfs: Don't use low-space allocator for alignment > 1 Date: Fri, 29 Sep 2023 10:27:16 +0000 Message-Id: <20230929102726.2985188-12-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH8PR07CA0022.namprd07.prod.outlook.com (2603:10b6:510:2cd::21) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: b6ac4eb9-bb30-46dd-6a95-08dbc0d6cdfb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Syg2bljJJIPtyHffVkRlpnM6YCFzxI8gtT76q22TxP4Txw+PQqcFX/g74rPy5Bbrmn7S29IBl6JENmABUt67NKV2WSJ6y0eXw2EOAlr/tq3ygnrwCCRphZ8VZFxW8X1OoQJCUqy9Tuf9Qup9+F0LRjsvtZYmGNU5x4O3SdwVVXC9FhRPQYIP0ClqB9mC1NLb5BXYSq3lKWr0EeYO0DlD3ZKgGz1/j8g0TSi8epCe4GommMUXhGi4NJp/dW650FuOEkHDV6DMcqJkxmHxuc3QaY+yagOzfV9loMSeG0TxagSC8DYn7y/L87ULphl3TVsV/PdBH6/JCvzsiCb7K5VjpsIzlc0zZc7y+YQfUdkWMrPDUJxbbjB6J75OlSJ08MhsWMA9hF6YbwD/yTcsd5rZukAwRQHTgm8dLqXQL2rijvurlNPBd0fhAaJri/LGO+BPoZxQP9bX1ZNK9kfq1W7mPGDVthWYez4jirDxgZyxLYlsuMV/g+BqdDO5rK7CFfKgNoQN9UdzibFP4rJPf+sgypeinDOs+hZ1mbaCxyfF3YihtOuhBqWPxwBvM375+u6HyYK3RhYMT3YClIBVOU47RE/wV0BTDjjx2VDimY/Ev34= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(4744005)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: L+I6qjqLuj6cGynD5FlYFq++A1oXkLy2gyLMvGALXBDkVm7CHegOg/K2aDwnPp/Cb7yJMuHzG9C19YRqc/lPQB49sMzyfXvDi8efzgETI5gsa1/Ww8atdw9Czo2PUplRCmIggao/x+HBBMnM859eziz4kK7LPUN6UA2qzwhTPw++CqHluo4SdHg7WdfeW5nPjQzPcIm0tcdnXQui1wd00I8W5zUN3CtmOIKvGrL6jD1zZy+D8LYwSih5sz4I195v56u8CexC00I2mN0QZqsrOXLpGEXY92fWQ+yMNaQr1gKsAZ8A4FD0QKDdCymNwHcrbL5oouqZ0r7XoEL5Ksc47kXkEuBTjG1+/SuhV+GM/YWq0+QFEh3lzafYP5co7FKuaoLA3FumBXGLs38StK49icJKImSUX8vxl3MG1gwqW9aI1pNMW62zS38++5bN+YutxIyG392Vkeo0BCY49Yq/lj6gWEzRI6ctdNHt7fkUg+nxqCCLu8cAHlO304nkPIwaAXEM8/t8aY2DLHKMplAnPAYrxu8dl2XHnn8rViQehhxxcxEY794facQ3DC6NWg7OonMIhmoq5Hc544NMifLQgFgT1wSuKghF2if4mG0pvMBnaBN2DskSSSlNDC0cKBgyEt6SIxrV1kqRk2uETd9KJq8hWxda20RYep0TjUh8vvcH1jRp0rekOzcMbLul/J69/uUYdli+14EHhkP0+X4HfzTel6gaw/NU/1cl/wF2qOOgJkQu98FOQLFwNKYGVAPXg5m6Wco++RWJBapuzoOs/OSQwVo/pL7od79O3yAeL3TKJ/d4LSaZyL6imwTyftQyic/Kx3Kr3z54aFnlezA3BTDSAILmhKPBKq8bT8uYnAd/1cqdMZiGtNqID0y+6lyN2ZZbg8KJlCAeyRYDlQAsBwIVzl3u5DIblSRnvxpikp3aqaX/ZBNo9K14TuHV1ol1JubppNHywhbOSsAhEiQYXrofKb4zNKubpdK5UY6Hnom5X6g9rvxQs3ZfFLS5pEOPNcrzYg8NebHw5liTw+oV8tJLTvX8M4wYFf5Q6AOHEshNj6qhuIM0+K9qHUnYtxIFx6tfuCT6efKPMbP/fswC9IZdhod1vzzjUk13lkgv67fwZDQwPPSF25F5WKjS7eCGzQWm+XdU6ln0ywPCTvoOrSeL3+2XBl6WjpXlDmeEXsypRRNRyV/bz/R2nGnf3TQTzPdj3j7FSgANRysEASk1H+lXUmYOz6ghjGrdJDDi0zMeqDWgwJVgUV9jaw/WLplzrQrnGR/uJT4a6OO4KOXBN/JsfyTjMVK57eMh93ytJXIsSUbvhf8AAPeeoNPX0fwuPgfmj0nEXiu73ywnlyna7RquAISwZiW1Wq2ORy8ds145RbSBlxIGYLoggxnIXpF9UzwWoSN71FZgTEFNo/66XOLZTsezHJYhEK0sTUtgkcO4b0SBn0pqZr9ZQuUT3zFMwLmkb7RnRvlTAKuEd86UgyGKgcJ+H9gt8ubvQ67g7ul7XmfYKQJTFYK//79vC3hfoKyXLgjWrb00tXKHxVA7FCqLfL+tQvPH/LZQ80Mn8jK7AFtUMelvpiw75pOfyzoLyCstL4XMYAMpJ1LSzRIprQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6n7dxd7pEbhCob6lw2hS3ik0OqAfPm+Gkuu5mG92s5hCWDC50jyyJ4tx5vRbtvYwRIPwx0g5OTEbr41kq4LLTnpMedzdRpvpLFxUj+Mnyj8Z86Kbs6U+uTfpdpLzihgy3fUSoNAdfqsx4qLs8gF/9epdrXtHq/gIA2puTn10P329a3kC8UhdpbJM23zET9gIcYtEjR2YdkKQR2nK/j3V7FXIG8ViJa8ftTpZ6MojksbIcEP+g13gP5E2hvbtFbctMWkyuiF2aVvluy8K/KC1rHpaWMG4tooX/2O0KezD3JUskzVY/DAFHcFSlmKPmcvUKZr0mNF9OoUj8z4AID+y6RKPi8BW3J6xl7xTxxG5baOqtNLPJZ6AP3+FJBel2yqZjDeD0+mxt9ZfRy8X9wArzXN16ZI3hdATT1JJZW8jxCIyoRqlzkRIE6AqavhL8B8+wS4ns3gTQeGqzgKUciIaeinDuWsVQY5aHC++botV3XhNSmpmuKfWt6c5mY3BNggk2TovTadYZriEPncGrhq8HZQxUNBiUqpQnwLUXy2+22TI5Yl1nei3w400uuR0okye4oUt9f9nWrfxdBiFWS0tFMPKUgpye2Dz3BWJzqifiMPHv6H7k+uaA6i2nK8GwDqeAXEvAgxeu+mqSETsylDauP/P5kJ/JnVTl057sPZbg+uh3UZdFL9Nkw4fQP8oj1Zss9u1NuXjYOm0kBMPlxCmgHtJZpI6EKocd8auaOQIFhqpA3PvBiRhj8ZKxSFlnMgz+Gwub52bxo37/ebFcjsW8ZT3vCYKjayl9M4YPe2LDMxtUUXpW6vwWQ329dHod+ypFIf+9pLYy6F5/eesdsiQage8JqdMFGWUNFnYckRZ9tEO6TIFWJ4VDPcl6cBGgF0MnliIJ+hSvC6kHQSZEduJt4pClcAYXvJkQJc+N3skkTgr8QjCRL82PjfHpoP8Y4b+EmfCPIVSvNeRYZlzWSqVv3G250wGElb0U21j2As5Hqg6d5Jk7k2GaBYN32PJ/62yNTypaaPWZJ24OTNOESwhmMKpu+VpUbfz2hJ0lvg7gMYGO6vGZMi9pdEo6ULij747HhmRoiR4CeTMFB821uuGfA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6ac4eb9-bb30-46dd-6a95-08dbc0d6cdfb X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:21.5703 (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: 8WuKUfrgiUZQCbf1zQI5Er2jw9v6yfZfJoJ36mZKPomh5kf4TVgrm1cEzyihuWAshGyDG/uYMtRjRGHjOZUBRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-GUID: 7BWe1edzjEANjQfNHNqdqNIe3xLjJes- X-Proofpoint-ORIG-GUID: 7BWe1edzjEANjQfNHNqdqNIe3xLjJes- X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:34:21 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778444888839080697 X-GMAIL-MSGID: 1778444888839080697 The low-space allocator doesn't honour the alignment requirement, so don't attempt to even use it (when we have an alignment requirement). Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_bmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index 30c931b38853..328134c22104 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -3569,6 +3569,10 @@ xfs_bmap_btalloc_low_space( { int error; + /* The allocator doesn't honour args->alignment */ + if (args->alignment > 1) + return 0; + if (args->minlen > ap->minlen) { args->minlen = ap->minlen; error = xfs_alloc_vextent_start_ag(args, ap->blkno); From patchwork Fri Sep 29 10:27:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146782 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6359:6f87:b0:13f:353d:d1ed with SMTP id tl7csp3559554rwb; Fri, 29 Sep 2023 14:18:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IETlv1t529BXohQ32rbf0BKbtRzhGvSP82qFOwDOOFAqZIlOB9nK9qiLkapw6qNZ34iYyhB X-Received: by 2002:a05:6870:4612:b0:1d0:d68d:511 with SMTP id z18-20020a056870461200b001d0d68d0511mr5713903oao.49.1696022337362; Fri, 29 Sep 2023 14:18:57 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696022337; cv=pass; d=google.com; s=arc-20160816; b=DcJMfq5rtuxJQpJD4I1JDOQ54Of2xOJeRFdiI9nkmMBbpnWcW0eC7V9kI25Jnx7oNm iCFP/n+EZ1OnQml/7UQN9XS6rvu+jiDqKBD0doHPNbK7guI+oOJ6JGzkNf8z4FK2ZvF8 4wlM4xfi6LyodVtKFwkpewbvBH6N8GoXxbOwJN5OTnqXK30tnub2+6tt+DwiY48cRt+h HCAORVBfG8LNmIzA42mGE7k21dxXB6InJEIt5V/del396H/HpVmbanrM+tmylYslqmFt YcedqIXZJC3lnQfjZC3EXYRukM5+hCBluHUpg3vAlxlBtKRiCHTs1DWDrgGLjUqoeJ4S 7FAA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=IChuwCRUEGZ7NxnHVQn/DGIM6u18zam8FJHYg6Kwv5g=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=ikNrRWd2+dYBfI0G2nB1YpIckTrqXUCGLGHjP/XODuQ2lSD2DYZNFZXMC0jeAh8Hye k+MvxSkhuJy8WlzWYIqCt2rTjLNziLZUrQZd2aha+myaNMQv51Ca9SWOrc/7xfWk3dKV 2QWZsm05QJXVuH+63MagHeQSvWDyiskZ0VVNEaBBDytk57uIJik4rpH0YY+BdoloyV3w cY0Elor2iLbSIw9ipPe9CTtrI/W3o0dDBGgzORiEeZqJ4zbmW+BFQJNBT5xUAKF8ywE8 NLjIk2gHfx/A8G8flmmzfllrxxNV7FTOJLDNzS4XFLgKlg1FYhcrraEV0Uwr/CueslKO d/3w== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=SJojU5gK; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=bZ99X9DV; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id i14-20020a633c4e000000b00578c3a1dbdcsi21535323pgn.71.2023.09.29.14.18.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 14:18:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=SJojU5gK; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=bZ99X9DV; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 9DE80801B73C; Fri, 29 Sep 2023 03:34:30 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233190AbjI2KeO (ORCPT + 20 others); Fri, 29 Sep 2023 06:34:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233249AbjI2KdF (ORCPT ); Fri, 29 Sep 2023 06:33:05 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7507D1BE4; Fri, 29 Sep 2023 03:31:33 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9Svu022434; Fri, 29 Sep 2023 10:28:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=IChuwCRUEGZ7NxnHVQn/DGIM6u18zam8FJHYg6Kwv5g=; b=SJojU5gKyD31RdK80WaIE60oSZdRqUbgyWmTp0X6TyVzXGIiMXcL8NKaJxJZM9oA9g1l SWMX3lDLa+pgW+MHWwlG5XZinpLoEeAF4OMwGY0nVNGb7RX2af8LACDWcdNlbGZuzDrp liNC+CDxnDakSZkLtfbw7hpngcJ0ENoyrda4HJExa9GX4MHsX6H/jh1oB15ofBC1m2du cyMqtmo7wpWiqNsoLKBAj1fjIvNuTSEHO8OqeqMcDakuRSLE+HPYLmRBtExSt3AE497p ULBO9lQEWR6Bhc6jPvo70pw8G0LKCBh29b4FL0Gi8NSVJ3N5Qb+Zc8lW8CJn6umfuSl3 4Q== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qwbpbr1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:47 +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 38T9iSOG015821; Fri, 29 Sep 2023 10:28:46 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HdiQAZkvtGJM6R0wZs5410GGenDxbpHfKCJj6Wz4cSRfWGYZCSao9Nsu4a5LkhVJnwt6zarD5XQ8tAr04A2Km/p8knlbprfSvXunlrb6Hcx/Hdru4jm0nyqiaYGhjbEEhsDqiVbYCORskuMUlOfsK0W4TFT48+IfR51oMkpvdyP4ksrwTRz+/GtPc1ZOBpebU/xs9Thqz1NO/JCK7c1r8Tf2nXK6X85laiaRtgQyiX8pk7zklKwHIoDqXx6c96YPTVrI/0df/yVj4o3EQgtkm8yBmOZkD0yTu9CBNKFzsWFla581xytRv482DccJe6DZHj7ZUzqY6AZW1cQ91HQzzQ== 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=IChuwCRUEGZ7NxnHVQn/DGIM6u18zam8FJHYg6Kwv5g=; b=dTLRA4wdyf+kxlUdWfGYz99fLngiBCO9hMvtoGqr/XKJVZUQsU9xHhJ333aV4CM6tCK7oeouqkq2rUud70n9N5kyPc7cm2fcMQ2Lo2k5JOFFY9bYstATeW4+448X/kV1qpWSJaiqNKqs3+VWXl5rrUEUAIwQ6U2IL0FaiDY270DSSIF15IZuKL/mTnPZV2Jxf7EEZVgoJhJ67bG5fVxZachlqyRq+YMjUY5RVe/ooRU0g3bHzj6NihBSr6W5oCXkYFuhAETzw6M2uZvSznzJQheGyeTRTU8kgNF6A0VDcxrOl4RmIlpybYUkDpSL/5JbcpFn8RhH9nbj4XXOISftvA== 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=IChuwCRUEGZ7NxnHVQn/DGIM6u18zam8FJHYg6Kwv5g=; b=bZ99X9DVr8BQ1Sbvt8qdpVcq4lWrVlM5xMZavi5s6taTSnw2MrUSTWf1QV7Xj6+c49IXp9uUu0ep09FqF3qTqs1mZHusv7BWB7Uyx0w8sNc1uShfgNl9xN6E18LhTP0hed5WEPqIrZsSg0ZmH3IU3x4D2pN8hivtE2inKBTv1jw= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:24 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:24 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 12/21] fs: xfs: Introduce FORCEALIGN inode flag Date: Fri, 29 Sep 2023 10:27:17 +0000 Message-Id: <20230929102726.2985188-13-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH7PR17CA0030.namprd17.prod.outlook.com (2603:10b6:510:323::25) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 5be5e996-8e62-4cb7-23b9-08dbc0d6cf68 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: O4kcYWpO25E4KHvWrLMvENEyKnYGuLXynOGDYkt3IfZj238QbDRjRhp6l5i+E/j0W0cUr51UoNqC43wzmOqUVI/N+SEJco0dd7zTqHxCo2IfQahG2up4cmTrFoqO6xManrFFikCekFLR/lOYT2VrJGHTCLW9r+2WoRpFCx8JoMLTpjWwpRFe/yew34560H4Ig9oTTfXdN2mM5fnHjxj9h52Y1AyV8CBa25a0Hkg+6MZ0JUiP3rdPOplMuSa993uIuhNIhggYc+NYofgpAw93s+3qboVCO7gTdKFWkAiV7DMJ7wVzXjZNBWhnXqtey9R7bKVV5uCd2CYgsRlMp46P8A9d0u3KjzaHQealFChg3T+jS+AVhOm/JpmI8VdDV4ZUsqXAn4/ngKgCh2OCYhcWCdZDE/1FAzfi71v2Gocx+ZOKAaXhKg0nU2ZhfJuOlJabLAji/c7f3kXpdfWxgzIFLcs3nzIRg+orHNUc5hfWtGJ1+6d+Hdaxn4oaialfj02BCcq/BtJHpr9uG3im2AK3wOryDgSdjAouly11hvkG8SEdA7kLFhwHmjR544n+kl3gx8Nwphu45OUS9l5w5fdLRfJk5k1kwRoVjblcBxB3huw= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pkGe8WFMuGQvPuo+HQa9a646rF92ub8cKoqdgdiK7rGzjIrm+d2FIcUJuOyqDXCoJf2mmUTlZr2tIZdYtBO0i6ZQE/xnCipE+FN+hkGBvmKY02kUhM+NWfrVb5+ciqgCvaQdjCeoVV5QiXIRhPqWrqhmsv96TwwmIaZ+nres3LBTznSncwdV1gFHftOqkQIzwzoRhOEfEntGDDuiQR82L1NCsAJ9G4wecQtPYsHZSn4MZz7FKG7ckMO3m707Kw84s2GHHcRou4NTzh3HMb/VuCt55qAMrUMT30bv+hvRRgq3MlCtPUxPBr4aN1BvMSTmvsi/HshGnUDsOChQlBvHVzfeKnDk24HLaZuTPuIa+gtZEFREvMYF9WDpNKCet5sY45dfqKoeAkurS4bzOh2NGCi0VcLfGH150u5Gq6CxsG/QyIHoc6R0h2/M13lFWoPtkIaCYfHWQjeuJCjhNOjO1z0AngTcyNPcUpGwlEBzs+96LV79j1hQsTXLTFwSN6v5AtcKfNEeXamXmTmHpIAYPD093GfsaCq36AsnaBhSpakEFYTvwXju+/WSzjbW+3lJDvQ8ORbmgrAJBiPkQxTuCrzMVzFBHsSKKkwULNtVYWUmvk2Roe4W7sc6wqYiqO26y5S8ynLpzCRrKWOpW4TGn22GNCV2UU/oP8ccV23WRVONUqHLJ1fFvuKzZFii4LPt7fQS8gbycPCZIJ2hemGAFvKUJU2mvvL3rAoW42H/XuCp4YJqoWMv1+caFH81JjPqmqpGQA3jJaTeodJb11tn5lgnHEK4rap0WFbwXq9pXYTXEeIWAqPs2sJgbWA8f7NkxdXVxtMfikeEmIohtXJ/YtTNjK8TfOzmgeFRJ2/tNG9demb9DVJCu8DNehIKIqsPn06x5u98MW1eNve9H9+X8rGuzcCoXhlIWXO4td2vG/nLbro7hqjorHGTZeGfYjc6as0O+oYNAz/KPvFflZ5+DksXD7naGv4eEMjNt/9tT+5bm0zaDY1IZaXnrzy/y9V/++NsNr/tfz0dpMA9S7lOz7ye3gJTkaQnfNcUSe7OAh+UtHbix9xB0eV2mjw8bRk76ucI/05A8B+w4HcvULjADf2MKM3GvkArLWpxUpWRk18i45NwoyL0Q4gkpSR63kEYloFlbcJIgZ82sgXo5H/HdA7XjT50LFJ3CAOTl5zZ2wNQwbOsmnSeR5X1PRAFydpMenijUzefs1Xk837bD8ul/VxzfULYMoUJ9+2JDABFGuqLXCpShg6l1BiocxbuucB0dGM5mfkM6cp9Wa60EaO3pMupIslTDtUHzJbEQvKMXY9aMydsqhSZQGHKTzM7AdvbK75aXdAmStTzoWRh5YHO/JMl9NWsMcIySUoRd/7IuC0rrpvME8FAdvuYxUrIDMJir2gwzCO/+EbR2I8RfO5N/nRZ2sYa46Io86MBeb9I/5wZRM50xrZN8A4nwxLtVqYbbdDyJJTzULFVIuLj49Ly4d9Gv3e2AWlae3d+98gumRuri3hTkA+phSDOSq/t/EZHrppnAjWOCnVMkfxo0uwAf85z9xgxCMkx5DIVQYYDWeymlNZ5VQ24iEHU04SdDf44cJbxXJTiN21BeHGzWhllHQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: EOXeCFCgTdkIEIi+9c+L/u5jfq7YRMCo0RZfkSb8qZOefNd6drE5g1rrGGBm0fcgsB32jcKrrGqsgUgn93ybC9SWvkCrEdObSM+yq8mRAnfMg2MAvnaYmAjLYfj16Fx06yW10pzlcmcNC0cRtoEr/j+1nsTeNHAeHvBW1nO5HnHDZNseGAB8dnXOMG9Bx3M8elsmry4nE6c2e4g7BMmomBtoz+uuzTDoku2k7Sq+iXRf3zhUdIgUB3Xzimx0AXxxG2bOPTK2PY9iFiuB2pzhhw4VUDi5p9AvBpQA0RazAGupwXPfsW3ULWrJU/lP25gW0Ru3WQyTFUfx1R6VpomPcAMeFQcTdmDzQqkS/5kMo/EUGILpVGqop/+ybc9/W64sk5i/qcgv2b8cxoKtSSPmlg+bcOdVgzH1BQwSPhmrWQ7H9iHcCR06Sd2HhdVVbo9uwpKuo5vIm5J+3fexWHribtXVf1BHbZd5Tt1FKPfMNF8x/h6ZYS0PTvg1fE/9DrGCoHdEk2QB10d6NeJxDNzi3zs3gz+yLxV9ef4g25ckM+bdVfHL3z+9CgRby3ecgdwaiwXo5lK08zpG08HwW21c55QX5PtVmz9mouDuDrQ1RVArgUtq46b+5GDoqAiarYl2wWOtH0Zsttjy9yK2YRD8DOJxWuOWKLK+F3JZ2AWRt3RqSKTDGBKpiYkqJe9gAoLz7yaTVuAF/WcF7ifzpDJhoC16nqF6BiW6pExfdlYlDLTmgYxxAQqVMLs0BenecD3YOOy1oQ0ED2sOqJ1ECSI5iik6Fk5jHrBL24YwvqBZVRlbdoik3MEpEFY8Bcvt5nPpTiS/zctQUCXS9acvvHMNdsenTQeoA/n0rXIP0L1kAlh0wZM2YWM3LYaboSEtABGU0EVx4TaIG3BRWEIUo7Jj2zp2UmzcafWr6EjGmroJl2DtL/pwumpkWIvFc8aB6cfDCkoF3jPvPDpJOKwz2p/1XKwRjMKijalP1mZxcf2T43Mqx173kNJnKjri7tUJrAbwSKtFjiG0lHu5/vV8H5477ZlViNEdrC7vP5Ehd3jrVUbHT60U2AkSu9xsENYrXLBlCdz77lWiQKa8QGUbFSWAkw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5be5e996-8e62-4cb7-23b9-08dbc0d6cf68 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:23.9898 (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: aFdHSlENopjRq3mAVPEcgGnFKqf1yOryfzvaOS951gTTF/UR/jXK7LoFWg2DdxgB6Yc727I3BL7oqoivWAheOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-GUID: RsHLEOH534gGQbF3HPf4Bo4toqwQidha X-Proofpoint-ORIG-GUID: RsHLEOH534gGQbF3HPf4Bo4toqwQidha X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:34:30 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778408318408531871 X-GMAIL-MSGID: 1778408318408531871 From: "Darrick J. Wong" Add a new inode flag to require that all file data extent mappings must be aligned (both the file offset range and the allocated space itself) to the extent size hint. Having a separate COW extent size hint is no longer allowed. The goal here is to enable sysadmins and users to mandate that all space mappings in a file must have a startoff/blockcount that are aligned to (say) a 2MB alignment and that the startblock/blockcount will follow the same alignment. Signed-off-by: Darrick J. Wong Co-developed-by: John Garry Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_format.h | 6 +++++- fs/xfs/libxfs/xfs_inode_buf.c | 40 +++++++++++++++++++++++++++++++++++ fs/xfs/libxfs/xfs_inode_buf.h | 3 +++ fs/xfs/libxfs/xfs_sb.c | 3 +++ fs/xfs/xfs_inode.c | 12 +++++++++++ fs/xfs/xfs_inode.h | 5 +++++ fs/xfs/xfs_ioctl.c | 18 ++++++++++++++++ fs/xfs/xfs_mount.h | 2 ++ fs/xfs/xfs_super.c | 4 ++++ include/uapi/linux/fs.h | 2 ++ 10 files changed, 94 insertions(+), 1 deletion(-) diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h index 371dc07233e0..d718b73f48ca 100644 --- a/fs/xfs/libxfs/xfs_format.h +++ b/fs/xfs/libxfs/xfs_format.h @@ -353,6 +353,7 @@ xfs_sb_has_compat_feature( #define XFS_SB_FEAT_RO_COMPAT_RMAPBT (1 << 1) /* reverse map btree */ #define XFS_SB_FEAT_RO_COMPAT_REFLINK (1 << 2) /* reflinked files */ #define XFS_SB_FEAT_RO_COMPAT_INOBTCNT (1 << 3) /* inobt block counts */ +#define XFS_SB_FEAT_RO_COMPAT_FORCEALIGN (1 << 30) /* aligned file data extents */ #define XFS_SB_FEAT_RO_COMPAT_ALL \ (XFS_SB_FEAT_RO_COMPAT_FINOBT | \ XFS_SB_FEAT_RO_COMPAT_RMAPBT | \ @@ -1069,16 +1070,19 @@ static inline void xfs_dinode_put_rdev(struct xfs_dinode *dip, xfs_dev_t rdev) #define XFS_DIFLAG2_COWEXTSIZE_BIT 2 /* copy on write extent size hint */ #define XFS_DIFLAG2_BIGTIME_BIT 3 /* big timestamps */ #define XFS_DIFLAG2_NREXT64_BIT 4 /* large extent counters */ +/* data extent mappings for regular files must be aligned to extent size hint */ +#define XFS_DIFLAG2_FORCEALIGN_BIT 5 #define XFS_DIFLAG2_DAX (1 << XFS_DIFLAG2_DAX_BIT) #define XFS_DIFLAG2_REFLINK (1 << XFS_DIFLAG2_REFLINK_BIT) #define XFS_DIFLAG2_COWEXTSIZE (1 << XFS_DIFLAG2_COWEXTSIZE_BIT) #define XFS_DIFLAG2_BIGTIME (1 << XFS_DIFLAG2_BIGTIME_BIT) #define XFS_DIFLAG2_NREXT64 (1 << XFS_DIFLAG2_NREXT64_BIT) +#define XFS_DIFLAG2_FORCEALIGN (1 << XFS_DIFLAG2_FORCEALIGN_BIT) #define XFS_DIFLAG2_ANY \ (XFS_DIFLAG2_DAX | XFS_DIFLAG2_REFLINK | XFS_DIFLAG2_COWEXTSIZE | \ - XFS_DIFLAG2_BIGTIME | XFS_DIFLAG2_NREXT64) + XFS_DIFLAG2_BIGTIME | XFS_DIFLAG2_NREXT64 | XFS_DIFLAG2_FORCEALIGN) static inline bool xfs_dinode_has_bigtime(const struct xfs_dinode *dip) { diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c index a35781577cad..0c4d492c9363 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.c +++ b/fs/xfs/libxfs/xfs_inode_buf.c @@ -605,6 +605,14 @@ xfs_dinode_verify( !xfs_has_bigtime(mp)) return __this_address; + if (flags2 & XFS_DIFLAG2_FORCEALIGN) { + fa = xfs_inode_validate_forcealign(mp, mode, flags, + be32_to_cpu(dip->di_extsize), + be32_to_cpu(dip->di_cowextsize)); + if (fa) + return fa; + } + return NULL; } @@ -772,3 +780,35 @@ xfs_inode_validate_cowextsize( return NULL; } + +/* Validate the forcealign inode flag */ +xfs_failaddr_t +xfs_inode_validate_forcealign( + struct xfs_mount *mp, + uint16_t mode, + uint16_t flags, + uint32_t extsize, + uint32_t cowextsize) +{ + /* superblock rocompat feature flag */ + if (!xfs_has_forcealign(mp)) + return __this_address; + + /* Only regular files and directories */ + if (!S_ISDIR(mode) && !S_ISREG(mode)) + return __this_address; + + /* Doesn't apply to realtime files */ + if (flags & XFS_DIFLAG_REALTIME) + return __this_address; + + /* Requires a nonzero extent size hint */ + if (extsize == 0) + return __this_address; + + /* Requires no cow extent size hint */ + if (cowextsize != 0) + return __this_address; + + return NULL; +} diff --git a/fs/xfs/libxfs/xfs_inode_buf.h b/fs/xfs/libxfs/xfs_inode_buf.h index 585ed5a110af..50db17d22b68 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.h +++ b/fs/xfs/libxfs/xfs_inode_buf.h @@ -33,6 +33,9 @@ xfs_failaddr_t xfs_inode_validate_extsize(struct xfs_mount *mp, xfs_failaddr_t xfs_inode_validate_cowextsize(struct xfs_mount *mp, uint32_t cowextsize, uint16_t mode, uint16_t flags, uint64_t flags2); +xfs_failaddr_t xfs_inode_validate_forcealign(struct xfs_mount *mp, + uint16_t mode, uint16_t flags, uint32_t extsize, + uint32_t cowextsize); static inline uint64_t xfs_inode_encode_bigtime(struct timespec64 tv) { diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c index 6264daaab37b..c1be74222c70 100644 --- a/fs/xfs/libxfs/xfs_sb.c +++ b/fs/xfs/libxfs/xfs_sb.c @@ -162,6 +162,9 @@ xfs_sb_version_to_features( features |= XFS_FEAT_REFLINK; if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_INOBTCNT) features |= XFS_FEAT_INOBTCNT; + if (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FORCEALIGN) + features |= XFS_FEAT_FORCEALIGN; + if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_FTYPE) features |= XFS_FEAT_FTYPE; if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_SPINODES) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index f94f7b374041..3fbfb052c778 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -634,6 +634,8 @@ xfs_ip2xflags( flags |= FS_XFLAG_DAX; if (ip->i_diflags2 & XFS_DIFLAG2_COWEXTSIZE) flags |= FS_XFLAG_COWEXTSIZE; + if (ip->i_diflags2 & XFS_DIFLAG2_FORCEALIGN) + flags |= FS_XFLAG_FORCEALIGN; } if (xfs_inode_has_attr_fork(ip)) @@ -761,6 +763,8 @@ xfs_inode_inherit_flags2( } if (pip->i_diflags2 & XFS_DIFLAG2_DAX) ip->i_diflags2 |= XFS_DIFLAG2_DAX; + if (pip->i_diflags2 & XFS_DIFLAG2_FORCEALIGN) + ip->i_diflags2 |= XFS_DIFLAG2_FORCEALIGN; /* Don't let invalid cowextsize hints propagate. */ failaddr = xfs_inode_validate_cowextsize(ip->i_mount, ip->i_cowextsize, @@ -769,6 +773,14 @@ xfs_inode_inherit_flags2( ip->i_diflags2 &= ~XFS_DIFLAG2_COWEXTSIZE; ip->i_cowextsize = 0; } + + if (ip->i_diflags2 & XFS_DIFLAG2_FORCEALIGN) { + failaddr = xfs_inode_validate_forcealign(ip->i_mount, + VFS_I(ip)->i_mode, ip->i_diflags, ip->i_extsize, + ip->i_cowextsize); + if (failaddr) + ip->i_diflags2 &= ~XFS_DIFLAG2_FORCEALIGN; + } } /* diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 0c5bdb91152e..f66a57085908 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -305,6 +305,11 @@ static inline bool xfs_inode_has_large_extent_counts(struct xfs_inode *ip) return ip->i_diflags2 & XFS_DIFLAG2_NREXT64; } +static inline bool xfs_inode_forcealign(struct xfs_inode *ip) +{ + return ip->i_diflags2 & XFS_DIFLAG2_FORCEALIGN; +} + /* * Return the buftarg used for data allocations on a given inode. */ diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 55bb01173cde..4c147def835f 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -1109,6 +1109,8 @@ xfs_flags2diflags2( di_flags2 |= XFS_DIFLAG2_DAX; if (xflags & FS_XFLAG_COWEXTSIZE) di_flags2 |= XFS_DIFLAG2_COWEXTSIZE; + if (xflags & FS_XFLAG_FORCEALIGN) + di_flags2 |= XFS_DIFLAG2_FORCEALIGN; return di_flags2; } @@ -1143,6 +1145,22 @@ xfs_ioctl_setattr_xflags( if (i_flags2 && !xfs_has_v3inodes(mp)) return -EINVAL; + /* + * Force-align requires a nonzero extent size hint and a zero cow + * extent size hint. It doesn't apply to realtime files. + */ + if (fa->fsx_xflags & FS_XFLAG_FORCEALIGN) { + if (!xfs_has_forcealign(mp)) + return -EINVAL; + if (fa->fsx_xflags & FS_XFLAG_COWEXTSIZE) + return -EINVAL; + if (!(fa->fsx_xflags & (FS_XFLAG_EXTSIZE | + FS_XFLAG_EXTSZINHERIT))) + return -EINVAL; + if (fa->fsx_xflags & FS_XFLAG_REALTIME) + return -EINVAL; + } + ip->i_diflags = xfs_flags2diflags(ip, fa->fsx_xflags); ip->i_diflags2 = i_flags2; diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index d19cca099bc3..a7553b8bcc64 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -287,6 +287,7 @@ typedef struct xfs_mount { #define XFS_FEAT_BIGTIME (1ULL << 24) /* large timestamps */ #define XFS_FEAT_NEEDSREPAIR (1ULL << 25) /* needs xfs_repair */ #define XFS_FEAT_NREXT64 (1ULL << 26) /* large extent counters */ +#define XFS_FEAT_FORCEALIGN (1ULL << 27) /* aligned file data extents */ /* Mount features */ #define XFS_FEAT_NOATTR2 (1ULL << 48) /* disable attr2 creation */ @@ -350,6 +351,7 @@ __XFS_HAS_FEAT(inobtcounts, INOBTCNT) __XFS_HAS_FEAT(bigtime, BIGTIME) __XFS_HAS_FEAT(needsrepair, NEEDSREPAIR) __XFS_HAS_FEAT(large_extent_counts, NREXT64) +__XFS_HAS_FEAT(forcealign, FORCEALIGN) /* * Mount features diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 819a3568b28f..1bbb25df23a7 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1703,6 +1703,10 @@ xfs_fs_fill_super( mp->m_features &= ~XFS_FEAT_DISCARD; } + if (xfs_has_forcealign(mp)) + xfs_warn(mp, +"EXPERIMENTAL forced data extent alignment feature in use. Use at your own risk!"); + if (xfs_has_reflink(mp)) { if (mp->m_sb.sb_rblocks) { xfs_alert(mp, diff --git a/include/uapi/linux/fs.h b/include/uapi/linux/fs.h index e3b4f5bc6860..cbfb09bc1717 100644 --- a/include/uapi/linux/fs.h +++ b/include/uapi/linux/fs.h @@ -140,6 +140,8 @@ struct fsxattr { #define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */ #define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */ #define FS_XFLAG_COWEXTSIZE 0x00010000 /* CoW extent size allocator hint */ +/* data extent mappings for regular files must be aligned to extent size hint */ +#define FS_XFLAG_FORCEALIGN 0x00020000 #define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */ /* the read-only stuff doesn't really belong here, but any other place is From patchwork Fri Sep 29 10:27:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146589 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4087174vqu; Fri, 29 Sep 2023 07:44:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFXbfojPFsXO5eetq8nBmeWdufTLghHzNOdyKsCBdstk0DoGPy0AuM03egFVsEyHaQSTvFS X-Received: by 2002:a17:902:ecc3:b0:1c7:36a7:e14a with SMTP id a3-20020a170902ecc300b001c736a7e14amr5267958plh.27.1695998687719; Fri, 29 Sep 2023 07:44:47 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695998687; cv=pass; d=google.com; s=arc-20160816; b=cM3hnbYTSi3Dh+K/zA536LMbApumnQ3789txcuyemP6UvDCogE58arZkZhoywHKCmS t4c6wOaJ/9cL6I5Av2qHAfDyz2CyYYsxii1tpjhSwYFclcm1CX0L/8jRywACGwNEb4VE McT/2vxbKZbluPYhrepf4LrRf++lhfwip0L8/hVF9dKSa5fSGusnd+qeRiFg/m9taHsS mZHVcbxl3GaigvOUcKnMkivUiqgaEsjKygKjkaAl4r4MqX9glfw6f46pLacO37951kww gZlxxfC+LNyFvhv+/5RnGhdVPd7/mstd9YryCueB8hXsGFdVgXHkSeBDaYDpH6HWlwwP ZEsg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=yfJLleUzZhUtQP9VfGEdjJgGnBJM6xGs5In/ja/QADg=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=1Kvnih0uQpSHtcRFXD6xxGIhCqkYBS23dvn36edWrGF5gM1P6ts4lYsUtYyHS/dJRm ZrJGtlBJYMVugeAs4MOaUVuUBAENhZz7jqSAm0VgVPsd4/jCt6+b/89wPpShDvj+tZVG 0ujy/7PktpkOSIRvtMJ3Z+6qL+i5XXIrnKvX661sD/aQeb/nA4a9Murc26Cr9/0dkovw HwEHcz3rA3XJZcegaXWeU7t3VmFF8/iJa0zw15+CwBI3Hm+tRqs8vr8XSZrQHMuX/3tE /NUTbg9Tf7IDPxww6ykSqTvK4OVgl1u2dl39LylEzHmNgDQBGqV1OxPik2jbfOvELd8I S3UA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=roZeu5iY; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=FPf+ljqs; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id w17-20020a170902e89100b001bf193a70b3si14724322plg.298.2023.09.29.07.44.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 07:44:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=roZeu5iY; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=FPf+ljqs; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 10E8580A07D2; Fri, 29 Sep 2023 03:30:28 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233092AbjI2K3v (ORCPT + 20 others); Fri, 29 Sep 2023 06:29:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233173AbjI2K33 (ORCPT ); Fri, 29 Sep 2023 06:29:29 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B720173C; Fri, 29 Sep 2023 03:29:02 -0700 (PDT) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK99CC018488; Fri, 29 Sep 2023 10:28:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=yfJLleUzZhUtQP9VfGEdjJgGnBJM6xGs5In/ja/QADg=; b=roZeu5iY7kKBFyFMxMkyb+F0ozckMEXcE27X34LtuAXuz17iKRHcVYnF6HXf/RwxLTyJ +ORkw2b10MpFV7a880CA49Zjlx0a0Bx/LzWkLSlXPS4rvu9qmbr4Ox1TNBut5NUoapRS n0cA9CudJ4ep4sqaFiBDhs1sRaxmE0wIkXkZoneB7kD8LCooPH8bjb7KgBVI1VyPV37S lLZfIchqnMUZcDJMMC6NETfdADX86/Dsg5TePbg5kjJLH7Xujd7dNo/u1cthLq48oYR2 6brG2/IRzCAM+wK24yfoGU4wX3XqWrjVAKIWkEBjrO8Wy/xu6w5TeW8o5rlHPH8ezC7f kA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pt3xec8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:47 +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 38T9iSOH015821; Fri, 29 Sep 2023 10:28:46 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DxN+2++jRE4U4Q2Mqsh9hMK5K1y4F49ISqx17Vq9Rigyqz5Pd+o6TOEYnMv4EKSray0e3noGqh92RWbjwy1m1fDsZrPOAmYkCFyG4TWdCk5MOPuQLy4TXId3BPOIzVCXX2NwyuzHm9K1ELOG+equbkIcMENXnbs/vDTLlbS0aQ8wBpPnn257Ae7HS5VMlldq6fL7xzF+JHXa63pGP0attlp3eSdi1BJwqyDPqJRg/enwHup1ZXLPR8vzL4gD5yT1SnACzhZEoudp9MnlSaYxsK5EPuVIvf/XtJB4H72pUj2vcCvfRiQNq3O+C1dOKvFskmEGFA2DvMJwxX0Lm+Yvyg== 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=yfJLleUzZhUtQP9VfGEdjJgGnBJM6xGs5In/ja/QADg=; b=cI/L3fR8hYRiUs7jTeCmlMzYgImmOhB4Q8b0EUbb0vE5NYtgBFfKz5G/Skk92Te6E11cJrKWA29tLKhjQA7/flNcrVzK8fyawenEGCcO+pOrR+4/1qZZc4hihhYn21WQCh55f2Zr+4NU+xuwXT+2B4XqisnbQRZ7AM3YDS0hktrN2sZUCcPckxOXXn12OSJiu9Bacv9Dys7+HL6qefY2Qb+9z4vEz50/8qkXBhvHhRi3r91SS9aE4jnBv4cNTlvARSU9CvCjIieP2YZFPTQYy6SwjntyclWMDg89HNZ13m7bboXdmlJrpkOSJijwUkSpUtt5jlYunyr0ZKkEIb+0+g== 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=yfJLleUzZhUtQP9VfGEdjJgGnBJM6xGs5In/ja/QADg=; b=FPf+ljqsIlHuUE6qgJvH8jaJid1r7G6r4InWFEJC8rQES9pGyyABgpm/3q8r7hqqKihClO1R22Ean9zCttIodoziyFr05PMyG5zO1NRVlOHGobnuZFtPd1ID1/+skKMlUcqvRaKe3RdmZab0O26qmnDnT/SITblcFWdPulIuPiA= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:26 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:26 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 13/21] fs: xfs: Make file data allocations observe the 'forcealign' flag Date: Fri, 29 Sep 2023 10:27:18 +0000 Message-Id: <20230929102726.2985188-14-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH8PR15CA0023.namprd15.prod.outlook.com (2603:10b6:510:2d2::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_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 66ef31c5-b056-4194-d843-08dbc0d6d0d4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1xl3/jb6tJQ4mrnWqrfggJBF4T7QIKTqxJ8j+WcQLZ/MIASm+JofSstJtsf6ecqixBYh5RtT35J0WCmJs8OdiH/fHzHtdU+mBWZ97RdVj0oJp3Gg3QE0P2shyccBjoFmq42AZ8wCs6ry9o5eVBLT8gB/UJIl0/JqImPzA/0yK2vK9HjmDW/ue4XMYg0itWJvJQZNLg/K/MyvKn1tXbL6Rq8JF7fttudH6Gw1rY0/OliObrChoDKINcWWFeZ6ZEZTwAH8/RJAVnEptVSyGopIeLjfXSZmb69Bu8kO4+2M9WmlNirejlyWimw/EpP/GqyQYu8mvMKEQBLPUztD8Cabbzg8rQDZ8LQVGpRNYo5SuGYTJGKpNI/hnr6iG8P23SmAOan1NtZoYJLGXDa6dA7t5H1mNTo8+LY6VWyWro4WFU9A7vSi72KN9B2KR0se+mJIzhknxFwhVy6VVinw5p+18CApBjKzK5vNpWnsn4YIkDIgFlvh7fMADz67NsxFyNpqLx0TbB6mPIyqaGgl0f9QWVv0YAZdL2K2JKZ8RNFRXCvevUks6K83k36OdyJLHd7c1pS+nVTIeaCFUd0TvXx2xPSWw6616FWRt5K5K0bKe851fL31B6WNHiZNRVkwL1Y0 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001)(21314003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sxo5sGDyW3r9NIf3PoyC2jILTl0LsxAvHzCJhglWc4GPFvH9r+48z9bqPeWTb7jIGF41CNe+kaXlUpfu++JJ/Of3aMlkWmGwYzxrByIUlgpHbEtiZz3L/KZGtXyxOgfCbdqnOAVa+PjY2MgLNlVoPPwQctcR9nOE2W6dQWm9yZGxWszZ8XPKtXkl5G4g4tryq8xMazsNrmQiNteg5P/5V0QJI+H/GXds80nr0X6q6X0iouWBONU+tVQYc0bEg49tFwhvoXkA9i87xqwCpTvtfz/eT/5xEQvCpYAlU+Dec/oWaBLLj4qNSlV+PI6yAT8/fuNctrNv2J4mlN8NX3phSyA2jjL0qg5PBjqz8Rp7A5Q141ciSmfTHVdPxn4eVdddMLo8XyFh0Shyz27XKL1BDgSwaxVtibBdoLRE1tSsS/t9zrbbALHKViXPKYiVzWGB9cfe0bgO6PIUVylamYl33zmdtBZTf2AkYBSKNaJzO2e0/xhtWfDYYsiLXw+NmjfJb+i3oFOerS9uyjGT71S2JWoAKJpES3T2jVcILSZrOk8j+SA6Ue1JO9O7dBjiwr4Edvq43EV8snbnnVqTq1m0sSpj+nCLF7AkMHnaf94308/okoshndXZ3rdkIE+HbDAqrLxCyr8uOM/2PmqalufBSUfmx/FLrXrI7xUeMS+a5jtivpZ/Ty9ND1jUGM6fwYxjz+bWhRdYCzohN0ARjjpeljFSdATrrTXKOHZ9Vwxd8fp6gC/AtRU9umxbfFYo/twWyTOgUFM53eJaR914mtVjT/wmFl1jlz+rds9ygfQH5Ivj4T8pQHE7Kv22IQKFu5cIWn6tkxcHVOL4o4m60FGyuBKSpuvawDGyz0T8lMP26fLG6vAmXF602dbHCmp5DL6fIrLuFWdsUkE8zSZ183+L6atAGikpSj5udYFXW+Vp4Z/NVDLbFHIFGw8WgZPBBGQ5RtTA7nHhZabi/3ezcyuQuwFiRuwPL3REl8jRbCua7deWyyY5vWvAnfHw+fMeltthu0Q3Byhuyl6uZt5YwgwLrvyT14QkMoOTAIrnY8kR+KFVljRAkY9swGTqVwkUAwROKBr0X6tSCa1s2o3tTa9Kpz1Heq9mWPzF4/W3UGkgAUczNZNy4lm5Q/H5tkUQ3fuPWN4Y35M5oPhef1TJrY/NsLLeQARdFbva/atEJZ2tP8NN74AEx9ZYYMksxtNVZrtrlWF0tHi1GSofdMficb3ynJocHBQPQuVlXkSzqwX2INT1ALo4g2/n40ehKFdUuzydWzZMekxQ8aND7HkvRdL3tuj756465km0XGNKw7JMPhXq/246Y8khGJKni27RtfSERG2zLtuIHRMPL5cuCt/Je07zkQSL1wP8SNgqM/oQ/+6K/zq8I+BOkwGVNiDb8ZnaekDtuyBPVwBYvD7XlwjxirIUooQLxtCpYVuV+RJzitMM3wYsnwJxaKnyqOAG/xDcJD7HeGGc4DG6zfCxRH7Dyk7uMkRY0yP47X3R6fmpVzIJCXXV+n+gotA9tJ3zH38i82yuU20HnJUbQrStJD1AWEV6n9ILBECurA8/62MH1No9bpO2QY3mvkuTyWAeioG76Xr8j0ZAiN0BawAo2QETNg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: E/BxFyOA63801uPIxpJ9U8wTbovAg0swiQvlDnsEbvOKIh0SEhEWYLpbZ/RItKdYX7CxMUkwVhR/tVtsjNhN4vp/nFesONflxytK+MRPds2pXBLYrFzrh9G8C0uWmUTxgsx6g9BtdUs49AnacYmNl33gGx9Wh287z7qF4e+Y8v8xEyEtLibxQjBomR7rzS82HqhOLUhN/CgtygjFjNJssnsoLVMO1jDLXZQG0jJR8LYULa38NHyTrElsr/6OQrPoQAMgg0+1nYwxq35xlfa0fth3QVjK6PSIZuLjvII2sSouS89hz8X3dTT+GGViAaPHYQL6O4g4SUYrQNR+xE/HDFC9WIhkTAHNq1JMjpK1YUlKxDtOeS7eHFprjXc4CExwgWj1GveLEygY299ucBIksJCsMRVEDGnIk0GEhi1WCXPnaKr6U2S48mN2xlJ/FjWrpE+CFykVRmAxHm48LBJD/mMZPpc84U4q2cHklwhHfH2nrB3qeIjzn6X6TQvQMUNyuDoNUgmc8pbWbzqAXfHKrMnD+cfTlSi6wm76pMjYVcvHx36Vvt9aSj1VcfW8NzUuycgtdKBNxMu0fwVa16xG1KJ+o71tgi5Bk/V0MNpR2UI/GBghRP2rLBsyn6sS3qcHV1GgidILp88br3rzGGFPvYbWjyUEuQ5A6ZadXhmtAOJTPAtB6ji0j4RKueFmo1vUlfeh7QBkm1YrSA4xzBPEOlWoBg6WzCa7K+uHylZvq2b6e8bJNOuVC32oHGowO3f5Ef+jiSujdSsnd+fgF1dXhPqq2q4hsFd/Pb1lzvRur7mU5jNbohEEuh8t09azYwuk0taIQPYC+dxjdyPOe8BZeb/C9Y8oOZF/UbdwhgppnTp3GHEBXrHqKO1TqXj0eBS0crzpiMgC4NCHEi4dTRMQp8BG8mj21+Dkgt4B3gWliSDpVAyEmqTkEyrNgUxXFinhnAJtCeZDxXvXyS1sDPDDEboE4uRhfCjL6G+Fq/Gz/bak3ZreQ9b/Zz+s6fr63btZuhycPL/cPuRIdVtqWIGbVFWVZfTvML84QRZbWMrI0F0PaG7f0QC3lyZ9Q22tIQgEKEH1JXxQv4VxR2UL4Il0Og== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 66ef31c5-b056-4194-d843-08dbc0d6d0d4 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:26.3606 (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: Gs1Tj7D3gp4lOBy0NJA89h4kAPcl1elONbkZKvuQAN9l2LaNzX8InJ//P5WSoaPq/cYDMWaHUtxH1Qxxqve9xA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-ORIG-GUID: jKqqc7hMX1GDRb9P8WJqxx9zaiE4CBKH X-Proofpoint-GUID: jKqqc7hMX1GDRb9P8WJqxx9zaiE4CBKH X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:30:31 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778383519610045548 X-GMAIL-MSGID: 1778383519610045548 From: "Darrick J. Wong" The existing extsize hint code already did the work of expanding file range mapping requests so that the range is aligned to the hint value. Now add the code we need to guarantee that the space allocations are also always aligned. XXX: still need to check all this with reflink Signed-off-by: Darrick J. Wong Co-developed-by: John Garry Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_bmap.c | 22 +++++++++++++++++----- fs/xfs/xfs_iomap.c | 4 +++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index 328134c22104..6c864dc0a6ff 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -3328,6 +3328,19 @@ xfs_bmap_compute_alignments( align = xfs_get_cowextsz_hint(ap->ip); else if (ap->datatype & XFS_ALLOC_USERDATA) align = xfs_get_extsz_hint(ap->ip); + + /* + * xfs_get_cowextsz_hint() returns extsz_hint for when forcealign is + * set as forcealign and cowextsz_hint are mutually exclusive + */ + if (xfs_inode_forcealign(ap->ip) && align) { + args->alignment = align; + if (stripe_align % align) + stripe_align = align; + } else { + args->alignment = 1; + } + if (align) { if (xfs_bmap_extsize_align(mp, &ap->got, &ap->prev, align, 0, ap->eof, 0, ap->conv, &ap->offset, @@ -3423,7 +3436,6 @@ xfs_bmap_exact_minlen_extent_alloc( args.minlen = args.maxlen = ap->minlen; args.total = ap->total; - args.alignment = 1; args.minalignslop = 0; args.minleft = ap->minleft; @@ -3469,6 +3481,7 @@ xfs_bmap_btalloc_at_eof( { struct xfs_mount *mp = args->mp; struct xfs_perag *caller_pag = args->pag; + int orig_alignment = args->alignment; int error; /* @@ -3543,10 +3556,10 @@ xfs_bmap_btalloc_at_eof( /* * Allocation failed, so turn return the allocation args to their - * original non-aligned state so the caller can proceed on allocation - * failure as if this function was never called. + * original state so the caller can proceed on allocation failure as + * if this function was never called. */ - args->alignment = 1; + args->alignment = orig_alignment; return 0; } @@ -3694,7 +3707,6 @@ xfs_bmap_btalloc( .wasdel = ap->wasdel, .resv = XFS_AG_RESV_NONE, .datatype = ap->datatype, - .alignment = 1, .minalignslop = 0, }; xfs_fileoff_t orig_offset; diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 18c8f168b153..70fe873951f3 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -181,7 +181,9 @@ xfs_eof_alignment( * If mounted with the "-o swalloc" option the alignment is * increased from the strip unit size to the stripe width. */ - if (mp->m_swidth && xfs_has_swalloc(mp)) + if (xfs_inode_forcealign(ip)) + align = xfs_get_extsz_hint(ip); + else if (mp->m_swidth && xfs_has_swalloc(mp)) align = mp->m_swidth; else if (mp->m_dalign) align = mp->m_dalign; From patchwork Fri Sep 29 10:27:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146561 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4038834vqu; Fri, 29 Sep 2023 06:43:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHbEkTuVJM0z4AbBRvqPHVAYx3oAqYwnUmsy0X08DIgUd7MD5LRb4vsbPAO3HuAHnDS8E64 X-Received: by 2002:a05:6a00:1a13:b0:68e:3f0b:5e6f with SMTP id g19-20020a056a001a1300b0068e3f0b5e6fmr4463933pfv.24.1695995006722; Fri, 29 Sep 2023 06:43:26 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695995006; cv=pass; d=google.com; s=arc-20160816; b=od04CBy+tijcC5r4GT9yDOJXg7ETvQk7KOm0oNqE91CA0l/g6JKuWz7O+IHVtHGPXY qqJkxMKTF6nmZE6Bpfsml6xukJ09S63GbSjVWNqOCy85HulliXIYIA+qAeZLkITJiggi ADkzMDt4FBdJ1lf15aMuVdL7Kk7Jy7+BVfWCDSbXk3CYzVFM9J38OjdZVigsPOzRoPlk DM2L2jCNs39W6973e3UmkKIrw6DoZukRdfSn30Pb64ru1lhcqgfk1KLcISf92SvWHI00 29N3EISfUMhkFpMJaVrgdfblf2LKYnBgXDQ68Bzo5a22FTHyQ2a+kSaQdg7PMtEgYa41 Kt1Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=SZdlAGJgif7bi9hd/N+V+m2dYauG9SN9sLhiG5qfhNw=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=ANOhPh6lq6sC+0BvMpnkKWN1HL2ropjDTE7jIrvY3nVb0EXyUlsVb6VKdyeoXX2Voz Qq4GUWXU1kkckitee/WlzXHK3Bx98ZuAIFLHsQ2X4rQ5MujhL57cAtVLhYVKCuUMwqNj szmZ8tyog2DgVJysQEjqU3cE+0a1jYV4wnXSQm//bMLNWhcWzc6mWnRP81vTAkwW8lfs GmCpU8Wo+t0VB1853kQr/nGl9l2RUEzsVtVksqkhVsRVaPWxVgXRCXqPs1djFQfZXf7X B/3EhshAiMEfwoekyDSs8Hm4kmWCmr5DF8Xi3cZ1drLAnWBp013QdiS8ZRJY42Do1rXz szAg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=HjHlrVIC; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="qOXutB/b"; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id f23-20020a63f117000000b0056679c8e70csi21503767pgi.272.2023.09.29.06.43.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 06:43:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=HjHlrVIC; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="qOXutB/b"; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 5FD66802D524; Fri, 29 Sep 2023 03:32:12 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233064AbjI2Kbv (ORCPT + 20 others); Fri, 29 Sep 2023 06:31:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36596 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233098AbjI2KbE (ORCPT ); Fri, 29 Sep 2023 06:31:04 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD31A1BE5; Fri, 29 Sep 2023 03:30:01 -0700 (PDT) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK99CD018488; Fri, 29 Sep 2023 10:28:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=SZdlAGJgif7bi9hd/N+V+m2dYauG9SN9sLhiG5qfhNw=; b=HjHlrVICxJAIQyyhe9qY/cLiwotBonwhRLVeCiiBglAHOxGBwrUrL2X/YJTOkt+P5IY8 K75HIOslKXEPBrYPUcY1T+R5SHHTZUalty0+E7PlzpVH8P0Ed0IeN17glskjdja7DYaW gFUP5Z+z10qkXksuNOPpXjlH+IbbPtLOZQH2hyOADyTxpBgfBrXBJ6D7hYCLi44OKBGu Qzc2x072tMOAeOUlfYkKPFcSCEYqjA62oTV4luDugT4IoVBmGJMKRSXqjq5ptR1n8q+b 5paylTKjn2anlXH1/gy61BPQng3vPgCVCOJNC0PqTCFSfz55wYr+YmIStGXPYcj8qhf1 9Q== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pt3xec9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:48 +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 38T9iSOI015821; Fri, 29 Sep 2023 10:28:47 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ael+ikAYKUZ8JonMsLDSA6nXztazpRxU3bKel35unf0tqs8vX/zEUlP4CohZUadQVgQJYQIpto07H3LYzuNiX5gK4faUhHyj3SovH78vskgDuqX8PRmg2QOggkYHWgiPUOFNgLnNVxF9BHcC0UdFLcoZoOBPQDZOnLhUrgPx5EitMPh81d4La0HV586d1MMu/DxRkS+VLTqpxvVfM1/8VEGDgmu2SAi+xtZCtRlCawxM2sYGIp0wCRPrqj5kfQwdtdzQ3WCdXHcRSAG1OFSJ00nE9wfJr7d1glk9BtB2R+e0EJUZDCSkhQk+F8+fqFcMGEIkLilUxUge8fEMFhoTaA== 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=SZdlAGJgif7bi9hd/N+V+m2dYauG9SN9sLhiG5qfhNw=; b=aLFBhlZOb4TVJUtypTdUbeuIVfPnvgzdybX3rdNItM+En4iY2egyzk1HA6/iG2oF+vFEZABjCQdqw4QQ4mDIlV9Nth6KfJnAB+SmtaiudkJ5RiLAdN3wajrzpg/ScYGZxHdmNXmxYyjvDVPrN+2u5LsvFFhNRViJ0OVNZsZVWAUx5HqkAi0pXrbe/XJbKj2mrFMfXXF7ZGkXz1zsASUq241FSSRxr2N0ghlZcGOI3+OEb/gimE/l4N/3u4NWt4BjVPt4yOshsi716xn4TBAslqffcgvpvD3ZHyI1EqOjoeGnEJaUMcv91UHqd3VSf3jWTNIBxC3HlqoJyvnenPOYPQ== 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=SZdlAGJgif7bi9hd/N+V+m2dYauG9SN9sLhiG5qfhNw=; b=qOXutB/bsE0qOolwc1ACHNVbdS6CH5e6WgLgAzkdOE1YjsqLUXDWToj3q2rtntPaqHXPAPBvQlGhl93fwpPILIbRPOCfKtTTUCJ5kzFU0m2O+0/iEqB2wEeeKRcLDPpNa3sQvZOQgrrb9xZEXWwCWlDGnqpcF5ZP2hlx4tsU6qI= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:29 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:29 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 14/21] fs: xfs: Enable file data forcealign feature Date: Fri, 29 Sep 2023 10:27:19 +0000 Message-Id: <20230929102726.2985188-15-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH0PR07CA0040.namprd07.prod.outlook.com (2603:10b6:510:e::15) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 41e9f45f-a58f-439f-9b20-08dbc0d6d292 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /efZYJiTMcqxDJUJiftvrDbEAYpfXxQLBYQQjiZmjlCyrhccsBBQGSVVT+TP5Xaap+tRWniqLlZorv2duFI6QRuaVUc72u9dSUtauL/DzPs5UFvALe653TTLCuANSkgp/VAU0NEj+DaGwhuMJ7prWSrF8tRKvoXsSw79WkipiWNOJIyMxUGXUbQLGpG/OMfkQebua6z42go9s8TxLV7Q6IcVY8dR0dXh+7cbhIztmkV+9bfO/sm8RJArS6BRzdPLyv/d4bOi/tJ19R1Rbe+cj80v1n8RBl736KZT4Ohs7pIGTOKzBeJ7QQXFzP2lDUvV45M6m+GK+tpn9OadPeXCNa37Klx5dhKnH4Ri/YeXvtx0ufidE+R1EdKB+htGmOhMS7QILeKh8vd6AAP76NycWrBsAK6RwICktg9c/kqVujYaavtaT8cokRraLw1DsOPwBi531AzVx/l8AJt0V7CGq91ErnMBYD+PKr1NlPEfWMw9OkGvGz+fJcV7Q2wFr1Mi44JT1cL4zNVkNg3+inm4tdNvR8KSNKgoRESpCQuKcoF9lXnoLQs33TFfgbdjpuaKRy4F4Zl40duAOvZB5+rsY3lz9XruyxfF3A36W6sJBrs= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(4744005)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: j0LZCo45SHFvzdAPerTAUj5NKq8ovRMrgIMnAUMnKE0ZJfUEn9jxO+OAphrRd5GvK4GCr9TataGqJbKy1W42GH8ppHkB0Rz+WEou+OlcHMRx7To3ALJXXfzJQC+qWe/i3v6/+UeaReFRf4dJ6N2ledDa0HjN5DFP3TgXdSvtj4xZyLywwaTeBMr0kEvHTQbaj0vinGJrSHi+Sarh6ew0SQV6JJHwDrL8NLzIqRpj5IfvnDrFfwwl/2La1rwc2Z9o5kh19KvBnynUWbdsFaAGwYh2hKtjXSkcw04x8GwSCNQyge1fzzgTlh6OpAZ3npPYouPJYJxsweEaH4X2H434dNRi0z7uIm50XnW3e6ARlkLpm/I8RGdFR57O3LZCek1nVSmoQEa2Woi84GbDjF4vvEoUhGz9Q1HowyjRRtCYlAysOJ0qpDeSc1HiQLwqybIXkQ7eOBuuI6qEyGC/jY46MxR0CMC5YIkhSBbIuv8fPP3r5Mtwrj+5UhFZhRCcFz0LE5sB0f0JxTWeAwEXKiZzM4sInmze8P1jo1PcE6X7dDsomNuTReYnEhXsPd2D0wLkInWaAHGoh6HLJFi8/DrlvhjFWwYMKQj0vgnFKLLa3914FHuTuX/lsEuvmfM78sz+/huTjXrNRKO+cJt0kUYX4IO27OACLqX4oBde93LNp2lBZ8NbpYADw4vBMb82806KCmX6VkYnmEc4jWWDV0xB/A0LqJ4RB5Tl4l6MKboMF1KfZZzzjSXtkfnPAmumAYPD1nie/ZFxDt1D7yGIWyxH470pVqyUZepX42zX+UIbC5n0o7AsYv6AYf0QilitZIjJrSw6py2+wFhzPjnFXWQOWxVYT8HQ/vhuq645/cpBih3imYr7DYAA4a2MqodeJywlYm9c6cB0jEyVH7fA72sVxH1RYe1kjKANBN0EsSsfp2J0QvgDoxdHHqo6R3j+uJyJV5lpMLomwKKLJ1kz69sbz7VYHSjh8nmkV2Va4JsHKt9BFtiuq5yhjVoAZn1gibX0gjyzNDE3kEm3QPLM4C4Pp6cAtfzyspnCEINKUw+JiGP2Wnv1zd8l85yiqb/G4FSysTg+iog/5j/FUccbUapupAAIIcfZigZpanTdCbS+M/ckcSP4qOcnBgwYo8zL8+Le84W6aNjg80yeO7ogv2ZryXzzA4Tz3lFHhCiqjl+E41ngTyHOkSyaLva/mLSHZUt0LZN4yvrQkcDnuW4Nekl23LUsrRdvY4onpDfOkry5vi4UsMEccJZHyHv7neixLJs8lQSsxN7Rvk7tuxYOrpkEcDxtrn7mAPDRo33pHZX38Av81bVl1oPQAheiXUj01VGImfvNAZbKy4iugQBUDXSxX7wtcFddZBTQqLZSGO+4Pg7LGjI9/EwQVqSr5862GfkRWDgbns6hIc1zmwZGlgEUEGcGLR+SmB4zGjoc+bGOrhc+o1J8PbAYGdlYi/EkIWQ5nNfeRMbN/xBdVhE8gACHsfXfY3qjC+hIsmPljmQCGEdD2gVtzaiUL3Q6wfC2v/FXZLbST+Q0CGlOt2ozOi7yqOicchCGDTxRgDL7nZUVNqp2vyiHhQnSd17uc3tfofKkTWy6Nd1FxC883VKW87bxlA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jqzfosesHfx6SYe1fBOd+7fsbTJClZ1tacjMDw+mp1F2IFVBIyFtJYUqF3Zv66tQ3iEnD1ESlUt2rVpZ6mnf8BeJclqRl/1Su7BQpBDtwVsPUsCEP7HLyeL6VDmeajIzrB5Oek34j3M8mz/TmbUTrUl74meLdAAkGeYZB25nSf7DVq5rOBQ1O7Q4ukBQHOOTYmWVPBYvWczTKdNgwUqmP8ZV3LeJfX4wX/5w81OaMdtauRg2pdPIVwC9gAZB3Nb5jDJlYxW7YJwRYU8wf7FkZ7tTgbrL9ZaSeYC2vItOS5Jx6937wOaEVzrjA+/KfxAwqkJbn6/7ISQmQEEeQImeR+CN2PnpLzT10CmOLGHPK8+r6uq3TYSL4bsAB+om/VY6euT5Bo7YKPbqfxoLxfFMGlEdCmCmYSYNhR7Lajti8GXV49xkRtQ31i8Peerbshw9t2vCJJr1xhV3/jrWPXpGzQhUjZHzvcq0BWLFoj6eYec/Sl0xNHHt00U3GCYL2XOp7yx2XTTwTp1KKYm7FbqA7P3HLwb79lrTmqsLycZ9gTfS0jXWkFcG4kt9pWIPMjA0bR17vFqZdnvJGOTwHlSxTWC/HDyUT1xFLmI69kUNURsmSzZrrFK8kyXAPisBCJrPHMhpPUnI2YJVSYBhZTs3pABdsDrP+czrYzYigu5VQMUgpbs7n7jbDiiydh3zRVPct63XKCn6xZ6SDwoRkcOmcWFJk2ehu9+7Pxg4rFggbtse0+hqIl6A+kLUUh373KQItcF6de9GBk3aIW4Yo7/HfCUZ2dTr9sNDg94EcbL7jWYWRLunsu8aBMzWPNDsorEZ6KsoeGi1sMw+qTiaE6/PXDw4gf1bOtC9uF9TEc8/3/NCO+UI47qYFtXapn3oSHCmmzhf/sBbO0u5Ut0sRiI8DU89b8yE5FrOvmns6lA35DBywwdYJ3qfrjwP0HV7uYOMw+gv3hxbOxFzUhgOC+5zVAyYV1ggrInDYPoLqbII1/W6setrdJu/qVx4Znx/IjsIgohLJgA3VKAitXH6nrduy9PDzjm7YSENwLRGdJZEAmEICXdgXCPXD5o9Qtddc+HLDza0vrLx8iDl9dO4+4Dkeg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 41e9f45f-a58f-439f-9b20-08dbc0d6d292 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:29.3599 (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: 6pCSGmxEfVIoe1jYR8frQ5JUo0FSYqxyqNKP6NcMWEjqM1Ux9VDW76rtsu3YEN9HAeiTqD6v4DOrF2W1mJUYog== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-ORIG-GUID: gUJpXeTPaXHyQL2TAQlCuA2LJp9mx2dj X-Proofpoint-GUID: gUJpXeTPaXHyQL2TAQlCuA2LJp9mx2dj X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:32:12 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778379660405871340 X-GMAIL-MSGID: 1778379660405871340 From: "Darrick J. Wong" Enable this feature. Signed-off-by: Darrick J. Wong Signed-off-by: John Garry --- fs/xfs/libxfs/xfs_format.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h index d718b73f48ca..afb843b14074 100644 --- a/fs/xfs/libxfs/xfs_format.h +++ b/fs/xfs/libxfs/xfs_format.h @@ -358,7 +358,8 @@ xfs_sb_has_compat_feature( (XFS_SB_FEAT_RO_COMPAT_FINOBT | \ XFS_SB_FEAT_RO_COMPAT_RMAPBT | \ XFS_SB_FEAT_RO_COMPAT_REFLINK| \ - XFS_SB_FEAT_RO_COMPAT_INOBTCNT) + XFS_SB_FEAT_RO_COMPAT_INOBTCNT | \ + XFS_SB_FEAT_RO_COMPAT_FORCEALIGN) #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL static inline bool xfs_sb_has_ro_compat_feature( From patchwork Fri Sep 29 10:27:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146576 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4066033vqu; Fri, 29 Sep 2023 07:15:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFtzkCEXBG7eWRgJsTS13hSYpTo6GQd2Fno0g5ttJocQ8De2gMsAa0gJ0J2TyJ0WScvoZvS X-Received: by 2002:a05:6870:c589:b0:1dc:cd20:1e8f with SMTP id ba9-20020a056870c58900b001dccd201e8fmr4531186oab.19.1695996946299; Fri, 29 Sep 2023 07:15:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695996946; cv=pass; d=google.com; s=arc-20160816; b=TgJD79U99yedrzbcTDTHwKXYew212nGMj+A06wUz0XW5/wGSOEWLVdp7yLGYV8sZAV qPCTLxeQCQ2jbxY1iq0c/TKwGwtD6jaPJI6EgyC3l8k6y+GW4vBcmXVGdtVvE0CK/89Q ta+N1lQWFUObWlqzakd9sCiO99shZ2dCqb/78r+YGIyVFCU14qeZc5BytjeZ/1OwjUdY YJP3bSxLsuYEWvavSoYVWpLOHDgDKwllyvBY8Z813op6YlBGFQ44JyjTENL0YFGB7dCY xivMeWBKG3pOQd2NFRUDAuRoqg7BTj4kdUVeZtoQpIVSunylJ7sQtL2CkYSW5PxN8Kxz S1dw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=Ka1iYY3UMneY6hS80BVNT7BXo5ahZCOR8i+W0L/sm8k=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=NOCXy3S/D2746Ygck2m8NMyCznechrDeDvuFo9qgdcs1QceG1Jfgxjf4NgpVyYrKBb MPD5yeZPnio9Zgl2xUqlk7i0uJuXkofvLrHeg7iWgltBQIUuiNx6glbZkRBmFQkld/TB Wb5JaA7arLK8gF1zZ4sua8NZvYEC+DkqSOIXql5/XZqoQ+aULBs1q5zX48vmYwmv+FR3 onHObTIi5EDbE/fzWaR3JbWTIunX/Ntcg1m+xk6bsZXY2KV+4j9/OBoKf5vPCr7ag9dE k1gVKnAYpLH+0fkO69XY765GEddiMn+QnJhMZ3lMFOzQQ2g6kxkax/+fioxHfve5b3KD 9tVg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=nAfKe5Q1; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=KCYdJAU1; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id f10-20020a65550a000000b00573fe48c908si20249501pgr.128.2023.09.29.07.15.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 07:15:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=nAfKe5Q1; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=KCYdJAU1; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 695F781F333B; Fri, 29 Sep 2023 03:31:21 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233243AbjI2K3q (ORCPT + 20 others); Fri, 29 Sep 2023 06:29:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36552 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233172AbjI2K33 (ORCPT ); Fri, 29 Sep 2023 06:29:29 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 99BCC1739; Fri, 29 Sep 2023 03:29:01 -0700 (PDT) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK8mQn013122; Fri, 29 Sep 2023 10:28:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=Ka1iYY3UMneY6hS80BVNT7BXo5ahZCOR8i+W0L/sm8k=; b=nAfKe5Q1KbbfOCylo3AMErOWyf9fCHVKf3H7Pqehgqoz4gq8DXYIE2TR4lYvtyZUTfVs iQvIjFkiF4cZkUZ73WVLihbG1uogkJTJ1BoDTZgfFhFtK46ed/acURqtcF7xbHHwKQZm 279qZ4VJ4g1XCN8GlqdIt0sMGQzSBa6KsT+Lzum58QY5OhAWejaevDxPrY3ALzRXXVbU 4/0+PxrGQG+PPmWmeRG8jY/8O+yKAYncDO2czCvNURhZwo/iPH85cUAkYjLBl7rTWgV6 vRm73f/NlIEK/e+jKGS1XfrKGUKw/4T2zXoQGHSK7FG4Nk6G6ZOgpAiwg47RDKVSA1Gv 9A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qmupe0k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:48 +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 38T9iSOJ015821; Fri, 29 Sep 2023 10:28:48 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-6 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gKnO/vewQX5EH+DFsaanXxObBwCv+OkwoS39OKz55UJM6xiBFyapX4w+lT3EVwgcfMAk/n+50yVAmWypk8C8szwYiVQsT9nife1Oyjo6d6vlVL5cPJir3soZas6xy+ONH4qhnfZsgk1Wo+Nid8PY5Azm9sNpvz9vH/lxJFYWXSjNmIL4rSyHhmc8H34obJK2Lt3nZ32pXh9omZzmtXgqF3y30M7KdeLdqUEjhNgsIq01ISNec2vvB1BGg/k5z29pnJk+aL7TCN8AuY7C7V9OPAN3fBHBZEO5xFfhrjzhjkJT0xfbw7ZqttRJ634J1vSv9ywQGv2X63iGduKzyjLSlQ== 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=Ka1iYY3UMneY6hS80BVNT7BXo5ahZCOR8i+W0L/sm8k=; b=Iz22mS060yosq40eSOZklzUUeUpNjOjgij/+4xjKKQtFRFzOd6xr/yUTITlI9O/YdmNWzYp9L+1vSX9FxQ4emx35pYvQwTON1563IrYR5/ECp9GR5ULHp28/X0GbWhzqUECADnorszhGrSdjzj4UUiWR9VCF3yK+EZTvWk4d6YhBhjNqcN/jYIZJsoWEDNpUdS5rEZn5ti69a46P21EEfiiHmCGcw4SJxwPyTU+/fK5V8ieF/UALOznyxuzaylWvf8EOxdaSrGKzPe+/Qc6XBtnHk8FbxupdZvel15PL4J7VvvfC1nlHh2AFUA20PfCk95id5YKQYL5esw80hNd0cQ== 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=Ka1iYY3UMneY6hS80BVNT7BXo5ahZCOR8i+W0L/sm8k=; b=KCYdJAU10OnqySikN6Vqfw/sU8/vee71a1Qz/0OHbdAd87gzUwbeZWkS27iiRnW3TE0UIdGSWbHU8rUlG9iWUl+ahNwtJfywHXIE/Gd/ioUw0EupfULPb4C2KVgiLG0dZrqddF/bhVO/Wfkvgc4QXi6lwLhcO650w4uQNLJijWA= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:31 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:31 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 15/21] fs: xfs: Support atomic write for statx Date: Fri, 29 Sep 2023 10:27:20 +0000 Message-Id: <20230929102726.2985188-16-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: PH8PR21CA0012.namprd21.prod.outlook.com (2603:10b6:510:2ce::6) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 9d8248e9-8bac-42aa-2fc9-08dbc0d6d3d9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 52SbcgTMoKRC5/MjvkZ9za5xW5t0sX/32xf0985yU8bUpG7Guj+alamQY7dVQAXhNvMsLd5AoFy0F5dECB+XVGCIIrjC+faShDo98hp7J/8UVxjOYjVU4VebsNSawbAQo1wLosIsOKsuZ2K1bp7hCoGKB6uT5R1igBySNRsPF+hQO5jRzbhF+IWRbNdjr1AuSnX0bhpXOMDicOYWeR82SNcUb2yc40GuB5nkdhWOaS3hwWHSf8pgBuKQ3lOpLjiGaCEvZssw4CdFuRwAxlckISeksvCqUuHkCqU6nMERVWWG+EzyHUw8p0RE97TTkfJmf/ejV2zwqtLoyulOR7Sh/Qpl0VJPtaV+dycKjf5tJ4f/bXJjTYVATMFhFc6FxQ654y8srzyRwTlABKlFKXI4hpZDzXHuxQCumgYW+aJUntEJEUOu6yE8v8wCY+/U0HzYhNtPox9gKsO1/cF2WJ49NMLjKu5hZarialbSoK3Wjg8cm3Ia4D5GVEcPgc7askrfJS1Jb4em6/plWI+1bOE0fmCmCP2s6l2BsQ8K+KS8Xz5lhoopZa0UykMJI+C2l8kUJtUdCgZyQ3tSlZjll4pR7XCJGUVX4lm6hQi234gtd0s= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N7hEqv0XGPdIhJo80CI0H1J3sQlsUyMoT8doJEuNpnvGtvZhLQatQ7MMqFpKLFepACMOnX8jKVX68A5jubbISfHDwnSwpmlurC7AQNMIGKWrgfJbg7rfITiKYvmWU+4i4q8I6wiztwlt1rUXjVtKOt/suPeCDYTJMgEwVzDEjQt7yZ//Nsg68YvPQAR7fsToMtAVA7JxIt0hSZ+QBFvqQNdnvslevFFwf4MqXZZobdgiqNbylPz5il6Nw41q0GLCkIZzY30+AIgs3O6hR53dbEG+Kq2NhQUHNP57FvDjgqIHhSN4co1rUvFdwiB1vRtyQM3389/EjxyOJR8bN0/eFqeOylAuA20r2fXgvXt1G28kqQRuh9QDLpzfvIrhV3qt+nwncQy/EQuNYXKIC0okz5/AXBh55jot8wGlVKNO2TxR1Gzet/OoPUdU+a+LQO4buX0mK2IfedoQxQD0chbSq6QmJGcctq1Iy0riIIvWHN1ojRphp3ypbqweNmSJAGvcTV0dUeQVm5+hCw4LSulbUngkbN6px8GQl5ZksjXT/rOqXziOlQW4DYey060vg1ThkRBjiJd0ebVOo//mibjTv9YIyvMkCShzl5xNilymYifBsGRiOEyvCStSgiXbwThMIjEYzimCm1drJ+YmSgFPF1n3v9txvY0uth6qsyMJzqX1b9PQn6ba/moCK6Dn9A3YL80kIoxZffgsyzXETAbnXH7qWgMqQ1sJLM8HSMpZiRI91T8AtVu48h7e8MPWW9LHzHj+ZHuoK6Y8ndAw1Wts6qp3iE2/pvqHC/NA+PSYMNFWNXLbBwD8vKUTxTmzQmK7mzoXM7+SgRX6pRVFY1kFYUiDjJ1gUa8firVbDxWMWL/W6om9kLfNrPv8uqrbpljx6B/we6nFS9LomuI+vXcd4x3ynoxhLVHuJYsDe5OxqpWkAaKS1thiYNA/c1iMtpZ7d/OU+QuRiuIo4YRy8ei5JghGiX2RygahNQRMAU06FqzthBJpWUq82tqT1GBepiCBKIJJ6f2pqsJtFpRE9su5B3KcKmYCXve/XGZzf6wCX8QpHXxsdCCRGIi6N0Bh2QQ2PjqGFGYaBdXZEGSbrYJGrpMDfgKsfTTCRX4Dyy0M1QxoEJQFvixykz77tcu7WOU9eBPvDwDoJnsyQJioQB7f9rtDA9T+SU55a+GYFXZ0nLJiW5AmOuQnPQB3VgC97j0RCGangLPZJ6olWaIMofOaF2vMfjDdmNbVbsIc9q9gaUiszrtcMUzkHvrIu+9uLWiZkMedhwfhWSLjoKPMH5RY6H1w0tLqnxzIpEwT1kBRkUBYdnc3Cko/M9wT8xitQSvlrUa+r0LcsK6YBj3162fw90W2xwcJq6AeGKNI1eaZWIi3Pza6XK3F1iv3aDBTkBzg910HspSr+Id7B5jBlWd4d6Y3GruRmL1+n3UFxPjPfBZPpZ4q6QvkZDThDvmNTqSB6Smc4Ktt5zEmlswCTJuF1XMy0IgnKPOeaP6RGHuxZInUX+xxxrmRpRITbVg0ZcQpx0ohBYC3WLGrssf8QrokoFssyWsBR14uBAPAW5Q22KM6KSwZ+xWJskaN+gu4o9GXx51OXmbewm0Rp5AS9F4lVQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: RE3p8reYZSefCXwAbWy3jb/o/Y1HHKmsROQVGRq0oHP4Ku1Xi+SfnLcr5Q3Zr+ldfGuaWo3ibHhrjQDNF9XY7iON76WjvPBu5DN1r3SwdAEcEklQGR+zRGanzHKBlKvjiJAd9lo+r4Su7VM7aP1e/qdTm0RIap9BXR58E4OaAPTzNXlqf84s7zruhar7lbaM33osHFhwwkf7uc8rwaOL7eqO+KUiOVSaVE4eHZfQjTkbUxx4kymTk0S4J7YOrjmMMBvrWgawixAT/L2fYCvXCLuqwMHkO81lQeyPW4h0q4mNzIa7KRmWqYk8PgCjUdPw9a4620dSYmOwRtS2wYXCQ9uyL0fe82aVwFIl4uXic18OvU4ohmh2+48lN8e/I7gW7kGVmDmJ02onHHCkovIrDWNckwcUApk0Dhf82SkKhFDCg9mvoswnIp8FOki7+Jp1j44rSvbfHpubvjSBtLcUcLbCJufAmOcePofZaPdLYOioel9WSKCiIFjsPQZMR7fhFNh7uskjdmDfwglRg7FQEFGxwf3aCBlDFupbbLpPQRFFRBHKtvcyX5r5I6JL0Di8OjXj5p/ZJDYrMy1oMjabkD0jzeW1q7jukB/LdHCOI5fvI9T3rYSdf1z4PVN4/jg/0A96fZ0XjnsILPJvEw3vg/dzSVQHVmyU8+bq2x7bsmKKG1y9U4xzchaAJUqVJdBDpzwQpLjXcNXguQblEaZovfIkkr3MV8GWu2v7mSwWnlkTWm3CQ3r4rNKnNJ/Oozyc0n7dA0GSih7TLf3uuxSqF7M6hWaZksa2LQrmW2JLZkvRiW3w6chZL8AGbF37d5/4tUXSpRm0N6pM3j8DNGrL8AS88cH3J5auLMnYxhWuHnFCsXu7t36kYFZrd1sO8OGoefW6pBWUwluLVcDlA8S/jBYFRhyqrRwrJ9EyTglAxwZN55iarwYEFMQXxpwcKEb6B2KEWlkQ+FZi8yOWHYD5/VFcBdVLs8aG5wm1BxQuG8qb45ck0iKglrs47fU6ASuppjj99U2JJKgdDznE9MtrTovn2Ml3p+JDLkVQsj+MCODLkJZAjyYn5osouKzxzMJiP+uxplWhAphcRZx5vhZzXg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9d8248e9-8bac-42aa-2fc9-08dbc0d6d3d9 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:31.4445 (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: JCv2pTMRL5VyH6ZRk12cR5gYSJ62vMKehVYtE+ukQeoH4Q1hJuv72tfnF5W5h5341saKJRdlPUN3RKVX02aMKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-GUID: 9cYlB2YTRFj6v-Hq-Pg7KIkkasM7oUNY X-Proofpoint-ORIG-GUID: 9cYlB2YTRFj6v-Hq-Pg7KIkkasM7oUNY X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:31:21 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778381693579950418 X-GMAIL-MSGID: 1778381693579950418 Support providing info on atomic write unit min and max for an inode. For simplicity, currently we limit the min at the FS block size, but a lower limit could be supported in future. The atomic write unit min and max is limited by the guaranteed extent alignment for the inode. Signed-off-by: John Garry --- fs/xfs/xfs_iops.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_iops.h | 4 ++++ 2 files changed, 55 insertions(+) diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 1c1e6171209d..5bff80748223 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -546,6 +546,46 @@ xfs_stat_blksize( return PAGE_SIZE; } +void xfs_ip_atomic_write_attr(struct xfs_inode *ip, + xfs_filblks_t *unit_min_fsb, + xfs_filblks_t *unit_max_fsb) +{ + xfs_extlen_t extsz_hint = xfs_get_extsz_hint(ip); + struct xfs_buftarg *target = xfs_inode_buftarg(ip); + struct block_device *bdev = target->bt_bdev; + struct xfs_mount *mp = ip->i_mount; + xfs_filblks_t atomic_write_unit_min, + atomic_write_unit_max, + align; + + atomic_write_unit_min = XFS_B_TO_FSB(mp, + queue_atomic_write_unit_min_bytes(bdev->bd_queue)); + atomic_write_unit_max = XFS_B_TO_FSB(mp, + queue_atomic_write_unit_max_bytes(bdev->bd_queue)); + + /* for RT, unset extsize gives hint of 1 */ + /* for !RT, unset extsize gives hint of 0 */ + if (extsz_hint && (XFS_IS_REALTIME_INODE(ip) || + (ip->i_diflags2 & XFS_DIFLAG2_FORCEALIGN))) + align = extsz_hint; + else + align = 1; + + if (atomic_write_unit_max == 0) { + *unit_min_fsb = 0; + *unit_max_fsb = 0; + } else if (atomic_write_unit_min == 0) { + *unit_min_fsb = 1; + *unit_max_fsb = min_t(xfs_filblks_t, atomic_write_unit_max, + align); + } else { + *unit_min_fsb = min_t(xfs_filblks_t, atomic_write_unit_min, + align); + *unit_max_fsb = min_t(xfs_filblks_t, atomic_write_unit_max, + align); + } +} + STATIC int xfs_vn_getattr( struct mnt_idmap *idmap, @@ -614,6 +654,17 @@ 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) { + xfs_filblks_t unit_min_fsb, unit_max_fsb; + + xfs_ip_atomic_write_attr(ip, &unit_min_fsb, + &unit_max_fsb); + stat->atomic_write_unit_min = XFS_FSB_TO_B(mp, unit_min_fsb); + stat->atomic_write_unit_max = XFS_FSB_TO_B(mp, unit_max_fsb); + stat->attributes |= STATX_ATTR_WRITE_ATOMIC; + stat->attributes_mask |= STATX_ATTR_WRITE_ATOMIC; + stat->result_mask |= STATX_WRITE_ATOMIC; + } fallthrough; default: stat->blksize = xfs_stat_blksize(ip); diff --git a/fs/xfs/xfs_iops.h b/fs/xfs/xfs_iops.h index 7f84a0843b24..b1e683b04301 100644 --- a/fs/xfs/xfs_iops.h +++ b/fs/xfs/xfs_iops.h @@ -19,4 +19,8 @@ int xfs_vn_setattr_size(struct mnt_idmap *idmap, int xfs_inode_init_security(struct inode *inode, struct inode *dir, const struct qstr *qstr); +void xfs_ip_atomic_write_attr(struct xfs_inode *ip, + xfs_filblks_t *unit_min_fsb, + xfs_filblks_t *unit_max_fsb); + #endif /* __XFS_IOPS_H__ */ From patchwork Fri Sep 29 10:27:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146668 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4155666vqu; Fri, 29 Sep 2023 09:23:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG1m6RAM5sdK68nC9wIPseK8IvhAncouIp/uHMVCsLzRHk8PDDKwBnUXO20phZCVZpv6CQf X-Received: by 2002:a05:6a20:1449:b0:152:4615:cb9e with SMTP id a9-20020a056a20144900b001524615cb9emr6681040pzi.13.1696004629496; Fri, 29 Sep 2023 09:23:49 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696004629; cv=pass; d=google.com; s=arc-20160816; b=ca2lxhN3+sK0IIT/wKTaKFBdSGWrilvbIuJ5jKRe5EbDoGVlRwE3wL2TelHAyOb/w8 L5dAWW13tAC5ehXZN1/d5c14ZSgrmRiuZZD6mv5gtAtk47ktaDf74EBd98sue6geGSxI QZcFl3KipAjaIh+sueCKqhCRPdW5m9OtIHn8xeZFMDMhodlOL6PNVeDqEcbOk7Tfkvs6 VCaGYt9D+gqC/zXxAlSrnl+9FZWepXLIPxuq/9X0FhMhkE7gJFEEKG17dr9VZamGqKY5 UDqgEl+wU7F4R+2FiC4V9s1xnZnokXGKzeB8/1xk0B6nR1U5mwxds4ccDRPlg4t9Dpdb 7/eg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=OrC0Fag0ZjCnhamzeJYJ/FvefehU9bX9q+eUQrZEQEs=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=Xx5wg5jIbzMwk0VuaPUEpgpZyY6dzALDmKhNJKivJ01PxD6rKtGv7jRJScWTgS7UnS Rjxf7ZIin9iKIkl/xdUGqXNNR+DhOthM9pquslzjxqluJjWhpM0Y6hbqeME3nCgnTQLM Pia/7hNV7PpVrBVMvzbRXLro+VLa6+ysOy+QC9SI0JpuAo6n987wvGcm3HwgZ3mqGpo/ fZ8DxBO3Bd1F23lWb5+8mZoizfkxOe5C6j2aTuUcceYVBuLyQqzI8kkalIN3hF2wsbrw LrpIXfHW9WCKf1v0A8G+G+bIl503bwatyDgylVoVhS5frFPEZmvUghEJCwQJTo16lVv7 VBoQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=NCjQsYbi; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=xKjRnsUH; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id o2-20020a056a0015c200b0069344f0eda3si6731863pfu.5.2023.09.29.09.23.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 09:23:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=NCjQsYbi; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=xKjRnsUH; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 3A3F3828EC3B; Fri, 29 Sep 2023 03:33:29 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233289AbjI2KdI (ORCPT + 20 others); Fri, 29 Sep 2023 06:33:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233027AbjI2Kcw (ORCPT ); Fri, 29 Sep 2023 06:32:52 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A75BB1725; Fri, 29 Sep 2023 03:31:15 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9Qm2019170; Fri, 29 Sep 2023 10:28:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=OrC0Fag0ZjCnhamzeJYJ/FvefehU9bX9q+eUQrZEQEs=; b=NCjQsYbiSAh4CJZhaacYGiW/099XpY9wTpQaJDoneRjV3nQn8/pH5ErvZwKEexVv9eK2 uHOJtLGXPIKrm31NwujZDaIPbZJY66k875NVfdj+QbejNVInbAjqWOlUsSlRlbK/8Zmr FYz7EHfwF+l+BFdDjm18O9vIXxUZxTwSdq4ss75n9RLEHbU7t+T59lPo95320MmP5LLe KDB0/zQcunLiwrn/FvQ+p54HBr3lAPNE0IciG+E70HVpPYsZbSn9s0a4vDDNzszWPvaf KvuYkay4bvZSHt4mt1G//y0b86k2rovp50wj7Cp7n9p30RZMQ69gwkc0tjCOhNXt1/Sc rA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9rjupeua-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:50 +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 38T9iSOK015821; Fri, 29 Sep 2023 10:28:48 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YliTM+k3/iND38EAUYvw49/R5xwF123gZEusoIs7QQ3uP+g69SuumUhmV2C5YbzqaoZUPisfjpexqSn0fyDOfzXObD6+3kp2vFyWQ/H4pJ443HrKMudwHl+YU3/fVmDn6g/hP9kAE4oV3K/S4uFroAX4q0G0MdPvMv/h0FX+VA1XEZCHMWDE/opWfOslPsas6FoiAyCnKVwz4ImfFrtoRF3ijxxviSojwgQfP07BzSzl8vZ9C4zkMeJHOd4j2kOD5Z05IbKFHkiPPfMt7xVAGhd8e82xF+i0LmNX1jwv7RHaf8+rNDZZnmEdHV9v/Ej2thmlW8bZRGhXeqipvevifQ== 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=OrC0Fag0ZjCnhamzeJYJ/FvefehU9bX9q+eUQrZEQEs=; b=TmiIKyF2ykdF/XcD92JcADRaHiTWMr6NqrFerXvokJQE+XhLBWwiLH6SnTQ+PqgiJO+xcDHJQyOArvD5nB6NySN/Q1wLO0zXceFGtUf9wuHzhRHUOYJIAFlYByAYGIEvNAMsaoHgNQbcK5guAHSrrncbtXZMw7Z4udnX893bP3gVfgDPeHChjyoxL2ywcuOQgVOhQK/Ik/se5xjZqkiek0rZERtQhCdx9+twmCddbTlt797R9KlFaXzXrXPbSIphlql6BVcgP4ldYEdiQaYvWqOtB14O/IH93YQyjWZNACsVZHBQcgnTtqfAQEAtsBgU3vCn82Irkq0jNOJEFJWDLg== 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=OrC0Fag0ZjCnhamzeJYJ/FvefehU9bX9q+eUQrZEQEs=; b=xKjRnsUHgca5qZ2pyG8dLjYK4fwZuh+KUlopt13N1cfONRVA2aH6eJYGyObfnnIWhoIe+FNdpPLbGV1VC7lpGD6fUhklV9TLB6Xp2TBcXSKecZDdedXKYuGEaQYIdpnUEeEGPDQ7G/GsWF0GPATnxDwvAjLagez9+y+bVViCRKA= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:32 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:32 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 16/21] fs: iomap: Atomic write support Date: Fri, 29 Sep 2023 10:27:21 +0000 Message-Id: <20230929102726.2985188-17-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: MN2PR20CA0033.namprd20.prod.outlook.com (2603:10b6:208:e8::46) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 383b42ad-69b3-45f2-080e-08dbc0d6d49f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a+l/Zxaj14nlW9/VzcHyKU8nOotITwEPOT2RE8UrsTx/Jdd51zEmZtNm86KM+guA+XwYDc+C9PkXl2+Lg/C7tHAxXPp8RFXKlxXY/Gl+CV6wnDEVhhMlg80Ja2ZBQnH7Q/Xb4Q3kNqSKYQ6FG1yT/l8XtsXtImceoSvgKrDRI9EQwK+GK7pHa6OIyGgOgbB9AekxTt64JAZg/fY+frS3FfyQ3hNLEKlCk4W1Fc76ykkFMVdutRCfUMYiD+Is95E8Rsp4q/FfQUhZBxu3X4HVNVlv7Kn2AjL9MKrqcWQhjP+EtkDT+kwu932a5ub0J3S22PcfGB8jVwuW5iBdeCUqH+te0Ihzbeaox3o8GOtg8cLHn6p7Sr0+4xOuTl4IZ6KLrnsdHverVIMuyotLHjneBe4Nvvyk2XMrChYqD5MxzsqD3zqaeDaXXyIIEydqZkfUnEk9E2J5FpINU4TixIaBnB1Se5WXAebUPe51lbyveII2puiieUtM3TVcrMeNHTAJDkzWjw2DuSb/ysXcVS+yBvwZFRAP3n9bhxKlzOSTXzG6rN1SQkIihni3vpSFMK6/QtBFrJ9l8fvcYOANxYFvLm9Rp8z1SMerl7ysKxJU7/A= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lNPXJTCSzkrabwHBNml+spNrxC3nWk2bzSazVJdhahhmFWJkOvrBk3a3kwP++Ajk0Hnz1anbTs2/wnUS7TjODZkt21WYsKSKsKaJ96tdSlKTyns//C9AcUHXNls98jRBPYf8TzNVZMnH2V61pV0vM0hUHlGaqZ+3gAsauucsBoIL1RwlB83la7f6mow8eEgGAMkzq/LbfBmcHRGEuhLrg0R/iefcuNn1Wq27JiAGy2KM5lYeJ43MxIKwuLmAkgEoxBNZy5ObPTJC4e48WgSWx2flEeyV78BJThhEnUKYB6yT8uEHZfHd99cCQCJwJTXYfGYgoaCqnWkcoBhzjy95PdP/HdFa2Yx8K9zCmgTKUuJ74TbvUcPSP4ceHA3G94nhgtTstogcOKnO/AN8H4rdA+A/6ueDuqmKOqk3OjG+DxY6tsAxbcxIWX4KBRkkClmCtU7kf0Wgd6e7oGF8cicXPVoh1C5kZpS0+fS30oZHChZZCGJfdVTMS/rcVhfLwklvt5XbQieAy7X0txUXLW6SX2v0l4XISy9iRb/69kscHUNvKmbTMn/+uC68/UglKN5vXnCPX7yRQRldZxIJGjpbGgbXx6PmaT9hf3lLB4KOVP4iV1Qr96msWMily3GiBjI/6HDCoKAp3e8t6tNrxwrzwG2uWEmDySWoDvyWDmG6614v/tiGypWtBwq95TGMCotDcgYDWCRNUxp+sYQ1x3zB6ll9n/wSTs+quIIl9ginSKuToEeHbvCHfNhjbC+MCqfvCLig6V0X8xCAO5NIXf1cy0vm3fRNaF5TYxm5GxwnODGSdGPmA15jGvL+//12Oo0Xj73urZ3g9g7OCPkFTeZ2O57I0n9R7ISGLmzop6d+PNL7pBpJKyZ3+IFV8K3oN0BTOarMsYyK3Ly00+HHkEYVd2hXIafoTmo8CmQRG8DytuUQH46HYqLiH/kOCNwRlN7pJePsDLzc7ZlDETr9O7HfFRKDrcezRHcrvw98pog0FzoRXL+LHCxFn0ZzxaaqXt16u1W5jitJBNK8yw1Ng+WwVojPyINSN1+EqXqmn9ReAK9wWdwj3uaiEaSTcagbJlCcnVqmFTeHMhi2oN1xucMUFvexcdOmMZJCUsr69kZLjswLJx14W3h1q46Pm/euknIbeg4qGCZKl2+FuHkqjASVobWfNMOFYEcY+U6418fmC3DccjicnSmCpU490DERq8UlnoxA52x04YZvKxTbiSg6qTb3UGOSMZcgzq6fr5nwqu9oBPxkej4rnbPAz6sq9Ppb/tE0GWm7RcbnkujK7DdRYVQsFE2402SUEXnux981DvfSQyBTXTxFsk1eJtEWnkTrcd+mP9/ZxU3eoLDwLeeHxQd5D3DTH5dKhM7qTZqTLLRbVDQ+OAtZQxDHn3AS2GdnL+gsPrqmBjFJdd8RZdfRjcsWESzt0G6dXLLrSOqE6gUJIq6x0csTFG0rxliIrodOiWRhKanJRYoKkBV6IXaDnOXjVGI0nll6+5gx/V408EQXkDTra6gyVi25ozNDHDlumPfhGfrx6vevOPPXyxBwgAzWuM6K5P8cFGaId9SjsW3E6KPt3urYoIlTxpw5jQdGa1d/Lo0jj9LGbPN5k3nMpA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Grnk3kujeMIHgRe7RQV1G+/ebuozQVC9WxBIGq1DQZQa9/uN9ALbqh0T14mA+7CTGzPorw9IZ6JGAU5clFACU4w5N6toLupQcayOO0f+rl54w/9nwVjVlL4U5hXhUOzzXdGN+NHJdjGbGG7FS7CUty4AAvFY/yVax+OZ4rB59TLoBPkP3izkUrgMRKzAGYiYI1Dzj+wzzp4P+XwwHqMdrfFDK0cf0IgF1bOaCtdWgXAwAQiBx7pK2bJJA/xU2KLh36UsVIFjzJOq8763j2ywUQuRFdWUQllDU2GMRH58NqfnZwWZIKtFThuiyt0asg9kuNEOQxG/P1sPuAaPe6Lo2jrVzFWGCUP8P0aLlBMoeYIg2XYEpddfIOX3EW4d1RjHFtMqouj2fmjUI4K99Wvc1AsprYmqeCekeKJHXy4hdt7ZmiwHdaX7od4nnXFcQDIb9rG+Am//bpFbuJtZB6wvGelQXUQ9KjT1zOfxbtBQwz20Og7xB4o5PvkhpEModr+8peC+S9oaduiqF7n0o/WMyBbtOfg3vuqyPmNnZcIJ3XEVXdX3uQcgSpvu5kom0sFQRNRKXBOuxYwbYXfuTrxkAPP9u31oKo//3ujeXDu/jVtyB4pPATNTAebMyxMot/Qn2RQcnAYSowaqu405/MDnVKstliXYwC1XbkvtAqSRJ7t4YHr6yrKV3jwUGWP6eRjbqdnHmB8PGYwkE4WCgmUbdLRvlIrEaduxsJD8tOU3XkgYIJYA+pOcEEhb++xW9lPiMWO5nmeGompfDrjbDBX8W8QxPPpIhTlteNF7KObjwHHA0kIz+Svyh6GDqY81DEpX8giiff0xTFqmofY4ApM4ijub+gOaPGU4LRXbGgppXQlmxYUAMLIkr4KF+feg6kIps/LNMbkckX2UcQxTVDYk5rYJ3DCcIoVEveWbJNtP/6CV5a2Kj5Uyyiev92Z6NREH3A0q0jmJEIhO/6qcKbwDQBBDkQrOQrLH1w9ha8SGd4syGThRWrP1HwfLNcSlJUlyXEUXGdZOmQfRWJCiDX1ADZVb9aMhxg6+kEqBu+vBSMV8xuXY7JZN2DyVNKAD+o35nDgG2ZDJOs2Thqcp361p9g== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 383b42ad-69b3-45f2-080e-08dbc0d6d49f X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:32.6951 (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: ZBHHDiO70GV+qQzoBPfBMWAeRl1jyDuxjg0PQmyM7YfQPMnvYx9ZuFGxx/kiyi+rYtHA1Qx1T1ThJWwcNk8ZuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-ORIG-GUID: O3--EyqDIB_S5tr5MD9r7oO-2NTzyimq X-Proofpoint-GUID: O3--EyqDIB_S5tr5MD9r7oO-2NTzyimq X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:33:29 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778389750100282678 X-GMAIL-MSGID: 1778389750100282678 Add flag IOMAP_ATOMIC_WRITE to indicate to the FS that an atomic write bio is being created and all the rules there need to be followed. It is the task of the FS iomap iter callbacks to ensure that the mapping created adheres to those rules, like size is power-of-2, is at a naturally-aligned offset, etc. In iomap_dio_bio_iter(), ensure that for a non-dsync iocb that the mapping is not dirty nor unmapped. A write should only produce a single bio, so error when it doesn't. Signed-off-by: John Garry --- fs/iomap/direct-io.c | 26 ++++++++++++++++++++++++-- fs/iomap/trace.h | 3 ++- include/linux/iomap.h | 1 + 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index bcd3f8cf5ea4..6ef25e26f1a1 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -275,10 +275,11 @@ static inline blk_opf_t iomap_dio_bio_opflags(struct iomap_dio *dio, static loff_t iomap_dio_bio_iter(const struct iomap_iter *iter, struct iomap_dio *dio) { + bool atomic_write = iter->flags & IOMAP_ATOMIC_WRITE; const struct iomap *iomap = &iter->iomap; struct inode *inode = iter->inode; unsigned int fs_block_size = i_blocksize(inode), pad; - loff_t length = iomap_length(iter); + const loff_t length = iomap_length(iter); loff_t pos = iter->pos; blk_opf_t bio_opf; struct bio *bio; @@ -292,6 +293,13 @@ static loff_t iomap_dio_bio_iter(const struct iomap_iter *iter, !bdev_iter_is_aligned(iomap->bdev, dio->submit.iter)) return -EINVAL; + if (atomic_write && !iocb_is_dsync(dio->iocb)) { + if (iomap->flags & IOMAP_F_DIRTY) + return -EIO; + if (iomap->type != IOMAP_MAPPED) + return -EIO; + } + if (iomap->type == IOMAP_UNWRITTEN) { dio->flags |= IOMAP_DIO_UNWRITTEN; need_zeroout = true; @@ -381,6 +389,9 @@ static loff_t iomap_dio_bio_iter(const struct iomap_iter *iter, GFP_KERNEL); bio->bi_iter.bi_sector = iomap_sector(iomap, pos); bio->bi_ioprio = dio->iocb->ki_ioprio; + if (atomic_write) + bio->bi_opf |= REQ_ATOMIC; + bio->bi_private = dio; bio->bi_end_io = iomap_dio_bio_end_io; @@ -397,6 +408,12 @@ static loff_t iomap_dio_bio_iter(const struct iomap_iter *iter, } n = bio->bi_iter.bi_size; + if (atomic_write && n != length) { + /* This bio should have covered the complete length */ + ret = -EINVAL; + bio_put(bio); + goto out; + } if (dio->flags & IOMAP_DIO_WRITE) { task_io_account_write(n); } else { @@ -554,6 +571,8 @@ __iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter, struct blk_plug plug; struct iomap_dio *dio; loff_t ret = 0; + bool is_read = iov_iter_rw(iter) == READ; + bool atomic_write = (iocb->ki_flags & IOCB_ATOMIC) && !is_read; trace_iomap_dio_rw_begin(iocb, iter, dio_flags, done_before); @@ -579,7 +598,7 @@ __iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter, if (iocb->ki_flags & IOCB_NOWAIT) iomi.flags |= IOMAP_NOWAIT; - if (iov_iter_rw(iter) == READ) { + if (is_read) { /* reads can always complete inline */ dio->flags |= IOMAP_DIO_INLINE_COMP; @@ -605,6 +624,9 @@ __iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter, if (iocb->ki_flags & IOCB_DIO_CALLER_COMP) dio->flags |= IOMAP_DIO_CALLER_COMP; + if (atomic_write) + iomi.flags |= IOMAP_ATOMIC_WRITE; + if (dio_flags & IOMAP_DIO_OVERWRITE_ONLY) { ret = -EAGAIN; if (iomi.pos >= dio->i_size || diff --git a/fs/iomap/trace.h b/fs/iomap/trace.h index c16fd55f5595..f9932733c180 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_WRITE, "ATOMIC" } #define IOMAP_F_FLAGS_STRINGS \ { IOMAP_F_NEW, "NEW" }, \ diff --git a/include/linux/iomap.h b/include/linux/iomap.h index 96dd0acbba44..5138cede54fc 100644 --- a/include/linux/iomap.h +++ b/include/linux/iomap.h @@ -178,6 +178,7 @@ struct iomap_folio_ops { #else #define IOMAP_DAX 0 #endif /* CONFIG_FS_DAX */ +#define IOMAP_ATOMIC_WRITE (1 << 9) struct iomap_ops { /* From patchwork Fri Sep 29 10:27:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146540 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4001638vqu; Fri, 29 Sep 2023 05:49:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFI8RC3KgIXNMEYS4ZwLuK0vFOk9jme+IRav9GC3JyIiKl9X0qniwg6em5RJc5ubacERxlT X-Received: by 2002:a92:cda4:0:b0:351:1d2f:5f99 with SMTP id g4-20020a92cda4000000b003511d2f5f99mr5663731ild.26.1695991754171; Fri, 29 Sep 2023 05:49:14 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695991754; cv=pass; d=google.com; s=arc-20160816; b=IOnpV5Z+69LXqSQGmdren2qTuSSvw0VsHO4sWLuvRI/0S79+MlS+ns2FtyxeFHXr27 E5SeNm/mGxjonPlGVQs3qSVo2d+7NXzQdM58pQKWWWmmCZngt4noOblGvspjhXtE+N99 W7EbgIP1f2oB+/CuNhV/XfMBguHE6kv2koU7XFuxtPMYY0rP5ejZDnLff0bEaQiSBLri u6tVPiCfM1+K9z/uIfIHT2rQTIrVAW+6H3288Ag4/yTKii/aqKvizjk7wqCT0vqSxw7T bOqTfl+4l1Q/+FZDSJHPa+zpQAuYcGJl+1sgHf2ZWnRWNj/B4BP2RtyF1gtlWOcXFCUp Jqvw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=9b6c13tAVvtzoHZgCJ6dVum0FdVhaxRpl1nF8MNGk0I=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=REYZbCstMBo0QNZMscIXHq6uV1WrdXHkStW0Z2nF+IGsm3eeVcBoHoSJUKSnJ6Os9u sJe14x5oTkhvCe0mvWxzk44Z5Q7bKG91iNB3TyUMUPVEzUfGGQqVuJlWPAx2BjqO4CS3 AoPrj+fTKOmEef4zrgfkNlJTaLScuej6i5Shg0dCYTUTJ8GPj+8SwjjP5JEqHU9+P06U pSE0AjAcIEqbcmQ6W5dqpv7IeUbSC+XL8LGwEfd/nJDlywJd5OmO3ldNFtTN5eKplQWL UTBFvrA5C8n4YkKgirTkhz7UUMza/S/SqcVu/4UnEnuGNXq0G7GnbNPEL6SC0s7pbFi6 T2LA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=mI2s4dSQ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=UyRDeGhe; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id u69-20020a638548000000b00578b4980785si21237348pgd.36.2023.09.29.05.49.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 05:49:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=mI2s4dSQ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=UyRDeGhe; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 009DE8366672; Fri, 29 Sep 2023 03:32:03 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233255AbjI2KaL (ORCPT + 20 others); Fri, 29 Sep 2023 06:30:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233132AbjI2K3d (ORCPT ); Fri, 29 Sep 2023 06:29:33 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 605D8CD0; Fri, 29 Sep 2023 03:29:06 -0700 (PDT) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38T1C5Xk018309; Fri, 29 Sep 2023 10:28:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=9b6c13tAVvtzoHZgCJ6dVum0FdVhaxRpl1nF8MNGk0I=; b=mI2s4dSQf/pyE/4niR0TSWn72bcyYI69IjURsoVDuj+j2rnbMVfWyOWcdXqAIdWRIhNK wq/hs2/l+rToJSMOKYkPz6A02pjMphUxR+KLr/cNziF4HaHZ6PWwmlnl+mHRITpTJVWR UlGUVjxH8m9IKv8nD7QAdm7C72KDNm764qv80NBOI9OAVN4mNOF2FPxXftU+eCM1tc5T aPBKUYyUIvuDDQJHWxuEtAuWzwoAQ5WoCv6wzCIGjTC+AA8QEpHainxri8sSVOoWeY1R UW7uRK2xlgFgzxz17iEPEtAQLHzcXKQwjsiXkEAuih4II0u7U6/litcMAhjESPZoawxH dA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9qmupe0p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:50 +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 38T9iSOL015821; Fri, 29 Sep 2023 10:28:49 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-8 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=izS1bUDazAXyv51Cka9AF+2hs5rZrWqu/hwYB4TUFwdPrJ5rffkGr0yLb5QwziDqer0E06DUHvJUHd9dM8mwFSokiTTSRpxfoW4DKo8hlc8xqLWPF37Wg68nnPjnxHY2LHImIZZgZp4V/BOHsI1ZBnS1i2w+ddy/td9no+Dh805bFw3AA6TbrTfBA3dS/O51WRsnPsvH1fogK7T8M8tVcZS1db3UDSntnkf31ddBPb/GdC8gWZFv0TJXQ0II8KxafFpT2sXqcBLuSiH7O1cTD4AlM7O9UixNY89MeHFASq/TweuIzB+ov2TJpClwjhDqj9/E6cB/KqPl7bNVIv1XxA== 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=9b6c13tAVvtzoHZgCJ6dVum0FdVhaxRpl1nF8MNGk0I=; b=iTDkk9WmNL0bwBrFCsTzqoUfuglnFTmgCodtvJTUiTMFub00Hz6SfJbm9x1AtJ6O1aJUPwpGv4A4pGD39XTcm4a9eJaeTHwdVR0+/9FhautImObeFqX8hWOrAdug3XTUsXckpX2Ofrn5/+kmJ1Sh/Yj5CtxPGqijr1H3q4o8vUsX/SJNfQi1uw5Xiflw3AhVmqgEtLp8LEjkIjeokLduMZwkh4kkRWRL55HDcCl4J+ynRiwSLtCPd+Rx3bLUWVu9XpJ8vJjclBQ70z7nxY/Ii14RZ20tSFK5uE5n8v6Gsjzssg/ZcuC/3AyoEKP8ec6gwEX9AY4R8Og+65hMu1GLfw== 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=9b6c13tAVvtzoHZgCJ6dVum0FdVhaxRpl1nF8MNGk0I=; b=UyRDeGhe0q0/83XHac4FZpPcJKU2TtUabgNxh6QK7JT9UfHpVy6yqjpIqlLoQnOSlqT68G2ccJR00gigTqH/UfAgbjwY47C0hq3bk+aJch3ksWtPVSkRHmeErRExhygwEy4nEGO+iPueK9ERGXJjdKxzoChxYtC0a94SwNsX1DM= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:34 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:34 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 17/21] fs: xfs: iomap atomic write support Date: Fri, 29 Sep 2023 10:27:22 +0000 Message-Id: <20230929102726.2985188-18-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: MN2PR13CA0034.namprd13.prod.outlook.com (2603:10b6:208:160::47) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: d8497fe7-4294-4c72-a6ad-08dbc0d6d569 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fKy9qvKGSWBDCNx4BarVUvpD9SzsjuA7RjZSMOA7sXI2dcx+hepyOxq0K+hrO4YrRBqFhoB2ISIEJL5+oOvD0QY3+1NYRK1PtnGLMA8xo6fahWSZjzsi7PhwzNCZTSNeTU3ZWQxJ2+lxAK0kyt5QNJVfrOdge2R8+llzbImFz0lHe0nhKi0ZZJK/pI6tXsViKatcqaQBeQo1bpiuQ0txIY9SNML31cz+RbI+86u9TMVdJ34yvY6fEhe3v1y6eDVbFA8cqwI7VhebaTjW9cA9A02xJVyeD+FNzHjPGNaxxlpVZ8StPs23As3w85NMawuC85tRR3TORfvuek3jLo1j/A+k7ZBZ3UBGMi8hVmwxCYn/suzpoi8PDZvBNKara+2J4aN6Tu5VcdUhT82eX2XOLN+6f20v1JyxRO8pS7yiNKiGXyY5X8s3FFR4AACvj3NowGPW07OqTju3OYDOHPbKKsD6i7vhXQLuf50aVqjo70RRQbCZL3hPEuUO3ax7xeY+W425NkDwwvaZ9HmKfj7USrz/hF2dGejmRYzXAq+fQQbPO/Vy+Aa1i+OYGyJnybYb6VqaXXQNCq+s4t/Ew47XBga/fge/w+79M4354DxkTKg= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Y8Ze9QeWGFkIJU4JlDjmSCRv86n52LqQOCBgjJv3Efrok5GZZJWBdilcRXT6TJyL86I4qYXnAo+ubSsf1uMu9Mc7VpmC71AM78AoCGkEiAIqvvG/eQzaxFzx86OZPxsru9RYU3+d3rdx7TXw0rRVoXI9XMoGFrn0VVr/gcA2Wba1VIQumcKqvK7EkRQkLrottCHD57LNagZ9ijchZVevA8tHqVuMlRMGK1hQt782DO7Y2huJ4ZVK7lsMQ1SJBFZTYu1cwxtAZgKkbrsxTZKsxiwW8OX8xoAmgh5akz6bGEMVH3FKAhmJz6nUnU5P99rhEHGbIoJ5rMnrpf0wiijxdQO66DLzPigMfnsnCwRJlVQozkpSuJ0iZ8oBN/K8FOivev4zQ24k3tn/rawGJTCOuayklD12goZT9jFMSmYqpROoMouCG//nM+YY09dBSgLJIs+ajg+oyuUR8JP6AWBEn0eNvnznu39ZZXVIQsicCsRZxj+MgLEGk6EyNDtG9Ov9ykumowRWvn1IwmmlU4zLPwoflUY9MMCyKcl4VZNJGD6uh+r3hV8CRs6+BgZkjJGDDHPMWC1pRE/bXowdZbbXNQNStjWd+qB0gbkGKvInWpBKocVBty5OmFYhr1w3Q2Rtb0+n7Lfl0HPp3qTNeWlg+jmbgTJ8A0it0/S/LzuMhIQGcu10vovIO0TPu5UrwQHOASg0gHmOe3lYp75kZEaHoAFxSm/LlzR2aFzS3xenhvEEiiFnXfcfzRamOV1Cl0tZlppc60dDNOHr2TQcim72iurJmjPPSe+KXmQasxUdlKCrJe4FrHVWfcyPRvvBPewYoYZH7G5PTm7MRk8EVYZvxHcMqzFeID1LooJGczGrz2Wyqmjd0b2NiXae2/BvLSD9QT7jF5ei67GYt9RTxHRX754r8KceQ/yeSlJd7/n9kjzQwFZiDKa859NHlAMtHcIK9Zgbfmdu4aMZkZ+8sEzsFCgWeSiUo0M9kVXy0BrkTfwodQR5vSmefRiEOHJfCrcNZuxxgjGWT1DF8qYZd3Pv2efnkq5P6xw59IUmzGaBw1WQBxdNdmFg41067dqNDqKBdCb2I9Pey7WFQOKCftT21/uwo2s2DINHx64QPYerHma9StPTjLS2UtUsFMPRNvZeB8sUKZ2MkbQpZrnKQHcYsTvl8hy39Q+T5hMeAxSRnKltYknThUAihTVBm/gEvRgw221DnraQJQHAG1DTr5oCxlHCsvT4mJW0mqUcb8ag14Q/aah3Zh6moQsmbhWJmN3+oS/LMjk8sx2e4ppcYdW6/ksfiU48bJ4HGUd00qcPs8STgtH9VCUs9dy6PI4IsgP/YkssST9xoe6D/SsEvwBlpTJZeTdX21TPTxC8M2rie9cIPgStJGFe8V/hwoW3vYUH3pcMianrQH+NhdHPV8aW2MulCeXYKuyCgK8bzaffvI8pljDGfOKjPejh+DzUZ9wJr8pW42bOegC1ppAe5wUoH2YVqkweaOXBGX12VU1UOHdGJGx7p64Ad8Jk1EZnlONm2QEnLEVf+e59+OplJ4RcPH5y/jBadqPv4uSAA5JOIJ+7IClRlcqnLxGMUzHHV2Jm4hdjZ+KqGFSBgE2dsejL3A== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: TpIdIMvPJKn3oF4RDxjWFhAcvNTxRG82iR2Bso7tmmIbt/iS1supHRa0OzR6J/GCTqDFUfTDmYb5ebPW8Fp8s5fWtXzBJVDL19jwTJmtWDKHH0LZ8t7LLoQtYBfsRPTYl7yo3v5f7AWl1QbCZ28R1Rk4CQAlsmMi2RO7WAt65NGYovkfYRBfWgI/hpYKXkdEC3HgmBJfwE+lMPJDH/rMTux2p80rYEiKN6wdlFpa96cl3VMvqN876BXEGSvwek+Xbkg7BK3UxdHyAtHMIaQTaN/JCgROPf/1fwiO07kC7bRr3gnkixpHHKJV9igdNzugrD4FY+gLUGWvz/4Lak1ibMfPqz8cBZzcFs/t1wZ8K+/4iN9tU6dNHvbHHsqDTdG27Om99pMQbs1bMHsbJlrmKBpEJiCCgiSz400lft1cbh6KT3uTmE/5+dL3gwQGegjLXTouICpd/dXNmQXI909HcEpAGpBdOXSIFTybAFAeAaUy+cIXoRnMeUVEntHoJV9zb5MMHlwuSxcg2hcQ7U8bIrFO7VZs9Xycp8YJrMISYXH5dtKwV21Geo82wTZax2ukjFGYf49rimd5idA23K51tCKSnp5u1FneG/IP6f031EZsl6Fo51OTbIOQKj7ch0OUKUbdariguQEeCJxMQS+pimT4P6+CeJWk3M81euc6eWwHA7/mfh59xxoDPFE8jwU//0XWZT3FE6efuxU5GPrN7R111G2Ry4ESIjKvacRXAs3lObvg70BBjsx7IaEExNmVFa4ySQ0m9DMzWGExD7P6/Y0u2aT4QMpPKrQ/Fi2oPwrWeXxUFnNGhbaq9Xijj7xhgRX95UXQRbrX0blakCdtTZLJNcRCoaatx/mdKwoSNEdAoqz+woo0bMeQKpR5vLxW6nQe/1P519lPtE0FbOQ/CGXfMUn38ighOAM9me40GpJG7r035oXnFx1dQ1x/+3QMPmrKlPkOmATDbUjNOiv/kJKn91/4phS/KTrLuXdwef+0A4T5A9PQpeq2e1VItIES7VHMnZH/FuWzGlHVJmzooR9VaOujYtWEyKQ76KVE0WHdGM0pu9MprCB6mWYElKjiGY+GoJbhp3eFIurYdsUjkQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8497fe7-4294-4c72-a6ad-08dbc0d6d569 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:34.0346 (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: esquxsa4veJJfdniqEOXoAaSAXtbupiu8ukks5j5MnAobazRj3tKwthK3q2swuPJFfkC6zwY0f1u4KE7MsKWpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-GUID: NrC-vvlxbzBnVYD5evesSzlbbMJJVpsS X-Proofpoint-ORIG-GUID: NrC-vvlxbzBnVYD5evesSzlbbMJJVpsS X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:32:03 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778376249383126641 X-GMAIL-MSGID: 1778376249383126641 Ensure that when creating a mapping that we adhere to all the atomic write rules. We check that the mapping covers the complete range of the write to ensure that we'll be just creating a single mapping. Currently minimum granularity is the FS block size, but it should be possibly to support lower in future. Signed-off-by: John Garry --- fs/xfs/xfs_iomap.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 70fe873951f3..3424fcfc04f5 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -783,6 +783,7 @@ xfs_direct_write_iomap_begin( { struct xfs_inode *ip = XFS_I(inode); struct xfs_mount *mp = ip->i_mount; + struct xfs_sb *m_sb = &mp->m_sb; 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); @@ -814,6 +815,41 @@ xfs_direct_write_iomap_begin( if (error) goto out_unlock; + if (flags & IOMAP_ATOMIC_WRITE) { + xfs_filblks_t unit_min_fsb, unit_max_fsb; + + xfs_ip_atomic_write_attr(ip, &unit_min_fsb, &unit_max_fsb); + + if (!imap_spans_range(&imap, offset_fsb, end_fsb)) { + error = -EIO; + goto out_unlock; + } + + if (offset % m_sb->sb_blocksize || + length % m_sb->sb_blocksize) { + error = -EIO; + goto out_unlock; + } + + if (imap.br_blockcount == unit_min_fsb || + imap.br_blockcount == unit_max_fsb) { + /* min and max must be a power-of-2 */ + } else if (imap.br_blockcount < unit_min_fsb || + imap.br_blockcount > unit_max_fsb) { + error = -EIO; + goto out_unlock; + } else if (!is_power_of_2(imap.br_blockcount)) { + error = -EIO; + goto out_unlock; + } + + if (imap.br_startoff && + imap.br_startoff % imap.br_blockcount) { + error = -EIO; + goto out_unlock; + } + } + if (imap_needs_cow(ip, flags, &imap, nimaps)) { error = -EAGAIN; if (flags & IOMAP_NOWAIT) From patchwork Fri Sep 29 10:27:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146676 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4175243vqu; Fri, 29 Sep 2023 09:55:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGInMJ32pKK4S5ge82N3PoYtvVVq2MbnAas112JL5eatcMvX23fyLiY4Efm1jaByhWpE7Vg X-Received: by 2002:a05:6808:13cf:b0:3a7:1d15:28fe with SMTP id d15-20020a05680813cf00b003a71d1528femr5260782oiw.56.1696006536596; Fri, 29 Sep 2023 09:55:36 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696006536; cv=pass; d=google.com; s=arc-20160816; b=MUdnS9AQq/LSnvDLbOoz4ITTSeBIACqlsYNKnJ9VCPdOLGk+C9YqhpJUsCnLPnRtSf 6f/6HQ7ioy7ut3bDGv8Kh3J1OzF7JHRxeB2RpMP1TrP7n1HsUfO0pfzVDToNeqzb+djH kdZaA1Y153RaxapyT3W9Zp/3c3aKUVen8qMBbuTX/sIBRTNay4DkDhz1JPE86enxOKXm RGM6Dag9kLHtBgBYJ35liuPrdAvnGSee2BWaaPoyk6PZSTA4tWnEzWkiEovBHBo3wZTf J1LsTS60BO3hLVK8fYpPxXMDiBVUj2XqXSc6OZgyjVGyRJ1a//sJSbejiC0XqWog0T2c 38Bg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=krqal+86NnUIkwkCtgxlVFAeJivw0zNnHUoY2Q+7HrA=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=cB4s3qebC3KbxmN6Ux0bGSIB7EsOv7UxgAnv3Ap4rolIIuQYbEWWqXs+R2HMYEBHL9 JXOLmRiLcgxyDJD8Pu8/qseUsBGRD2WBI8GnHAJox99ztYgTUtXNY9xgOTJuGD3v29xX hgAMCpTdONdkf9tx1nND3btKkE2TJSwtStNVgjdmKDGFk6JKDeViCjCK5BwEFDwryq/U 7otd2wtuKBje8nymX+HsgW3BKVaFJSqPNt70Us04FtLDSKtTKJB0J0P9wylU8Eo33tB/ K9sHBlnMqqJP2rq1aR7VLzt/0jrzrePXnh1hGsU5iS29bJ0a7xrlkutbtkHSZvsjayQk CORA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=TjsDokSP; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=OmMhnr7v; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id w29-20020a63161d000000b005702257f32csi21229315pgl.840.2023.09.29.09.55.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 09:55:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=TjsDokSP; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=OmMhnr7v; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 0F7758051974; Fri, 29 Sep 2023 03:30:41 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233149AbjI2KaF (ORCPT + 20 others); Fri, 29 Sep 2023 06:30:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50464 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233127AbjI2K3d (ORCPT ); Fri, 29 Sep 2023 06:29:33 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 197A2CCB; Fri, 29 Sep 2023 03:29:05 -0700 (PDT) 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 38SK90H9009532; Fri, 29 Sep 2023 10:28:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=krqal+86NnUIkwkCtgxlVFAeJivw0zNnHUoY2Q+7HrA=; b=TjsDokSPEK3Zey2aMfguC1oYvgnMv6KUGRcSVYKs5sLGwoKl+ttL0btuCHBr7yPCkQuB 1cXr+tk9C7BFfHX7WYjCmzQBcXyimTxS5/Ix/cAKaSWBnE/4T/R0b8lNF2YW0+wuUrap 5iNTR9W9fqSFTxN0ouoBqBnaKKaLSrAgmwSMwiwmWNj9FTMagnAiBc2g1DvIgCcjHe4K 7ZZyk1w/2W6426jCjjhia4SZ6zPHeZ31mb9oYTfT5KTXyh7H548XWk3iOOA7vLYw9fRo GEkELbf68TokTYLSi6tOUShyJO+3zQ0hWg+GfrvJ0Kav1CrRwGsaW2X2qjXBq1t7CkRj gA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9r2dpjkn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:50 +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 38T9iSOM015821; Fri, 29 Sep 2023 10:28:50 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2102.outbound.protection.outlook.com [104.47.70.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfh4vtc-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bhQ4+Z/IXerOKJuTXD76qYeB75V4wYa0/i9bwVuL/Ex+D1eiwzMBS643eL7RP7BShM9YrYDCeX2xW3dUKQOYT5pD0e4NNkaDuIDUjmP9ndV11xocX2pDVXaJ6c0MpJlDNezR0x3jQkdLu91hFbKkj21kOJ4DmNTYrNbD0ol8E1aWRiV98zKvVcPGvaHo7ZNhrdX4j3x+TpPtrdFt44fRtR72m1Qhw0SLg4OJLGSi/I+xe8LVj422UW1KNoSzOsOCrykGSiwUVC/VhcwJJET0loZOzMfZ22kkuwML40poslPLEcig3E3wSVTMYACIIuVaSFlQnYVQf4G2c3agZKSioQ== 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=krqal+86NnUIkwkCtgxlVFAeJivw0zNnHUoY2Q+7HrA=; b=PAWr8K/iafdcegaEJGWm3IzbUGl63FyUM9n8j6ubivFhUu/byC2IlGwyf5XdRGo6zqOohSjDEAHHXtQvL+Ckt9DiLoaIdTQrdqKPwhI2dJE05fZ6cw0tGnr8+zEbJJJvb+t/sNY62IY9Y4Z6hYSsJh192q829oHSueb62ufhPaFyAU4gs02qCVz9aWbLcb0e3XCXVtHV82a+01bpdHG4IJwznDSGKMOnsrIr64kYBqq1FRCHcCAZJEF0UYrPT1xovqu8ALUuagIHP+JECTPekQ7MKkxJiWOL5u2RmK3uFF+5u1e3PlRooR91c4fWqBw5Ip2w3YAsBocehUQnG3Y2jg== 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=krqal+86NnUIkwkCtgxlVFAeJivw0zNnHUoY2Q+7HrA=; b=OmMhnr7vUWs8dhKLjWG718q1EdQOqOCkapAI9DI3BQ8gkCnnjezcSvb5RlfhbVX9xoELr2aAiCcKbV0VsaRhcW16XrxTEpgSGZV0mS9lxWXuusoi1HRmEmtJTIQhmLsSTr/L+cgwMUkTQ7jP9Bvsr/olrHEdAqWt9OBQ1dGq+3o= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH7PR10MB6153.namprd10.prod.outlook.com (2603:10b6:510:1f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Fri, 29 Sep 2023 10:28:36 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:35 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 18/21] scsi: sd: Support reading atomic properties from block limits VPD Date: Fri, 29 Sep 2023 10:27:23 +0000 Message-Id: <20230929102726.2985188-19-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: BLAPR03CA0151.namprd03.prod.outlook.com (2603:10b6:208:32f::15) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH7PR10MB6153:EE_ X-MS-Office365-Filtering-Correlation-Id: 69b42816-48d6-45cf-44fd-08dbc0d6d634 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LqY69rwdWXoJ9gEgNp8v/5Ndpuf3uA9cG8D/5XLbWa+Oa90CtA3KSnw3J/ryaxE1f87GjBAr3sGwt68BEvfRDint67fxgqM8g9iGSCNgWZqgqZWQWQVZL7aOieBG/ffBJgvm7jhpkSz50giMNhC0MrA9xVmALoXlfyeDpXrAB6KnIw148zpE3V6Wc+5K4gjNBcAtgsY+t/lxdQWvCj9zNXKVGLYU4Q8hk37Z/v+w2V3akQXCNspBhQdZJcXjmLU7ELfxojjvJLdjEdg5jV+36Yy9JE4OkIn9WRnlERLXteDy6JRY0MihWIffrMGLMXivlKQB8TXtRMdoVqaWSq8hNObt1Qw52OiMtN6yhtVRknORp2EQ7oClrJz1nAaN3eGSQraiEYm+2XJG5aM4shf0C9Mocgj/1kIXwTs9+QbMIgDEJR2KvbDYbFdZzOFbS4bhpbvZ0D7jqysmNvyWS2VUcNnS/NIk9qYTFhGWsPbPF0nrKAIYouOaRodnz9VVRTvi10KQSO0QXUdubQLcBsm2GdqQNp6gr8jz7aJUnqDRATyfYNdPmeAOmnZv6ayvGsx1VdHOEiPumlkgNVP3g0UiTLCekeVLS7U+p5oaGnk4Mh8= 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)(136003)(39860400002)(366004)(346002)(376002)(396003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(6506007)(6512007)(921005)(107886003)(1076003)(26005)(2616005)(8936002)(4326008)(36756003)(103116003)(66556008)(7416002)(2906002)(5660300002)(41300700001)(66946007)(86362001)(316002)(8676002)(66476007)(6666004)(478600001)(38100700002)(6486002)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4uIl2yHs4MA5QIT0uoB2kD3KosVmG0vQ6Gq6OXbyBcHNSmKSgJRCkSdItGV/HlHRFIMvMQqSYhf4oRfUFPiW8WZld0bFhTOLpt8PPLsuFXcf8vieCa3uCctd50KRQZUuDAkamywqrwlecSCSGYFxFpZQFLWbGSU2hXRCApuXrPvqb+X4rOHUgMqeB1EbHWAgeqXItYQ6t0c92BDZJzdr34ixIVqA3kEHxNAI0ivu+04Ii5g6HSA5i1wmVmYAVL/kzJE5IKP5uHoEeFLyFm9JURK2JgqeojQrR2e+krpCZw9YgYPq872Y9gK+cig7H0XnFXxNt5bviVyQ3weh6hyPMc2RR8jIv5ec34bgBdmof0Motp1KiBh0ZGxDCN3zEofZQB1Hw9lpJLqFCpn6kRjWJ1EuG7qI9h8CokfwiYnOpeQPIuTpST/yQQmhhvEe3AggbWwnoj2/RlMO/ljUBBE5z0d662T6Dtrvl1ZBFRGTDP8GnEk4njrCD2qoXZ010gDJSpSArWybOq2tJtsJEPwERFrKAmfnuOBxUczM1LtZRTZN48mvyvfTcBIwwe6vuEPDN2Mhdc1Ujp9qUZBecju+nFlomEq5i8g6DhYd/iuyEIgHVO7xphZk4lxsP8iJxUxzRtgTgMLPU5qMehA3qun2Vn/SWvYgkikMFzORWV089wNisFl3OWSgn8PhjYnbVE+sBN4UD6YWpJvLHRgUOFoxglXHsr4XUvj6Zwb90HVOESt+rCOzeatq58eLmVXl1h6v3ICQAwxbx3mkLwv2rMZjkueXBzBNN7mFKWRL6Fw/bVBKj/xZxaD/34BW96BqxY1UhiBytTjXnxkGJTxl7qCBe+tkiJO2nCdxoh1K1XPsmVuiuXQ0Q7G5zqeiFIw0E12GjKY328t9AOr48S+zKmowisESO2NfXgKkSOtt4u4taegxSwDxh2+icBxKL3tsv+QQPEmmX6dn7dHKhkhMJ8AEu2bBlCWI5UH8Z1LSO6NwENAw8urTI93rMF0noqD8hBUmgkH2vsz5G9DMzPhbQHUa7kywF5eMusf7WxNhndC+JXUklDz0UgK++zB7uvtdBqQVVy8enkm9JLdVMyNBYGNp4uOYgzClD3bYuwGz3rjyQATcM35au2oEWRNK7rZ/DYTo8b4OihbDSE6fzpLv0/bWHIkgXWs1oBOaRHmBiBmDBf+6cvJOBKqIYE4CvoeBLg1QJnjeec2bHeNm3A+bUoiDKrCz5hu1akj+iBOWVwSRJQTlqtvMGDyk0qg1TIIjP6KgnyEfyMANuP9oogqmBXQXEo5Eds6e+r8082fR59EJEBmasRkzmrvX2HtahO+YSEgpEc6Nqfhh4Qg8nKmMs9P/s7Y8HwykbBq8irVmt/qcTMlwpt3qyfPT+F0XO9BuGJA4EzhuqiQlG85sVe62dx/5puYJqG6Lap+AXwCMtSDi0p39xQDtBZrzhxadTbJA2kH1Mn/PS6eh+0dpx+y4QOcAHw17AWwHgpwj7hTflp6DKKJcWkJ6nkghFP0J1qS8Lauxx2U2mYWbfeCw4kj1Mzw31nj2RR0T6lesxVEzwekgt6NzEACEIj/LJhbCcjm/dDIJwGksjXIN4qeZb8ZdP40LSg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 5PHVw5f9bz0iXIq3+lOsLc2PWqZ8wW/4llpGlWtdx1suBBjRHluFNeGuei7STLV6qz0NYQi2nHGkq3idyeffO1RR0sSKv4dZEU7TlW2KyMyP7lXsCZjnWbnGQHxyGcE2Ttf+x52BsgayFgyxwk86GZbA+eerpzFCIk+vesDv3cfDyogW1aH1x8a+5RqBPZ4FWvzhiAANys3Tb1d/pMeF53wi1GlZpaxJCYvXvhsWggG3VoZCGZT6SFGWuwJxToTPhEASX7cAwGbCvsnQ/Ml5dgN+x1b6Z773M5SZYKM9738jpb8vWs2krWfbi71dm/8FF4tLAmpDJ0FDT/DypqXPzcQEXk3n5kYDbH+tRQoN/RaeNrXPfT7YxXUXNyrhWznKCSHRX+kiY7sBPA3gNOXT44kyKAzjizITqrwyb7TESxcYAA7qxhCFFweCHxF3EFLHMTcaTBzMxFKfXlB5+H68dLpm3FE1wPESwOcQp/nFxOF8ES0Y53vAf+2PcBwAwhCRiGC48ugoKreVHLVBps2jeQJA6fpe7cO6a/USueD+ugWvHQKz75LbA2//nHM++y6tQARP8Zg69cQWRtamzAopTx9YvQf1a5IXVRJ/tFRDJ44vfqFMdfEGlqv7jijNwPHdMFOvQEQYPpkRdlNm9ZLmDe8pG5gP87SCt/J//9/WUGA2Dg3+wb4DL7ZqXmw5bGA9tsxaDXKh3ReT/SPDxTMGp2UpDHd7xvmNs728QDkDKgXhNlZEQglH+5Z6q5D6fXptWeFsO+7iRk8yeBJfSeqvMTfxEyPHQ+UchkaZPouZ3sCvS3o1VBpRJJIVe3GGzj3EYcH+K3YngtbU6T47d2qo8VLuWInb4YZzGfdzMz+BDzopLOEmSeziTnAAps7Y8FGuOa4EVeNlgwdL0JWb9jU1urL+MlRu5/ZeXNbOYAEZFKujzHEaAvtYDGX2XuZxRlSot0KZyD4apLbJP4ClKaOsUZ0mVJ2HbU8wR9ryuRWUFTOLxvvTHfK1cgWdP5yeJaxtALaGwgJdmMUUCReb29RxNplpbAV/x+nyoT8/8HWCrq/JVBuOS4dz8jlTIYehUlRriQUYSDXv+8ZMgZpW/wUROQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69b42816-48d6-45cf-44fd-08dbc0d6d634 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:35.3506 (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: Dw46ov8IGNuGOxpO50sHZcTwL0+Eka6j+0WUJSRob4gOM0nUvxz7LN+iAZ+PM1nYAz+kp+LdU+8bdEQSsG7A2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB6153 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 spamscore=0 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-GUID: lK41I0H_UzrvAAdqCgf0SJ8kO4SZFEdZ X-Proofpoint-ORIG-GUID: lK41I0H_UzrvAAdqCgf0SJ8kO4SZFEdZ X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:30:41 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778391749826675762 X-GMAIL-MSGID: 1778391749826675762 Also update block layer request queue sysfs properties. See sbc4r22 section 6.6.4 - Block limits VPD page. Signed-off-by: John Garry --- drivers/scsi/sd.c | 37 ++++++++++++++++++++++++++++++++++++- drivers/scsi/sd.h | 7 +++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index c92a317ba547..7f6cadd1f8f3 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -837,6 +837,33 @@ static blk_status_t sd_setup_unmap_cmnd(struct scsi_cmnd *cmd) return scsi_alloc_sgtables(cmd); } +static void sd_config_atomic(struct scsi_disk *sdkp) +{ + unsigned int logical_block_size = sdkp->device->sector_size; + struct request_queue *q = sdkp->disk->queue; + + if (sdkp->max_atomic) { + unsigned int physical_block_size_sectors = + sdkp->physical_block_size / sdkp->device->sector_size; + unsigned int max_atomic = max_t(unsigned int, + rounddown_pow_of_two(sdkp->max_atomic), + rounddown_pow_of_two(sdkp->max_atomic_with_boundary)); + unsigned int unit_min = sdkp->atomic_granularity ? + rounddown_pow_of_two(sdkp->atomic_granularity) : + physical_block_size_sectors; + unsigned int unit_max = max_atomic; + + if (sdkp->max_atomic_boundary) + unit_max = min_t(unsigned int, unit_max, + rounddown_pow_of_two(sdkp->max_atomic_boundary)); + + blk_queue_atomic_write_max_bytes(q, max_atomic * logical_block_size); + blk_queue_atomic_write_unit_min_sectors(q, unit_min); + blk_queue_atomic_write_unit_max_sectors(q, unit_max); + blk_queue_atomic_write_boundary_bytes(q, 0); + } +} + static blk_status_t sd_setup_write_same16_cmnd(struct scsi_cmnd *cmd, bool unmap) { @@ -2982,7 +3009,7 @@ static void sd_read_block_limits(struct scsi_disk *sdkp) sdkp->max_ws_blocks = (u32)get_unaligned_be64(&vpd->data[36]); if (!sdkp->lbpme) - goto out; + goto read_atomics; lba_count = get_unaligned_be32(&vpd->data[20]); desc_count = get_unaligned_be32(&vpd->data[24]); @@ -3013,6 +3040,14 @@ static void sd_read_block_limits(struct scsi_disk *sdkp) else sd_config_discard(sdkp, SD_LBP_DISABLE); } +read_atomics: + sdkp->max_atomic = get_unaligned_be32(&vpd->data[44]); + sdkp->atomic_alignment = get_unaligned_be32(&vpd->data[48]); + sdkp->atomic_granularity = get_unaligned_be32(&vpd->data[52]); + sdkp->max_atomic_with_boundary = get_unaligned_be32(&vpd->data[56]); + sdkp->max_atomic_boundary = get_unaligned_be32(&vpd->data[60]); + + sd_config_atomic(sdkp); } out: diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h index 5eea762f84d1..bca05fbd74df 100644 --- a/drivers/scsi/sd.h +++ b/drivers/scsi/sd.h @@ -121,6 +121,13 @@ struct scsi_disk { u32 max_unmap_blocks; u32 unmap_granularity; u32 unmap_alignment; + + u32 max_atomic; + u32 atomic_alignment; + u32 atomic_granularity; + u32 max_atomic_with_boundary; + u32 max_atomic_boundary; + u32 index; unsigned int physical_block_size; unsigned int max_medium_access_timeouts; From patchwork Fri Sep 29 10:27:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146563 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp4041139vqu; Fri, 29 Sep 2023 06:46:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGOvrCXAJXElRd7iptgM3Bv5A8p11ygVuKB/TovT54DH+4M1SfFQIdGgOjmThhmm4b+AmdK X-Received: by 2002:a17:90a:e001:b0:26d:12ae:47f0 with SMTP id u1-20020a17090ae00100b0026d12ae47f0mr4040673pjy.11.1695995214272; Fri, 29 Sep 2023 06:46:54 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695995214; cv=pass; d=google.com; s=arc-20160816; b=NuprSg1otXkVXiJ0CcToiRAaOIKwdiy+cMr0HZLvlWVpBMFtIZIYEbKlXz+Vhsf82u FKcWyhjti6fBri3L8k3HJdXuyYQofdlMTkKsAA8dqiluc6yE0JGHyzdiKkPdFZSLxhvK cd3AEaKzbqRwry8QTm4ADQEtRrz09cFYNYHXJCHYFhFkX6iBCJFxFkfDAClXG4oy8urs y0tkFZ1LWZ2gdUme7oZZUWSXONlVzJHfgKYZjvkc4uhAkdtp7wCPSR53wZ+/+baG+sxD x0xCuksGC0QJfi/PjxTUUAhoa6fM9NMmjEBOEOQkTcv9qZT1DIZEnKDeOPGLlOV2CrhA JnYw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=ZK0gpmW5aZsbAMF3hHcK+hVzbJCGHzP8MQHn4sb2/8w=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=Ly9Oti+yxOeO4zaUrC2OtqggCEGxaEGu4zXocuaLoBnlJXrKcoDAlV+5oZ8Vyi4iIT 2ioWmGykvHjBjToOb21B1HhjS843YYuZ/KlWWqxQSIDUkKZaAY/vxdMiNGpEUmIIaU2V 8EttUkSsyHDNtPeDsVAbc9Kw5WDKxcgnIQN4eNPVz3jyjCHj3swnHrMffxEfG9bLlhRB oxzdW6kXsLICYPY6l7sMSOItzsoszvaK7rCnaXtO5+G4JblMiPbGQhnLxWbVKfoD175Z MebtRjfXXtDB6IQxn1BAlJtI+OowNVGWJjeF1Lhnk0taHHhrMKOJ7t/9LUGFVeEOyeb6 1rjA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=PecGEHHi; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=h4zJQS1s; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id cm18-20020a17090afa1200b002748b96d88csi1550925pjb.179.2023.09.29.06.46.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 06:46:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=PecGEHHi; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=h4zJQS1s; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 6012182A54DA; Fri, 29 Sep 2023 03:34:41 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233092AbjI2KeJ (ORCPT + 20 others); Fri, 29 Sep 2023 06:34:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233015AbjI2Kd0 (ORCPT ); Fri, 29 Sep 2023 06:33:26 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A861C1BE5; Fri, 29 Sep 2023 03:31:33 -0700 (PDT) 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 38SK9uuc020187; Fri, 29 Sep 2023 10:28:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=ZK0gpmW5aZsbAMF3hHcK+hVzbJCGHzP8MQHn4sb2/8w=; b=PecGEHHiD+qMsATlgOHkkVFJISEA6iqf2xuV+v4ZRoFJXWCsm7+uSQrN2yFreIpe4Nn4 8oYS+/ohoFAndetM2OfH4yQZYPTp5nXeL4UJjRTzDj75swhnDdgfdop/FbHhD7787Jna lw9NwLwWoU3FvG2xBBP3n+DFF62dL0HeHBfbHX7pW5Qsuthpimu0j7BpdyxyA0I0AS5b k8fQTMaDnSNJwJdXNi2YT/197Igem7SBUtQdaArkgLT7i0m5Vshv6jxjzQNHrKa3M6NX 1ri5nDut0vyap07vyri4xFnCqpNnU00yTIeAdD6+5wjRibJue98Zh9ydXK0jRtSdXJeg Bw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9peee9w8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:58 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38TADLJ8014617; Fri, 29 Sep 2023 10:28:57 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2176.outbound.protection.outlook.com [104.47.57.176]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfbmmjj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VxWTDZcVA9DxBxOBED3CYYLR/oqcYERLAL/MFxjLMCNXChPe0YGclxbUlqzZCCnmHm5ZChbXFkWYLT5NdHMcuggq11ZUb+A8A2dOu71z0EmEGwW+mevuNUVX9pC4K7/xeARrEsqwGu5czF1cY2je+pPqTME/aOv5y790hZXaRunB8ZoNB7GhTPUYpT14Fpsgk4goGfdjss07skMNbUXnowqaEWhJZvqMveSYunfVPQWucPJ96DziLiASVxi0aJaS72/kZ4WIPmg5BRUkB2fm9eY0LzOZ2fNqCdgCiX96zTsp0fCkwTYvbLmOdSEj19tKnmpYoCHiIP/Ep068cnXtWg== 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=ZK0gpmW5aZsbAMF3hHcK+hVzbJCGHzP8MQHn4sb2/8w=; b=BwXk+iPuhywb11yKRzfBtB2QaFE5pu7RyvoxDY/D5/3H6J2nM54RE2Gccaii2BIYjb8zkFhk+OHuAjN+eLOZxxaPsYoKtVBxQSQIM5MlIS7AftiSJNIOgdHkqa3EKPjBryJOrG7qt/7YHBuLqZMCFwVy7rTN4Rvd7iX+5Yg3S5gmIF0LGvO4P9NZ7FxkKNDlMK0NRPmOEWnnt32CxutcEPH3IHhrTG1w2I6zteOU3ndhK6WBgfdPt4P13KrE2P66nQCfdaO4Rgk2zVojcYobsM3dWJfZ9YoZypDQS1eyS7tKBvVEqRcqZg6y2MmsyAuK4gyWEYNNpy/DuKaN5Qz4Jg== 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=ZK0gpmW5aZsbAMF3hHcK+hVzbJCGHzP8MQHn4sb2/8w=; b=h4zJQS1sR/1fO0BosA/AaFopW+IvWqpw9x76OpCVf/jrwbS2mMeJcEaecHeFISRW0vO+5H6200coDDDMNGGH7TyJDJhHm2hktEKt8zPBIh4KAQf9MCDFcp40wwEVR8CoT2apI4A0d171fhhr6pj55JsIJHms/5yGvQ0AO1cUWk8= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4680.namprd10.prod.outlook.com (2603:10b6:510:3e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.27; Fri, 29 Sep 2023 10:28:37 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:37 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 19/21] scsi: sd: Add WRITE_ATOMIC_16 support Date: Fri, 29 Sep 2023 10:27:24 +0000 Message-Id: <20230929102726.2985188-20-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: BLAPR03CA0172.namprd03.prod.outlook.com (2603:10b6:208:32f::12) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4680:EE_ X-MS-Office365-Filtering-Correlation-Id: d6eb0da7-57fc-49ef-333e-08dbc0d6d70d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: J3IRrBQ9MEUJK5PvdcJB76THcmv48nyyEHW9SLg8VSZmhEqcMVOX6Iams4zV3qb6YJyFx4lh2HWzATHBAeVxSiBXfDN5/tHbk8Eo2B3Dbtg+iWcfnIO/GqWbgQvimzW0b4mIhZUkNHI/Pvpi81aEsPoKY7UDbgpiOuuBW0wJr/mXyyTipmhj+QSZUZrpsh4ezDmx6kBzBWD0RiLKyD+aR883UFxlkRTwuqBbyvvaCXQebecXXPj73zh6pnNhqJA+ewi1CrDb1ip+R9WCSL3mdUZOordMT8Ve9RnpNwJLjCGG+JLkwPPBGr3uUZ7L3gKyO5NLBSjIiFA0Th3m7J0WvtBb9CoSIi69/FTm8BakH9AdZtitCUgBUCC3fOmWLrKPcJMW0U/MzqJCsW/HFg0K5+tQtHOJHiz00iga2qIIi+Rb9F03nnO7PUOtmcmbdHlyQdQP5HdRSeufFEF1wG9r2h+4plIhEcQ1NR2T9LLmhMxXtpDvt5o5pJYJzZA23A8Dm9Muy6XC0Y+2NBkk8NnzgJFIMEmOuz5bkL5GUrldyL3cUwpAJfLB1UWbvYJl2nT69qebRa2Lk4pcMEWaWrQglMBgIRiB9T9P3/OILf9eQGs= 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)(346002)(366004)(136003)(376002)(39860400002)(396003)(230922051799003)(64100799003)(1800799009)(451199024)(186009)(316002)(66476007)(66946007)(66556008)(8676002)(4326008)(8936002)(41300700001)(107886003)(26005)(36756003)(2616005)(1076003)(83380400001)(478600001)(6486002)(6666004)(6506007)(921005)(86362001)(6512007)(38100700002)(103116003)(2906002)(7416002)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1ZxHADICqktJ94tDEuEqIhTs6RP8khhQPmbu7WcB8edIAO9d83c9D3II3/z7lk1y/E93QEFXigTAQkp5ZfryjyYvjrxw4+N1vF1buiY8I5ckIQrlaMq9YNr0xcCMwwn4gLxvNwW8RTgirz4Myhuy34V4kkQLCNEDV/TdEd2+SqQi6BoPFNmeJ5/g4tDtAlMUgsf5QtWToiqDpngU6P7nuEvnQG3mZm1yxmuWWhAvHGi/sCBkVIUseXMCagH2I6ZxVbja1xrUPs4YCIRslRKizFzjxmTwOkUOSbmcNGr26857AbBZJVlcZs5TSYM2k9ZkfFzLaFPHIg5G95pk+EnRR8Sfv5Rl8e1IYIFMIp1zE2lmiEskBk7mHxZEyT8wJSFwBKy+DCz89E3jC9cKHSevkWGGxno3plb1kt+GAWcTFISDLjZKwHyBDa3xbGTTZiHVtJypxKPsalv0IdhTgHDWK2lGwSNYMYUN/raAjDFksxdidb2SWxQq8t3bycXWJi15XFjtAPIWi69k67qKwWbKiNeYMXm4q67JRa6QKmWpcLUcaxbTh5tykXVLrClRoyJWlh9cnwTOMhBZv05aLmLrmdE95VLpNNa6yURcSGBtTgRJl4zYuT3oRx5jdvdcpqgDcZmuAislNdqqW5/gMRwYqQukQBoceYB8xnjBydnM08FTANRX24ad1LNcK87srLV0lIuaijFEOa6ueyTeAfkynoh3zXzTSN8H4E0jIbN4mg60XRZbk8GgcVX27Sx0aqSB8OdCz7CJcXADTi+UO+utqCyq33orNLpfOR3yZq1OqTtYVZeZMM8TdXF5fO2P02VAP7WYnazH5Mq1tTOC3PSIm9YnFC4izQLNyidYEU3oFifplzFgVts1B62LwPGJCCkTNVvYXvfPevkwL8yASunBuUtDQ3mVugPjGHK7hEHGwWcAQu8oO+GG/+8xsvIIdF9yWZBw2mHQWcTL/NJ61Hp3nWJPHJAv6v15bR48DFAgu/letGlx55V2GmMKhStcaJtsLIdlcBtWRh+HA/B47ptFc3752A4H3aOmGdmEHjEUK2+Ei8hcODmHrN1rcRGduNxkRC3kQijt91g1fqF2t8jGVFs28txG25J0SwcSlf10nP3NhZxEVGzCJUwV+ZkVqJ6zFbGbGf6lFRBc1SQt/aX7gp0PLnUxKkeBhSkwwKAYAJTxL7M/SSQBHSijwNmtvjdGmoltK1AJwQpGUq+WDOpXyQzjzHMmrTwFLQsY98UJj26qQ02o8DFO7ZmJzClixLA5CFSiQB+odhpq3jpJDQSyE4k7Cq/FKoGlR8Q5MlJJ6X7RcKqy1w0TUd+lvAoQnr7ahUQqswrUTJmlXusuY66XOHu4Hwd217hfx0/WkWUNvTB0VrK5NsFxGlr+/5pm5h/MASA8qWwuCGH30iecMvejwEXOHkKLtyf1uNevfq+zNl26nsVOs9spKCzidvkZEq8+FbVcT9ZUjqYszA+j8whzlVo1fE5uKzKtJ95WMF00wW76w2f1ooJVI97NhOyyVAAEdypLos3MeV5LeKReaGjlVKVMADaLoGHWtDlYWpB6Xd6fPQoBck0vdt1klNlIMlssdnyxOrlwG65OEo4+jNU8rg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pSaBcK/KvbsF7iQz+7zjWEXGPzyyIx6qIhxD55rdd0EyD8p1op3Ht97I0+hF6X1Kwu3otxLu1YDzNTIe8Dkg3lA0FsLtaOxpG+4LHhwR1JTm4kvjZIYCZTi7u+Y1CYiP1xaaqkFrGuO1c8UXfe+qgkHFF6A125aDuwOmMXc7erNuT5D2y01pTuWteZPo0/NNZSrsXVaT1bfCRkhjsGybiY3Dk/FtfmyZJns/arOtrfPr3xjV3XWNe6TyG1RvQnAw4jxUBgGGMLSsHqyi0JELTrEvNdLE6tkA6aUs/sjygTODGeqG6lT9zSzvRNuFeCTp4BunqZfknVSn135aGpt2mgqLwZ+FzrYuaOswH73RqvPh8y+k7P+NoamcWdL5poNFYb+f4dXXunhdwV43bmnmdxGTCs5GTjGqAMfQLQitMCfPYHsd1Kgey7IAHEz6+JGCQ9zqfsr3E8PxvDPJpBPaA/lEOnJOQFcWkvyOpsJsfwdPsVum/zhPLN5lCitF2biN9PeZrZ0rtrkmw1YLqmnDFUEuNRL3Wf7RSPjfWNrPjUildtspH+YbQkQxp2DgPqvhUO7otfNcIZblLkNLA0Up5r8EH5OWLmQKfB1aXObX3m3X0xwzlqKNgwbzwTGEQmi/+VKOiMTEGRQXUw2pIxMdrTF0gvqCSs8yPzN3LZgpoUbMskjHMppFkwsApVr8w1IcM48z10LtAsF0aKYQ03DG7Cby5oQD/9feXezD+R/DHz7Zx8uWkFUpU1HAbmQtyIW/vHLY41INKpPWK+N7py4PqXZlq6zu3hakeoUbHz/wGhsdpeFX1++vKn79NoIoshf1QVltsbQOGTKiFS8ZwiUMpOtzbWYxQ2ocnOYN9YfBxNF+ZzmAZUz+ns7aPp3cqVswv93GTY0fvoDKn5aVS16zhAYo02AYHHQMcqVKWtWp0sC5ni5OgcT0RLf2WZlDcgLBQPXQDtgK5BD4o5T0xycnHsuSvt3fuurqgyOCKbIZtcLvgqS+mi6OgnixnJI2XxNMF4VLYv12cxztAZNxblYsRXb7s3brwFw8WZ4ZSNiBNo+6UUTw3t18vpV5OEWe8flLLOj8y7VLqorilrfSg64+vg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6eb0da7-57fc-49ef-333e-08dbc0d6d70d X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:36.7588 (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: M0r/8pY4gBmR7cnjJ6mpkNWsrYWENv04dUTsaGPrFM9GYYbsgObzlZ+eRrtnaqR64KcxfwPEUf0BDl9vRGwwow== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4680 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-ORIG-GUID: tTEXTMgXbzbcU0wirQHgbjo1eBKDivVo X-Proofpoint-GUID: tTEXTMgXbzbcU0wirQHgbjo1eBKDivVo X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:34:42 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778379877347444620 X-GMAIL-MSGID: 1778379877347444620 Add function sd_setup_atomic_cmnd() to setup an WRITE_ATOMIC_16 CDB for when REQ_ATOMIC flag is set for the request. Also add trace info. Signed-off-by: John Garry --- drivers/scsi/scsi_trace.c | 22 ++++++++++++++++++++++ drivers/scsi/sd.c | 20 ++++++++++++++++++++ include/scsi/scsi_proto.h | 1 + include/trace/events/scsi.h | 1 + 4 files changed, 44 insertions(+) diff --git a/drivers/scsi/scsi_trace.c b/drivers/scsi/scsi_trace.c index 41a950075913..3e47c4472a80 100644 --- a/drivers/scsi/scsi_trace.c +++ b/drivers/scsi/scsi_trace.c @@ -325,6 +325,26 @@ scsi_trace_zbc_out(struct trace_seq *p, unsigned char *cdb, int len) return ret; } +static const char * +scsi_trace_atomic_write16_out(struct trace_seq *p, unsigned char *cdb, int len) +{ + const char *ret = trace_seq_buffer_ptr(p); + unsigned int boundary_size; + unsigned int nr_blocks; + sector_t lba; + + lba = get_unaligned_be64(&cdb[2]); + boundary_size = get_unaligned_be16(&cdb[10]); + nr_blocks = get_unaligned_be16(&cdb[12]); + + trace_seq_printf(p, "lba=%llu txlen=%u boundary_size=%u", + lba, nr_blocks, boundary_size); + + trace_seq_putc(p, 0); + + return ret; +} + static const char * scsi_trace_varlen(struct trace_seq *p, unsigned char *cdb, int len) { @@ -385,6 +405,8 @@ scsi_trace_parse_cdb(struct trace_seq *p, unsigned char *cdb, int len) return scsi_trace_zbc_in(p, cdb, len); case ZBC_OUT: return scsi_trace_zbc_out(p, cdb, len); + case WRITE_ATOMIC_16: + return scsi_trace_atomic_write16_out(p, cdb, len); default: return scsi_trace_misc(p, cdb, len); } diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 7f6cadd1f8f3..1a41656dac2d 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1129,6 +1129,23 @@ static int sd_cdl_dld(struct scsi_disk *sdkp, struct scsi_cmnd *scmd) return (hint - IOPRIO_HINT_DEV_DURATION_LIMIT_1) + 1; } +static blk_status_t sd_setup_atomic_cmnd(struct scsi_cmnd *cmd, + sector_t lba, unsigned int nr_blocks, + unsigned char flags) +{ + cmd->cmd_len = 16; + cmd->cmnd[0] = WRITE_ATOMIC_16; + cmd->cmnd[1] = flags; + put_unaligned_be64(lba, &cmd->cmnd[2]); + cmd->cmnd[10] = 0; + cmd->cmnd[11] = 0; + put_unaligned_be16(nr_blocks, &cmd->cmnd[12]); + cmd->cmnd[14] = 0; + cmd->cmnd[15] = 0; + + return BLK_STS_OK; +} + static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) { struct request *rq = scsi_cmd_to_rq(cmd); @@ -1139,6 +1156,7 @@ static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) unsigned int nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq)); unsigned int mask = logical_to_sectors(sdp, 1) - 1; bool write = rq_data_dir(rq) == WRITE; + bool atomic_write = !!(rq->cmd_flags & REQ_ATOMIC) && write; unsigned char protect, fua; unsigned int dld; blk_status_t ret; @@ -1200,6 +1218,8 @@ static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) if (protect && sdkp->protection_type == T10_PI_TYPE2_PROTECTION) { ret = sd_setup_rw32_cmnd(cmd, write, lba, nr_blocks, protect | fua, dld); + } else if (atomic_write) { + ret = sd_setup_atomic_cmnd(cmd, lba, nr_blocks, protect | fua); } else if (sdp->use_16_for_rw || (nr_blocks > 0xffff)) { ret = sd_setup_rw16_cmnd(cmd, write, lba, nr_blocks, protect | fua, dld); diff --git a/include/scsi/scsi_proto.h b/include/scsi/scsi_proto.h index 07d65c1f59db..833de67305b5 100644 --- a/include/scsi/scsi_proto.h +++ b/include/scsi/scsi_proto.h @@ -119,6 +119,7 @@ #define WRITE_SAME_16 0x93 #define ZBC_OUT 0x94 #define ZBC_IN 0x95 +#define WRITE_ATOMIC_16 0x9c #define SERVICE_ACTION_BIDIRECTIONAL 0x9d #define SERVICE_ACTION_IN_16 0x9e #define SERVICE_ACTION_OUT_16 0x9f diff --git a/include/trace/events/scsi.h b/include/trace/events/scsi.h index 8e2d9b1b0e77..05f1945ed204 100644 --- a/include/trace/events/scsi.h +++ b/include/trace/events/scsi.h @@ -102,6 +102,7 @@ scsi_opcode_name(WRITE_32), \ scsi_opcode_name(WRITE_SAME_32), \ scsi_opcode_name(ATA_16), \ + scsi_opcode_name(WRITE_ATOMIC_16), \ scsi_opcode_name(ATA_12)) #define scsi_hostbyte_name(result) { result, #result } From patchwork Fri Sep 29 10:27:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146749 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6359:6f87:b0:13f:353d:d1ed with SMTP id tl7csp3528598rwb; Fri, 29 Sep 2023 13:01:53 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSkXdtvCbRo16JO3HvyzOOgs6cUJUM/DMJUtwYgKu5EYCNYBEWIs2XQoEfgw21gNCOm/W2 X-Received: by 2002:a05:6a21:99a1:b0:141:69d:8041 with SMTP id ve33-20020a056a2199a100b00141069d8041mr6698772pzb.48.1696017712916; Fri, 29 Sep 2023 13:01:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696017712; cv=pass; d=google.com; s=arc-20160816; b=ilYVcgT/S78GX1GCu0s917xTMmJZNbYYZTfdVsgGK9aDUpId1Oc2xsGiRYa86nToz9 psyijMHJ67HuiimcFkH+8T76UW7iYCwFtRllxPq8V00A9DRR4H6Jy7b25ZcYXOHX73Mk AeklbzQ5Td6S3ATyL8wcsn4KzWS4BoXcNGl7sU1Z7NE+L+Rx8R9WK7PfRhnKsTUQSWF+ aar0+gjqY6tKRX53M56nhNjjtg2aSP7xUkyBWVzxpuHXWnpyRB1uFWF/Mfa4RB9wztjl PQGc46zJ4RImhR5upd2i4fQivPa1T1h9i5KF0ME7fyiJtFR3Aqr0JEQjnfwlUonMhDF7 UVXw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=AIh40rZNdmSZzGKFX0iZd5pXqT5PqmT7QjtDHnalpr0=; fh=1iRuEHlOF8pPIIm//KnskQClXHAWQgKYJIM9xXRawHY=; b=ZL9gevv06UGOBZFtcye2PhgXbfuZu65Xf0JgMlOe3zwrqodahPo0rPRwgpSnXrprhb 3ohOWtDYescYW0EpWPTDscJmU1vDLE4lXky2yNtbgPtlD6+Lph4yJWMSVNzHn6pFRNEf AJca6+t/NrvZLYrO8WkwlY+vlzweV9ulpssU3aanrmC+ofMXqoEXeznTex+rwqwjhvmj h9ZL0bPvgzSMOBn2pxQpJ/yj2XEm1hK0KEUlMlBLdSzPTTl7mSnvN0V2wCkXqTOSc1NL vAQW8iHf5igNquG1euQMYYDAoXjt76XCMDhGLnmeBz3C09tWraPmSTv32gX6H1mh9BGE 5xZg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=KJaexu+S; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ll4ZPwSx; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id l3-20020a056a00140300b0068fe0125a33si22769507pfu.37.2023.09.29.13.01.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 13:01:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=KJaexu+S; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=ll4ZPwSx; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 9F91F80964ED; Fri, 29 Sep 2023 03:35:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233265AbjI2Ker (ORCPT + 20 others); Fri, 29 Sep 2023 06:34:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56608 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233103AbjI2Keg (ORCPT ); Fri, 29 Sep 2023 06:34:36 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34B481FDA; Fri, 29 Sep 2023 03:32:01 -0700 (PDT) Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38SK9aDd023080; Fri, 29 Sep 2023 10:28:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=AIh40rZNdmSZzGKFX0iZd5pXqT5PqmT7QjtDHnalpr0=; b=KJaexu+SuyFvhp07BDJ5iLqfNRS4u34MRLhEtzj0udjiHZCv42iqkQliV8TM3Ilb1mEQ 7p7oUzeN+fidH1bejMXQnBo0Dq5KKDyJjQ1WLbB6IOVAd19ytqelFrInnMpPmImsd0+N H98Va+DJ1vLTW7fiYIeMu5sITT1A0hscTA43cv2eAPv+xM9cGcHEpIQn01lU8B423dNK nAk9epDuvAUyu56WgvpyYpHKVcpVAvArFvql0A4XeHeyDiD/ynhaFuEv/HH8w8KdDMxY ncz1x09Twuu+uQgPhASh2OIpmhB4J0I7vt/eQ8GDJJmCIKpQvH0BrJHyFQ6ktR84wmKa fw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9pxc6k6g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:59 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38TADLJ9014617; Fri, 29 Sep 2023 10:28:58 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2176.outbound.protection.outlook.com [104.47.57.176]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfbmmjj-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pjpii9Lsoe2T4lfC9wFw03mxtnkhrlA5WfSQ57e7Icz63OJYcWzVPzn4xqmC9MHtRJqg7WKg58c/gqQEx+YdNd6TizreahF+r+899COu5xd23licFZcnGosUuBhBBoHYzKaSuk/wU5hHzyrY4NJUJcy0Q6q8fDSKm0YSOJ6S8xpb0akuC3/1fKCb1s4Zp51fVyuFI+iu8A9AFsYMdjOio95NRiAiHNCFaoRhhPeowXp9xys/aLJ2I/JjqfNO49qSmWEqDpfwP2BKsAl+vhjAI7fajE99ihQI/Y9Lx/jiUrQNJXwFdiltoZOgosGTArUW0PIDe4nXqImavf+lziYwlA== 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=AIh40rZNdmSZzGKFX0iZd5pXqT5PqmT7QjtDHnalpr0=; b=ES4e6I1AfVq86rVFlodBbwxUqAt9X74Gp93Wn5tH3IKIadCDyKDLVvZlvJr98D/+uOrIFfH/ld7RcAMqXZpKv7AUKqWzPj5EdpkUDOAO9yZoUuANfhdreEcjo8l4mCdTMYNXtt6o0TIu3/WCTA6p49APwVQeAvUsuqx+tnJVfam+duCSoK+x/MevEjQz2zFCVe/f3cTwhSR4IJ3g9y2I9WyCO5QtXeskEZaFkiibJlChhNznLf8KrvQO/tydDnDwWJMuU13F0N2BAm9UowVUMPXfmU+8jWVaB9pkjoL7DBbAVEd8csitlLqAWvvG2K7Qhn/77vC1jzwQaH0BnABSUQ== 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=AIh40rZNdmSZzGKFX0iZd5pXqT5PqmT7QjtDHnalpr0=; b=ll4ZPwSxvrEGEiZY8QJBTTkt6atYBlTIKjzkG1IZrJxjExcO5Wr9AXUVwvSy6f5GoQWRqzGmtcQr4MgjXY8JgJZlKKCZqeylg11icC2ykhraTr+tjUH+meIbi6rMyKUkpB4GGiC67LIhEifaFyFxnP+/6aUDPC7aj3S4yHidqA8= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4680.namprd10.prod.outlook.com (2603:10b6:510:3e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.27; Fri, 29 Sep 2023 10:28:38 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:38 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, John Garry Subject: [PATCH 20/21] scsi: scsi_debug: Atomic write support Date: Fri, 29 Sep 2023 10:27:25 +0000 Message-Id: <20230929102726.2985188-21-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: MN2PR16CA0020.namprd16.prod.outlook.com (2603:10b6:208:134::33) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4680:EE_ X-MS-Office365-Filtering-Correlation-Id: 72a994f7-9331-433c-b4b5-08dbc0d6d821 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oGSaY7haV3TUYJX5ljvtBuYGcVSIOCtOT9l3jFiCE6bXpBpSpn2Vlnmwz+wLqq/rlS4WLhCdGNlUmiDZQ4GsL1NuhZYtK++jZmXRCzAzLemzF2GvlF+O0EayWvETUQhVlsZr92DGtP6RDtJ8/jLrPP4roH/uAUfOvFgzD0zMY0vf4JNmD2fmsRn3I+7adSXXAg7pLgzE+9ky74kPJE/NBDzGyXMwo8hxqIUJcMZ8x6sIx8r0vCZ70zZvAIsSNP+LHHI4Hlj1t4G+XTBAbn/0dnl1dU0lOnHvGWISfhCZOrqv8KrS1eeMo280654+Qf6rqz0jBHGFEiATiqfGFg9FMYF93zCRwPLIGsGQG7I60zOC5k99Gr058A3GqGtcnCZUjI159XSD8F38xxdXbO4Agym16Ws3+l3zXaFY0Hy19CCIzg28vzlq/Ai4d+Jebggfil8I/XzciGGpSZkie4VDJJYSMO3LHnZabcfk+5wrv49iL5A5ZtvEY9CJ1bI567yRokzqBiFa/IM3VGdWMdlfGyROVnPk4AvPKQYh1D7JA0M7k2s2LDOCD6jOTB6z1OPODIpkqipppxu4GojJ975EFxhGMTq+XIfUQMHMrtysrzeRDu7I+1X2fPHbnXq9oYeA 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)(346002)(366004)(136003)(376002)(39860400002)(396003)(230922051799003)(64100799003)(1800799009)(451199024)(186009)(316002)(66476007)(66946007)(66556008)(8676002)(4326008)(8936002)(41300700001)(107886003)(26005)(36756003)(2616005)(1076003)(83380400001)(478600001)(6486002)(6666004)(6506007)(921005)(86362001)(6512007)(38100700002)(103116003)(2906002)(30864003)(7416002)(5660300002)(357404004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sL3p21AgMBSjFU9XJu3htQHVl9oTCkW0TBpqoF1+e8Iq3HPLy7qLmbxBNGdA5Oob8ostbgR/IpJEKd/O1IATVv1Sxz+CXZ+ejFh0Fo+aidW/3bzYI+6V2KZ5797hHszZLHSR20yRft293v3b1AG35nHG+SWKLt8j+8NXXoQDe9N0FmJm0wD/WxQuHl48MeDnuQtK7IauHvoEPOtBOhGXivBTwTeMuf+p4Z01n0V/8iJNyw3MHOYp7sopIbCR78/mAHOp8u3qcHDltMYEPpf+he4F932mVysGVW5P5oHPQPeQYrj9JMVjiOVe7FxjHHcvJyYUI2/lsq+j7YzIk/fOrW8Hyx9UUDJ5fiTgPRqK+1nVTEINzys+jQcTxGFEE18OE79aavf3HLQRLqq5bNCs996wdjOkBdvavIwyH3/IY6CvQBMzxjC4Jnkx8g2pzQI9OOkCM7zyQsul06FqtcySlPg+At7YjVrUN7nanMDzuGOAUVmiAGB57Yb5bWWrNIIVRkyhssjaSgxswtKoWAoYHqnX9VbO3dzAHn5uD+/PAU3NF4ahrpdQtWW7V/pVjd4uLb77sYPU8iOts+crBn7IUlvmgF70K0p+zb7XlX4jhnQnW67fhTWFChNr2JDi5lm6JCz2P/qUrwPMeF6L9cra2Yhuv2uTy7U9rbijphRYt9wzL0MvwsUh+57Uj/EguJVdsAo4sq0sYyL/bGh8QFlSSf7/glHHpycBAB/fYNmm9gpAFC5Bh4Swe5A9Vql4JAp9SV0Z3y2TQOuTj7GkRQiQjrqCSDI8C067wAi4MYdWrwHMIZ8GShN+Pk6Sruh75/4AMjxJZZqvQYJB08679aOe1GpDJkcmw8ggzyUDVIVeuVE+gwEgEYfSvE4XPLWT32hJ81m4uOIYPknASguM4dWliG/ZJ4/OzjaYvpZx/dUmkXxkQ6gsOl5Ieb9cHOUl6eH7KuTW79acgA9CjJieCzq72vfQzpDmEUEBT1R3f4P3be3CbJ2I0VTEqwJopkGBiWTC7Zx1nj9cbEbACd/ieJuFMxZ1KfW13la7zzXM7YxqDBbESIJw6o7pyXgpx/7qVf1w6wuO8hFlODV6DZO96aMnP9iu2SJxsXT+LyoLABg4SrvfyOx5f7raIdk7A/xBPXiEYLPZHRJoIjAHdPgm5eQ8cy46yuoxZwo8/ZRaLdSFkl6sbX7fxuTBDje2oAQUgtOXOxUpnaHiPj+NN1fCfTaMaXMQDsdXwPBz7CaZs1NZeVP6AjCenndJXj6QsdHb/NuxVsKwCdGo5/HiHtkAK/UDvX4vIBmNFQz7IOSAlA1I8hEW+Gu1UvQQuXyPPBG7dv3JGNhOyQrwmnntS23be8vbz6vms+nWiwK4vS8FNvkMUmawIgHH4xY5oJPhW0hmAsHRNAVUMhtGcfidtw0fP8WEGv85xJUS8KUMVigs/SliiUKZfqGWt8NuvnpnuWZi34ZmD6LQTk4cOUEkzWQeZZGyi+H6NZ0dy9w1aRPhGpWbri3hBn6HSOdSKq9czvNThmJeRKA6OrNtdizK7WLIeRviUugmbhmCogKVEz+uWa/RzZn2OYkVrpsz04w8YOCLRNSKfdA93DaW3mzENvDXaVvAvA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jUvHdDS9Sp4DJuw96PfuyHI0O+ko9qCitMoGCy6nelPXj4MszTNJGhQkvHPc8MWzHwkCPM4hEP+kZiLqtRXTeVoBjK41oQ8yAAWezKufUNr1ph4oHHzN2TK4t0s5NxBQTLtskwebVYsDJ5BeOOJpZLim1ytd3Ywi7+7HVnt4SaF4ilrXTuKfKiiFbiPu55IFj/8eD2d13h0oaClvlVZjwWKIccKnkY6EXVSaTN3dCRlqXOK3tVL/kRC7vec7y/teCHNgiCEnmrPrFpA4aEPwYk93EWrhrPZ++KFhmZm1BENwHV7d1WlTnRla0hhcsXRTuwvuQ0r061OFkmvTNE+vA2u5RCNrekVqdBijPuZ+meaDJH9XQA8jbZl+5VRxBKVrKqn5TpZLH3l3fqFLWYndhR60G/CuIuU+eBaiPZFaiuvQEdjiOyZAMFNeV2nOqGS/6tEXOT0DULcErVfCxjdGCS5HbkZaLkgoqdK+jqOOyk1Bk3zpiRF5fCfSYdBMn5/Lc5g4wAa+0ptWLBax75GMi6fPYp3rUy6fb/bZmCpNfJyEwyFAbkFzXIYQqpv1P7MwivMiczhUaHTrsVUaaZTh1CYr1YGgjX+GEqioI554v8WI15fYey5GwN/g5dcSMklkFW9032smarv+XUcYSkmmcEaZgSHgBleyAGyk0nK9vUNjp+td51rvJEcRpwQJuIqu0v0XcU7800lR/kfTCnxIjuVaDDjTGlyxFTRMHXn3/gG0SCvKSPIqVKkjv6sob3iULwX7j9TRUpYo6atAXKterxAllgeb/jvaaLz5iCPJ5AOZxvaWS12q+C3dR+/Zwg5e7ESv7j64M1d5nImKVaWmSzqwZDXDVjN6rdz3TeR1Pk9eFQEYugkodN4drWk+pRgqb6YrEhFVLg4R/rEBVGpQbPnK32O5FBU1lhy5IVgI1fXhR0s9zxbXNQFOUU4tF9KxT3yJxryPrx2G6VLHGsyEPLc6qDKZD7I3EqxWEW05XHWyH1KFfo+6EWOKxChCGddWMm+XQA7AFGAQDPDCEyU5cYK9Dm72mzM3/B0i5EUEXjlknWqb/OXABOEUwqAP3J72NzxBEVqb/JT/m+dyFdrOfQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 72a994f7-9331-433c-b4b5-08dbc0d6d821 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:38.5931 (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: jNB8BGkJW+EJ4xQ8UPNGqiQ1u5p+QQa+2Jllla0L+8SmsBsMuFxB9UXLBE1quyR3izo+kR+PM78zjxwvQwl4cw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4680 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-GUID: 1HbHX9D9QhG1-co0-tYJ2DJxVc4GEf-4 X-Proofpoint-ORIG-GUID: 1HbHX9D9QhG1-co0-tYJ2DJxVc4GEf-4 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:35:54 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778403469465859853 X-GMAIL-MSGID: 1778403469465859853 Add initial support for atomic writes. As is standard method, feed device properties via modules param, those being: - atomic_max_size_blks - atomic_alignment_blks - atomic_granularity_blks - atomic_max_size_with_boundary_blks - atomic_max_boundary_blks These just match sbc4r22 section 6.6.4 - Block limits VPD page. We just support ATOMIC_WRITE_16. The major change in the driver is how we lock the device for RW accesses. Currently the driver uses a per-device lock for accessing device metadata and "media" data (calls to do_device_access()) atomically for the duration of the whole read/write command. This should not suit verifying atomic writes. Reason being that currently all reads/writes are atomic, so using atomic writes does not prove anything. Change device access model to basis that regular writes only atomic on a per-sector basis, while reads and atomic writes are fully atomic. As mentioned, since accessing metadata and device media is atomic, continue to have regular writes involving metadata - like discard or PI - as atomic. We can improve this later. Currently we only support model where overlapping going reads or writes wait for current access to complete before commencing an atomic write. This is described in 4.29.3.2 section of the SBC. However, we simplify, things and wait for all accesses to complete (when issuing an atomic write). Signed-off-by: John Garry --- drivers/scsi/scsi_debug.c | 587 +++++++++++++++++++++++++++++--------- 1 file changed, 454 insertions(+), 133 deletions(-) diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 9c0af50501f9..c27f9bfcd365 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c @@ -66,6 +66,8 @@ static const char *sdebug_version_date = "20210520"; /* Additional Sense Code (ASC) */ #define NO_ADDITIONAL_SENSE 0x0 +#define OVERLAP_ATOMIC_COMMAND_ASC 0x0 +#define OVERLAP_ATOMIC_COMMAND_ASCQ 0x23 #define LOGICAL_UNIT_NOT_READY 0x4 #define LOGICAL_UNIT_COMMUNICATION_FAILURE 0x8 #define UNRECOVERED_READ_ERR 0x11 @@ -100,6 +102,7 @@ static const char *sdebug_version_date = "20210520"; #define READ_BOUNDARY_ASCQ 0x7 #define ATTEMPT_ACCESS_GAP 0x9 #define INSUFF_ZONE_ASCQ 0xe +/* see drivers/scsi/sense_codes.h */ /* Additional Sense Code Qualifier (ASCQ) */ #define ACK_NAK_TO 0x3 @@ -149,6 +152,12 @@ static const char *sdebug_version_date = "20210520"; #define DEF_VIRTUAL_GB 0 #define DEF_VPD_USE_HOSTNO 1 #define DEF_WRITESAME_LENGTH 0xFFFF +#define DEF_ATOMIC_WRITE 1 +#define DEF_ATOMIC_MAX_LENGTH 8192 +#define DEF_ATOMIC_ALIGNMENT 2 +#define DEF_ATOMIC_GRANULARITY 2 +#define DEF_ATOMIC_BOUNDARY_MAX_LENGTH (DEF_ATOMIC_MAX_LENGTH) +#define DEF_ATOMIC_MAX_BOUNDARY 128 #define DEF_STRICT 0 #define DEF_STATISTICS false #define DEF_SUBMIT_QUEUES 1 @@ -322,7 +331,9 @@ struct sdebug_host_info { /* There is an xarray of pointers to this struct's objects, one per host */ struct sdeb_store_info { - rwlock_t macc_lck; /* for atomic media access on this store */ + rwlock_t macc_data_lck; /* for media data access on this store */ + rwlock_t macc_meta_lck; /* for atomic media meta access on this store */ + rwlock_t macc_sector_lck; /* per-sector media data access on this store */ u8 *storep; /* user data storage (ram) */ struct t10_pi_tuple *dif_storep; /* protection info */ void *map_storep; /* provisioning map */ @@ -346,12 +357,20 @@ struct sdebug_defer { enum sdeb_defer_type defer_t; }; +struct sdebug_device_access_info { + bool atomic_write; + u64 lba; + u32 num; + struct scsi_cmnd *self; +}; + struct sdebug_queued_cmd { /* corresponding bit set in in_use_bm[] in owning struct sdebug_queue * instance indicates this slot is in use. */ struct sdebug_defer sd_dp; struct scsi_cmnd *scmd; + struct sdebug_device_access_info *i; }; struct sdebug_scsi_cmd { @@ -411,7 +430,8 @@ enum sdeb_opcode_index { SDEB_I_PRE_FETCH = 29, /* 10, 16 */ SDEB_I_ZONE_OUT = 30, /* 0x94+SA; includes no data xfer */ SDEB_I_ZONE_IN = 31, /* 0x95+SA; all have data-in */ - SDEB_I_LAST_ELEM_P1 = 32, /* keep this last (previous + 1) */ + SDEB_I_ATOMIC_WRITE_16 = 32, /* keep this last (previous + 1) */ + SDEB_I_LAST_ELEM_P1 = 33, /* keep this last (previous + 1) */ }; @@ -445,7 +465,8 @@ static const unsigned char opcode_ind_arr[256] = { 0, 0, 0, SDEB_I_VERIFY, SDEB_I_PRE_FETCH, SDEB_I_SYNC_CACHE, 0, SDEB_I_WRITE_SAME, SDEB_I_ZONE_OUT, SDEB_I_ZONE_IN, 0, 0, - 0, 0, 0, 0, 0, 0, SDEB_I_SERV_ACT_IN_16, SDEB_I_SERV_ACT_OUT_16, + 0, 0, 0, 0, + SDEB_I_ATOMIC_WRITE_16, 0, SDEB_I_SERV_ACT_IN_16, SDEB_I_SERV_ACT_OUT_16, /* 0xa0; 0xa0->0xbf: 12 byte cdbs */ SDEB_I_REPORT_LUNS, SDEB_I_ATA_PT, 0, SDEB_I_MAINT_IN, SDEB_I_MAINT_OUT, 0, 0, 0, @@ -493,6 +514,7 @@ static int resp_write_buffer(struct scsi_cmnd *, struct sdebug_dev_info *); static int resp_sync_cache(struct scsi_cmnd *, struct sdebug_dev_info *); static int resp_pre_fetch(struct scsi_cmnd *, struct sdebug_dev_info *); static int resp_report_zones(struct scsi_cmnd *, struct sdebug_dev_info *); +static int resp_atomic_write(struct scsi_cmnd *, struct sdebug_dev_info *); static int resp_open_zone(struct scsi_cmnd *, struct sdebug_dev_info *); static int resp_close_zone(struct scsi_cmnd *, struct sdebug_dev_info *); static int resp_finish_zone(struct scsi_cmnd *, struct sdebug_dev_info *); @@ -731,6 +753,11 @@ static const struct opcode_info_t opcode_info_arr[SDEB_I_LAST_ELEM_P1 + 1] = { resp_report_zones, zone_in_iarr, /* ZONE_IN(16), REPORT ZONES) */ {16, 0x0 /* SA */, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc7} }, +/* 31 */ + {0, 0x0, 0x0, F_D_OUT | FF_MEDIA_IO, + resp_atomic_write, NULL, /* ATOMIC WRITE 16 */ + {16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} }, /* sentinel */ {0xff, 0, 0, 0, NULL, NULL, /* terminating element */ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, @@ -778,6 +805,12 @@ static unsigned int sdebug_unmap_granularity = DEF_UNMAP_GRANULARITY; static unsigned int sdebug_unmap_max_blocks = DEF_UNMAP_MAX_BLOCKS; static unsigned int sdebug_unmap_max_desc = DEF_UNMAP_MAX_DESC; static unsigned int sdebug_write_same_length = DEF_WRITESAME_LENGTH; +static unsigned int sdebug_atomic_write = DEF_ATOMIC_WRITE; +static unsigned int sdebug_atomic_max_size_blks = DEF_ATOMIC_MAX_LENGTH; +static unsigned int sdebug_atomic_alignment_blks = DEF_ATOMIC_ALIGNMENT; +static unsigned int sdebug_atomic_granularity_blks = DEF_ATOMIC_GRANULARITY; +static unsigned int sdebug_atomic_max_size_with_boundary_blks = DEF_ATOMIC_BOUNDARY_MAX_LENGTH; +static unsigned int sdebug_atomic_max_boundary_blks = DEF_ATOMIC_MAX_BOUNDARY; static int sdebug_uuid_ctl = DEF_UUID_CTL; static bool sdebug_random = DEF_RANDOM; static bool sdebug_per_host_store = DEF_PER_HOST_STORE; @@ -873,6 +906,11 @@ static inline bool scsi_debug_lbp(void) (sdebug_lbpu || sdebug_lbpws || sdebug_lbpws10); } +static inline bool scsi_debug_atomic_write(void) +{ + return 0 == sdebug_fake_rw && sdebug_atomic_write; +} + static void *lba2fake_store(struct sdeb_store_info *sip, unsigned long long lba) { @@ -1500,6 +1538,14 @@ static int inquiry_vpd_b0(unsigned char *arr) /* Maximum WRITE SAME Length */ put_unaligned_be64(sdebug_write_same_length, &arr[32]); + if (sdebug_atomic_write) { + put_unaligned_be32(sdebug_atomic_max_size_blks, &arr[40]); + put_unaligned_be32(sdebug_atomic_alignment_blks, &arr[44]); + put_unaligned_be32(sdebug_atomic_granularity_blks, &arr[48]); + put_unaligned_be32(sdebug_atomic_max_size_with_boundary_blks, &arr[52]); + put_unaligned_be32(sdebug_atomic_max_boundary_blks, &arr[56]); + } + return 0x3c; /* Mandatory page length for Logical Block Provisioning */ } @@ -3001,15 +3047,240 @@ static inline struct sdeb_store_info *devip2sip(struct sdebug_dev_info *devip, return xa_load(per_store_ap, devip->sdbg_host->si_idx); } + +static inline void +sdeb_read_lock(rwlock_t *lock) +{ + if (sdebug_no_rwlock) + __acquire(lock); + else + read_lock(lock); +} + +static inline void +sdeb_read_unlock(rwlock_t *lock) +{ + if (sdebug_no_rwlock) + __release(lock); + else + read_unlock(lock); +} + +static inline void +sdeb_write_lock(rwlock_t *lock) +{ + if (sdebug_no_rwlock) + __acquire(lock); + else + write_lock(lock); +} + +static inline void +sdeb_write_unlock(rwlock_t *lock) +{ + if (sdebug_no_rwlock) + __release(lock); + else + write_unlock(lock); +} + +static inline void +sdeb_data_read_lock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_read_lock(&sip->macc_data_lck); +} + +static inline void +sdeb_data_read_unlock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_read_unlock(&sip->macc_data_lck); +} + +static inline void +sdeb_data_write_lock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_write_lock(&sip->macc_data_lck); +} + +static inline void +sdeb_data_write_unlock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_write_unlock(&sip->macc_data_lck); +} + +static inline void +sdeb_data_sector_read_lock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_read_lock(&sip->macc_sector_lck); +} + +static inline void +sdeb_data_sector_read_unlock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_read_unlock(&sip->macc_sector_lck); +} + +static inline void +sdeb_data_sector_write_lock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_write_lock(&sip->macc_sector_lck); +} + +static inline void +sdeb_data_sector_write_unlock(struct sdeb_store_info *sip) +{ + BUG_ON(!sip); + + sdeb_write_unlock(&sip->macc_sector_lck); +} + +/* +Atomic locking: +We simplify the atomic model to allow only 1x atomic +write and many non-atomic reads or writes for all +LBAs. + +A RW lock has a similar bahaviour: +Only 1x writer and many readers. + +So use a RW lock for per-device read and write locking: +An atomic access grabs the lock as a writer and +non-atomic grabs the lock as a reader. +*/ + +static inline void +sdeb_data_lock(struct sdeb_store_info *sip, bool atomic_write) +{ + if (atomic_write) + sdeb_data_write_lock(sip); + else + sdeb_data_read_lock(sip); +} + +static inline void +sdeb_data_unlock(struct sdeb_store_info *sip, bool atomic_write) +{ + if (atomic_write) + sdeb_data_write_unlock(sip); + else + sdeb_data_read_unlock(sip); +} + +/* Allow many reads but only 1x write per sector */ +static inline void +sdeb_data_sector_lock(struct sdeb_store_info *sip, bool do_write) +{ + if (do_write) + sdeb_data_sector_write_lock(sip); + else + sdeb_data_sector_read_lock(sip); +} + +static inline void +sdeb_data_sector_unlock(struct sdeb_store_info *sip, bool do_write) +{ + if (do_write) + sdeb_data_sector_write_unlock(sip); + else + sdeb_data_sector_read_unlock(sip); +} + +static inline void +sdeb_meta_read_lock(struct sdeb_store_info *sip) +{ + if (sdebug_no_rwlock) { + if (sip) + __acquire(&sip->macc_meta_lck); + else + __acquire(&sdeb_fake_rw_lck); + } else { + if (sip) + read_lock(&sip->macc_meta_lck); + else + read_lock(&sdeb_fake_rw_lck); + } +} + +static inline void +sdeb_meta_read_unlock(struct sdeb_store_info *sip) +{ + if (sdebug_no_rwlock) { + if (sip) + __release(&sip->macc_meta_lck); + else + __release(&sdeb_fake_rw_lck); + } else { + if (sip) + read_unlock(&sip->macc_meta_lck); + else + read_unlock(&sdeb_fake_rw_lck); + } +} + +static inline void +sdeb_meta_write_lock(struct sdeb_store_info *sip) +{ + if (sdebug_no_rwlock) { + if (sip) + __acquire(&sip->macc_meta_lck); + else + __acquire(&sdeb_fake_rw_lck); + } else { + if (sip) + write_lock(&sip->macc_meta_lck); + else + write_lock(&sdeb_fake_rw_lck); + } +} + +static inline void +sdeb_meta_write_unlock(struct sdeb_store_info *sip) +{ + if (sdebug_no_rwlock) { + if (sip) + __release(&sip->macc_meta_lck); + else + __release(&sdeb_fake_rw_lck); + } else { + if (sip) + write_unlock(&sip->macc_meta_lck); + else + write_unlock(&sdeb_fake_rw_lck); + } +} + /* Returns number of bytes copied or -1 if error. */ static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp, - u32 sg_skip, u64 lba, u32 num, bool do_write) + u32 sg_skip, u64 lba, u32 num, bool do_write, + bool atomic_write) { int ret; - u64 block, rest = 0; + u64 block; enum dma_data_direction dir; struct scsi_data_buffer *sdb = &scp->sdb; u8 *fsp; + int i; + + /* + * Even though reads are inherently atomic (in this driver), we expect + * the atomic flag only for writes. + */ + if (!do_write && atomic_write) + return -1; if (do_write) { dir = DMA_TO_DEVICE; @@ -3025,21 +3296,26 @@ static int do_device_access(struct sdeb_store_info *sip, struct scsi_cmnd *scp, fsp = sip->storep; block = do_div(lba, sdebug_store_sectors); - if (block + num > sdebug_store_sectors) - rest = block + num - sdebug_store_sectors; - ret = sg_copy_buffer(sdb->table.sgl, sdb->table.nents, + /* Only allow 1x atomic write or multiple non-atomic writes at any given time */ + sdeb_data_lock(sip, atomic_write); + for (i = 0; i < num; i++) { + /* We shouldn't need to lock for atomic writes, but do it anyway */ + sdeb_data_sector_lock(sip, do_write); + ret = sg_copy_buffer(sdb->table.sgl, sdb->table.nents, fsp + (block * sdebug_sector_size), - (num - rest) * sdebug_sector_size, sg_skip, do_write); - if (ret != (num - rest) * sdebug_sector_size) - return ret; - - if (rest) { - ret += sg_copy_buffer(sdb->table.sgl, sdb->table.nents, - fsp, rest * sdebug_sector_size, - sg_skip + ((num - rest) * sdebug_sector_size), - do_write); + sdebug_sector_size, sg_skip, do_write); + sdeb_data_sector_unlock(sip, do_write); + if (ret != sdebug_sector_size) { + ret += (i * sdebug_sector_size); + break; + } + sg_skip += sdebug_sector_size; + if (++block >= sdebug_store_sectors) + block = 0; } + ret = num * sdebug_sector_size; + sdeb_data_unlock(sip, atomic_write); return ret; } @@ -3215,70 +3491,6 @@ static int prot_verify_read(struct scsi_cmnd *scp, sector_t start_sec, return ret; } -static inline void -sdeb_read_lock(struct sdeb_store_info *sip) -{ - if (sdebug_no_rwlock) { - if (sip) - __acquire(&sip->macc_lck); - else - __acquire(&sdeb_fake_rw_lck); - } else { - if (sip) - read_lock(&sip->macc_lck); - else - read_lock(&sdeb_fake_rw_lck); - } -} - -static inline void -sdeb_read_unlock(struct sdeb_store_info *sip) -{ - if (sdebug_no_rwlock) { - if (sip) - __release(&sip->macc_lck); - else - __release(&sdeb_fake_rw_lck); - } else { - if (sip) - read_unlock(&sip->macc_lck); - else - read_unlock(&sdeb_fake_rw_lck); - } -} - -static inline void -sdeb_write_lock(struct sdeb_store_info *sip) -{ - if (sdebug_no_rwlock) { - if (sip) - __acquire(&sip->macc_lck); - else - __acquire(&sdeb_fake_rw_lck); - } else { - if (sip) - write_lock(&sip->macc_lck); - else - write_lock(&sdeb_fake_rw_lck); - } -} - -static inline void -sdeb_write_unlock(struct sdeb_store_info *sip) -{ - if (sdebug_no_rwlock) { - if (sip) - __release(&sip->macc_lck); - else - __release(&sdeb_fake_rw_lck); - } else { - if (sip) - write_unlock(&sip->macc_lck); - else - write_unlock(&sdeb_fake_rw_lck); - } -} - static int resp_read_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) { bool check_prot; @@ -3288,6 +3500,7 @@ static int resp_read_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) u64 lba; struct sdeb_store_info *sip = devip2sip(devip, true); u8 *cmd = scp->cmnd; + bool meta_data_locked = false; switch (cmd[0]) { case READ_16: @@ -3346,6 +3559,10 @@ static int resp_read_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) atomic_set(&sdeb_inject_pending, 0); } + /* + * When checking device access params, for reads we only check data + * versus what is set at init time, so no need to lock. + */ ret = check_device_access_params(scp, lba, num, false); if (ret) return ret; @@ -3365,29 +3582,33 @@ static int resp_read_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) return check_condition_result; } - sdeb_read_lock(sip); + if (sdebug_dev_is_zoned(devip) || + (sdebug_dix && scsi_prot_sg_count(scp))) { + sdeb_meta_read_lock(sip); + meta_data_locked = true; + } /* DIX + T10 DIF */ if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) { switch (prot_verify_read(scp, lba, num, ei_lba)) { case 1: /* Guard tag error */ if (cmd[1] >> 5 != 3) { /* RDPROTECT != 3 */ - sdeb_read_unlock(sip); + sdeb_meta_read_unlock(sip); mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); return check_condition_result; } else if (scp->prot_flags & SCSI_PROT_GUARD_CHECK) { - sdeb_read_unlock(sip); + sdeb_meta_read_unlock(sip); mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); return illegal_condition_result; } break; case 3: /* Reference tag error */ if (cmd[1] >> 5 != 3) { /* RDPROTECT != 3 */ - sdeb_read_unlock(sip); + sdeb_meta_read_unlock(sip); mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 3); return check_condition_result; } else if (scp->prot_flags & SCSI_PROT_REF_CHECK) { - sdeb_read_unlock(sip); + sdeb_meta_read_unlock(sip); mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 3); return illegal_condition_result; } @@ -3395,8 +3616,9 @@ static int resp_read_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) } } - ret = do_device_access(sip, scp, 0, lba, num, false); - sdeb_read_unlock(sip); + ret = do_device_access(sip, scp, 0, lba, num, false, false); + if (meta_data_locked) + sdeb_meta_read_unlock(sip); if (unlikely(ret == -1)) return DID_ERROR << 16; @@ -3585,6 +3807,7 @@ static int resp_write_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) u64 lba; struct sdeb_store_info *sip = devip2sip(devip, true); u8 *cmd = scp->cmnd; + bool meta_data_locked = false; switch (cmd[0]) { case WRITE_16: @@ -3638,10 +3861,17 @@ static int resp_write_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) "to DIF device\n"); } - sdeb_write_lock(sip); + if (sdebug_dev_is_zoned(devip) || + (sdebug_dix && scsi_prot_sg_count(scp)) || + scsi_debug_lbp()) { + sdeb_meta_write_lock(sip); + meta_data_locked = true; + } + ret = check_device_access_params(scp, lba, num, true); if (ret) { - sdeb_write_unlock(sip); + if (meta_data_locked) + sdeb_meta_write_unlock(sip); return ret; } @@ -3650,22 +3880,22 @@ static int resp_write_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) switch (prot_verify_write(scp, lba, num, ei_lba)) { case 1: /* Guard tag error */ if (scp->prot_flags & SCSI_PROT_GUARD_CHECK) { - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 1); return illegal_condition_result; } else if (scp->cmnd[1] >> 5 != 3) { /* WRPROTECT != 3 */ - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 1); return check_condition_result; } break; case 3: /* Reference tag error */ if (scp->prot_flags & SCSI_PROT_REF_CHECK) { - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, 3); return illegal_condition_result; } else if (scp->cmnd[1] >> 5 != 3) { /* WRPROTECT != 3 */ - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, 3); return check_condition_result; } @@ -3673,13 +3903,16 @@ static int resp_write_dt0(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) } } - ret = do_device_access(sip, scp, 0, lba, num, true); + ret = do_device_access(sip, scp, 0, lba, num, true, false); if (unlikely(scsi_debug_lbp())) map_region(sip, lba, num); + /* If ZBC zone then bump its write pointer */ if (sdebug_dev_is_zoned(devip)) zbc_inc_wp(devip, lba, num); - sdeb_write_unlock(sip); + if (meta_data_locked) + sdeb_meta_write_unlock(sip); + if (unlikely(-1 == ret)) return DID_ERROR << 16; else if (unlikely(sdebug_verbose && @@ -3786,7 +4019,8 @@ static int resp_write_scat(struct scsi_cmnd *scp, goto err_out; } - sdeb_write_lock(sip); + /* Just keep it simple and always lock for now */ + sdeb_meta_write_lock(sip); sg_off = lbdof_blen; /* Spec says Buffer xfer Length field in number of LBs in dout */ cum_lb = 0; @@ -3829,7 +4063,11 @@ static int resp_write_scat(struct scsi_cmnd *scp, } } - ret = do_device_access(sip, scp, sg_off, lba, num, true); + /* + * Write ranges atomically to keep as close to pre-atomic + * writes behaviour as possible. + */ + ret = do_device_access(sip, scp, sg_off, lba, num, true, true); /* If ZBC zone then bump its write pointer */ if (sdebug_dev_is_zoned(devip)) zbc_inc_wp(devip, lba, num); @@ -3868,7 +4106,7 @@ static int resp_write_scat(struct scsi_cmnd *scp, } ret = 0; err_out_unlock: - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); err_out: kfree(lrdp); return ret; @@ -3887,14 +4125,16 @@ static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, scp->device->hostdata, true); u8 *fs1p; u8 *fsp; + bool meta_data_locked = false; - sdeb_write_lock(sip); + if (sdebug_dev_is_zoned(devip) || scsi_debug_lbp()) { + sdeb_meta_write_lock(sip); + meta_data_locked = true; + } ret = check_device_access_params(scp, lba, num, true); - if (ret) { - sdeb_write_unlock(sip); - return ret; - } + if (ret) + goto out; if (unmap && scsi_debug_lbp()) { unmap_region(sip, lba, num); @@ -3905,6 +4145,7 @@ static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, /* if ndob then zero 1 logical block, else fetch 1 logical block */ fsp = sip->storep; fs1p = fsp + (block * lb_size); + sdeb_data_write_lock(sip); if (ndob) { memset(fs1p, 0, lb_size); ret = 0; @@ -3912,8 +4153,8 @@ static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, ret = fetch_to_dev_buffer(scp, fs1p, lb_size); if (-1 == ret) { - sdeb_write_unlock(sip); - return DID_ERROR << 16; + ret = DID_ERROR << 16; + goto out; } else if (sdebug_verbose && !ndob && (ret < lb_size)) sdev_printk(KERN_INFO, scp->device, "%s: %s: lb size=%u, IO sent=%d bytes\n", @@ -3930,10 +4171,12 @@ static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num, /* If ZBC zone then bump its write pointer */ if (sdebug_dev_is_zoned(devip)) zbc_inc_wp(devip, lba, num); + sdeb_data_write_unlock(sip); + ret = 0; out: - sdeb_write_unlock(sip); - - return 0; + if (meta_data_locked) + sdeb_meta_write_unlock(sip); + return ret; } static int resp_write_same_10(struct scsi_cmnd *scp, @@ -4076,25 +4319,30 @@ static int resp_comp_write(struct scsi_cmnd *scp, return check_condition_result; } - sdeb_write_lock(sip); - ret = do_dout_fetch(scp, dnum, arr); if (ret == -1) { retval = DID_ERROR << 16; - goto cleanup; + goto cleanup_free; } else if (sdebug_verbose && (ret < (dnum * lb_size))) sdev_printk(KERN_INFO, scp->device, "%s: compare_write: cdb " "indicated=%u, IO sent=%d bytes\n", my_name, dnum * lb_size, ret); + + sdeb_data_write_lock(sip); + sdeb_meta_write_lock(sip); if (!comp_write_worker(sip, lba, num, arr, false)) { mk_sense_buffer(scp, MISCOMPARE, MISCOMPARE_VERIFY_ASC, 0); retval = check_condition_result; - goto cleanup; + goto cleanup_unlock; } + + /* Cover sip->map_storep (which map_region()) sets with data lock */ if (scsi_debug_lbp()) map_region(sip, lba, num); -cleanup: - sdeb_write_unlock(sip); +cleanup_unlock: + sdeb_meta_write_unlock(sip); + sdeb_data_write_unlock(sip); +cleanup_free: kfree(arr); return retval; } @@ -4138,7 +4386,7 @@ static int resp_unmap(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) desc = (void *)&buf[8]; - sdeb_write_lock(sip); + sdeb_meta_write_lock(sip); for (i = 0 ; i < descriptors ; i++) { unsigned long long lba = get_unaligned_be64(&desc[i].lba); @@ -4154,7 +4402,7 @@ static int resp_unmap(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) ret = 0; out: - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); kfree(buf); return ret; @@ -4267,12 +4515,13 @@ static int resp_pre_fetch(struct scsi_cmnd *scp, rest = block + nblks - sdebug_store_sectors; /* Try to bring the PRE-FETCH range into CPU's cache */ - sdeb_read_lock(sip); + sdeb_data_read_lock(sip); prefetch_range(fsp + (sdebug_sector_size * block), (nblks - rest) * sdebug_sector_size); if (rest) prefetch_range(fsp, rest * sdebug_sector_size); - sdeb_read_unlock(sip); + + sdeb_data_read_unlock(sip); fini: if (cmd[1] & 0x2) res = SDEG_RES_IMMED_MASK; @@ -4431,7 +4680,7 @@ static int resp_verify(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) return check_condition_result; } /* Not changing store, so only need read access */ - sdeb_read_lock(sip); + sdeb_data_read_lock(sip); ret = do_dout_fetch(scp, a_num, arr); if (ret == -1) { @@ -4453,7 +4702,7 @@ static int resp_verify(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) goto cleanup; } cleanup: - sdeb_read_unlock(sip); + sdeb_data_read_unlock(sip); kfree(arr); return ret; } @@ -4499,7 +4748,7 @@ static int resp_report_zones(struct scsi_cmnd *scp, return check_condition_result; } - sdeb_read_lock(sip); + sdeb_meta_read_lock(sip); desc = arr + 64; for (lba = zs_lba; lba < sdebug_capacity; @@ -4597,11 +4846,68 @@ static int resp_report_zones(struct scsi_cmnd *scp, ret = fill_from_dev_buffer(scp, arr, min_t(u32, alloc_len, rep_len)); fini: - sdeb_read_unlock(sip); + sdeb_meta_read_unlock(sip); kfree(arr); return ret; } +static int resp_atomic_write(struct scsi_cmnd *scp, + struct sdebug_dev_info *devip) +{ + struct sdeb_store_info *sip; + u8 *cmd = scp->cmnd; + u16 boundary, len; + u64 lba; + int ret; + + if (!scsi_debug_atomic_write()) { + mk_sense_invalid_opcode(scp); + return check_condition_result; + } + + sip = devip2sip(devip, true); + + lba = get_unaligned_be64(cmd + 2); + boundary = get_unaligned_be16(cmd + 10); + len = get_unaligned_be16(cmd + 12); + + if (sdebug_atomic_alignment_blks && lba % sdebug_atomic_alignment_blks) { + /* Does not meet alignment requirement */ + mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); + return check_condition_result; + } + + if (sdebug_atomic_granularity_blks && len % sdebug_atomic_granularity_blks) { + /* Does not meet alignment requirement */ + mk_sense_buffer(scp, ILLEGAL_REQUEST, INVALID_FIELD_IN_CDB, 0); + return check_condition_result; + } + + if (boundary > 0) { + if (boundary > sdebug_atomic_max_boundary_blks) { + mk_sense_invalid_fld(scp, SDEB_IN_CDB, 12, -1); + return check_condition_result; + } + + if (len > sdebug_atomic_max_size_with_boundary_blks) { + mk_sense_invalid_fld(scp, SDEB_IN_CDB, 12, -1); + return check_condition_result; + } + } else { + if (len > sdebug_atomic_max_size_blks) { + mk_sense_invalid_fld(scp, SDEB_IN_CDB, 12, -1); + return check_condition_result; + } + } + + ret = do_device_access(sip, scp, 0, lba, len, true, true); + if (unlikely(ret == -1)) + return DID_ERROR << 16; + if (unlikely(ret != len * sdebug_sector_size)) + return DID_ERROR << 16; + return 0; +} + /* Logic transplanted from tcmu-runner, file_zbc.c */ static void zbc_open_all(struct sdebug_dev_info *devip) { @@ -4628,8 +4934,7 @@ static int resp_open_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) mk_sense_invalid_opcode(scp); return check_condition_result; } - - sdeb_write_lock(sip); + sdeb_meta_write_lock(sip); if (all) { /* Check if all closed zones can be open */ @@ -4678,7 +4983,7 @@ static int resp_open_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) zbc_open_zone(devip, zsp, true); fini: - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); return res; } @@ -4705,7 +5010,7 @@ static int resp_close_zone(struct scsi_cmnd *scp, return check_condition_result; } - sdeb_write_lock(sip); + sdeb_meta_write_lock(sip); if (all) { zbc_close_all(devip); @@ -4734,7 +5039,7 @@ static int resp_close_zone(struct scsi_cmnd *scp, zbc_close_zone(devip, zsp); fini: - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); return res; } @@ -4777,7 +5082,7 @@ static int resp_finish_zone(struct scsi_cmnd *scp, return check_condition_result; } - sdeb_write_lock(sip); + sdeb_meta_write_lock(sip); if (all) { zbc_finish_all(devip); @@ -4806,7 +5111,7 @@ static int resp_finish_zone(struct scsi_cmnd *scp, zbc_finish_zone(devip, zsp, true); fini: - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); return res; } @@ -4857,7 +5162,7 @@ static int resp_rwp_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) return check_condition_result; } - sdeb_write_lock(sip); + sdeb_meta_write_lock(sip); if (all) { zbc_rwp_all(devip); @@ -4885,7 +5190,7 @@ static int resp_rwp_zone(struct scsi_cmnd *scp, struct sdebug_dev_info *devip) zbc_rwp_zone(devip, zsp); fini: - sdeb_write_unlock(sip); + sdeb_meta_write_unlock(sip); return res; } @@ -4912,6 +5217,7 @@ static void sdebug_q_cmd_complete(struct sdebug_defer *sd_dp) if (!scp) { pr_err("scmd=NULL\n"); goto out; + } sdsc = scsi_cmd_priv(scp); @@ -5726,6 +6032,7 @@ module_param_named(lbprz, sdebug_lbprz, int, S_IRUGO); module_param_named(lbpu, sdebug_lbpu, int, S_IRUGO); module_param_named(lbpws, sdebug_lbpws, int, S_IRUGO); module_param_named(lbpws10, sdebug_lbpws10, int, S_IRUGO); +module_param_named(atomic_write, sdebug_atomic_write, int, S_IRUGO); module_param_named(lowest_aligned, sdebug_lowest_aligned, int, S_IRUGO); module_param_named(lun_format, sdebug_lun_am_i, int, S_IRUGO | S_IWUSR); module_param_named(max_luns, sdebug_max_luns, int, S_IRUGO | S_IWUSR); @@ -5760,6 +6067,11 @@ module_param_named(unmap_alignment, sdebug_unmap_alignment, int, S_IRUGO); module_param_named(unmap_granularity, sdebug_unmap_granularity, int, S_IRUGO); module_param_named(unmap_max_blocks, sdebug_unmap_max_blocks, int, S_IRUGO); module_param_named(unmap_max_desc, sdebug_unmap_max_desc, int, S_IRUGO); +module_param_named(atomic_max_size_blks, sdebug_unmap_alignment, int, S_IRUGO); +module_param_named(atomic_alignment_blks, sdebug_atomic_alignment_blks, int, S_IRUGO); +module_param_named(atomic_granularity_blks, sdebug_atomic_granularity_blks, int, S_IRUGO); +module_param_named(atomic_max_size_with_boundary_blks, sdebug_atomic_max_size_with_boundary_blks, int, S_IRUGO); +module_param_named(atomic_max_boundary_blks, sdebug_atomic_max_boundary_blks, int, S_IRUGO); module_param_named(uuid_ctl, sdebug_uuid_ctl, int, S_IRUGO); module_param_named(virtual_gb, sdebug_virtual_gb, int, S_IRUGO | S_IWUSR); module_param_named(vpd_use_hostno, sdebug_vpd_use_hostno, int, @@ -5802,6 +6114,7 @@ MODULE_PARM_DESC(lbprz, MODULE_PARM_DESC(lbpu, "enable LBP, support UNMAP command (def=0)"); MODULE_PARM_DESC(lbpws, "enable LBP, support WRITE SAME(16) with UNMAP bit (def=0)"); MODULE_PARM_DESC(lbpws10, "enable LBP, support WRITE SAME(10) with UNMAP bit (def=0)"); +MODULE_PARM_DESC(atomic_write, "enable ATOMIC WRITE support, support WRITE ATOMIC(16) (def=1)"); MODULE_PARM_DESC(lowest_aligned, "lowest aligned lba (def=0)"); MODULE_PARM_DESC(lun_format, "LUN format: 0->peripheral (def); 1 --> flat address method"); MODULE_PARM_DESC(max_luns, "number of LUNs per target to simulate(def=1)"); @@ -5833,6 +6146,11 @@ MODULE_PARM_DESC(unmap_alignment, "lowest aligned thin provisioning lba (def=0)" MODULE_PARM_DESC(unmap_granularity, "thin provisioning granularity in blocks (def=1)"); MODULE_PARM_DESC(unmap_max_blocks, "max # of blocks can be unmapped in one cmd (def=0xffffffff)"); MODULE_PARM_DESC(unmap_max_desc, "max # of ranges that can be unmapped in one cmd (def=256)"); +MODULE_PARM_DESC(atomic_max_size_blks, "max # of blocks can be atomically written in one cmd (def=0xff)"); +MODULE_PARM_DESC(atomic_alignment_blks, "minimum alignment of atomic write in blocks (def=2)"); +MODULE_PARM_DESC(atomic_granularity_blks, "minimum granularity of atomic write in blocks (def=2)"); +MODULE_PARM_DESC(atomic_max_size_with_boundary_blks, "max # of blocks can be atomically written in one cmd with boundary set (def=0xff)"); +MODULE_PARM_DESC(atomic_boundary_blks, "max # boundaries per atomic write (def=0)"); MODULE_PARM_DESC(uuid_ctl, "1->use uuid for lu name, 0->don't, 2->all use same (def=0)"); MODULE_PARM_DESC(virtual_gb, "virtual gigabyte (GiB) size (def=0 -> use dev_size_mb)"); @@ -6978,6 +7296,7 @@ static int __init scsi_debug_init(void) return -EINVAL; } } + xa_init_flags(per_store_ap, XA_FLAGS_ALLOC | XA_FLAGS_LOCK_IRQ); if (want_store) { idx = sdebug_add_store(); @@ -7180,7 +7499,9 @@ static int sdebug_add_store(void) map_region(sip, 0, 2); } - rwlock_init(&sip->macc_lck); + rwlock_init(&sip->macc_data_lck); + rwlock_init(&sip->macc_meta_lck); + rwlock_init(&sip->macc_sector_lck); return (int)n_idx; err: sdebug_erase_store((int)n_idx, sip); From patchwork Fri Sep 29 10:27:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 146490 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:cae8:0:b0:403:3b70:6f57 with SMTP id r8csp3931949vqu; Fri, 29 Sep 2023 03:51:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFFhqlFGN6owXTooOgZfQ0Ryr1YyVxdgzZGzqWNlSY7uzootXsES3y69LHTegpD9B6dBQd5 X-Received: by 2002:a05:6a21:81a3:b0:14b:ecab:a6ba with SMTP id pd35-20020a056a2181a300b0014becaba6bamr3350114pzb.28.1695984712068; Fri, 29 Sep 2023 03:51:52 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1695984712; cv=pass; d=google.com; s=arc-20160816; b=bEx3/Wl3f4yuYp7qY5AjBloiz79aMm9RjNnp6IN3oTXjO7kVNIBpGf7+5vYhS+o3U3 1dyO9Xb1XyX2Zm0oupixldDQfaoFzebQG0vTdqx8vnDxcLqj0Clwbjb1GIJKKff2Pwsm 57ZmmsfnjvJrPKd6KkeoxATHvvm4TrHSD4BaaEQ8l+dYs50cDi48QhfajQ+ea3cY+5TR faDp3SU8LfSK8T4FX8fqCQlg8KQmMkOWXi24KOBSvY+BXxPOhFk8OBE6J8ChfxDBUski rFp8M97muCOj+3QcIO7l3+lSDiWkk3Vhm8Sy8J2DbCXdtviv89YmKxy9V7mcIOgMi6iQ h0vQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=FZl9JhWJFm8ds/0dVoM8Y0ByU2rRnBP5p0YM67SV4sg=; fh=hRLq/3j8/0LTGPtn3R+yaB2okbubFMubCVYS7o8AoO4=; b=DSB171dnAs/c0NT+P8xmrzGcxm5bXaU0GaejlrvIdoE8wTHbEtRVSUtmWg1ONiFEqS REkJWfy/OyUMCHC99FgZBKRcqc86+VX0tSNiWVh/SKZpe4keVWp/+Y/WcqBqBKeBvRjE J/2bVnEtR/sWA4l/IAD+g8xjJtp2d1MOHkU52JxrGGJ7h5IhQ40FWxOBENPf4ETIyHTA 74s59yYoW/Rz0SIAu+S57JRDtvl4AzvyRz4m0El7TIISrSRWQmhnoEdAPHnYLMLB/dC+ SOLDYXv7hgRJuApqNADqR+0KlFyJ84ssn7tvwS5IqbWo0E3BVEfWyJCJ6ldugIsZKKKC UEnA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=CY+VE4gV; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=Uhgv5lly; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id f10-20020a170902684a00b001c33d339754si20460036pln.136.2023.09.29.03.51.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Sep 2023 03:51:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2023-03-30 header.b=CY+VE4gV; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=Uhgv5lly; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id B758C8049B6A; Fri, 29 Sep 2023 03:35:58 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233293AbjI2KdM (ORCPT + 20 others); Fri, 29 Sep 2023 06:33:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233270AbjI2Kcw (ORCPT ); Fri, 29 Sep 2023 06:32:52 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1EB61733; Fri, 29 Sep 2023 03:31:16 -0700 (PDT) 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 38SK9u7d020163; Fri, 29 Sep 2023 10:29:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=FZl9JhWJFm8ds/0dVoM8Y0ByU2rRnBP5p0YM67SV4sg=; b=CY+VE4gVLWjut8K0Yt+3jDDukStXFCgM6EjRLAm6JzJILDbHirz5w/auT5orv6Xm4FGo tOby2uEIM1oDoFn0z4MmP+ecqSPrqHYtnpAulG41zRh9HjksJtvR5FoZnxUgTiDjzCQm yMz9gfGdv4/MaAdCkESkZWvoljNXIyD0GL8vwQ9uuxUsyr6jO3aQ+x3dr7qx8ErPT0vh gTGfSC9fo6R5/h4h6AU0pr0ykke6YLsOW5KGQE3KCiy9jXa9rMMPpoZ+4MrcndNpYUjU TRg1vPIbws9Quf7KrAajqXJ/974dFQAFTGNnBkZ8buelbOwV++lAX7JDmESH7McbkJJC Yg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t9peee9wb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:29:00 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38TADLJA014617; Fri, 29 Sep 2023 10:28:59 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2176.outbound.protection.outlook.com [104.47.57.176]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t9pfbmmjj-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Sep 2023 10:28:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OOHa9+zZvvhSuCjwiGE88BbtievlzGt3yfvo2gqT4dIdI6sIMwKdTWzXoB93+DxosHLgVRPncm+2Ho/S/URl66i6r2uBIeuYEBsX36StHToq194rvgvMtJgMqJeQ/y0ber35i31RAEQTXFK/H6RvlwR4Xzsc3/xze1DRKZ5a1QxabJLtgRqtd2+XySYrA3Y1B0HwQCOUMCIVF2QBgYMoQCiTJBb2uRps6t9w3udN/snxUu1fJamY7RTiwE+i5Umu6JnpJUZ4dlQSdzQPYw1mHbdGhLng31e+yYMicEBMZ0kTMUZXOsKNRRF3GgHYFv8GjO+9KgeexhajgJV9FJuRUw== 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=FZl9JhWJFm8ds/0dVoM8Y0ByU2rRnBP5p0YM67SV4sg=; b=Bxkfsp5NunqVli18tBzXMXMr48a65zL6t539YhK1Tb/x8S9hIXEXiBGj8vAsFT5YZj9X6bqU8FumZsxLx4lcHMKBXA7BZLJL20PinkiUGM2pkQ+JgwcW95n+TNmSy38HW/mBsJRZ7XObql4Gmjk5P1N/Gzp08T0djMhJJsHj8mzeg2KuyLqK/ZdQMWIopEnM7i/me4tdrwUYIcfMygTAaq+RbRGX0i0K48v1wCVky9n1GQlEzGxi06CricuPbpBDhDG1BZimC0cOzXK0tcRcqafxzC/z2hFf3eywbUyDb/VLKSoi2N4ti7gmySLiBs7VAnYK/aa9Po0DWLMq4vMrQg== 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=FZl9JhWJFm8ds/0dVoM8Y0ByU2rRnBP5p0YM67SV4sg=; b=Uhgv5llyvwlCx34Ronx8iGZ7AMVK/iwcpJYfyHLjanlIKiBP1WR920bS10EEGWKN7Tm7+5D4Wk1e5k0KckgRIiSxsqedH+ICTLDYqR4G3sxTVbjDtpeuHusfKCiJDHTMot3z88o1NgM4I7ssDCzWWKY9A/yXtQeN3k3pPvrwIKE= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by PH0PR10MB4680.namprd10.prod.outlook.com (2603:10b6:510:3e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.27; Fri, 29 Sep 2023 10:28:40 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::ebfd:c49c:6b8:6fce%7]) with mapi id 15.20.6813.027; Fri, 29 Sep 2023 10:28:40 +0000 From: John Garry To: axboe@kernel.dk, kbusch@kernel.org, hch@lst.de, sagi@grimberg.me, jejb@linux.ibm.com, martin.petersen@oracle.com, djwong@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, chandan.babu@oracle.com, dchinner@redhat.com Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, jbongio@google.com, linux-api@vger.kernel.org, Alan Adamson , John Garry Subject: [PATCH 21/21] nvme: Support atomic writes Date: Fri, 29 Sep 2023 10:27:26 +0000 Message-Id: <20230929102726.2985188-22-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230929102726.2985188-1-john.g.garry@oracle.com> References: <20230929102726.2985188-1-john.g.garry@oracle.com> X-ClientProxiedBy: BLAPR05CA0009.namprd05.prod.outlook.com (2603:10b6:208:36e::16) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|PH0PR10MB4680:EE_ X-MS-Office365-Filtering-Correlation-Id: 76345577-4b6a-418a-a0b6-08dbc0d6d8fa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Uw13hMllyidPmiro5j2HZHhJLrqb8MYc4/CDkYNPoCFiOigNLCDu6l/YNxJfXGln9+RziNdStdB/5gp4bKNUZwTNyWl5dY8C3qHwtfa4aRuV1ONEZd1BFKtDrMAjjzEm6N3zN0xzmrQ/N/PzV8PnaGMQSReDvOr2sXDE30+MgGsK9yENm5+bZU6Oal4HAAOeeOyl53SNxGVzBL98Ruwte0h+giPE9NQSnhpcT3+cHwG/HBfEx9r4vdqLk1mfbfiwpiag61jetBJn3T/4RuKaDpVyu6KfCcrQvfovMMRkGchnPaHM6MktC39v0bFKDcBqpZ3SYaZlG069I7D3bKGgUNjijIXq6PDZjIaubmnE6HbYAAc6Af9mRtvsYxH8yi++HwGF8aI9CSvhgGaVaJ2eQCJSWgAao58zss7YuryyST5BbGlkgd/ufTzIVkolhSXOTmdfW9hhcRquylvy1K3ZxI317d2QuqWRZNTU10GZp/ixXovkKEwt2HsthtKexP2l5ixOZlOGUd9uPBWd026k3bt0eS6TrPxQZEYybvw8UJYlrZPhbV8CBA/sjIlUafwFohOYTXiL3P8jW+99acBFS/Ch4YdTZQKQbVDoUQMvXOo= 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)(346002)(366004)(136003)(376002)(39860400002)(396003)(230922051799003)(64100799003)(1800799009)(451199024)(186009)(316002)(66476007)(66946007)(66556008)(54906003)(8676002)(4326008)(8936002)(41300700001)(107886003)(26005)(36756003)(2616005)(1076003)(83380400001)(478600001)(6486002)(6666004)(6506007)(921005)(86362001)(6512007)(38100700002)(103116003)(2906002)(7416002)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gLShOUaokrHyb6kSex/57BjOP6j5XHeHfRsmuu0WxZJeoRYYVMymYOkPLnRlZmHR550EBKG8ce1REiVRHClHQaR77YbY6/YRjD3WSusIRFAxSZTVx3mZBa7dUkjnw2bWYhPcWe2PQ53tRS68a7y90YQ9Gby8ug1nG8kAMxMnHKM6xbiWnm41tfaHzjBq3dsFIFLdvhgfgHzBO645TvUIoRjXEB2QaNYiBkAhB1yZLj0SwLc/YBV4XOnWNb6Fm983JXZid9FBUS1mIeNadnNVluLnUraIk6VCApiV97wRdrcWBgf7AqaRZISNuwCuLUuhrkNXeWBVbHevngTOV/WF8vssM79mNSkye/HF/sMFFsrci5BDjUCANKTypX2b1m/UuN/q1nhWl58YTNKcYJaUeJsK1/GYEP1pQTNtFwtaHkYaSyQbF50yBckLsfVsut9Irh2rhLFu0PauwzuRQ+cFyPc4r9ZGQzdO2osPJ4InG4Sky7ekj7i66SgLN3nOpXH6tbu3tfmTPi1IkTvx//0rWrhy7Vx6z+ymLWeJZXQKIMvL/ylW2uCLD1vJ0ETcNCNbRMi0QJ4wA9dRD+x1RaBTkEUiQ6I8KTxa0Ieu9SCRg8qaoC3vDYIeEujayM+35PIsZTBHbZGLIchWlECYkTTIEMQfsQKrKxGExLmI9Xt2u9T/mWyEsdvvYsWlXj4JMGQ107rfXLMC1C/oZtudwYYN6vDwwOUP5lGPo8zmfsja9T4v0MMCtMqLg+j47R7TenSKusnr/NoswW8nmKaqzdXlxaUdtjVXAXUAlt17ITeLd85IDS/2JinsWbKo2M99tmWLcWmcaqmKguiFsRNoR+cXn4s5xtbce+AjhAIPeqw6wjzmqOs6RQoDz0TynTqfH13zZZyTGWUxXowrQvBomTyinUYo5QLCILRGs3XQuVRumLG3Vswn9zI8lDLtdO8gmpLRwT1b+DeNAE7No7lphwgXczpH6nmkLNGS3bhGafHWFyOW1pNoz6klVQsdTJCBizYuKEVhFZL1UVnrf6DgQ6cEOsoU0p3YA6vj5cqVgBUkt+mt3S6glVz8OdVt9smpeIvuFlcBrhULVFjnAzglcVVs13/v9bGQ4Bj845sifxo+/QMUVXvu+C8vHyz9yNnhQiORE1A2RZhNv+jwcHliaNQB1uWGOWoEkRzOYxNyM7Y5P76oXl7gaT/J0MyUfLSP4+6VrbwBQSw6au52J3SunsRBa+SJGSv3Ksh64tiPYYh0d9RA7TrNNAkMcf7tfcA5gidR43C8EDbBZlTvizsqEJy+p0RzGbqzJmBzT5uTIXYkdfti2ODq77X0BG9ewmJoHEYlnCSQztFA0I97z1vVKLTw/AiC9rjbeEx394sJN0Q/GpNM/n8CA2UjQZqudPJoUtikHmQssHgx/7LOkxpSHs5RFFUQYsPyE3eDAEitaY31Mskdfa8C/ZAwZotCL6sX6Ww0oARWfCGTUL4Cgpks1Tg2BmETGthty623wc4MFpQgRu9OXarisT9jxGYaFllWUpVQ6KOq5nlmkd87y4wmPZ5mYhz7+9LR2GxM1e0vYYNpJ4Qv/rwxPbQ8jJZ8fR85DIQwBs2YBRSzvoia/4YPu7Eo5A== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 3LrikrejUN52TV7nnoH7dfcSWvNxiKA2WZuX6bQhmEC5EIE6IQId6AbBTMY/dVkowE/xoXhBqyF/+/E4R0/YwZLeyukr6Vn/CNQNHUcm5XDgQvqGKekSAbwa4q54NrlId1sm6MYUqib4c+TxwmfM4QTS7ui6LkBWFHATYHSHlDnqKT7kwyrwMNApGSSuR3zZsF7XSO77fJUsxJIyN7QX2sKPJOnf+RR+ZPYAlVFlYhn0qU6NnfB6mAv0HUFby7UPcnEDiy3Ga9fvLGseGUfg0lv+XJay84Bu2dnIHZB/8JWzNxVi4i+IwuYw9goDVT2dCFk+JklVMyJcpLm2V/rZ0wtFUoRnRqYs8Xiu0zQBo6qRAxtw0agxTwKd6RVrIebBR8y5KhJ8ggGXl+iQPfltrOjgPreEM6hMhVG4pZTCY+z/DUHvh63jVRqSGyRtnRRe+MdTVohXvRdy+HB+RPn+sweZ5qbAS/3ly50VbauF9krcOUWnDKYdrU21VKZh4JPQxLHyCZqS3chodCgHw63tqwk36I+xaEjke/Pt5OWywbM+s04NUwMGST8iO6aQjUXXM4+htZ6ayDyF0WalEH+ZUBrvhfR8ewhXiBm4ZmfSY/JtxzjZ2mov5JYXyMxT4eEI5PdUYetZrLVs5iMsoQugzu87mosUDnM+F4IkNBmbqucmd7wn5oQkZFteQARKDOpBKYjNGzyu0Q5a6Wky5l4gXyFr9wcWFmdATuNVPzdVUTgX8Wk2pft02yu2ctiyrfy94dXA0WVGf+ujke3yMNIQKuSKAXy9Ixnx1DqPu+oglsjsWzL8cuS6csI+y5A6o7Ay//9ZvqpJoI9rhC6PFOeCGQHXD1wPxs45KkkdxzwE3AjSk0VAVwpZwqgWgsQgIYRPOnP3QDDkg1bnJPUOOLUdMnZLvHC6hLCcqdw0vva/BfiRof1IYKIdJK2UXIWD085WBqdsTuu3lmEn2AcG91dhFpR0iVI1BiMednpLKaPbZx5eYvm8pxPiDIAEBTbF0pit3/QIF/qapqvwn8uJorExfYysNqcF4lzQnW+XAkCp8ideOf7rgmdv5pRhJ8qLVMFk/5GVsZT9XgdniNn3b7/3EA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76345577-4b6a-418a-a0b6-08dbc0d6d8fa X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2023 10:28:40.0181 (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: bLkhpuaDIZ9uacDVITn7BPz+d8Zvy7f4s560+aFK6nhSAEKR76IplmCmd/+Q8rLnaBlm0jErXMt1wP1uhMkGZw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4680 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-29_08,2023-09-28_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2309290090 X-Proofpoint-ORIG-GUID: A2RTXmWZQqdEnpftcOxP7cHO2BnvgRXu X-Proofpoint-GUID: A2RTXmWZQqdEnpftcOxP7cHO2BnvgRXu X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Fri, 29 Sep 2023 03:35:58 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778368865463755399 X-GMAIL-MSGID: 1778368865463755399 From: Alan Adamson Support reading atomic write registers to fill in request_queue properties. Use following method to calculate limits: atomic_write_max_bytes = flp2(NAWUPF ?: AWUPF) atomic_write_unit_min = logical_block_size atomic_write_unit_max = flp2(NAWUPF ?: AWUPF) atomic_write_boundary = NABSPF Signed-off-by: Alan Adamson Signed-off-by: John Garry --- drivers/nvme/host/core.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 21783aa2ee8e..aa0daacf4d7c 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1926,6 +1926,35 @@ static void nvme_update_disk_info(struct gendisk *disk, blk_queue_io_min(disk->queue, phys_bs); blk_queue_io_opt(disk->queue, io_opt); + atomic_bs = rounddown_pow_of_two(atomic_bs); + if (id->nsfeat & NVME_NS_FEAT_ATOMICS && id->nawupf) { + if (id->nabo) { + dev_err(ns->ctrl->device, "Support atomic NABO=%x\n", + id->nabo); + } else { + u32 boundary = 0; + + if (le16_to_cpu(id->nabspf)) + boundary = (le16_to_cpu(id->nabspf) + 1) * bs; + + if (is_power_of_2(boundary) || !boundary) { + blk_queue_atomic_write_max_bytes(disk->queue, atomic_bs); + blk_queue_atomic_write_unit_min_sectors(disk->queue, 1); + blk_queue_atomic_write_unit_max_sectors(disk->queue, + atomic_bs / bs); + blk_queue_atomic_write_boundary_bytes(disk->queue, boundary); + } else { + dev_err(ns->ctrl->device, "Unsupported atomic boundary=0x%x\n", + boundary); + } + } + } else if (ns->ctrl->subsys->awupf) { + blk_queue_atomic_write_max_bytes(disk->queue, atomic_bs); + blk_queue_atomic_write_unit_min_sectors(disk->queue, 1); + blk_queue_atomic_write_unit_max_sectors(disk->queue, atomic_bs / bs); + blk_queue_atomic_write_boundary_bytes(disk->queue, 0); + } + /* * Register a metadata profile for PI, or the plain non-integrity NVMe * metadata masquerading as Type 0 if supported, otherwise reject block