From patchwork Tue Nov 12 12:42:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13872185 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA6F21CD1FA; Tue, 12 Nov 2024 12:43:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415419; cv=fail; b=Snvnp1Np9V4CMIgaNT+ZM9tEoKfg5AnGn/G1Uu3b9dh0eIVW+nc5+VVqqHdaCzjkS2+/HqznDGe5qtNlqiBBtre6Z2igF/NKLwCaBK7RPQTIdqvm2kQsezUfeoTkFmJ8DNh+GemS4KIwaDih9RXXb2hrIIL2FtjSbEIfj/2Dqb8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415419; c=relaxed/simple; bh=pFzPiDhwgEb9Vm7aPcsLlta5qHsG3OBQRFG6wEuZ0a8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=NbwvzE5tPJddU8JbgMBTLc6IKk7I6vCaGzlP5K1LN4pi6gBsClJuffZifAuAuBhCsm+gEEFDREHErM9Zz/lVmX5UKt5f6GPgiNmfpIcgYj5MhNrDNxvWF/tsYUCjZoa47hUuASOz1yihfZ73+xVtzBQ+ZVd/vfvytxpaOPlTEfE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=M+AbVPhj; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ppEhARDs; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="M+AbVPhj"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ppEhARDs" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCfjfV028740; Tue, 12 Nov 2024 12:43:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=G91Cv8J+yFqaKfxp43iRVW+0cERpGYd7+gOfd8Zelg8=; b= M+AbVPhj2NhhqTD2XcS2+DIN3hqPDniO8X7DSFxPZxx16/tZ1Ke+Uq5oNf0yw7NR Egc988Snk7HGXnlPhUf5C556IeZc2m+fdM04UtaYtBM0BGICa/6uMUbDOU4rG6JB ZclEfMQGEBYqIhHa/PIqUhvMOjMRBOCv+fP4zIfA38Q4NBrTKj+7lxpmrR3FTJKc BW+gCGDihYpGHzYqmzXGcTpSep5FWxsrRdpUpRNAa02DX3vapvjm1w7UOYG8auQZ U2MYzvBqUTN/J5eAiN3LPuWv1lwGnQYkbV3qeeP9PdzBCP6Iu/EUP5yGhOhOuMLh 1HyH97pewWF98384X6tarw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 42t0n4v7uc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:10 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCUS3G036106; Tue, 12 Nov 2024 12:43:09 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2047.outbound.protection.outlook.com [104.47.56.47]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 42sx67u7r0-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UQgkJ8xrVOWSPVUAl1iMA3v8WaHTWySmG2bx38qOJvSXnlIbPQ6NbHD4v2n7io6p0Ui6H3ZGx19g3IZhuypX8SfvMb4sgQDATJP1znSLdcj2r/Lj9IZkRGIQBcoRkOxGs8r1maBRl2natjmezF4VGuTiFSIsCLgp06JdZBggxghVKXVh2YEGqcHZynlBOZsEr1THe22yWv7gqxnFJDGc9NRxqPFYuu59eMKNJYE36Kr2BFPnrdU/BvhNSJP4xYjzVYb90PWTjHNzt6/ZHUcCsKF9aKaMxRfAu9NA73D3CHVE0ZqOqM02qmXnHLtL4isLkLvYlX/lIMQCVqQlfmdwng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=G91Cv8J+yFqaKfxp43iRVW+0cERpGYd7+gOfd8Zelg8=; b=gHn7Gw20NhNNxhuQYBwwsDLbHqbbsMkS0xns3cnd1PhqbVnL0RbA+OqwjAPGAqNcd6u8F5ot6sgK4Gx9lB8nIT+buGnznW5Ku07+x5OFfU7pyFhX1KvWSDj0BtNKetlJxJ+cGNBDpyTfS/ovCDXRvzPiSN1C2GyCxhID6TaYDzs5FskxPJdXfPm7/yyG4jrY/mBaV1GXrqyGEbYRvcVdUnnKvdoT0KqQKCYxfX15TlcBQQOPcGM4J1/a5UBScJYkLlSH6A3pepwrpqUAx9Xg6rE4jprWfqpNpaMa9/Q++TDxir6R+vJDR12V4lmesaqW5GxDOYVyrz7vqkXXa49n1Q== 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=G91Cv8J+yFqaKfxp43iRVW+0cERpGYd7+gOfd8Zelg8=; b=ppEhARDspIXF0WxoBlZeWJwNiVQIsoTaDBLCMsiGBFOsMPewVRVlHWpO8rRt3yQAugisYuY6tHvT8odhscn0chH/vG/pgQaixVTazgExUTMofBPS0IGsnuTQM+7GM2FYl9V0tqUbGsTkbp73VgubdL3f6KSbGs6rpqOLCycQYMk= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by SA2PR10MB4809.namprd10.prod.outlook.com (2603:10b6:806:113::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.29; Tue, 12 Nov 2024 12:43:08 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%5]) with mapi id 15.20.8137.027; Tue, 12 Nov 2024 12:43:08 +0000 From: John Garry To: axboe@kernel.dk, song@kernel.org, yukuai3@huawei.com, hch@lst.de Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, martin.petersen@oracle.com, John Garry Subject: [PATCH v4 1/5] block: Add extra checks in blk_validate_atomic_write_limits() Date: Tue, 12 Nov 2024 12:42:52 +0000 Message-Id: <20241112124256.4106435-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20241112124256.4106435-1-john.g.garry@oracle.com> References: <20241112124256.4106435-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR13CA0140.namprd13.prod.outlook.com (2603:10b6:a03:2c6::25) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-raid@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|SA2PR10MB4809:EE_ X-MS-Office365-Filtering-Correlation-Id: 5d5da35f-63eb-4148-2e6b-08dd03178f48 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: V6Kf/1r/WtHjSsQKN1gvxi/AKaV4n09oErzyy+ro9R478yGSziNeKLKLpwIbKs8KkuA55QslZnh8b9o+zSec6eCO8mcwBdLdEiFsBUzz6r1y8q+5mEvLk+vAAanDkqrwGeBVaa9tFMa5+9dw1opzisz8FM/+b3Nncq/CSk+cyNnupF7a6f5sFpVpHx00bBSsBY2dTuk1pPzK4AETKeXBVz0ZL6tArvoeBX01uIt/7w8FXZnXCYtbsR36BeJAL+gui2vdUG/cImcng/5+rDLPR1LQp+4hLqJ55/U3Bk6YuP9EtXH20pXoeCKesojMy8GYKrzSRWS4ESWagQ2Po9LbJ/3iVCBwofLuy/hIuUgssLui/GiVeQJt75vTwQA9YZVZTqnybLqcLVgPrKXfw2O2PLb83cq3xFUiYspwrV7mCzz4wewyAwChR5ExMgU1+iB420lYyip5nYkEPHUJDkxIYJRKWycjg2ohY8N9B4jrXO864mQFhbFyrmkWz5GxbGE2BQkf7yQwgSUAoWoLHEAOKpM7dcRn9HRv+euRJptSEcFCEMdVbqskNI1JNErD31Gv2hnPB2mvyAQVXy/oui5Msi99JzH8LejYl2hYMaBdd3ehhKdqJxWBbyZnC3QuKt+0debXTB/Iu/CylEc/PW9ToeXCqUCbOCb6c/OkrReUJDZg3W7s9Y7Lr1bPFMMPsyRAytkO4UX6Htf53uazXR8jEtL1iyEBtw4RyG+nHLhbnO09H7mZIT/Mfu74unEOLePBkry92tfXLEd15danPzQq58iJZJX3k6jIZ8zxu22MpCdySML4QMnaoSIwhg6+YPMYi8Awq1eRUp+Z/vyv6ChQKC9Te0f4MyX31hkMJM098uA0BGSrdryULV61/h7hkrONiZG+d9ThhiaKS1oU2n7DQNW2MTEbWLj4Eae0n12c3VhiQs/IWF4lUH2oHkPN/836QeeyEIKIL6ETM3LS98skMDBkvLdWoR+JznydHzHk/2NVTI3C4vQjFT/23ich9qDANspPWMCfy4aYw8p9rJnZW10gzY/sAFANkWQuT7eqw8UGrGFQb0wRRse2l1KJLJzyPlY6V4xC7CPKZmVd0dVh/1BY+zVaV2LVI/FkX1lzmD+aYheAflshKN72XQbDH26hAX2QWBDKCq2EvD/niuefeInTQ+cu4MGuR6D/9GeZAZqVLuREOzNoFAgx24OAdWO0X69Zb3Akl91YihokienTADErGqxsltULczIx2gZjB6Q86CupnLszu0vl62awolnYn3ik6YMZXgfcIuex29EY5t5irruwqsod9tkQpRnXVW/sUCChKfmWHug6vZGoOeds X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Qlmx+1OwrThA+tJRMDjb+LAMIhNuZjMm0z6XxyyJqXrIzTYApAl/rlBg49QYHqTr15ZEfwsU+ZQL98bS6DYiehVFSm2TSZ3blWNe05BupjZYmgwDm3xVs6Mtd4SxrzhF/pqg7ZuDvwJeduEJWMsF5FqROZ4EDJsZkZWCXScONrHu+lG2h/MNZQlxQfSHTNCUzVtxX5NHWJs0CN/EA1HgnBcZ6JIQqargCajlurMgz9tFLSQwNVBZLnCU8JGpXOYi6tJnIAnKqpUTSbqeKq0WThUt55N/MLvL9btuX9nP5LAFRV7w3B3LZa8GqZBZuStNEjDI0ndHq9L9f5gkmE0NUgjsD6JMxmcPed+7Hp+98kojvlnELoHAhn0wRkYLAUCDRSaTJ0TtVxHJTIPLnI2c+DZZUV323yX4XvWRLwxnA89UDDw8ceF26VlbaEfiDLla1KSnIbmDq3bEEpQIM02qkBWZy65QTrELYTEo0C1hIpJS2v+oCzcb4i3bl7w4hUHwyL2TfGS41QeMNW/7A3SFaRNvJbuCeVouUXHBPj5qJeOrK5SVVAU3ixfGuqVc7OQlQGxYADnzxW8kLCKITHmm2feMWK1N7WKogPGplFwQJASv4nzG5+aMsZ0rfVo3uDUnjXv1rmxCxSxekl+UH8yHd4Ev4Ws/B8SZCSL7cQaYTSd/86W58s3kxWx8zdXJw+Qp9iEyu+OV9Yrrd++/7WYCdouNS9bKkkpZnRQqqe+RPJH/ytFC8g4ja8gAwRGw6D/tKAB6LS2zT6KGMRFeq0NM8dGuiL/RlpnoeqoR/IBour2yNOGgDjHRvftPdmnlZOmg/HtQoRoaOT9P08a9MBC8QL61NXHJvxH4U6fYSdHJ2CwzZ1mzETal5k/8SiGlCBRxIKWUjw6SDNyOv17T6gwwzYzDT49TAkSkKege1A25ruYb3HKaKKC1a9qJjhpuWmM6UPz4hMEYnlC+NS/R5qvLfHY3HAsYyhK0Ctp8tjC9W0VKqr6tDAwDh3NW5pItwuYCbgBt4wzNIfL68Up+uwQzgPuVEuEOlP4DDMOQL7liL/rnp+wYmhycXa0UfwpEWwEVB3s9lpJmlAF+04GRViSboSJQhP/JmuqgKAG2Svw8FCIyDBwilK4buFzF/mqjAklOicP9XSEm57xW/GlECj35TeTsS9xQxp2v1sV5U4N1lc5jqEbRRHejrF8ZuGPKxNkyrZb6fCt1d3RNS8Adqpow0i/FzrYcmT92/Q7K0j7zhKSuKgh4fB7+jzjZkJkHBrvW18lyEovX9ekO3YOXGno58hT8cFVIxVhzbax7CLrXXFzd5Lp/xmyvhyraX+bLrVkx2/fnjQEMWEi893qGzGIUbVheUFDMmZl3L+L1X/oR//3NHNQhYK29HDC4cXpI76jcABB2uPynHoTkcmshUCxb78J663uhFA6gRTg1ICKv0MoAUg4tqffcODnmpJWyRvGm72Fxwnd9wvyVNEFoCdtOSIBAMKCLI2aX/l0jIrK3okXrOj6+UgZ8MyXz/TWPwDW3+OajfFEd7l6BTebaK6WgBXhJtyy35E3+k7m08k/jAuC/5XNfEDU4LI0hGJ+lvJt2Mbx9yEE7JUHKyVlQmomilw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: SMPnE8eaP+1Q0anI1hkKNJn2W+Dv/NQAsYPD6HOb5Fl1zZ49AJgFZ7WjDuvNcpFB9G4FfgppIWKCH6w0R1zm+4AEHQApEr+FPkWSexdPArGp4VFl8ZkXVEUMbnR0mpP8sKpODQSn6kVzNQiIdf4rdl38l8nbuSz2Q2M9BN72yBlCiDDVvoIclU3Q0iCo/Lrb5AZP9Foh+Cm6jS1aXvMLP5XQRGmYMTowjNHPmhnz+MQTov+eQ9wlStoQ2H2l5epz3QcMR+ZURo0vWBYSBERmJe0mxCtQp8GSh/Z7i3Z9pUtkXyiCLqm7R6NJKioOSnUfZ6cyZkFHJwnYeup9z+MX2kXruV6+sZLJP7OoQk5RxhDYCWfdEWQYYxM0hi9+nEhE0TCzT6n/8W+Jl0jEAL9rDcU0jlKfalD237YjOCPNYJYGQClKtpPzqQoB1be7Na/ab+3CUOnJJxc8CQ9pSnFGaNmURSmLkfvv0KrsusXehk5W3j2Wgz4qEM5RO+UvWnH3ptowczJCD8FfEOLwYin1mDJXe4w+NUI26e6h4OfL8lFnl9UyFtYnaRyp4pTCWO7EDfOAqMwCdjyLHwnZpCShirhYjVhgQyVmRQQ4Xdiuz5M= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d5da35f-63eb-4148-2e6b-08dd03178f48 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2024 12:43:08.0980 (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: hhPJocLvxRANfiqKh98mKczf/U8C0tKYQAKxpjC3G8hz6IlcN4YW5Ue+udoV7peFvHwCv004zRLIaUgBfEt14A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR10MB4809 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-11-12_05,2024-11-08_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 mlxscore=0 bulkscore=0 suspectscore=0 phishscore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2409260000 definitions=main-2411120102 X-Proofpoint-ORIG-GUID: Wjncz085CjqEPKF6vHXsuVD0cE_RaGfX X-Proofpoint-GUID: Wjncz085CjqEPKF6vHXsuVD0cE_RaGfX It is so far expected that the limits passed are valid. In future atomic writes will be supported for stacked block devices, and calculating the limits there will be complicated, so add extra sanity checks to ensure that the values are always valid. Reviewed-by: Christoph Hellwig Signed-off-by: John Garry --- block/blk-settings.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/block/blk-settings.c b/block/blk-settings.c index 7d6b296997c2..44e1148986b3 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -178,9 +178,26 @@ static void blk_validate_atomic_write_limits(struct queue_limits *lim) if (!lim->atomic_write_hw_max) goto unsupported; + if (WARN_ON_ONCE(!is_power_of_2(lim->atomic_write_hw_unit_min))) + goto unsupported; + + if (WARN_ON_ONCE(!is_power_of_2(lim->atomic_write_hw_unit_max))) + goto unsupported; + + if (WARN_ON_ONCE(lim->atomic_write_hw_unit_min > + lim->atomic_write_hw_unit_max)) + goto unsupported; + + if (WARN_ON_ONCE(lim->atomic_write_hw_unit_max > + lim->atomic_write_hw_max)) + goto unsupported; + boundary_sectors = lim->atomic_write_hw_boundary >> SECTOR_SHIFT; if (boundary_sectors) { + if (WARN_ON_ONCE(lim->atomic_write_hw_max > + lim->atomic_write_hw_boundary)) + goto unsupported; /* * A feature of boundary support is that it disallows bios to * be merged which would result in a merged request which From patchwork Tue Nov 12 12:42:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13872188 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A7881FA821; Tue, 12 Nov 2024 12:43:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415422; cv=fail; b=FWbelgKatieMTz2oP0HT/lpq570x2GSZSGNWf7b0++blMY+liRviZVDKl/LYYADS57VD0XDZOm4SbfxWIE8YeZ0HVGUj1NxbsJkPpSxlVFrOA2fLmeaCN1+a9xtoZLpkLdGUdwB/J1GqFcnbB+ELr/6uOAqpx4Du7q8qKAO27fE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415422; c=relaxed/simple; bh=yIcWTxHekcb0WmkgMb7IksezlOOP8/ep6yBt4ONzNUU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=jYD0aQA6m9sbvp61dqCF7VdX0ZjZ2bnErNaK0LVtfWii4DitAgTG6Pe4Uvlu/p4p9EuVI3uiIkyFBibptWjKRH79dqQoxNwL2QKOqKMFrPirNAaaE567pL+7DqeqP4TJUUz4KowNS9kS4sIPy0fJdEKTJkTs5Dd1Y7opkt1JoNo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=Q0i1SRTq; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=wqxRSvMX; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Q0i1SRTq"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="wqxRSvMX" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCfjgm028728; Tue, 12 Nov 2024 12:43:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=RN2e3hlFsTwOKqY1yBtlcCTHOQ8W+L/g/0MBuVh/mQA=; b= Q0i1SRTqx5A11NCq4gmTPw2CYiSd/AEdHNJo/0HEOOzDyGlnb01AFwnBxPzdUDFq zmT2KmnWiJr2Z1jZ7r/GJNCyTWlT66WW7eBsXVcVzAPbZXwPpIHSJP0F4oyCIFaK Bgk6VDaUk1bI0nHoiwvddaZb0CA17F+AYr3Ti857QEbS9feGQdVs6g+ogxEKs4LS jZ9Dox6ln9d3VYBFZaVDhxUC0yJReXdYyUslobkCywY6o8GKfyAFjkwiPM66fhy3 eF5kX67+rTEnhskyKqFZhHw1wg4GKQkWIO5OfMmcs9KwOv1AYWIdIPjdG8dNVTev UD3gkPIH3ni9jOXRsqEY1Q== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 42t0n4v7uv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:20 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCX4GZ005677; Tue, 12 Nov 2024 12:43:18 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 42sx6825sj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Cfih7K1QmFK6xlZ2pmVyzeE7m3iHn1NKTljGJFoYg9/kgGA6iNmpkGJN6O4iJ05+KLXe9RwXZNkLD0Sk9WxcclhV0oXF2FLHzZ/z84CD4bUeU5W1/TsZmCqHQxHOgFXfDKyWVuou/DqLINFGcmbwCFyQz8Yj5Er3oR22h6pg2BGPxBjZHytaxJDqVtM03I2o6eC2+8lVMkfNkrov802rOdNk9HfY7Xo0X8Cljs4maMLCj5prteTwGoTpe4O0YSge8D7heyatoxsaIx2J/mXf6OrlGeMBkmaA5PU2njJNkCO3fZpdbztTm5lf6fNzmOhPtNt4nVoIUMCmPcMFwL4bSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RN2e3hlFsTwOKqY1yBtlcCTHOQ8W+L/g/0MBuVh/mQA=; b=U7wlKi+HJVNrgtWSDQPxcjj0YIi+dSkKuHfeYQpdlJ/s8EX9TtDNomLhuXaxHHpH/hSBEMoBMjUEb7sUBrA200Lcy8PsiAkKsgCylTyrzyR8L4URDj6yRFDsl36DbloKqwcHukiNluUJJsTiXI9zlCwr9VrfxxGi4MmERA/8eIam1LUPo50HGcPrVQQmYb+hHpniA7d5d18hL4XyziAMofPwSCmgu7XtJtz35oW7qYghQCnR1OYBiPg7UxcOfu8bviSHT6vjihwnva/d5nIfX/m1n44kR8lAiRq/HdFffthx2k7KGqdebnvpHLx4usprzZ3cIEeP0+Gg7Cl7VimC4w== 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=RN2e3hlFsTwOKqY1yBtlcCTHOQ8W+L/g/0MBuVh/mQA=; b=wqxRSvMXB3vMcpfHsB+dwXEEAQ4SfynEUM6ltQQxF6nGHxtN08O2aROKeR20Nnc2AO93KHYkHZBLzZ5miqxEZubM9ky+rmF4DPZLWj7tvC0bRLEdDJIiCFnnatK8L8hA33UaTreXZ7i+7myf6mRbz9WACKJpyW+nL/Tr7yCRvg4= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CYXPR10MB7974.namprd10.prod.outlook.com (2603:10b6:930:da::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.27; Tue, 12 Nov 2024 12:43:10 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%5]) with mapi id 15.20.8137.027; Tue, 12 Nov 2024 12:43:10 +0000 From: John Garry To: axboe@kernel.dk, song@kernel.org, yukuai3@huawei.com, hch@lst.de Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, martin.petersen@oracle.com, John Garry Subject: [PATCH v4 2/5] block: Support atomic writes limits for stacked devices Date: Tue, 12 Nov 2024 12:42:53 +0000 Message-Id: <20241112124256.4106435-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20241112124256.4106435-1-john.g.garry@oracle.com> References: <20241112124256.4106435-1-john.g.garry@oracle.com> X-ClientProxiedBy: SJ0PR13CA0146.namprd13.prod.outlook.com (2603:10b6:a03:2c6::31) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-raid@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CYXPR10MB7974:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c664e08-f89a-47a2-9ee7-08dd03179070 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: QS1VrU7/6/EXDOZPyymmEuMCPah3Hz7w8Mq2VoIyXXHJr/MbpIrNILRSpYmxMA8tHrzHZwAFREMI61QBSP3UzD/hgIGoZV1JpzddAFifvX/PRe3TycJ0AwnJU26spyfJShZC5CVrAiX/LcrjOn8gpTP9qBORl17eTXZneGqQ2PbUja1AtZOIVm9Gm60/kO8tX3iqPFk5wyyJplaN2ZhS7PU+G/WcgQVSLOw+FCPCRAjLYkdtTNSqajkdmUvGEqbRjnd1zOwBwbIPmjoaJfhHtWiUfIDIQYh+V5KDbZyln89sJMVKW1pwrngDDGglIAiQzeQOww8ygw6KnUf0WkDQ5wLLbvShjhQbUa5aZLZdlDfK23DUZZn2TVkA3rFaOxw0G2a0ndqeshl+gByWbJAKqQMyyOe6cqipeFQ9h7NzTgQp0bJdgyQ6lNvmztjkFlJf3XiVatsquOaWallsSIT1WjucR0xFFMpg+yA2QRK5b9wgSNPfHrSA7RR8zFkb3zRQ25l/XPPjr/PkkO0f+PQO4VrdLGESxPQR/M9imIIKhTR0Heo59EGzU1YV/YfxNb0Y3NILgOnpL+kDlw5a4gCiScMExt08eQJT2ZE8k4mdj4j+OIfcpICRISKzv84rNDT+ILEMHNxUJFXDluxg7RgZXRYn2kc8PXnx2pNXonqJ0S02q4x4nis7YlEcx9AiwiNuKllSCwkHB9XCpe7eHzfWhnDXhkECV/K4rZYSZGow4HEzVrZQ5POgj8DvmYykXJRdLy58ZQpx7QQN1qOGVSgNAueJhZqk7VzASv/qwlDcTcMz+XdUi60kqy+dXda6Aybplp+T/31QJsGsLk+zctNtdrgFkcBGcjjyCIxOUc83XvVGKj0Xs4pN6OQwnAiFnCXS6I24sbjBgdeml3r9Ot2QkE+dqMCJRRf9+dEdKF5uL//mmMdHrLcx5YPWPbXTeSZS2VWe/VeleC43amWw784BucNzqeB8uFaA5SOrY6ctRkXAU+ON5OzdcUEAuiceHkxnS1aZe0ldFuYOAYdt6JRZkAeO1nzuvnOXsUv3eRc3hWFm+77vyCOhYOWmNmLPFp/X+vkaE/ZD0i3h/FXhV8WYepduDBojW0hV9xolrw7JHFZMEbzOpaywwI5Otsm+Vaf36I8ewjLMlivoIQA33MJ+MLZpye5Y+I56kA6WZGEQ0HGkTQnAm6K3OIr7qi2ERR3hvJYl45ZSK+qjNj9d0Qltg+HK1ajS45GoFN7YkvvKjY8355Hct6xs5N9bwDLaLZIhnTBGpQSoq/dyFiupnD5dbsHeJVXVtfHjxilXYo5xNTVO2KvQsWZ1XQT9w19EFcFG X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rnFub/WOJ3zMYn3UFvC8Q0IuU5XMpmvANx7FnPZiQywHDKKtsI9Hh3SCpkYmSjbqMB2kdoNINpQ4hK2765IabIaCtB27OWhNQe2rmCjYz0YAv7pG7j7LNEjK2gPMlh8G/uBhc4NEmHknSOhOb0to3EGFeU78jdYwpAiIAAdbaVV9Zh56ICLyVqrH2CMnKZ0B/zu105wiONpDF4jutlQjvadhSb+qRgrW7QKwqPlYLar6srpMnEoguQQEs0iZ5izt/SlOu/Ocj+cRClQMTAR4REHxk92KkdBs7jcNiceOV0utK6XZspEC9PDohLAUrKm0ypkahImnZwXPMavBnJ0ecyZwzS4JHOry9uCY+pBsvihN7zHnQsdMx9R/4O/kWEu8BICMrd3mki8TQjXZ5pmdIR4noW2zht2uwmPyGJsFItH9tzUEnjFKnA/7atf8o3yQWwlw9u/lXCQy4osQpA0XP0PGd+AE/gUnX0rVqfX+1NesA9P0Lnwpt4W+VTRw6YgggJNagsYLzCRJ8ZpbYJ9TpIsI8jm4vVRi14OzyszQycWiBn2btZyEWtsycKAh+x9YVzCg9opBKD5OCkqVoBFp5Vx+pkqMVSp1c7wze8QPm57Dv4xwhbivIeFEeo+uMqMueiXgp4D26r1W8Nwlc8u99td2zNYWi8WaLxJYPM6e54fyNCPycAdVguWcmv5W89Q4wGZfgeNdfQRIMESapk5WmMr9iy+VAT0NASAz1jBdWIWw3FUBQhgVi+PqWrX8cZbYXagoWCwb4/XcjiOztefK++BezQ2x5BrZTltkNNkslGKaw4Vm/2B+SwCFt4+9DaVYY3Dqzeob/1HjB83Rs/py9fgOki0IEOH4YoM+oFHlsWPMfR76cWGqWfLUUEgzaQz1ZuHurMSbUW4hRLl5y1zve1i204HN29q2rv75Y79B5l8WqIpGJnlXsLTBgxvOOYJ9ZxsbukaG2fDl+sBsYxvcSHsEOuyYyxonCuSkn5aaiOYEbp1nHfii63rO0We6BuTu3m1BCZAa4KdLr7S1VQ4lEjbeUtIWavzXx4aqykwLBTY5Y+uTUvSCo4hr7LsW/erctWJMyxPlKdvgTj2u2TKClc8mJSyT4x3ZPH//0v/9mX7MLdNwSjTkHiqXwpk/zQjwM1bgGfBZ6dxEO/rb6kcpCygQz1uL3W7D/jk83afwDKsLoG0yEvar6/VAHPf1OMtypooqW/NIJKrA5M8ZN4/d4rUE/rmoBJC3s0GPUpyJylJndJ4YBxzxs+duOMYK5fuVoLx/CEWRHSWQEONVUdHC/gP1SF1dnpSGdkpwxvoPihO4bUQ+m21TuZzJkt54ZRn5vgfnFpNOhM0NxaRfYnheTTw3PJvFgQGt1WkLqfZpmhnVRQXFX2WF2AA7EUXnsm/hLnmA4XiQQwmWLG8X/A0DYTbkndYPH/SsruXf+XUTReDYq9JgwXxIicHRsQA2IFraPU3dq+OweTCTi7rWlhpLn1LGJOpiUzUqk5XZYsTZLnaH46KYVEVLIyI9r/YRo8DaP16mTtdNiCndKmzfBNsw1+PtcpMtruyqvDyjOsBuvA2MX4zdYep0ejWEKRSH+1Rf+5USRW7fDSTH4TpqYXSH3A== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Cr2g8Kl/7K4cnQog9VzIJ7ZMwDZGRsclnIiYN2feLmD+MDWEy9wpnWLkrHJ+qnG87AyKGNBuw6cFyFiCnfLsia8GKW2QrYwiGze/CcGSEkFD0IqjVY5zaHETM4LAGFs6PMtXvSje8RpH+g0fl2Eh4H0jL5P6+BNiKXqc8p7/sPT2saPR0tYXwmZ9qeNu7OsSZd4wgrJ+iyH18o8yxigkGT/h4gnsGXNJ0hlyPvC52U5wEMIidYWVOIzd61jEklMYx+CPnLoHSxTRp3q3MPjw00AS9mJASJ7JcpUSWjXZCpN9Oui4s+0meHKmwK5yyobTu+cnrqMV5QDPVWqufdDYbvaUCs2z/UnURfevWCLbvUIpliWZ1ELVNmdoUh6aTE0aIluihBedctMmfyXV7nYqO4NPLsBmHhQz/kNcmgfQIvVL4W8Ae3wtQmWuLPjvaJ70Xl0iWXsudr/+vhi5mTGFxR3h9hiiAenuDoxNxJ7I4ZzgFUEYznt9BjzHFrAZmrJ6SYjkTo3V3Ga49KyDxdKBa+dLzHVd+1ofl4EURRU7xHaU7RqLcnWrPd/qKVrIT5GchnedBP/t5z6V708HG9QmZz0avrzj4Bqn4ay1Xzf0phg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c664e08-f89a-47a2-9ee7-08dd03179070 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2024 12:43:10.0353 (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: Lz+84SQRMjEQRt1PQmLwv3huin0E1spJVFQTrlzppwXdqnENBim4LJw2uH7rgVbQnjZj+n8ni4yhykL/wsDwgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR10MB7974 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-11-12_05,2024-11-08_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2409260000 definitions=main-2411120102 X-Proofpoint-ORIG-GUID: r7d1d73uWyZ9Tu1SvJKY2aBN6HIaf8Jl X-Proofpoint-GUID: r7d1d73uWyZ9Tu1SvJKY2aBN6HIaf8Jl Allow stacked devices to support atomic writes by aggregating the minimum capability of all bottom devices. Flag BLK_FEAT_ATOMIC_WRITES_STACKED is set for stacked devices which have been enabled to support atomic writes. Some things to note on the implementation: - For simplicity, all bottom devices must have same atomic write boundary value (if any) - The atomic write boundary must be a power-of-2 already, but this restriction could be relaxed. Furthermore, it is now required that the chunk sectors for a top device must be aligned with this boundary. - If a bottom device atomic write unit min/max are not aligned with the top device chunk sectors, the top device atomic write unit min/max are reduced to a value which works for the chunk sectors. Reviewed-by: Christoph Hellwig Signed-off-by: John Garry --- block/blk-settings.c | 115 +++++++++++++++++++++++++++++++++++++++++ include/linux/blkdev.h | 4 ++ 2 files changed, 119 insertions(+) diff --git a/block/blk-settings.c b/block/blk-settings.c index 44e1148986b3..e087e5d886ce 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -495,6 +495,119 @@ static unsigned int blk_round_down_sectors(unsigned int sectors, unsigned int lb return sectors; } +/* Check if second and later bottom devices are compliant */ +static bool blk_stack_atomic_writes_tail(struct queue_limits *t, + struct queue_limits *b) +{ + /* We're not going to support different boundary sizes.. yet */ + if (t->atomic_write_hw_boundary != b->atomic_write_hw_boundary) + return false; + + /* Can't support this */ + if (t->atomic_write_hw_unit_min > b->atomic_write_hw_unit_max) + return false; + + /* Or this */ + if (t->atomic_write_hw_unit_max < b->atomic_write_hw_unit_min) + return false; + + t->atomic_write_hw_max = min(t->atomic_write_hw_max, + b->atomic_write_hw_max); + t->atomic_write_hw_unit_min = max(t->atomic_write_hw_unit_min, + b->atomic_write_hw_unit_min); + t->atomic_write_hw_unit_max = min(t->atomic_write_hw_unit_max, + b->atomic_write_hw_unit_max); + return true; +} + +/* Check for valid boundary of first bottom device */ +static bool blk_stack_atomic_writes_boundary_head(struct queue_limits *t, + struct queue_limits *b) +{ + /* + * Ensure atomic write boundary is aligned with chunk sectors. Stacked + * devices store chunk sectors in t->io_min. + */ + if (b->atomic_write_hw_boundary > t->io_min && + b->atomic_write_hw_boundary % t->io_min) + return false; + if (t->io_min > b->atomic_write_hw_boundary && + t->io_min % b->atomic_write_hw_boundary) + return false; + + t->atomic_write_hw_boundary = b->atomic_write_hw_boundary; + return true; +} + + +/* Check stacking of first bottom device */ +static bool blk_stack_atomic_writes_head(struct queue_limits *t, + struct queue_limits *b) +{ + if (b->atomic_write_hw_boundary && + !blk_stack_atomic_writes_boundary_head(t, b)) + return false; + + if (t->io_min <= SECTOR_SIZE) { + /* No chunk sectors, so use bottom device values directly */ + t->atomic_write_hw_unit_max = b->atomic_write_hw_unit_max; + t->atomic_write_hw_unit_min = b->atomic_write_hw_unit_min; + t->atomic_write_hw_max = b->atomic_write_hw_max; + return true; + } + + /* + * Find values for limits which work for chunk size. + * b->atomic_write_hw_unit_{min, max} may not be aligned with chunk + * size (t->io_min), as chunk size is not restricted to a power-of-2. + * So we need to find highest power-of-2 which works for the chunk + * size. + * As an example scenario, we could have b->unit_max = 16K and + * t->io_min = 24K. For this case, reduce t->unit_max to a value + * aligned with both limits, i.e. 8K in this example. + */ + t->atomic_write_hw_unit_max = b->atomic_write_hw_unit_max; + while (t->io_min % t->atomic_write_hw_unit_max) + t->atomic_write_hw_unit_max /= 2; + + t->atomic_write_hw_unit_min = min(b->atomic_write_hw_unit_min, + t->atomic_write_hw_unit_max); + t->atomic_write_hw_max = min(b->atomic_write_hw_max, t->io_min); + + return true; +} + +static void blk_stack_atomic_writes_limits(struct queue_limits *t, + struct queue_limits *b) +{ + if (!(t->features & BLK_FEAT_ATOMIC_WRITES_STACKED)) + goto unsupported; + + if (!b->atomic_write_unit_min) + goto unsupported; + + /* + * If atomic_write_hw_max is set, we have already stacked 1x bottom + * device, so check for compliance. + */ + if (t->atomic_write_hw_max) { + if (!blk_stack_atomic_writes_tail(t, b)) + goto unsupported; + return; + } + + if (!blk_stack_atomic_writes_head(t, b)) + goto unsupported; + return; + +unsupported: + t->atomic_write_hw_max = 0; + t->atomic_write_hw_unit_max = 0; + t->atomic_write_hw_unit_min = 0; + t->atomic_write_hw_boundary = 0; + t->features &= ~BLK_FEAT_ATOMIC_WRITES_STACKED; +} + /** * blk_stack_limits - adjust queue_limits for stacked devices * @t: the stacking driver limits (top device) @@ -655,6 +768,8 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, t->zone_write_granularity = 0; t->max_zone_append_sectors = 0; } + blk_stack_atomic_writes_limits(t, b); + return ret; } EXPORT_SYMBOL(blk_stack_limits); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 65f37ae70712..b9e5b00cd825 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -333,6 +333,10 @@ typedef unsigned int __bitwise blk_features_t; #define BLK_FEAT_RAID_PARTIAL_STRIPES_EXPENSIVE \ ((__force blk_features_t)(1u << 15)) +/* stacked device can/does support atomic writes */ +#define BLK_FEAT_ATOMIC_WRITES_STACKED \ + ((__force blk_features_t)(1u << 16)) + /* * Flags automatically inherited when stacking limits. */ From patchwork Tue Nov 12 12:42:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13872190 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C456A1FA82E; Tue, 12 Nov 2024 12:44:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415474; cv=fail; b=Y9LcO43jmBoxbciLDHr1oGIuEYlyuy8jqybUnhvLuBPJHIVgRh8EECywMKijleX4kNfVFLGLFyn5NxJ/u74nWRqSnkjFqMho67C/wZGuuAUZrJ9NF5MWcz8tp5szUmlPacGJ+B2dgBN4X1S0ohTVtc5P65Fa594qVxErIMDpNJw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415474; c=relaxed/simple; bh=l8jWHfcLWmfiyOix9ULPk9fyb0xYOjtbPQAshuwY22E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=o3f3WB3rQNCGfBR/BBd+IPkyeHDTPb17zVnEGOLwT1mr2duOFSmoAqeusu3/bWrKCfW9mhLy2E7adwOhgzspU+IyyMG1r2fwqStW3NWmWxe8FMeleZfCdx3cY2esO4fHW+6bEUt0/Lj7rSIPMoCvpZoU7qFNpmSCi1Qeun2GcKQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=f7JYi5Gf; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=A5ftvaHJ; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="f7JYi5Gf"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="A5ftvaHJ" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCfiLH017452; Tue, 12 Nov 2024 12:43:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=H1sClM6+eh1zgJaFPbwdJ29io/dAbFTNuW/1IeGVBZU=; b= f7JYi5Gfn79OGOO1N0ofgbe/iAjnSfB0VUS5vy9doSQXKJrTZHPZ8/keUOXMBswq EbCOYGNWDnxb5jWMKEUrsZ2Z0owCegLp9IA0zhLN/liXoASAFD04d83nNxKCMg1S XcjiKpV4oocaxblsten30IZ428sPzyrxEBUdwA1PgKI3uQ989kJCMhQ97xrEEu9h gtuDmfJ0xDAyVZgVknAXswpgY6z6RDmKRP7swbqdjsTrmBclCfem983ihNWKJ8pN 4sMh24fMdbUdVzxWze05QGH8NqhbHo0Cnqg41dXOy5rJWvczOXXvFdD/yIXF+sMd QZSl677f1gWjgt4nhffFmw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 42t0mbc8fu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:20 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCX4Ga005677; Tue, 12 Nov 2024 12:43:19 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 42sx6825sj-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NEO5N+tJ+nctnVlK+7oypYV2h6qcaiBY2dDiBeWOWnDrAzpSMPFCqZ7BVIM6on+6UtU79hc1tLA87eRNTA3g+tDuQSHrFnnU+tS0vdcx8+YBGdN0xmyOUv0stytUY8pszDCjyCqd+dLyNgA23vkfzUPLFaUF5cn731c8oMqv8WqVMOa2akGzwkZZHigCkB4GogxMdty8SlFB44AGbdI5WuquMpVjChvmXxCB17cxHISMiuTeyQwSibFWb4cDkZEn7gCYAJKs1c0mnyVeAPVaNBOYsxMuAMpsVhaT+URU/IT3xAQfmO+AE/ld8Na4uWkdVlOIjQFRhn4lin4/BkSYFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=H1sClM6+eh1zgJaFPbwdJ29io/dAbFTNuW/1IeGVBZU=; b=tz9gilnOBkzvmpsdv2tqvMhqE2mYo3HvnYSBD36+LF67S2uDR/P/kovhwXEWPXDn801efxEbo6GkoatfO7kvQRZQZdIGy3fG26GxkQgjNPDrfkIcDYWCZw74jpjSy13La/L4v19H8Mp8nNTyM6Sr+a5N2s9tFRIfOpwKH5rjJqnqkgjEj7BSCVn1IiLT88wDQGW925LpfNmprXFJ+TFK/W/DMitN/1yC79CZZDh5G/9GoplqlQya/gb5j3+VoBqvzeNIjfvMns2QreWuZ+k7xZtGZtto4ULIuS4bX/v1173W6stYbSDs/Gvkv286TcA1Fz1l/WDDmfOFwp029E+PJA== 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=H1sClM6+eh1zgJaFPbwdJ29io/dAbFTNuW/1IeGVBZU=; b=A5ftvaHJGNu6JmK2ae2l7sFDBjPsgd5ZY90QIhfidWlFXxEi20ukfVw4Lm7NNpxQRqWpUDq15Ly6suC8cq+xfqxwVYURNjF3LGpUl0iMev/u6L9TmXwchbr9iawSgQ9LHmX5KoUlGC3/scmLB3FVNmKy+zFuVqUZLfIRCF1gY+E= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CYXPR10MB7974.namprd10.prod.outlook.com (2603:10b6:930:da::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.27; Tue, 12 Nov 2024 12:43:12 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%5]) with mapi id 15.20.8137.027; Tue, 12 Nov 2024 12:43:12 +0000 From: John Garry To: axboe@kernel.dk, song@kernel.org, yukuai3@huawei.com, hch@lst.de Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, martin.petersen@oracle.com, John Garry Subject: [PATCH v4 3/5] md/raid0: Atomic write support Date: Tue, 12 Nov 2024 12:42:54 +0000 Message-Id: <20241112124256.4106435-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20241112124256.4106435-1-john.g.garry@oracle.com> References: <20241112124256.4106435-1-john.g.garry@oracle.com> X-ClientProxiedBy: BYAPR07CA0026.namprd07.prod.outlook.com (2603:10b6:a02:bc::39) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-raid@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CYXPR10MB7974:EE_ X-MS-Office365-Filtering-Correlation-Id: 43ce4178-d3e3-451f-3f7b-08dd0317919c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: t7DMIhg7UG12MCjkEL4WA6IIW1C2tcbPzyQfQk2dbJpVHzPX50A5RLpffM2oKl1DwnMbcWySe0602OwJwUvB69XwVGnPHRBvEUDzxofEjrD8VdepI67vTtMCA4o10AAqx0o56aIXpvuGvGtAT1UXvCW7sCT2ookFr7ScSAOfpVfeeYbYovK64zh8HcAusdK2GQhQsV2B1tMG/CJlrIIbl7DXbAp4SAYxPUS3fgm+i1Ui41N4WHsmuLOSUrfz1WRNn4Wjz2mtyAfHexqPzovwYOKWeFcP/29sISkT6CRaXTPYrTRtwY6uROVqePGvqSVrJ6c3Ji604zeGIxaRQ1rbIPnI7FGD63o4s/yMEZdKdkNy9LwiJy+a44+0psbBm4otQKpPXfYyVUxZR0AWrm19BqaibXupabetL3WcZJQX4/7xgGBT2sNxIUphPqoB6PBrUVCS4GLOYJFtzq2nz7WV2/krg8nENLuJMNy0fH/wRGW9YTYBWFvUj5KSU0hjy/uEo4zWi7cl6iLu6s3y8YhfFwBjskAipX8IQGOtFONHe+9SrXRIzrb5cQKPMubzn5dYD8bbbcTQkCDMfqtKrtimjzxFYD1F71+pQaLLDc2kEglm+Xp4WUMfFWFZMgaeg4mJXEtXfkH3jVYWjw4wyHesMCzyyoskhI36nQNbg3Sydj1Yfit0b1GdxwewkPgSvnPBN76fCK08TpUxGACiN1ZhfH6f5O0c6LzwCx7OMEnXUk5V/XNXaqQj+Ixf3x0jrClNbqLJArwtoBMO7rOLdrQT+gboGAGjY6wrejWUNc1st80uFJVofglHta1p5Urqi6KBt3AsmQWuATihTV6NpIbyaLLG1xSxqCge7AmdE0ISh8/wu+TTwIJHNvHbil6gGg7HYF3XhE+JA0n26YCIx4JPvsQmMpd0mfKF7fMYCLsYsCa84eA5TPZZFcljfWC7hbT9I6GiHTTw6x04TRzTFyF92abKXqSCsYj1PYbXg2Y9E2eMItFNybQQ5DhaLFTYd1qgifilBXXSriLKltn6vOvLToKR8Y5Ib7cYbCJBlTY9quh3ZH3poFMUWjx9idVMc0880pw6+UTKmuGw4IY7lw5KMRMmQGNd2RZ84L4Oxh3yUpSZIYB81aJjuLqthbYjujkqfoWs/Z5veYxkwEz7xvZa95PP18k24D2ACgGKjTD94DDEqIfR10a20fBSXSed7gmrT3r/NXtkXob0D+P53eg9HnrZp7QU0dkSd1AJAGvqqAlxFlRhTg+8ntZ0cOZqrlZCeabNxMJDrYQEUyldmGzLgfhgjEs9WxzdYnagmQjaj2G+rLtk0fYkrmwB3qNF1MT4 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2SrvpC+bhb8CNHpJAf2LplCH3DOkmiFyPaR6JmDEEVD+CmSKzwUYlvs8j+gzEUJCeqP/FNiHncgC/+LvmgcrYoQC8/5NsQdVnR+lu5VskyjZZcn78BW7/4odjgO2mjKz3sC09Stmzr2nK7UzqoZKtoKTIQsIvArgQmmIl7GpZLzQg2s60RcQQM3Pmphoa3wO/WsUDda8yjh7EpKtn1tsW8oMMJUumyLf1Z7qscAVmClfEvLDAE/5AISK/hRB9oGPPDJfD1+r4faUKnbVQuwnIMKx3jSWyRTfDLykaLabFjG0Y/6SegpTLMUabxVLdnXWRon8Sf11/ok59A3iaH//CgrIS1A6Fl6TNFWLvOwhy2XtzVK6PBGqY4SbEXEQnX2xrl45ZzRJ3QfHzKyv9EvUYgBKbnRH4E88Tm7YoFsufXG5rhQd0ug8cwnr4VmeDLkWRCKpcenEa/BfgPRj+wER9M0dLhpb8a6S9m3/mkxzM7Vjp6KdyhsScn5gqw/PK9+rZtK3yiGYIcAkW4gLBpesJmunM0ZZclgdRkfExL8IL+0PfDQc4rot/U0FC2zLHW6mCYZOcmipa3ZPHSfaylGxNERZX+BxkR0PQjhf/twL2JvTkBEyGHNUmpQQDJQWW4gB64EMOyS9S/4za5gk6LZHG9PU6dtnKYpN/NTK++Bx2uR6JKs+J+josHDTE1OANA3jOGTOwA1i7ztI8HPvccm1Do1Rdt0ngn07FlJITxttPt6RGJqXR35OtcRHnOyFoYO2MI0eauleUbry/JfgYhX0Zreurlsqm+Ro6NZ8tTermLSW961/rH0sWL47t97FZjPZuaff2KEYsEMZdSl3mZMk76J6+EzwjW3c5Ry4bsI19yDtb1sD3iDQru1JvaoIJTD5P0QA1W/iAiJ/LOlUmTsWO7W28OYseya1YGiJBqe1dL1vejSscZ1+21UeDkBViAdFxSnlDfFRf/5aUQnHOFogn3tZ4aA7lUZGiLaHTsedqvsgoiX6VhebKTfazMX6XunHvdRZxQFDXLLT87mC8euzFXqPdXGZdQ0Nijd8kBnJUZemqSFkeIq0srzip+UsWwxFq2Ka/61nMGQihkS2mdZR9FjFPWuHKyFfj2XGSfGO8yoYYQCsvKoDdtz5kWKiMCdkayVekA/TIDV+Ng6RzlQtVqwjVjKi+Zp+g6UjkTmHWrgi1wutUkU4ZVltXHgAUu9LB4tyjCpa5uJHGTA8Q22Lh4CO+IOxqELyGSH1JDsbFjCUWGRzAzwmF7MHJrABozZVHcjPfg+QoZ40unF+xjkh/o8N+1Gx9bBzXqbbptu9TaXLXzunIegBwp5A6i7UKoaxY2z6C623jLNz3t5Fev8Ay6GCXjpOG1z7nMSVAWgbR7z+yVmlzWRK+eZ33PcnB2pvNm0vxE757LYZDIwH0DDCgVnpiF22k4hgenavirV8Ub4LP1jpNkm7gRv+SsrLPF92UiscwB2F/elJYthQR/3fNyEogEJBxoeD9cNj1Xlmi0vKjwuTxPGZFxxxJHOluMuTkeVAphMfl2LOJ73v+Sv39r/3C3DR5y0YIOkDhc0jvKSnexomzm3ZzGwbUPEnkqa82F2cp4uAC6HAAJQwoRDJpQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KmP9NrQIJYCsDyl3lIbyNKbL2Ul5jAeJe0uiyS2c2kvKOEr4BQgy5HAs2cJhnK6oNBghLsIdc0U8dgJeQ8bi256o9eRytm457pW4qWoedOvvu8rmfX7QzKwNKDU9bAat5ZW0KintjUQt2afgjOM4EdhJMGPT9MozZyLqB/0Y21tyZtjdiuI7Myxr56M+NPUsBQex+M5zFF7QtDzX3K1ISCaVi13/ppcIVQ7XUZ8MvDReBCuK0j3Tw+kNcC7Jks6sERlUWzdwtwtBCxEVVfColo1GQ0WtYLCceV530C9Oi3vv5CvewNHI0ekACXsJTVvRLLzlK9YuudiDbZbCQTc/km0cKTxo9d5IO/2kB+nMQJj+/FIfBIlhMpLsv0yRpYdE9Tct0fsyDtsm6TNUVOMlfpdWve6/RRWx774tKryJJskxAlHFJmF4ZbC1NVIUIkMtJHW/oOwdfUrZtvsrUauEyBgUbLdtD0O+inThEEcho5ESi/AerxtV5LphRW3H+fL3V58IqpDlG7mlH093CmqUXaiNP64BLLYmjNLPJ3GJ9GzgINqAMI11I/8BpVRsFUWUGqTzdYjmz3vsi5w5kJdYWMkTqZGNAQnEA27LBbqqgCU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43ce4178-d3e3-451f-3f7b-08dd0317919c X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2024 12:43:11.9520 (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: KJKDypNWb+hDNkK3IsnaJsQtFBWLWlaYdibVM6q1Erk/8ri471G6FkGXAeKt7DPW0Vqx7wdJx/LrJ+mIPnkZhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR10MB7974 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-11-12_05,2024-11-08_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2409260000 definitions=main-2411120102 X-Proofpoint-GUID: gPXgOeXhFCeqKJGO470n9ayF1rLpxr2u X-Proofpoint-ORIG-GUID: gPXgOeXhFCeqKJGO470n9ayF1rLpxr2u Set BLK_FEAT_ATOMIC_WRITES_STACKED to enable atomic writes. All other stacked device request queue limits should automatically be set properly. With regards to atomic write max bytes limit, this will be set at hw_max_sectors and this is limited by the stripe width, which we want. Reviewed-by: Yu Kuai Signed-off-by: John Garry --- drivers/md/raid0.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index baaf5f8b80ae..7049ec7fb8eb 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -384,6 +384,7 @@ static int raid0_set_limits(struct mddev *mddev) lim.max_write_zeroes_sectors = mddev->chunk_sectors; lim.io_min = mddev->chunk_sectors << 9; lim.io_opt = lim.io_min * mddev->raid_disks; + lim.features |= BLK_FEAT_ATOMIC_WRITES_STACKED; err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY); if (err) { queue_limits_cancel_update(mddev->gendisk->queue); From patchwork Tue Nov 12 12:42:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13872187 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4D9A1F7792; Tue, 12 Nov 2024 12:43:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415420; cv=fail; b=iBAToblf1Cv6c4P9Km8suHTvsGacxpCix2mmT/Z8os0kHb8wdIVhFwRsNwGNemPlj87XRQtnHJHnlHcR3gccUYVt/Y9qs3dlaQhOpe3+PBNB+2HTBqycoeobG9zrsqN4f040yQzQDoJGvF8uzg+5j/j+j7kPKusmYyWJTaPRUFE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415420; c=relaxed/simple; bh=vc1zd6xqSuDoOgpqU7t7YHAsIM8s/yREPcDQu5N7kvc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=pZxsYZWxonBy2rqeXK/iu2JlKsTSkz0o/Xp74FEXArlnkWSV5l1I9ShRJEnawO/bbAVf7dRYHsv0J6ToDf0MbmgAkWQLH3Zi/MV2gCf9he1D5u6CLwrWViE9ObMfXYDr90K1saX+GIaUuyjuQkeB8lCw87qjCvOtkMPxA6Fx624= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=kCAduph8; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=z9RHnzSq; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="kCAduph8"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="z9RHnzSq" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCfjO5017463; Tue, 12 Nov 2024 12:43:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=oaRzKFZjn1tQC+YTnJoTkVX7wlS4OwXrz97b7bCItqE=; b= kCAduph8M6ozdWL3qMzzbKRlIFYAFId4dqYVCCBa+w2wWNapESf+8bQmM9/PyvCk K9za9y4LXjy12Pnl6dATYJlZVkuT7XrYgDcTonhGtO8UjDWfmjsnnXtGSFLWFWoq 1spBB726IXeTHTp3WWnyx5h9cCVW8iesU4qN7/JdkVm4VCJ+8Jd8Ap9T1GSuEh9c hu6VT/vJBS48/7sQ4HR6xA4hyNS1NOBQ2YKEeoXc9X65WlhGSlPixvt7gAUIJ6C3 JxSQKa2M21Kx4Wr/uIUYhNPC0cs7oUUFr7Ol64UWijFPPxYIweJ4D2Axj/O+ba5K hPiQDI4YLPVUq1QoW9MvOQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 42t0mbc8fx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:21 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCX4Gc005677; Tue, 12 Nov 2024 12:43:19 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 42sx6825sj-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:19 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ospleb4Owlvx9QtXoi1AgIZhWpL+KZCLrXD9GXA8e1gDzqhVR75DKdWBK8TsvlFN1pr3eSbFZkEQlyHSE/tn0WaAGtC9xgoU8yykHK5tN5264Jss3vTQL45E0Igy1QaDxegJiBZwlpjj89BTPfV4VegGl6iZ3rJgxF25E+tMjJnRVLdtHc7JbtTuNQaU0Jrb8LQohxnyHifTEWdW+2FGzH1S2f6SCpLKtZDHEn3ZWPRk2IMYCyDYULtlT/L55FrbkqI/svPlFqfX39FK3clDcTADN5qbx/dS8O8xX0SX3LeWoysQ5k5+8jwVcIUwJLZ6MvAJ//8hEK+PE764C4z/Vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oaRzKFZjn1tQC+YTnJoTkVX7wlS4OwXrz97b7bCItqE=; b=emy8zKDHpJs8g6aqOdzdU7/OGAb5MuXsT1LvdjfWrTH3EYfXp5UU1HSWkiGgIn0o7DkhxRcp6Y3OGjhooFsBDCQ0LLbiTtYqTJc0ZlhyXVRdpJ+OA+YIerfeAmhEutCWndralillpiwSYkNc25+eThd2ahM8B9GpnIzdVrDHs8gvDWVEhnCbFuIzP+6iGHo3RdgUm/ugtxySdfJdgp5GUPlE5AD2xjxdlXouH898WhtLT+QYN9DrjFC7+DcRyd9U1YVT1Bd+3e0aLpm89STQTF+yewaW5cOAmRIgPyTJc10XudwprFLo/yLtkgLOnWjCOubYkC7ahOvCVAo0A3osmA== 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=oaRzKFZjn1tQC+YTnJoTkVX7wlS4OwXrz97b7bCItqE=; b=z9RHnzSqwIe6zU4NOYUNMuMAjAFiqf6nr4VWWXGBMnTqP8t1pAHkeltUw8nHwNqPQ9xn26b4GG+L00iYvih3rWRGzhJYWiWmcfC5T18ARDdfVk1txKHXcukpqToor4VAhJ5ycWjNRsVqyzkTbk7M5ZWLDTE97rzDh2cOO0RiI6o= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CYXPR10MB7974.namprd10.prod.outlook.com (2603:10b6:930:da::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.27; Tue, 12 Nov 2024 12:43:15 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%5]) with mapi id 15.20.8137.027; Tue, 12 Nov 2024 12:43:13 +0000 From: John Garry To: axboe@kernel.dk, song@kernel.org, yukuai3@huawei.com, hch@lst.de Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, martin.petersen@oracle.com, John Garry Subject: [PATCH v4 4/5] md/raid1: Atomic write support Date: Tue, 12 Nov 2024 12:42:55 +0000 Message-Id: <20241112124256.4106435-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20241112124256.4106435-1-john.g.garry@oracle.com> References: <20241112124256.4106435-1-john.g.garry@oracle.com> X-ClientProxiedBy: BN9PR03CA0450.namprd03.prod.outlook.com (2603:10b6:408:113::35) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-raid@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CYXPR10MB7974:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ac977ff-eb07-496e-fce8-08dd03179266 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: /rCAjSI1TgjPnD8Fx63Fl3nLLhvo+R5GY6/Hhf/s0omUk1DZnErr1FLLhG0El3XbaxfFeTiDtCEQkaXE5x4QuGUSnF3rP4UA14KTABW/IQxIwf74dtkBmREZxFz5onAX7YHRx2ZVbmm7st9XHVOLq6BG2+Hu1NjmfRCorqeVxe6SHusSmcf4WdiFhYGRHAg8agS6Gos9oIYfYiJqWy4zGYyNVoEnz9HZ79sw9MLkWui18xykG9J6NvZRhrCWnTM47V8jsIPMnjxO7JRsdYuIN9oALbMeC3hdh3/hvIDUVSbVMG/YQqtdT7l8VeaIt5yjZpPDS2HQi3/usxIge9EkB40nzJNno90WqqV30VftwrsWvAtM//HBHSgaXIZtgFmDEVM/OA1dK/2CiZkF0j6EpVLljXmOhVKzObuHZLXudVOFXAZZdv3B4urIPR0Z+U9hNok6tg35RDen8DQvsmDF6D6XGobrYlPjh9uDw2ccCfYZpkLwx7XJqiY87QbFpGTh/0yZNPFM1qYa+juhgSQRCuOetM+Qqvtnlzym6NH+EgZmdZJFIwGuvxii7MRCChts0fX/Ho7ULBBtBskJONfXInKQGk3ySMtGyZvmPv8wJmgYF2z/WgnPCHAVm62D7U5Jt8zVdXWUp7npLvDxVCZdx2748RKjXaV6ShfxJnKBbhLru4u+es+lPyH8HddOASFPNudNKtaoebPmL1iYgtnqMGkgzwYpyogyTR2aTfC4jZZVG8EYPbdbCW7rP6RihQUZwAZj4rQrNpNZHSFu6XtJ7PbAjkWQMqvCxAYkie/Z/s6H9O5bnWgEXbRzUm2HoMiWnA0syI8Jdvco/JK/4hWqztZ1bp9oksEr+m6/whWA6aYTlOrAtUnJrRnwqAguON2VJrZCOq0y0izFR/xOlaTDEkZRJOQ4YLJOucrSRLejv7oEHTjV1UPzOIR+xGwBKj94trTcrkXN/SB+/vq9TfoIcyo8LZWp3tFNZPrc6+672sjGEnnddQDWoi66LTb6eSuCzIREmHND80LhdJ3kqlAgzjAMCz9wQ+f29mHqh0/X22FvRvsaXJnCCaz7RldHBmxHFcccMDr1DSb9nwzzBxgK4u3cWSmftOB0FQoVY6nUqhzLLWZHYJMzZPVds7obGkKjGiZloPcQBu2SxRawuyDTTtBSivF0gI4CI+mSRbdAgLa2nuxIRuKrqEMYfhmKFrKU/fNbGSFotuEkRrbUJLTzPDiiYVLW4m151OjSD7xzrudrjYMKAD4rS/TtTl2blSR9DJ3OFJ31IEYBEndwrNR5fI5eNoB39YWe+Lx90I0IaSdgJDfN5DigvDByN/M38Jza X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: y0mMU3x8p6u0ISZ9pXY8Ae0e+8zqNpPN7VnL1na1RffjKnGZ/HbwRXFP1Vd2IhP9hXU7P6HVr3tKyyhENAqPxEYD4pGFmqTK8modt6tpIzDhq6B1Pc26pvk89cdXxAt39hDuu6HpEFGHNTq8nkJ9d221nSg0/NhbUM7iSXxFiBVXFp9uemN5Kax6pxha0ug/qZ6XUzpyJJZ324qDcB8/84FVVAHKwwJkhV33uJwBW8pD1QhsHcH/aYdeov0sMA5iNc6SeX+MfdaCHu7BuCRI91YYxrgrhXMbCn0eNHgoqWECv/HKOOuV+whskW0WmyThOG0Fpaw9lGPSg0OH4tlEJodHl6shsNArFWcEnXKynsyOjEWpReYD4WqyIVnKyA5S1mB/S4Di8O4Q+JjcFlOlVe5pkT7dMgGm0Fo7WU1UU+oUV3KCauNGFv35pL2ZLjjo8/Op8Krb9Z0XQWuHUUysA44w/CMKoQqJD7BdKcYeAtukxYtFPM+Adm3VegpR4ojTRUDnbWrC3Cekx/CaXqUHXaOjLIDiyh1esKvSDo0v11TdfW10QquRFscphmFZV6MqtTB23EIgeFcmuBkKFPcipzo8dbiUd2eFMwMBzrzGyLRFiwZY+yWrNdS2iRDl0Sj9Uk0I/6FeJqJdHKBdVFKICf6MKOXTQPxkLU1xpOjTurmZxWqhSgwmrYFWEjeLKeq9oZM29urTlfb/bmfVrWV/LCpzWXoVcOQyTwikkKq1fX587isGOj3D1iUG4Rb4ySR2qHGMEMO2/2S1cWZ0ths9/DnF5sItz/rMc5OzGRAqbzfxd+JrltmJaf4Z3H9YQsnanP8Vz+YvB82uBSTh75BBVTAfQlBLNgEYqgeDTCN6Hi0hEIoBn4ODPqKMUei78TZfhHBMH2R8ycGLF0ngoiIERRfFeiIGZFKo7ZZIDeXdD611CApmUtPZG5Lkz4CJs4ACYknuUraaDs/tHCUxXipD6lH7Q6SVHRwmEsOiQfr9hIVACtIV2ziSEvYMQxYcmZI7lM3ss4AtjKbAUrCvtybmxVvDJ32Wm27q9BcaKPTYD0vXHzTdlWVef8/kbeyv/1HGUYB+GKjKzaDwwT+mXXoukEU/vf3VJNJqKJQ6lRbYJpyWNwj1xJX2AC+w2WOr/Gp54N09on48agkh0j6MxpIWajypZeoxUMTbQjkqqzNtHy8Bt2oz9E9dPmxDKb0zU7S5qUxLC6suZgR6okj8RuEv9zGHG4ZJJ4Rq5UJ9mWVrnz2KJhOfLSeP56Mruk7yUwDFwnQb1OckWIEAVD0ehV4/Xjd3aDog7Tr9JbF4UBm/vHGa3xsPyEKCm6x3c9o/7VEbHUcwnuy7ygZJF6+cqj0tk62rM5PX5p/bpFglxIQwRHoP7Z6I6p7/D9YwNeltN9gJWIHfxD3h8fWDi1c2KfjjJL4hRtvK8/uktntd+4id2HyRL8U7CgZmy2Mq104DYLvajnJBOrN2NT80c5pf155/LLeppPHAJyxJgZvzAzefpkY6toC6bT9pPBZd4Q1c63m80zOKnIoncB6PzHXW9kDnToyrNY8fVqn+hpSSc7XugE91Xz4j89IZ/Xkf7FGlN8IYc5XvI1CjbV7UhkLIO1RS7g== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: dPH0SQisurWxQhqVK3gYVZhIOluMAcbzlrbQBZTs3L7fLJgS3IAqlY/kAAl6kpugQGv5wiXJnoHZ3bMEyJCeD2HEGLfeD9hWwXX0X9bYKBbEzcTh3Zg14Pc71/B/hPPTHQd1q8kwMCEPrmF3dAD0jvUdirnQohZ/lVK2dwfEN05k5xEG7DAiixUs7iLhVocmAFpXWYPjJ+naPtt4JRbXZb/r7OyOyo6ILnM+hHUOulX6YKX4q8qunE1kcwIEeZ9ipgSzhQ/yZo+exebALWurroCFIlx0XYyAtgpSg1k9LB9N+E7gBG0WJ9SHO5ae9vf2TkDvcdug1Gcg9kTcSEa4snXC0+Ch5BXnpb1o/yFd/8DN6uyGQ4jt/UdQQTcoW1YBb0k2Z5I92gR5WFgGrMHRmDhbifTXTYHMdsE8aw7Ql2qgNUcEGgPo9CpMPd260IP9nyqtqz2hdNa1ANoUYpuy3pG/Zn0e7VPxuiq8rrFhl9Ac6InFp5BakIm/OjDp1aZBMV99hSFe4NA5UWgHJFXNawf6KFJ9AA3G/1Ztx/GopPD4IDrdiAsQlpv//taKbvwLGFtd9V5OrI18Z44km5DIHHQSHFwcGrMcOMNMGuqUwck= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ac977ff-eb07-496e-fce8-08dd03179266 X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2024 12:43:13.2743 (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: 1iU3qnNmD5VAaYJT/isdopuzxmabpLH5MhPrTw2L8pJcxPCu7xAjAK/2xh0d+SYRyQUvt/W/ASLeNliWTFulzQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR10MB7974 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-11-12_05,2024-11-08_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2409260000 definitions=main-2411120102 X-Proofpoint-GUID: By9QGEQKJ-_UNziqKOkStnh2eTOzVxZC X-Proofpoint-ORIG-GUID: By9QGEQKJ-_UNziqKOkStnh2eTOzVxZC Set BLK_FEAT_ATOMIC_WRITES_STACKED to enable atomic writes. For an attempt to atomic write to a region which has bad blocks, error the write as we just cannot do this. It is unlikely to find devices which support atomic writes and bad blocks. Signed-off-by: John Garry Reviewed-by: Yu Kuai --- drivers/md/raid1.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index a5adf08ee174..cd44b4bebf49 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -1571,7 +1571,15 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, continue; } if (is_bad) { - int good_sectors = first_bad - r1_bio->sector; + int good_sectors; + + if (bio->bi_opf & REQ_ATOMIC) { + /* We just cannot atomically write this ... */ + error = -EFAULT; + goto err_handle; + } + + good_sectors = first_bad - r1_bio->sector; if (good_sectors < max_sectors) max_sectors = good_sectors; } @@ -1657,7 +1665,8 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio, mbio->bi_iter.bi_sector = (r1_bio->sector + rdev->data_offset); mbio->bi_end_io = raid1_end_write_request; - mbio->bi_opf = bio_op(bio) | (bio->bi_opf & (REQ_SYNC | REQ_FUA)); + mbio->bi_opf = bio_op(bio) | + (bio->bi_opf & (REQ_SYNC | REQ_FUA | REQ_ATOMIC)); if (test_bit(FailFast, &rdev->flags) && !test_bit(WriteMostly, &rdev->flags) && conf->raid_disks - mddev->degraded > 1) @@ -3224,6 +3233,7 @@ static int raid1_set_limits(struct mddev *mddev) md_init_stacking_limits(&lim); lim.max_write_zeroes_sectors = 0; + lim.features |= BLK_FEAT_ATOMIC_WRITES_STACKED; err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY); if (err) { queue_limits_cancel_update(mddev->gendisk->queue); From patchwork Tue Nov 12 12:42:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 13872189 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8232B1FA85F; Tue, 12 Nov 2024 12:43:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415424; cv=fail; b=d3hlFUchN8QCf7uTHg0DnGBmmc2l4UoJPpnHvJG20IWgTq1oCUZkJEVVy9t1omd1l17iOGGULp5V5nmG9LVp8tvOVJyuEQAaOMfMVWzh+v4y+5/dfmpwdeEQQ8HfLTqRZI9gNtGOxL0J8Nf/ZW5f0arN0lYQZFdLZqLxD7yvd/s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731415424; c=relaxed/simple; bh=Xz9Z30ZTkfYi0F4uiVst9jahQNWzKKQNQ+COZh2wCK4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=Lb9snwmwASopyPM+iogWGYb3i9Obqkgl8NsBmfJQWWN1MjGsUXHUyfnGcorrSsoZpzuqjfgJadOIUrEzOl5uwgS7JmhN+tYrc9LjuDcrT32d5wC98sXP/yDKX6W+MeC5uRjl7q5Z9lncL5yWVSKxjoJOsp5RYEvWuPv6s4JDbhE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=gLq2cqow; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=yS52w/we; arc=fail smtp.client-ip=205.220.165.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="gLq2cqow"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="yS52w/we" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCfiIQ017443; Tue, 12 Nov 2024 12:43:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=eshDoH+qO7lGHZ9+7QXypbf1EQFLEYIUd8JIJNGaL00=; b= gLq2cqow/x/mOwvxLPT5s98/FGyXn2fJlWKQc6euHkQaZ3ygLOH/U3EkEyIIeqrE RkX9aifISotS4My0njVrdt4bAlnxXJOsPXHltbmM6XrhGgVND0koHjh/E3D9FRsL e4O8A9qSblPTcnA7vQ0RgML+NbUMbIHwVEYCAKmAU9s164EuplRmCs7wUHuScGHr Y3e4fabRD8yvy5hfaKdfLLT/8H2D0b5eY5a9w4tdpMSO83w8XW6KC2gFQwxDjmL6 gxaLUKRWMcdjXL18ZmmqF5L4/pEM3EKHi0MonKDiV7g5BCdZb66aKKYFNqCBQxiU 5KGAxOixQP2g1Thw8yjlaA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 42t0mbc8fy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:21 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 4ACCX4Gd005677; Tue, 12 Nov 2024 12:43:20 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 42sx6825sj-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Nov 2024 12:43:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FnkLPwz1M3lHMe9Prh9RnRK+7OvA2jE36HCUcogyL6rxSJeMLSUaKFWU/UccA8Cp1G52F4TaxVlCYaROyDhEiqMyyJ9N4kIUNPEpy8LW0vJVUOFwYx1ST55+MxSCZLF3k+MmDoyrRKQJvL/Tut5qaKGcSz9o7tCPkGgs/v3hERs+psIMch0r2WRq4kHZFqhpiusZB7u6E/iLKWLcWkit1lNt2rUK5yu1HJ/nf1MY21BSJmlBQD6q38nUz/NpUipxqVdsFclEwocDXw3HZf5B6Ky5mcBc5MRU+u3BTFvHMnyAU9n9QQGM5hKb6Iw36gy01oGbsvqvBswWg1OXFsJsFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eshDoH+qO7lGHZ9+7QXypbf1EQFLEYIUd8JIJNGaL00=; b=p1Y7W4axd/upBZA7FJWZWjACbmj75VwCKtsxsXbB3kPRwzDoo3+ehWY9jNIcW9FVtAHzZ8kwuWcgwmG6/h50femEDSXpmCalzOa6heNhYJF7uq/fpGIWmXt6RkjmrvT6x52qXcNhJI4ALbE4YYfCHtAgmhAh3RE72LUYmqT1MuvCqHPa6l7TCJMcS+i+UTeXsmYRAIThcDWvwedLVjoTwN5wEg7CyUXZenoFpe9zDzcyAsss3QCk0gRKsXbxxY788bqXFEWzq723x2a3TcPg5lo6COWy9d1lOxdjaod9L4u5BkVbWni7iXJa980IcVri2jh08hoqItdT7d5HORWbYQ== 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=eshDoH+qO7lGHZ9+7QXypbf1EQFLEYIUd8JIJNGaL00=; b=yS52w/weZ5EMRGwNHYkXbqyKAiOxEVDgYSimioJ42pwCoQ/5Kk1Uc53mxPcURzI7WIiGsUZbDatROq9/aA9Li+cK8noBcykJRLKgX/w11MxHI6uq3YOgodaWcUlg0AhqcF25cy44qSC5W1rjz+vt5x1Us46fbXMhErYBHnkDw0k= Received: from DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) by CYXPR10MB7974.namprd10.prod.outlook.com (2603:10b6:930:da::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8137.27; Tue, 12 Nov 2024 12:43:15 +0000 Received: from DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088]) by DM6PR10MB4313.namprd10.prod.outlook.com ([fe80::4f45:f4ab:121:e088%5]) with mapi id 15.20.8137.027; Tue, 12 Nov 2024 12:43:15 +0000 From: John Garry To: axboe@kernel.dk, song@kernel.org, yukuai3@huawei.com, hch@lst.de Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, martin.petersen@oracle.com, John Garry Subject: [PATCH v4 5/5] md/raid10: Atomic write support Date: Tue, 12 Nov 2024 12:42:56 +0000 Message-Id: <20241112124256.4106435-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20241112124256.4106435-1-john.g.garry@oracle.com> References: <20241112124256.4106435-1-john.g.garry@oracle.com> X-ClientProxiedBy: BN0PR04CA0028.namprd04.prod.outlook.com (2603:10b6:408:ee::33) To DM6PR10MB4313.namprd10.prod.outlook.com (2603:10b6:5:212::20) Precedence: bulk X-Mailing-List: linux-raid@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6PR10MB4313:EE_|CYXPR10MB7974:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a9ecf64-e6e4-4f42-2cc9-08dd0317933f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: 3mD62HkxaW0RBTuQ3rpRBlqe4hClDiNDGPSGDHQrYGrUwVreajtwbw6S9UmbzZpliniKuW7Vp5BK9eSDUwNNd8nsg1e7TqWpbvz2P8s9g9liWXaPveJdTgPlBnLKGct/9QHDiPYZ4hXK1GpJBet9WKmBD8emST21B2l+BiboYE9ih0eH4kxPR3pEQcEhpBQ0g8tONKMiqxbDfqJR++jgCkrB+pdPhN1M92nR+RQscQNVIq1vTOg+zaGB3DqZb2eLnkl2Ot7oHGoKyuIoNFFvg/L2MkfDTzenZP08DzeTJ17La0N9jo8xLKICAJzJKYw5WYZs27+lHmZBdtuyy4Y3MppP+rbpan74I4DzL4NIL+SP8GhLpfI7RLgVFuLNnsazCNnCiAXzlNU2x7FykHp6pA9mxbw+XgsEQVyudaFwjUdUYxCpkQ2Wf5I+BUyUIewGYiDGbmz8Gq4CIPAOoLm7B45eCYyN5sRaK0LyIVMo8gTxGKzn3Hc96uuCqfgO16t3tpUgT5gNUP3F+TEkGXN8+4RSLxCXcRvaX1CDlO+rUILRJL/kUnHv/6wxFam7Fppahr5vxmA2Y7mNLTp4h3HqvaFDnUDZEIELxEMorjAp/6a79GXoEPpIwxP4pjhvV991eVwzPNy573OzoaFplyPZDh6Fnpf5g3/x1LX+Y2zIpydMWpd0mFWXTPdw/hsnTeMaGUv5j9lz5ej9Lb+OmgzzJyWnXeZxXnPOzmrbNsbYhrra8KE+koYFa9EW617MwjBFuLEdepj6ygde3T2UrlTyAWNYKBbTTVXZ1DcALILyylI48uYOdQR2nCQWjuM61ulp2OPXainSZxRYmgPSeMsoDxoM+0YPBC1eqQlg/5oPkOwBQ+7l420Psjlu0YG3w3nJ3Gcb0UNmHL3pWGp8Li8DuO6HmyVVclpFmUijRXj/lbnYAywQPY4OMoR7Hy9ciH174dQNLNIG6WWzu4xPexqcAkmqqUSKvBwc52vZoI+/eKtC7gdt1n256KilCpaVK0mzO9ObZuVB+0jrX9rONL2CpBYkuvP9QV08N2quz54eJsBp+o2vvXo3aWqmVBrAToxdi6PlK1gElCaSkmVkQN/tN7lh4CB6jjf9DHC6ENqOq3sdUnXiaO9veo1hM+vxFL0L52K82ex1QnU9tHZKwXqW7/+GbjK3NvUiLfYMXurTUnZlCIpxdh9n2s8ziHaSU+zDWJAkVWA+wylvcdKsuMQJUn0jgZZd4QSgxu0ML07/o3qzxmyvk2yRfJ/zlYj6tt54qtOIULW/uJWFcui2Y68BiLbwM/hnyyaer9xCEoi7wSXh035cPNCgu5ExjRzmnRwq X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR10MB4313.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QAepNiDpqA4t0Et+r52ZRRz2sV3PfMputBG5LUlq6I/edRY9uYCwDcVePLpnK1m4vpBsLTjnPPdQ3pdEFa70VPkXYzBY13rwBOl5PCNmfE1c8Icqi//kwk7yOEhw0/+kQm42fzlUIHGHL0ROy+Hpl2IvZTJIdUI228P8JoP8l4XpGPmP5s6XhQNN9sweXbiQBnCYWlzQO6TXJ4m2FtYZ8JS8hzFEGIPbeUVo6S4mFYZgusl/ESk6hB6dhAIrvAeKqY/8nb0pMk6jB3vcFLRR8rK590LbJevELkxE8RSXpx1YhTj5DTiIE+X0uLTFLRkXiB1F8GtL9eUDf5Pu+vK9O5OnILwrc9XROYbk5EMMFKJQcNEe4/cVaijCdUy+Dg4JMVohg4oEm06SKt513tGzw1nRn7nQz8sU4CfYE7W8TvoYbVeagP+Qb4sTp4RoFUzSDfMQf2rKCAdp72ewD7R8llL2a5bRaQozYa0hbGy1NT4pJAEDYCFFtQFyCxOVyARN21zhodEeBdy2DILtrfL9tDc+G1/+XZE9L9lFC7tv1vHqS9z31JPPIlY2i98fArASBmN8/j9DkDX++d/skYYMbGsemQkGr4tU2aKrQKAhTJ6e7IUkgM4J24VUiUMpHx3OjgguXAtgYcwQ5435Imhg7dVLyM5AqoWKEdEEqzzVOfmiZpcS9AOKrV4ZgrDMOy/yOjOSLbD5zuTfrssBimgFVlW+9AR/rExV2vx5NUwjJE2ZYuU03UPmaFQ3GccpnH9/jBPNY2bBZj9SQzAWG2jfLjRKfj5NZueD9KlAfZKNL8Hoa+Y9iC4PdkAMr1qxRVLBdd7/BCYQvgNqd54XNnsPCkJmwN4DQFXU4SYed/CGDp1C+jtFct4WMsdRw9wbxfc7B6QU5Z+Qg8kAHD9t2/+QdXtc4qIUjr+nwgqyQTd5Cp3byvQE7uev1d6ag+zQi5E07XnWxEEUABbMcCKkmMMcYHihJuhIwFQ7vVhZmDOaUbta0uh/EueP7kGNBMdYrA1t5VhAipV2C0oR4q20V/FV0lwVksXVPgc6Yo7DLl+2QF2K0yt3uyMOOqJL1Yv+uMrnp/3piaArI/GSl9/WR9TZWLYk6G25KvvvqZpC69SP5GiDP/b0F4sWbXy6OkH2TLv93nZXuWKBxwLlwl7aYDsvXJS9lDXez505l/QcJE7s71DobLlZrkRkVO4UH1Mm8V4PXodXHSgIs8x5DS7pDrB8N04GbcvAYLDXAtSxpO0q7kjUp8kSWefpcRYoOyn/Apm5JcbaQ0BR2luRFTTek0OpCTshrIS+7kNUzu49aADi7AESxQ9+GaukeDHn6iHVsTsV+M0Sv7N8eB1C7xi7lmdy2GEo5pBrhsY3sAXnHQygXN5qUk+g1mnYfU7vlhQHXkz93850qx5iBvfBf2R0ZsP4iMKY/um8Et2CcUY5pE60KoKHrQ1Lxb6f9Dc8w0Dq29H6arX2pI6ikjuqrNKwHwLLoQafXbQeT7OjsZTGOS0p21NlENzfLus2jeHS5SHamp5xLG5brzd37u6X914dBm5MfzSl+EHx19cP5qlrXrlpY3OoV4ZT/twXO/9whXbUaaJOb2au5xT/nuX9NRENvFS9Jw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Xiuvxni8YMdjQfBLvhjQMq2D4yMVAZNUj5xdYErkAdfpV4Udn1G/t0JdtJ08IJdnjUfmfdRz6W2lyryS9vQ5YOie3PHcAqL58cdTfL3ND3tAlASQtU8s4RNs7id1mqp4U8CKz22vRuTKFuw3fn1AdUaFo1oNnhPJt058uPIHfYZAJlGuJz1DFHsZwkgxr4fPv8ljjTgOAKdYDuxWc3CneSOG1LyssbEyKI5MHbsX0giLVRPKMxBvZH0/JwkGlodtmdqNuCG8IND4nWrTO5QWZdvdnEv0UELYIAr6QNiiwLLFj9w55RsmSrcLUJc2tJo6te85hVxrBv6zjFYaPfOdcCcMA6Xtscc5twomv1mmJivsJcJ1VasZpyMAfnL9dk6dFbcBbhZ3QoWxTmNQ4cFOdtNQXA2KPM938o0/EoXVmE+1KdG9Cg+4Vs4jFhfigAPuRQ1OXXRjxD5Zf2FRnV2sz6KDcX8Wb7JtRbG+2PiiuooOmOqHFUH4HjOmBxTwO+LsyKocQKSLat6L+rFVl7NrGHBDhLRy0kUmbAVuNwEf8JrW8iZ9o2zhFPxS0m597TVPfmwlcoY763xibUe/MmUc2oY1Vd9iJ6XNnQEZdQzCwn8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a9ecf64-e6e4-4f42-2cc9-08dd0317933f X-MS-Exchange-CrossTenant-AuthSource: DM6PR10MB4313.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2024 12:43:14.7637 (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: 0AFqo4qwR7+4a6dnf7VDhC+wPWv/guAkqLlxR1FcloYpFud/NewfBe1tWcMNBb+FXlCIzLDpzYNPFz/DVp1EUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR10MB7974 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-11-12_05,2024-11-08_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2409260000 definitions=main-2411120102 X-Proofpoint-GUID: PpDx4cTViuOKmE7w29141I0ZQ5RH0JON X-Proofpoint-ORIG-GUID: PpDx4cTViuOKmE7w29141I0ZQ5RH0JON Set BLK_FEAT_ATOMIC_WRITES_STACKED to enable atomic writes. For an attempt to atomic write to a region which has bad blocks, error the write as we just cannot do this. It is unlikely to find devices which support atomic writes and bad blocks. Signed-off-by: John Garry Reviewed-by: Yu Kuai --- drivers/md/raid10.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 8c7f5daa073a..a3936a67e1e8 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -1255,6 +1255,7 @@ static void raid10_write_one_disk(struct mddev *mddev, struct r10bio *r10_bio, const enum req_op op = bio_op(bio); const blk_opf_t do_sync = bio->bi_opf & REQ_SYNC; const blk_opf_t do_fua = bio->bi_opf & REQ_FUA; + const blk_opf_t do_atomic = bio->bi_opf & REQ_ATOMIC; unsigned long flags; struct r10conf *conf = mddev->private; struct md_rdev *rdev; @@ -1273,7 +1274,7 @@ static void raid10_write_one_disk(struct mddev *mddev, struct r10bio *r10_bio, mbio->bi_iter.bi_sector = (r10_bio->devs[n_copy].addr + choose_data_offset(r10_bio, rdev)); mbio->bi_end_io = raid10_end_write_request; - mbio->bi_opf = op | do_sync | do_fua; + mbio->bi_opf = op | do_sync | do_fua | do_atomic; if (!replacement && test_bit(FailFast, &conf->mirrors[devnum].rdev->flags) && enough(conf, devnum)) @@ -1468,7 +1469,15 @@ static void raid10_write_request(struct mddev *mddev, struct bio *bio, continue; } if (is_bad) { - int good_sectors = first_bad - dev_sector; + int good_sectors; + + if (bio->bi_opf & REQ_ATOMIC) { + /* We just cannot atomically write this ... */ + error = -EFAULT; + goto err_handle; + } + + good_sectors = first_bad - dev_sector; if (good_sectors < max_sectors) max_sectors = good_sectors; } @@ -4025,6 +4034,7 @@ static int raid10_set_queue_limits(struct mddev *mddev) lim.max_write_zeroes_sectors = 0; lim.io_min = mddev->chunk_sectors << 9; lim.io_opt = lim.io_min * raid10_nr_stripes(conf); + lim.features |= BLK_FEAT_ATOMIC_WRITES_STACKED; err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY); if (err) { queue_limits_cancel_update(mddev->gendisk->queue);