From nobody Tue Apr 7 12:21:55 2026 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 A997E3DA7C4; Wed, 25 Feb 2026 15:37:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033853; cv=fail; b=eQd/os0ONagepZmidPm2y5OCeqr+V4HOnw9ClA98r7uat6sxGlG+vcxsaHjAhuCHGVNpHieDloFkQkIzoCWxKAN4ZqZ1OhzChsrx97OSCQLTxpisxu7jFl8yYhd9YmuxN1u+mlfkEJAnWm9INeMYfHjRH/9DFqh/bcz919Qrmww= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033853; c=relaxed/simple; bh=kqkaxiXP5ENkHdaVbCbeD9/9Xzq/ciNQtl5a/wJIKi0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Le5ydW71c5kECUv0M11WfzYmufOqJCwoJkFeVo/FEFa8bQK8Bom0mFsd0XawLXNpUP5mofyMfre/UNRy2OS1gYPoDLr+C9qDswYhoQ6UpvgFnYrXqJEItdlFaNJVX+C9bTlza3U8AwbjW9XIOsIAHi/hgZxCyVWiDvmjPL5esVA= 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=In8gBJpo; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=XJ8nriNe; 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="In8gBJpo"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="XJ8nriNe" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9u3vq369379; Wed, 25 Feb 2026 15:37:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=LmxpdzNzPgqNnHu8qUc2jeCisRkWcIvSpSXkdVWmyZ8=; b= In8gBJpoNTaXqxnAJIG6yUF4FSqDiD61eYKyEd0d1U7/8DxIteT2RwZ7B/QtzUG5 BiycrBhw+SS4BEGajrRnvhXdlHyBpjReclcTAmjSfpi2zsr4Y4YtZyLYxYNBBaQi QUkTHSXFkfzSkbNKyOEpI5gF7mSGN97Kxu+l6TofQd5JfZDo9s3yLUQHDcrzhV4v bDABfkadzudR5va43oHt7c/cMypBfCuEwK6I+D6+GeBvrUzTKkIc7krcaC7uVugv GUK0ORFnwV3KvfhBpaynb5iSi2Kf8ikNIQmeNiReAnXO3GRt9uBRKRIuDWE+BbP0 1mU38KyaEl3Co1QS6m3eew== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4k5xdmv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:14 +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 61PFWE8r038454; Wed, 25 Feb 2026 15:37:13 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010033.outbound.protection.outlook.com [40.93.198.33]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35nfrbe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NRjwOr1nz0SJ/LkmgcIYnN4QgXUSvbxCiC7AccPUzsmL2LLx+Suj/OWTbqwN36XoAf8v4ixUPiOZZyaiF3yFDanrY1heUR2pEzONLC5cvZIup5rF+lDhg1/wAXlGTDwA/MHHvnTw3oy8CDVwV9hJ5Tk4p75nKoIFOnUI2535VDpRJTH6N+1T2s505DRO4OaVenR/mITFoMqxijSGZROZ+cvPLs9LnxsBmbIv1o7HHZKtea7bH6QwhwDzB+wxrwZMTPf8q9WApbYCbdlw5dLicEc5Jh6OpS5076c7NnBarB0ExzW6uCwl++BqW9WHzKaGc0pqUFYmHCHTWutvv4s0dQ== 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=LmxpdzNzPgqNnHu8qUc2jeCisRkWcIvSpSXkdVWmyZ8=; b=IL7F+lv/w4PWTUJjlUSHTJF9SIn2Mm6IljEWuvaZygCXUEyJXBPmf8rZfZE+Q8uMhH9eHZfzxeHE7SYDsUjOhgdp6SrQfDBtHdQvR0BCpHbN59FLp8ft6Ql7ogevKcly3iPa0O45DrIKlXK6cj9Fw0NQvWxqHqm2P4Wd4G5p/AnKeQI4AuWfnd2FfrXPMidmpQk+U1W/KNRb2EithnkrPDK09JmtSsf0ZcrlblhpH4JXqjSDU8i7Qk4lDDOO0KFzWp2qLa9DeGq/58Jo+31SLLvYHQ6DmSEhveiNMrkAToY4N2RZ44CiKEpoTKvJsY7fCC5eWKvmulbegu2pXssI2A== 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=LmxpdzNzPgqNnHu8qUc2jeCisRkWcIvSpSXkdVWmyZ8=; b=XJ8nriNeBkTilXjAf5YsfTn6RUN56FhSzghF7NHWVpjKjRLHQeKvFWqXzPWyasMe2mbNE/tPfJI4VVDmmspOmRkoMF5o1iIHbRV7QVucEbgDYINs/AO4LCifWC+AhRbuOl5E2Ml/hlyNY7Cxi07xFwqHDgF3+5KXTb2zDqzsBMI= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:43 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:43 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 01/24] scsi: core: add SCSI_MAX_QUEUE_DEPTH Date: Wed, 25 Feb 2026 15:36:04 +0000 Message-ID: <20260225153627.1032500-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR02CA0039.namprd02.prod.outlook.com (2603:10b6:510:2da::26) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: 38714e48-5635-4e12-e947-08de7483ad1c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: 5EyRr/VKhdUhd0VTgJ0rkuqaq7Xko3I0Crp7B+2RTZ41W/ivE6etlzib76w3nlnonbAwb6u0ywJBdpxdQZMd9FTwnK31ofB076lw7ufmlU60dt6XJ99ynbWuEOGSXJIRCEbd3HvUPUJOykRN+QXYUby/OBZvOiQWyGh5YB2mUu0agU1hzjI7acA6oQToylwpyhj25ISDTecqxbKOshr3j6ETtQmAVfvXU9UG/zvj3Ze2muk5+dh0GIMp1scxexazwhy4xlFanQFL3TkRdZ8+OzQxI9EsaJ3qGnMoyNvIQCOYkmxs4uoeVj8LYAgyj7TMTBxuCNOaDAHh24tksofsYwRvclPHe0KhRJlBqLj0tpOztn4l5aGKh1uqiaBHtFO8/fuU6NVXQ7MC80J01t+NJ6GH8+mlLZofBmwubAUK/z+FWhuTQ4thFNqT+xKgwCXgR45qE6qy8BZn6K9+T7o3ZlAMwYuMlX98SQt6Y0V0gYmwPa9eLjb2oluyTvJaAEHyKJOqpZkZN6zQu0tKPpkGRYtFnxn9jMJhME+tsuyhsh4OlrpX5WBXQxxV52shdtpnAuXgS9PlcP29BnZGr0dIs6K32bnqAg+dTgbuIDZ7zr1SZSP/QU3NZmYB10C2e0pQYGM38NQ0KiIX2OLWJGUlSzMVZHuP76AE/I1a3l8qQpfHojsbJuTVKVX4xZgv5PPBrm40ANkP138nPpPbxwL/Kio/QBG2Yai6ESFmMvmJWQs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZC+Vy74dl8Zn9+t7R1qyK+7x0BVHeAkGiCROnBnwu/F468YBp9tIKHtqGi7Q?= =?us-ascii?Q?uBH9o1ssldBtxwJrAc1Dc4QXBl2VXN5BW8iIrw//eGoOvPKSOfBFm+ABQoQN?= =?us-ascii?Q?47Y4vFti1F+p7Ibvrkr77Aye+ZUNalHec/ctRRZ/D1n92QiI2CgFfh6FHXWp?= =?us-ascii?Q?4GNzAuisHio2JMJuz8/bqzhVxDThdeRa4zZX/OQCoWFaI+4HXorsQ+3SCvyD?= =?us-ascii?Q?MSJNKYF4hhwnTi0Y9JvC3qgjK/FwwnHPAUVgGpoxxmYO6Xuie3K7dJxh2oN8?= =?us-ascii?Q?ZzvqisPIfqkGY5PfC/Kh/dRpZ97GbrY+uL25lICbV5pwYlGMGz8NOvQ3VNFH?= =?us-ascii?Q?B7g0qB+g6P2JWX2Qc8nEpyI+BnyC1PfM0Sjljs/ZCb45zzltla6oJYAdaeWJ?= =?us-ascii?Q?Ed5Jd09zlNEfFQvyIR7oq73pjP6WVgsFRbGWzZezJSCQeFIIceSKUtwz0vpf?= =?us-ascii?Q?tLUQBY2OU01vLuq18ftkVz1N2jdPWhIK27hcSei9u/Tbgmd8OhegEBSLyuv8?= =?us-ascii?Q?kHdlhyFu2nigSO7g9WVNk4bcUmNeepeGqfyjArYHcF72O21gXv59rilmUYOl?= =?us-ascii?Q?ZS45G0Hmv15izvrIiHEltK+uXnVIvtPQmMtIZ/m1QIRauhJwNv8HD7qXoqm9?= =?us-ascii?Q?/+K2JYV6UQiJWFTm3VIr41224M54mqAypMUSvni0YTy0vZYCBcS2FilS5VJe?= =?us-ascii?Q?f71Ei/9TZzFgskR2JRPBwOuVWXlTmGVyRTNt1soiPyFA7CYHqVkPLOZL73OG?= =?us-ascii?Q?2fhW1jJ/1O/8qwHZ1riyaQZXxU++2Yf+Bmhmdn8xhn7eRsmJx3xy+X4KtoYc?= =?us-ascii?Q?o33n2mlEsrdYKhZQ5Gqpa0s9+ID9WMtKzUm7DMWNNhRPpzq57H27lcp/P15T?= =?us-ascii?Q?fq3CldVcbiMskfcSuQxibPP3U3s6OaSv7T/atTocAkPoXCjPwr2Tb688UTzX?= =?us-ascii?Q?ODkZm4hp+AB6PkdTXxLFDDr2wo8mBLihEua7UIeJrx/B7dubcsVM9p0B2TYt?= =?us-ascii?Q?WIIhn3gBMzNSWwx9dZsE96rMeebFJe0eorVccJm7hZhoU1biYJVMm68EQcFe?= =?us-ascii?Q?hUwljyB8+vTLwiZ0rJoPqdjtZ2aFqq/tJaZfBJhZj+/OPtDp5jO9WnYnbWz9?= =?us-ascii?Q?CzVjImKI5UR8lEspk6g6VA6wyBAIQfSHa5+5u95volLqkvCeVJ1J5h9MkT5g?= =?us-ascii?Q?TzAfHKndJz8el6iv7Im2cWD8XP3Tp7CnHv1HWd5PGst6dSSZl53rgYbJ1c0X?= =?us-ascii?Q?pgU1VU4rQdPPyezbytARt9EEM7eT4w/BqpM/MMZAhdAjRxZ3uYsi5PaR1rlw?= =?us-ascii?Q?NPSKG1X12zR1XzLOobShp21zahjOL/Ip8qkmMFfYjOm/RT8Q5R04VlfMvkoi?= =?us-ascii?Q?NGhAkxANKFJFqHTPX8qqBOdxF5aDMFjdCN67hMLvwOmdDopHP1Zd9Pmywmus?= =?us-ascii?Q?S+Dy6W1VZ1EWuZh1u0lBU08IzkNJePgOOxnN6pZO1hAPYTmqTKhrrEq9a/tw?= =?us-ascii?Q?vzX7BHgNUvvTg90hTJhh0F/xweJ3fX4MnMkXjlVQcBXHcF8wBKhFobUa4jh4?= =?us-ascii?Q?5CRCxmQ+IN8yNfCdZApc7dbvJNCwLDySyCdMD28J0tjmfgm5h6efo5zAWX96?= =?us-ascii?Q?JgxYww4Kdrkpw4bGBqcmBv9BAomx/npGeLVPxcyVFITgNVeFctK1an0s/EvK?= =?us-ascii?Q?vY39wmyWkfWcjXxQwfwEo5U+t2wrQOZYaG5Ry8NnDCy8jsTyzYs5p5CMz7oy?= =?us-ascii?Q?hbO89tTLIal30KVE6RDtdvC9f7dF5NM=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: MiQR9rMe0SzlsdQLieMPGWWSF8btkqa7ckz70NgcHzVklALWPkIIr9mD+pcioWG90dDnXd9Rc4pmEP8PNU+QxGfdoX0VUaxPi9CkncSo17zL3dvyuV0QeF3aEsQbwiWIu9XJi24k+Sbtd3n9i571yCp65MVLNQpaPScQOC/RRnN4SKFSQaLoc6353AMz48j16+O7K671Qiw6K1H6tMF39u+gBtRh3YeDRRrvr+awZdmDoF+BUkS5gFjhqjBfMlrn22sav3jM0b4qeS2kjz11jcqwJmStou7czLptrSd+LI0JsfcziHwx52pHd0MljSZPJz1IYHonVqRJm+JLxDfZ/RzA4YhSjMzVqd625NDnor9TU5HrVQvfQuMIZzpJl0uQ53CHw6Oji0XK23RuVjyJWH+S+U6sk+hJLaULKcI3N7m2ZIU60kMYPG3Don/faMH+Eg6k0W9E7FhjoVsTAEjdGw2m+0ppnqyue04Bco3VtRquRFB/YHJwpx2V/6EJhhIoDEXRLaCdbTwusvcAjd8rQx0Py5ipViceAhvr7RX3dChUJvFuWgNoQ7VgqTj1n+1Nw7nJBckFw5v2tTLDh884m5F2wooubsNc+dWFziT/HNs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38714e48-5635-4e12-e947-08de7483ad1c X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:42.9269 (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: /44NcTQ3rMs1cPMS+47E++g50Je1h9ZcnTaOiuZ5QSlTCUygHOj1yd6WuiIVuz5A6peUy7IJO5VTnxgzsVMR1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 suspectscore=0 spamscore=0 bulkscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX5oncwW3bgWQ7 NrLNovyJdAj5cpqS4dB7+7f4IgdJg6nD0QLhq+GP+xIrTb0SDtjO3YmtTWctT2tiIba9tC2e771 YKlIEIFuYQoBSd3ParvhssDxghNBuSKGZE5ODN/LJ7HipPHKdZk2CxnDGL1soF1PXvNnS80/sHG t+V99OlHKdIpON7RQH1K7APVJz0jcssL38wbMiYzNCVYcN+VklrVjzG2Mzxfnh9SdIR/qEJvnA3 +wFKbEV1n1nVeyQg3iAtBYCJa/qdDM54EOGIyiFvgrbROzR7UhLdS/p6cdBSlMYJxvpjSnGJphe ZtQHl47edRWyYCGZggPpqdBIRhzKV4/HKpfohEEBxHGGY9r34rAOqvzcEzDWssn9u/JjiJjy1zp V2GQlPHycaJC6ItrEXIE3ZWn/Z4TrBtYfv1wh1dWhpT/HjbLrVqbXqDgfxLLQVcypfAJAeZTidX EaPe6cacTYpmbobc4TxIX+gZ2NKYdgKQ4CKtcZ0U= X-Proofpoint-GUID: m8wL7koU5q_BBbbr2IHJgobDA5RQs9U9 X-Authority-Analysis: v=2.4 cv=b9C/I9Gx c=1 sm=1 tr=0 ts=699f172a b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=_cAOlNeyQ_0Bm3u0bTQA:9 cc=ntf awl=host:12261 X-Proofpoint-ORIG-GUID: m8wL7koU5q_BBbbr2IHJgobDA5RQs9U9 Content-Type: text/plain; charset="utf-8" Add a macro for the max queue depth which is supported. Signed-off-by: John Garry Reviewed-by: Hannes Reinecke --- drivers/scsi/scsi.c | 2 +- drivers/scsi/scsi_priv.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 76cdad063f7bc..28c9bbf439db6 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -204,7 +204,7 @@ void scsi_finish_command(struct scsi_cmnd *cmd) */ int scsi_device_max_queue_depth(struct scsi_device *sdev) { - return min_t(int, sdev->host->can_queue, 4096); + return min_t(int, sdev->host->can_queue, SCSI_MAX_QUEUE_DEPTH); } =20 /** diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h index d07ec15d6c002..679752c5f8bba 100644 --- a/drivers/scsi/scsi_priv.h +++ b/drivers/scsi/scsi_priv.h @@ -18,6 +18,8 @@ struct scsi_nl_hdr; =20 #define SCSI_CMD_RETRIES_NO_LIMIT -1 =20 +#define SCSI_MAX_QUEUE_DEPTH 4096 + /* * Error codes used by scsi-ml internally. These must not be used by drive= rs. */ --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 9A7DE3D669F; Wed, 25 Feb 2026 15:37:44 +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=1772033866; cv=fail; b=WE83Ib4BJ6pAlKt2R/clRfohZsJiZkR/uLkSqdR2BMOXVD9SLfac7fERR5XPjY0SQ2tSZaM3XuhxRv49esKXtf3DSw+j98TPZNCxTwIm0K7AD2/vRP8GhLgVn5JOjHXh8LlmEC0PmWOfmi94iyv6EKi2aKA7c4rkIBrTJ0tQ2GY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033866; c=relaxed/simple; bh=Nhv/kev6euaNxYED2ELIthL47CueFj2RrYEehi99iG0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=bnMvGRK8Mc0l7N2c/7nKEySnQeAajJ+NiRc3u2Qtwc2ergOUPZBgYx/CmTxZ7eOUgZm37flg00VjL2iNbRijBd+FQm0gq9T2CuQvAV7FFjy6ZvhbboH5ArzcqhbD9dP/ypopUvjEOW2VXfjyUqZ7wYz9eE0LXUW/Un/LBV9xClU= 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=IgKacqT8; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=V7zvFkNr; 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="IgKacqT8"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="V7zvFkNr" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAfTNt359637; Wed, 25 Feb 2026 15:37:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=7it50XOOBptMHsQd5rqt9P+z1b08O3963czVuJuAmH0=; b= IgKacqT8XTty6JNKt6WNTKuJtPVwM50xQ2V4af8FWdhjqYhjmS8z6OLmLGKzdwSs NIXW2G8jink4i6aUVNQczcuuAepyRit5NYpeoxQSEtZeT+Krh0mTrLvY0Z3MWcE8 Zl+aKF99oxgyn8Kovn5fH6dlzQxJeVuOmV5knSiczHX2WEvYMFNwA882dnZRlSQk X2kasYrwWynPm+rtpkQKzqk/kt6qaOlpBaYQ2llt4DzwCkDcaRhBHQqCoBOXt4Aw S4y+0KlsSF2Fmmws7LZT0+EGTetWuuvYX3KJEWIx8ECgmN9cSInaVcX3zTQ5VypS iA+CFomkOZBRuMx6IR+kRw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3m7xfgy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:16 +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 61PFWE8t038454; Wed, 25 Feb 2026 15:37:15 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010033.outbound.protection.outlook.com [40.93.198.33]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35nfrbe-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JXmoJhA+BOa+S6EI+8URItPkRPPulk7/lB67DVmtyfPwCbRkOZwdeQY3ZAcu/Ipazcj0oRhDEkHo5w3MalivJTzDA7PnS3ouQh6nMuSsMd59RiC8KhM0Uk63dtcYOoFjVLn002TD5ZxUDV3bQlj2W7M8+zrk25nTem2a2Hwx0VfT4n1W2VKx3wU8GmNIHsADkrAll71LNSn/QzB+CpLsm+Sz0ue2C/BG5KDrqkgrZ27mKtX4T49ctz/p3FT8gcB1EW2KpqWD0RTHdDDgamOI66yDrKg2KJ9eaaeDscwfKinptbmIiJMd9syvNlujRtbiAyDDy32EEQamibRFyjX63A== 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=7it50XOOBptMHsQd5rqt9P+z1b08O3963czVuJuAmH0=; b=DGxEgmqFa0ANe1NlmO7OOybig1T/wMLpNjsFxJPEESRjw7x0k645VJ1f9qm9gXFHtF9bjs7dg9E+JBXuD+IRrAtulctlCLVHIGXU5bMDqpkX3ezzA4ZUJzONIfdEwaIiekc4S7UKfXE2DjZrjsUWNx3e+QJVaabyzmRRYMqspF6ple+fzu6casGLv0XdQXQlJ3f81t0mYL/WO01NwVn5QXECxnRIOjpZ5rkPhSE3v9NtnaTvUdkF87Lqsn4OdILXgdHq8kSWbtNuF+kRwLu8j1nTa51lZhijy0GfTdkrYG2hLbfzkPKDTTA5BdPhOJEVc+cKn59lccNgOeysWuO0AQ== 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=7it50XOOBptMHsQd5rqt9P+z1b08O3963czVuJuAmH0=; b=V7zvFkNr/Zd6bXWNfSOuvREgx+xcgV6SuNMueUyoAa/U6XA6iM5netz9UzXsl29oaCMODP/ib306iMBet8BUmN5rcPrq315oxPJieaEOeQ5jt/lja8v86LHq8tqlU5tIORhUm5YtsgO4j7hbVCP1Jndcdgy5HOm7ZIoBiFxfFYQ= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:46 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:46 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 02/24] scsi-multipath: introduce basic SCSI device support Date: Wed, 25 Feb 2026 15:36:05 +0000 Message-ID: <20260225153627.1032500-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR22CA0003.namprd22.prod.outlook.com (2603:10b6:510:2d1::6) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: d149ecee-2655-4d93-a147-08de7483aee7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: 3n+rmOOpvMADfXWhFdqOkmbJTRjg3sBIJADYHb0J0p6ubnIibPh8C8AlWi343z4+vUJoNajLIzUDKgO4V9qCMVyf6XnCcwPOlMklvIug2ZIOqKWcurOR+0w7wnFypIbHl/6cXL03VQl1LEPCogj9y9DHQXMFE5dUYz5KSq0eqPNo2Srb+HkVeZbHH+ESPnxxyuuAMpAOPdflpzYrg39zybeOuzyGZNndFJfa1LYBAYJt17wCMDZ4E3LBU0lhEorX+3+9jpEVCM735ahPAbQ0BNoPZSHdI743z2eSLWUiGSA7xGFKSjzDClh56CNYKorT/865WcBm1RVpWzIDiN2kErUiwEyJtr2NTRvOlPebUITr/EwyTLQN3+C7ITYuQZklvPTEUQGRvuK6MeZ5s5srDi4kpG8XZMlTznocWXblUOiUrtQUZlLIOkcHqbcAW8P3vJxVWjGcLwU0GpQVQkeN622ESZQmtIgmRGZzRXWmdmvt0OpcZrgCQMJCa2fVl0bgoPxOZkbNH06nhtFdND+qbsuAz6o9z6M9vIcdk87BgV3aPjujvD5VR5PcJxCBvEM+Y349ObtJqLidBGRBIalTnmrCn3CKxjmGAv3PuaOztdA3CekSw8V+C0I9xvhZVlaFtr9QkEi8GM/DUKp/faX8yp1MijirDkOEEUeNaUkfs36nZ8kFWPa86rtOwQy0q3+i7pvcnkeoH3OgCDNJLn0835r3zUXdIFdT/xE0GIkNE6U= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3Hqd8G/OfMELjAIen/NmGxaRrm4szI0dz6FudExmwhzNZYOb1HfKkkWDM+6h?= =?us-ascii?Q?EBVy3Vhi9MWxgzLC25PX47TERx4F+Mr+VLNgt61bsUYwBwP10z9ROLN/YXw7?= =?us-ascii?Q?/qmgRZOX9DVLJ6MnYWmLY4jjYwy0xM/GK6LGYpudVdCN74IdSWyCCeat2HxI?= =?us-ascii?Q?msT62qe6htaQwjAaZ/843ZI2tlhD2Tq57CJvrnlbs7gkwWqkyTcXoo7yEchZ?= =?us-ascii?Q?Fr03JjDaCPgnfjtMx6CQTSFa1hnub3dSheZ3DBLctK8cGLrMqy3smEj+2tf5?= =?us-ascii?Q?6gguqk0SlZZvFeQzaiN3iHftZUmROE4y4dZZqVAp68M6xi+n8v0AFGyyqqjW?= =?us-ascii?Q?8aNIfcEeVJ1vTZy+ITaTlHYSRI1QGzCAqbx13T1FnwOaerkclrpw43dfHpYk?= =?us-ascii?Q?bULu0kPkXP7jqxI7zt/SScGvLWlu8pWFOGXaMmHuI35eDxEseaPcbcgjYL0s?= =?us-ascii?Q?YZdapxYq7cssaoHdCo8Yhq/jMaddgc5+N1Vo5ludB7VHyQQsgFP0DgFhGeqG?= =?us-ascii?Q?S7h2YnADXjCFrUKSj1qxL1dsmm7yOoCWUDSqsNKfYjh5+1gwuGvOsCP5+dF5?= =?us-ascii?Q?aX2cZeb7Pm7y9Nfye8uXVBYU773rIVMMpKG3/G0pHXU3e0KD+OZGesAsdyn0?= =?us-ascii?Q?ZyBJRixoPnlia09wP2a/gYRApYdXv+AD9YyIMTmHUkIRrwLeQms7LwGAVS7f?= =?us-ascii?Q?VvqzMLLj8eLNMfKqAPfVT5mpDdZlkxFCaz0iDsTvpFzVw+JRcIZb//k5WYNW?= =?us-ascii?Q?m+wjeakgXaBCmTkF7SKIDADWt07TdzlF4r7jsCAhwcpTqp2HvEG5QSlWYqQ/?= =?us-ascii?Q?AtSPJLprxO85lrfTMzbLDZEKUtIPFiL0HkjhTlPeDzjqst9XeTK6N+568OHI?= =?us-ascii?Q?OnXFR6yoaJtvE+hPmTQdS4Ao1unD3jZCGld9fzSJCW9LFAFMfH1+xu0Da/Jv?= =?us-ascii?Q?Y2T+m0WmvlZlE3av6E35GSiXlqYonHYB0iHSfjLRjtLCHkgmxKqUdzbxc+Du?= =?us-ascii?Q?ROUr/LKnwgU7bt/4VYEjFI8LF08EgumVXMeL3YScNuunvO98cjO4IcP9gZyr?= =?us-ascii?Q?iHxsZLA7B8N1MsaPfv+tBiz4vjti2mnKkwBH5JjU6vyXwpZY+5Go7qfbHnmA?= =?us-ascii?Q?rF+ikA520DZLvsLU2fwkwSg3m1nEOEGyEzFSgC7MjnGH3FvPOhs1cbxsrMTB?= =?us-ascii?Q?ZOrMPeVXsZD3Q1eYyASH+jVnJN0UNZRaPibasL4IW91XUw8VICrFpk9UX26S?= =?us-ascii?Q?U7IijFG3Bah9buKC7tra21SSrJ5ufOau30lal92IxFz6soVWZYORksqwYqvW?= =?us-ascii?Q?ndqcrlHVg+g/HDdQdBI16mSdDZTaSfDKa7NgSTTp2CNGdH3mZL6kgYdJAOmy?= =?us-ascii?Q?OCjPHv5G1j8pup9LmuRdnUd5e/AT9htRwkSgPhLoywTNPuH2x5j1K2CYNG+x?= =?us-ascii?Q?1uDQkkBk1FX8FSejD5OrZ/i8+9yU0SATCt3oYB0fZVf/V8142svBzV53699M?= =?us-ascii?Q?msKcF7k/vuXZRQ8YSI6zkM5ao4nQszNdSyONxbLI3Pj7+2LxaS3NVl4N7Zti?= =?us-ascii?Q?2+VyjaDYTQclrr8srEB8LOOJ0+//x/VyvJ2EkIY2gzI8W7nJ8K1gJoRkwAQt?= =?us-ascii?Q?bhCr60dGnTk79pWbRfAvI8SFQatbEMvX6uEDJC/Q5Flhq6j/avTNqfVUfTef?= =?us-ascii?Q?7N8nmdkjFG8WsqnK7KubdLmhzI0eZs1bZ4B4REgCQu9xmDHsAiIT0Vv0qVMh?= =?us-ascii?Q?yoU6upA+Rbznue4JelmQYQOsMoabJyE=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Ok7ZPeCeA373Q4JSKvjB04Oib1yAuPPwrUNt5mE3vQjcil6Wp/sHx+bgnJeyL/cTCrsWYYpjQ8A3D11M3QJw4Owarpn7LwtH/txDBd1Ya3eRIVXeSY8xy6wY46J+h9iXHYWYZD8dmRLExTt9eCRzLWZ/wvJuwRn7uAbIo6b1nIgrOWcTQpeZ7XTu/YuRMsNNO8RHSQFNyidHFpj6CNLqXZfC4fyMX1F+dehqfTNopEY41EQL0pthl5lX7f6hMjS2FraLO164g5P1MxbE9mZcm9Sd7BPmbwKgumjUqMcatejhNfCnKvDs09c63sqjcKmy411cQ9TvYQ7fl+P+qeD9VLLb/Dc/PDXQ36Mdls8LugS2QttxGbTrYdmH5YzQHMj+NSqhH98We7wCOFJRLlG3M93Lze9FQCiREDVXqqw48Q2b16qhmYxzCsyKocLdW85JskMx83haYdN9WrGSQA6DayFYDolDHKtszKjtUVCRNuxNp+r2YMeCdklCdTrVW8ICRIUe3XxPapbkyDyYj1scWelCcDzCgXe1kCeqEfwhmSPV/HHMy0eAgvrNQ7MiZrAwzQz3E6AjkA26bNJiZ2195Iq89TemWR3KY4cJA26WL3o= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d149ecee-2655-4d93-a147-08de7483aee7 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:45.9247 (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: x4uJXgcVvRv0HinD0aQMY8NV32NbA65WTolsvhxOEGszWyqsFeJXsdoOn4EqA37Ey8XmwfjFRIIpco7MHGzADg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 suspectscore=0 spamscore=0 bulkscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=O5U0fR9W c=1 sm=1 tr=0 ts=699f172c b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=pCOl5fTshOrEa-n2-VQA:9 cc=ntf awl=host:12261 X-Proofpoint-GUID: 5UKmJm9QbSBYmI50yngMEfcFpUjfF858 X-Proofpoint-ORIG-GUID: 5UKmJm9QbSBYmI50yngMEfcFpUjfF858 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX3KBSIMiMZ0yP pR2sBDQ7K/Vik2HccQLdYE/8TRr6rlIO3bHtPhjEWn5cClpJ3O5Go+IWqcAzwAno/f4528iXtL9 c0AcGyyVtew2Gd9mFDbjBSIeINllcE5J2ZNYHnWq6smUTkyqp2G/3q5N6efBWTZ+HMTZwClRYGj pWfJqlBPj2R+hfOULqak/WaIX87xuMgu3yd9oBLMMYU07ovaqH4kYwxv7EY3sU7X0ze9vd9vskQ c9CatXxZZVfRKTgJnnzsQjhK7SxLM4ZLkMHn9OVOo0zHtt+28j+YTzPRRnqGf3e4PG+6kvSGhIm XPXypZczE37UZa/pe5wLDlSFXhE/s5RQXfbr7GR2lGkbWu6QTmRJs0+MVyS635oy1ZOzjrbYGeM QQxvwzQocKlApWh8TFYEn1b3TvgBD/9lqS8Oo2So5rTY4l1sshcngdA8XCemUl9OH+3hcDgoAOM pPvPgcd5ySJDwj9VvKNwT4/qpZWBe15el8fCbqr8= Content-Type: text/plain; charset="utf-8" For a scsi_device to support multipath, introduce structure scsi_mpath_device to hold multipath-specific details. Like NS structure for NVME, scsi_mpath_device holds the mpath_device structure to device management and path selection. Two module params are introduced to enable multipath: - scsi_multipath - scsi_multipath_always SCSI multipath will only be available until the following conditions: - scsi_multipath enabled and ALUA supported and unique ID available in VPD page 83. - scsi_multipath_always enabled and unique ID available in VPD page 83 The scsi_device structure contains a pointer to scsi_mpath_device, which means whether multipath is enabled or disabled for the scsi_device. Signed-off-by: John Garry --- drivers/scsi/Kconfig | 10 +++ drivers/scsi/Makefile | 1 + drivers/scsi/scsi.c | 8 +- drivers/scsi/scsi_multipath.c | 158 ++++++++++++++++++++++++++++++++++ drivers/scsi/scsi_scan.c | 4 + drivers/scsi/scsi_sysfs.c | 2 + include/scsi/scsi_device.h | 2 + include/scsi/scsi_multipath.h | 55 ++++++++++++ 8 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 drivers/scsi/scsi_multipath.c create mode 100644 include/scsi/scsi_multipath.h diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 19d0884479a24..cfab7ad1e3c2c 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -76,6 +76,16 @@ config SCSI_LIB_KUNIT_TEST =20 If unsure say N. =20 +config SCSI_MULTIPATH + bool "SCSI multipath support" + depends on SCSI_MOD + select LIBMULTIPATH + help + This option enables support for native SCSI multipath support for + SCSI host. + + If unsure say N. + comment "SCSI support type (disk, tape, CD-ROM)" depends on SCSI =20 diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile index 16de3e41f94c4..64b7a82828b81 100644 --- a/drivers/scsi/Makefile +++ b/drivers/scsi/Makefile @@ -168,6 +168,7 @@ scsi_mod-y +=3D scsi_trace.o scsi_logging.o scsi_mod-$(CONFIG_PM) +=3D scsi_pm.o scsi_mod-$(CONFIG_SCSI_DH) +=3D scsi_dh.o scsi_mod-$(CONFIG_BLK_DEV_BSG) +=3D scsi_bsg.o +scsi_mod-$(CONFIG_SCSI_MULTIPATH) +=3D scsi_multipath.o =20 hv_storvsc-y :=3D storvsc_drv.o =20 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 28c9bbf439db6..99920715a9896 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -64,6 +64,7 @@ #include #include #include +#include #include =20 #include "scsi_priv.h" @@ -1042,12 +1043,16 @@ static int __init init_scsi(void) error =3D scsi_sysfs_register(); if (error) goto cleanup_sysctl; + error =3D scsi_multipath_init(); + if (error) + goto cleanup_sysfs; =20 scsi_netlink_init(); =20 printk(KERN_NOTICE "SCSI subsystem initialized\n"); return 0; - +cleanup_sysfs: + scsi_sysfs_unregister(); cleanup_sysctl: scsi_exit_sysctl(); cleanup_hosts: @@ -1066,6 +1071,7 @@ static int __init init_scsi(void) static void __exit exit_scsi(void) { scsi_netlink_exit(); + scsi_multipath_exit(); scsi_sysfs_unregister(); scsi_exit_sysctl(); scsi_exit_hosts(); diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c new file mode 100644 index 0000000000000..04e0bad3d9204 --- /dev/null +++ b/drivers/scsi/scsi_multipath.c @@ -0,0 +1,158 @@ +// SPDX-License-Indentifier: GPL-2.0 +/* + * Copyright (c) 2026 Oracle Corp + * + */ + +#include +#include +#include +#include +#include +#include + +#include "scsi_priv.h" + +bool scsi_multipath; +static bool scsi_multipath_always; + +static int multipath_param_set(const char *val, const struct kernel_param = *kp) +{ + int ret; + bool *arg =3D kp->arg; + + ret =3D param_set_bool(val, kp); + if (ret) + return ret; + + if (scsi_multipath_always && !*arg) { + pr_err("Can't disable multipath when multipath_always_on is configured.\= n"); + *arg =3D true; + return -EINVAL; + } + + return 0; +} + +static const struct kernel_param_ops multipath_param_ops =3D { + .set =3D multipath_param_set, + .get =3D param_get_bool, +}; + +module_param_cb(scsi_multipath, &multipath_param_ops, &scsi_multipath, 044= 4); +MODULE_PARM_DESC(scsi_multipath, "turn on native multipath support"); + +static int multipath_always_on_set(const char *val, + const struct kernel_param *kp) +{ + int ret; + bool *arg =3D kp->arg; + + ret =3D param_set_bool(val, kp); + if (ret < 0) + return ret; + + if (*arg) + scsi_multipath =3D true; + + return 0; +} + +static const struct kernel_param_ops multipath_always_on_ops =3D { + .set =3D multipath_always_on_set, + .get =3D param_get_bool, +}; + +module_param_cb(scsi_multipath_always, &multipath_always_on_ops, + &scsi_multipath_always, 0444); +MODULE_PARM_DESC(scsi_multipath_always, + "create multipath node always even for no ALUA support"); + +static int scsi_mpath_unique_lun_id(struct scsi_device *sdev) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + int ret; + + ret =3D scsi_vpd_lun_id(sdev, scsi_mpath_dev->device_id_str, + SCSI_MPATH_DEVICE_ID_LEN); + if (ret < 0) + return ret; + + return 0; +} + +static int scsi_multipath_sdev_init(struct scsi_device *sdev) +{ + struct Scsi_Host *shost =3D sdev->host; + struct scsi_mpath_device *scsi_mpath_dev; + struct mpath_device *mpath_device; + + scsi_mpath_dev =3D kzalloc(sizeof(*scsi_mpath_dev), GFP_KERNEL); + if (!scsi_mpath_dev) + return -ENOMEM; + scsi_mpath_dev->sdev =3D sdev; + sdev->scsi_mpath_dev =3D scsi_mpath_dev; + + mpath_device =3D &scsi_mpath_dev->mpath_device; + mpath_device->numa_node =3D dev_to_node(shost->dma_dev); + + return 0; +} + +static void scsi_multipath_sdev_uninit(struct scsi_device *sdev) +{ + kfree(sdev->scsi_mpath_dev); + sdev->scsi_mpath_dev =3D NULL; +} + +int scsi_mpath_dev_alloc(struct scsi_device *sdev) +{ + int ret; + + if (!scsi_multipath) + return 0; + + if (!scsi_device_tpgs(sdev) && !scsi_multipath_always) { + sdev_printk(KERN_NOTICE, sdev, "tpgs are required for multipath support\= n"); + return 0; + } + + ret =3D scsi_multipath_sdev_init(sdev); + if (ret) + return ret; + + ret =3D scsi_mpath_unique_lun_id(sdev); + if (ret < 0) { + ret =3D 0; + goto out_uninit; + } + + return 0; + +out_uninit: + scsi_multipath_sdev_uninit(sdev); + return ret; +} + +void scsi_mpath_dev_release(struct scsi_device *sdev) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + + if (!scsi_mpath_dev) + return; + + scsi_multipath_sdev_uninit(sdev); + +} + +int __init scsi_multipath_init(void) +{ + return 0; +} + +void __exit scsi_multipath_exit(void) +{ +} + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("scsi_multipath"); diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 7acbfcfc2172e..e22d3245d4b65 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -46,6 +46,7 @@ #include #include #include +#include =20 #include "scsi_priv.h" #include "scsi_logging.h" @@ -1122,6 +1123,9 @@ static int scsi_add_lun(struct scsi_device *sdev, uns= igned char *inq_result, sdev->max_queue_depth =3D sdev->queue_depth; WARN_ON_ONCE(sdev->max_queue_depth > sdev->budget_map.depth); =20 + if (scsi_mpath_dev_alloc(sdev)) + return SCSI_SCAN_NO_RESPONSE; + /* * Ok, the device is now all set up, we can * register it and tell the rest of the kernel diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 99eb0a30df615..0d69e27600a7a 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -23,6 +23,7 @@ #include #include #include +#include =20 #include "scsi_priv.h" #include "scsi_logging.h" @@ -455,6 +456,7 @@ static void scsi_device_dev_release(struct device *dev) might_sleep(); =20 scsi_dh_release_device(sdev); + scsi_mpath_dev_release(sdev); =20 parent =3D sdev->sdev_gendev.parent; =20 diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index d32f5841f4f85..52974dba0a724 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -279,6 +279,8 @@ struct scsi_device { struct device sdev_gendev, sdev_dev; =20 + struct scsi_mpath_device *scsi_mpath_dev; + struct work_struct requeue_work; =20 struct scsi_device_handler *handler; diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h new file mode 100644 index 0000000000000..ca00ea10cd5db --- /dev/null +++ b/include/scsi/scsi_multipath.h @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _SCSI_SCSI_MULTIPATH_H +#define _SCSI_SCSI_MULTIPATH_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_SCSI_MULTIPATH +#define SCSI_MPATH_DEVICE_ID_LEN 40 + +struct scsi_mpath_device { + struct mpath_device mpath_device; + struct scsi_device *sdev; + + char device_id_str[SCSI_MPATH_DEVICE_ID_LEN]; +}; +#define to_scsi_mpath_device(d) \ + container_of(d, struct scsi_mpath_device, mpath_device) + +int scsi_mpath_dev_alloc(struct scsi_device *sdev); +void scsi_mpath_dev_release(struct scsi_device *sdev); +int scsi_multipath_init(void); +void scsi_multipath_exit(void); +#else /* CONFIG_SCSI_MULTIPATH */ + +struct scsi_mpath_device { +}; + +static inline int scsi_mpath_dev_alloc(struct scsi_device *sdev) +{ + return 0; +} +static inline void scsi_mpath_dev_release(struct scsi_device *sdev) +{ +} +static inline int scsi_multipath_init(void) +{ + return 0; +} +static inline void scsi_multipath_exit(void) +{ +} +#endif /* CONFIG_SCSI_MULTIPATH */ +#endif /* _SCSI_SCSI_MULTIPATH_H */ --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 C89273F23C7; Wed, 25 Feb 2026 15:37:58 +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=1772033880; cv=fail; b=plqKA0GXzOFqR3XvkrAgqaa2zvtxL7ddhMkprY5+JDjxMZwAbhxE+AN1D79BIe9I9v3iBEwiIEmvkip31GGiZGzGNFSo0XrstPpipVnnTqnBk3Yh3HqHG01HUi9LcPWcpQca3H56ICgdJZCg6EC4V8d4eaTpngV92Hd02vQR1wY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033880; c=relaxed/simple; bh=6jf8CjmW16vsIEs7q/Z/tQt8swzT6zCJ3cVKo/E0dLQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lA6v2kd9KB/Ndvcsmr5OsJBFw9xdWAJg0w/qZfDbv7dEGkyc74C0jvHD02pmGFbkyVjf1TioikOZP/kZPtSd86ty7FhSx0U0Pi2IvnwAoctNTpMVpgCnJjwA78xoFRnKhAKxXxZhTrJvT2/Ml/QIjiyevxTFqxBvHoKSObKJAtw= 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=Yg01em5r; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=THzm7Zy9; 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="Yg01em5r"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="THzm7Zy9" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAGx7s359748; Wed, 25 Feb 2026 15:37:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=ZWVK2UyXQ/ynBoWLvtfUTRp5wTBFN4aPOyFvU4jvVMM=; b= Yg01em5r2/NVQ9HLeNgc6fGAeIvL4h5A4VRzxBIuylcVbTHLP+RU2uW3xFIXmMXj 6ZWkRJIDoHDKxvUCVyGfuaArTAmG1UDk0B4FF/yqhJcZFlEDt3UQNTdj9tKMn6Jr Ayu07+K1eRDC5jbsw2uaZkYltBtqkbDlP7HixxfTp6+7wIvxUfm86GzSHTqLMA6B j1HRP/3Rihxat6q6BFPB5WFrXft03cydPbKt9rpqDaDPe2SJ75pks0UGdtY2ypLL 3jUanz1W5cEEZcOEST+JczxbQPXy1gj82MqIVFm1zztTjk+ecnPEzIcEVMgtJ5hl lJn10CIMruCp3ajkBn7dFA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3m7xfjc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:37 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PFPEAJ027758; Wed, 25 Feb 2026 15:37:36 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010012.outbound.protection.outlook.com [40.93.198.12]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35g8sv0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kU3bqsEtgtJ1DvqXm1X49B7uHda+t6Z4H3wxEHUfVbEAFihaFN852FeHXRrO4xWun6aKwq8fX3fBHQPiWa+La4lO8gH2lNu73ifnHlH+TybjWAaxpehPwjukMMFbM8PJy1corLQZOmQzuGm8eoeKNwK3mevNEKy5dMKDnY0Ikt/CyUaFcEgPfhKrnq73P3BDP3jO7USNVDvGCaVPtxiC3cvWDjk7GJztoFYGGc5pZAnYVHZBl0mSyUEwPtE9vjO0a1qRsNY5tc7+ZJjagSx4xQ2KNec2+4GASD7tnWs2+2yfysu1H9wgibqJ5AV/saLLCWbcjAkLXHBi+WKDzQncGA== 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=ZWVK2UyXQ/ynBoWLvtfUTRp5wTBFN4aPOyFvU4jvVMM=; b=gALT9CcRQXytwV3qAiSpC6d7mi57IJWtyn8b0BpbU4AlzKb/ry6q7wTLjfGHohr+BCuyujurH+j+gLNoVjg+O4gackj25umpRErt+mgaOcs8iw4Ye1LOQnJj1Ly1fXdlynpzMR5J5M7FNrDkfnxS6f+MqksjnjJr7JLdGWTI8/u+iu80WwCq/wMEEit6Qaz3GvbAsMt5nBYd8XbzXc650rBttT9BBagpojDAhoXXIsEkwLB9IAK88oOJel11h3DvG+4yviVWfIIuGBWucMK+iW23kUKQ0u8n13vtsD8R4bsbvqO8k290Obf66MLZUp2d58nSmtJB/Yg0R0LPJXV+cg== 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=ZWVK2UyXQ/ynBoWLvtfUTRp5wTBFN4aPOyFvU4jvVMM=; b=THzm7Zy9x/fb1CUxEluSwv5KGi+dFDN4O815JJXoeIPfhL8ePm5d13GG4VZD7jSZ3dD1GqP/fqWJelwqFO2Hdk61l77EeDaQwn+p6fPl/nDbWPkMwjjo9RWuhWqHZDrGu5ek+XhCMBw5eodYXs5ZhalRDGTfWRQvO45GzJ9DQA4= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by CO1PR10MB4626.namprd10.prod.outlook.com (2603:10b6:303:9f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:48 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:48 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 03/24] scsi-multipath: introduce scsi_device head structure Date: Wed, 25 Feb 2026 15:36:06 +0000 Message-ID: <20260225153627.1032500-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR21CA0002.namprd21.prod.outlook.com (2603:10b6:510:2ce::16) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|CO1PR10MB4626:EE_ X-MS-Office365-Filtering-Correlation-Id: dd619705-3707-4c1f-9f11-08de7483b034 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: su7gdE9oq0KI1prPRcuLQU6cAwmMjsmyLiDrgfFa/WcLLpV+qfqDB5qL9fdlmZP0wxwF8QopXGFjdIVPkoYRx29gXYhF+bGhSBUcxFxMk2lzQxFNin2zkUkLH2UXmVnqIJ25alkcJep5Jdh3GRMASAUaYVd9wVQ4M48nSms4SpQqrN9WkzTfVJYp83B9Q/Cja65zL8phq6MbyashlxN6DL21Bbt1Lt5ZpalImqKEqIZG3mxgZp63mbD3+DfzMjbX3/tpeZx2SbvJcpNQW+d1qRAiICama3wUhUUuYXz9esxXFbCzXtnNqADruPHIsqZNmCmQmOs83Ig2pTl23zHK6eD+iLnJPxn4O8QNKOM979G0jGAEowkXexH+apsSOaCB+eBD2/MT6qmUASk70DJtyegfi8oAtoIrgt4iIEWP3GEvx9qsYsVaO7dOhYEP4hR6/BKQkXdNgghKSf9OKIij6/o37lLm5YRdo3xCVjytdRChHk+OyA8lKPsmypyzcL6V13zzKpZjLNYPZkBn4TPxoitPgsNd8Be1+6MmUyjZC46D1hUMgs7AdC5Na3H8ZVuowz0CdHzovUlzjhgLavgz/IwZwsT1tmBsxhTb+Wjl4qwSamyMC5ks8t7Y+hk0bXEBQXpVntzUWLtzykdzaKLZI1rS6z6Uj7ckLdAg76vuJWmMN4nPDUXGLbtfA7f6a8N6roEQM4ugIKBRr4VB+MeylzGiHxxYNCaT9pFa5VeccGg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZFd0hRO2TyfRMPNi7Dvz+zfR/bghSKAx1+wmNvGq4VgXrOG7BtJMcbrkWGXf?= =?us-ascii?Q?bU1AJX+HVtmP/lQomBJKYvzymsk6ogdpbGwlfYmW4Sxac7m//cXWdIDl2ReW?= =?us-ascii?Q?Tl58C29yDE0xC9kayIi754wXedtN02wDwREW2NOlR8fg/KjyrY+c2G09fLAI?= =?us-ascii?Q?Jdbc25XzqEXlF9fKWlquYp/IEMYPL1ZAmAUqeAyts/Vk1b/pr421rPrnukWS?= =?us-ascii?Q?ueMlfdsuU6mV0qEhjbqlh3/OUpmdqaufVwdMBoCOwIg4lKm+75XVYafgkmJk?= =?us-ascii?Q?VCwva86bOWvbINh5Pf5PKWhiMkhq3JttUT/IxPkUAJk5+fnAK+64r+K1+DyZ?= =?us-ascii?Q?I26j/ry7OVqiCwi/x3b2zVEf/As16AGgVJDxB3fO4YK83AiOVDcYcnHblvu6?= =?us-ascii?Q?1Ef1GH3lu/nL91X98d0ZDex2CIuckSJscOmYpIDKnZT8FvWwHZtGuH09yDQj?= =?us-ascii?Q?kwYAMHNE89DUfYFHaIWy/Na54tEGgOVamth9GDFY15mNU5tp/Dch/bwFXwg/?= =?us-ascii?Q?Gii0qgI1ySRCJhZTeyPB7QmCcJx93dD6ztu+9kKa6zNKmeteOwZ4i+j7ZUZN?= =?us-ascii?Q?Ev8dbPuKKHDnNjcT5hwFwAMUAF/B6W6YK+HAhVqkqvUZcHuJJnrGNRE43Fif?= =?us-ascii?Q?pV7MgWXCNEdmGiEDi9kEgFv9jS8JL+FeAWd/kbNmw/p7guCBTCoY4wabwszR?= =?us-ascii?Q?Lbaj2FMOc3qlhhaoVH1W39b9pYO7l4K8JG81I4aAD0NDnn2cg+8hBf4tpx6Z?= =?us-ascii?Q?V/3iAD+AsTCe/Gq8ZUV3ojJKyCjngTzRIdvPVYpG9q+SnidpNyFJD3RhtP4Z?= =?us-ascii?Q?lqlqbdrHwS1kNTqJW1jVWbMM/h8Gqru5HDQ5ykSV5r0Amf0uVlhR6inZLMdY?= =?us-ascii?Q?qCLSPtQ7lvWrDdqXjL7gVOScpGndk9SyHXlMB/f9UOF4B6a40tX6azUKAP0w?= =?us-ascii?Q?5Q1r+xxpO9OMSmPiIunwwSXFYMCoUe3qFN7lxjMOPp4Ub5wmB+5gkpfGVZYN?= =?us-ascii?Q?pz/05sKFK14K+PHNhEmHdfkDF/CHNxal7lW2n+qVq/r9W+qZe/D+inJeHmx8?= =?us-ascii?Q?UOCNWfzJ5p+WGzTtmDvvEb2quP66aKS+0/rJk5nfPXBbvXN3c9vHw7EC1aEq?= =?us-ascii?Q?201thakWAv9i3SAW0pM3e7hWANu+WeTAqyN9aOvnh7r1riOHiuBL/RlE7+Iu?= =?us-ascii?Q?gpA4JaErkOBFjV3/4m8xxu9nbexnK52kvykUUB9GIKqIexQb3taMVL+K0mJM?= =?us-ascii?Q?xDnR5weosMJBFYMFU7lSGwC4OOt6oA0+wQB0OPFFU3e1S5oF2uOpehKGKW4V?= =?us-ascii?Q?qMESWmt3GVOW/an2O4+bIKQOD3A3oPOdf6GgX9qQn9bpgyh5kxdafvnMOr9L?= =?us-ascii?Q?GggJVpwpm4st/P4szkraP0xR05BbTMhwnYc6SQYFOBD7H9vwimJB46bR2ZQu?= =?us-ascii?Q?ceXZLWdrCFVwfBnmI12gnkbTz8aHAT3d0PfEqr5TlJ5yjbJrnwcuC/CKPPlx?= =?us-ascii?Q?K6q4xCRG2VpEyXIY/2oDWWHu+x+yvsYi78cOoa830bTmbf6yJHAJhVhw9Rki?= =?us-ascii?Q?R70Wnu8xSMK6D7m3JlD+HQLu2jUvbK/Ii6h6H8i87p2SIH476NonG0TvQnxb?= =?us-ascii?Q?zM6B1VmdLvYGmxjHoRqFsF6TH/MlJb54JdONz14pv+4BguDpG7j5FJjmZHZa?= =?us-ascii?Q?mdQQqLW3Wse4UfvsVK8OUXC3ns4DltHGN1gvwU2MEFz6CkkuwNQ1c/D9QLrr?= =?us-ascii?Q?zXzBa7v7Jdo8y9pChHAtFsNW1v8wNN4=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: qzrtgg/LcmuzZ4LfSlEdK6WX4DcbELPoOeRlrOtEOtH8r6hUEd34objKx/OHa1yuDXpnfXmUXfUr5UzFNv6svPk0Y06iZZ2ZvdRK3gGAvEgZakix5pVb97grDNj0PLFLmQsQhloGO49GaAMm4dmyQVs5UUgdbnqO1aAa9Y8ZEpoc8hu8k0yahoYwb2LcpTvIpg1uPhbOpYNRzb/6IxxnHyi+9jbOy68m7ODUCamDe0ghpmiC7nQ5ls0C7a5YoVY5CQZSsKpviGFhjKoSE+xgdqPbnKuHqNRBgjAABESqrtoE3FZqlhMB637Ss8UvpYk8ErAu4Wn+fNUZLUuGDUBoZvv/yUxhB3MYKeN/qz8aYK5pcaMUNRVQbJkV900grwuDGCkmteEmFg7uEuaQymZZA+yaGPCcaZgj65XIA7AU1Pl4vrzCuWISrYL3ha5ewFeXtwVzYfzXOZ8OBXlmQmmU2vRvqPo8dPnIGp6Q7aG2QmKhfd9YCjse9C9trwqsWQl0zLwbeD9aMfsJyT1FTTEFp024JyemBVwZwurO+js0kReUJzn85rUshbmGOzsKXBlSa+kbCxNJ/A19O1s1shp2bhcw5D4ZRZnS89Cl+M6k5pc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd619705-3707-4c1f-9f11-08de7483b034 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:48.0914 (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: EIhZDglR39DXkn1kGoT/IlDPIjChQO9Fmg8dVNol24s12q56T75zoEm5m6P+z3j1mUMVma336hk684AsergfMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4626 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 adultscore=0 mlxscore=0 phishscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=O5U0fR9W c=1 sm=1 tr=0 ts=699f1741 b=1 cx=c_pps a=qoll8+KPOyaMroiJ2sR5sw==:117 a=qoll8+KPOyaMroiJ2sR5sw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=V3fetYcEjqX2rsNKOekA:9 cc=ntf awl=host:12262 X-Proofpoint-GUID: lpL0mAzNrb_Wliu9AD6C0kj_hlli_71z X-Proofpoint-ORIG-GUID: lpL0mAzNrb_Wliu9AD6C0kj_hlli_71z X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXwP0EW2mJmyTo q+2OtfEjY4jo8c/+EqVKaXMJhrrA/AswK5Mlj6i64jX9BmAZ+lMOGTpplrhC+WUXtMMONt4znmo W27wf3SQPZyxtvhcshPcAR4ZF5mPJxrFO/jd2mLBZ28EHsP+2sangOpzjTVYPmG3OFZP9+291S0 oKU706zeXkORxBid+MKCTfhFkvRWwfEHZ55d9Do4gy9bcwMhDlc2LIfORHjEpMnT3qPDCyRBKhA cujBIZUXoi7MqPIwQDLHlBHrYU3opVB6YPpmtPDhki3cwqkjNMwQBYcOPr3i7NLO6AMctzQetBZ Tx/rnl9BPHIvyK0oYpujIVzdOZi5bSi6Vtauh5ZQrJA5ZlfFpRmK6lnZF6GtllRDor4p+NrAUhg QpKBKhD8DHJxL/syg4zGDqUaNcEjurQjf1bSUM1IHMMpYYiBP91ZpsStUC05wh8smDNP97GBmyj osv/cVoN/TLqqaKttiZ8ItixtbEKnsqvtcmHa7M4= Content-Type: text/plain; charset="utf-8" Introduce a scsi_device head structure - scsi_mpath_head - to manage multipathing for a scsi_device. This is similar to nvme_ns_head structure. There is no reference in scsi_mpath_head to any disk, as this would be mananged by the scsi_disk driver. A list of scsi_mpath_head structures is managed to lookup for matching multipathed scsi_device's. Matching is done through the scsi_device unique id. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 147 ++++++++++++++++++++++++++++++++++ drivers/scsi/scsi_sysfs.c | 3 + include/scsi/scsi_multipath.h | 29 +++++++ 3 files changed, 179 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 04e0bad3d9204..49316269fad8e 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -16,6 +16,10 @@ bool scsi_multipath; static bool scsi_multipath_always; =20 +static LIST_HEAD(scsi_mpath_heads_list); +static DEFINE_MUTEX(scsi_mpath_heads_lock); +static DEFINE_IDA(scsi_multipath_dev_ida); + static int multipath_param_set(const char *val, const struct kernel_param = *kp) { int ret; @@ -99,6 +103,73 @@ static int scsi_multipath_sdev_init(struct scsi_device = *sdev) return 0; } =20 +struct mpath_head_template smpdt_pr =3D { +}; + +static struct scsi_mpath_head *scsi_mpath_alloc_head(void) +{ + struct scsi_mpath_head *scsi_mpath_head; + int ret; + + scsi_mpath_head =3D kzalloc(sizeof(*scsi_mpath_head), GFP_KERNEL); + if (!scsi_mpath_head) + return NULL; + + ida_init(&scsi_mpath_head->ida); + mutex_init(&scsi_mpath_head->lock); + + scsi_mpath_head->mpath_head =3D mpath_alloc_head(); + if (IS_ERR(scsi_mpath_head->mpath_head)) + goto out_free; + scsi_mpath_head->mpath_head->mpdt =3D &smpdt_pr; + scsi_mpath_head->mpath_head->drvdata =3D scsi_mpath_head; + + scsi_mpath_head->index =3D ida_alloc(&scsi_multipath_dev_ida, GFP_KERNEL); + if (scsi_mpath_head->index < 0) + goto out_put_head; + + device_initialize(&scsi_mpath_head->dev); + ret =3D dev_set_name(&scsi_mpath_head->dev, "%d", scsi_mpath_head->index); + if (ret) { + put_device(&scsi_mpath_head->dev); + goto out_free_ida; + } + + return scsi_mpath_head; + +out_free_ida: + ida_free(&scsi_multipath_dev_ida, scsi_mpath_head->index); +out_put_head: + mpath_put_head(scsi_mpath_head->mpath_head); +out_free: + kfree(scsi_mpath_head); + return NULL; +} + +static struct scsi_mpath_head *scsi_mpath_find_head( + struct scsi_mpath_device *scsi_mpath_dev) +{ + struct scsi_mpath_head *scsi_mpath_head; + int ret; + + mutex_lock(&scsi_mpath_heads_lock); + list_for_each_entry(scsi_mpath_head, &scsi_mpath_heads_list, entry) { + ret =3D scsi_mpath_get_head(scsi_mpath_head); + if (ret) + continue; + if (strncmp(scsi_mpath_head->wwid, + scsi_mpath_dev->device_id_str, + SCSI_MPATH_DEVICE_ID_LEN) =3D=3D 0) { + + mutex_unlock(&scsi_mpath_heads_lock); + return scsi_mpath_head; + } + scsi_mpath_put_head(scsi_mpath_head); + } + + return NULL; +} + static void scsi_multipath_sdev_uninit(struct scsi_device *sdev) { kfree(sdev->scsi_mpath_dev); @@ -107,6 +178,7 @@ static void scsi_multipath_sdev_uninit(struct scsi_devi= ce *sdev) =20 int scsi_mpath_dev_alloc(struct scsi_device *sdev) { + struct scsi_mpath_head *scsi_mpath_head; int ret; =20 if (!scsi_multipath) @@ -127,13 +199,75 @@ int scsi_mpath_dev_alloc(struct scsi_device *sdev) goto out_uninit; } =20 + scsi_mpath_head =3D scsi_mpath_find_head(sdev->scsi_mpath_dev); + if (scsi_mpath_head) + goto found; + /* scsi_mpath_disks_list lock held */ + scsi_mpath_head =3D scsi_mpath_alloc_head(); + if (!scsi_mpath_head) + goto out_uninit; + + strcpy(scsi_mpath_head->wwid, sdev->scsi_mpath_dev->device_id_str); + + ret =3D device_add(&scsi_mpath_head->dev); + if (ret) + goto out_put_head; + + list_add_tail(&scsi_mpath_head->entry, &scsi_mpath_heads_list); + + mutex_unlock(&scsi_mpath_heads_lock); + sdev->scsi_mpath_dev->scsi_mpath_head =3D scsi_mpath_head; + +found: + sdev->scsi_mpath_dev->index =3D ida_alloc(&scsi_mpath_head->ida, GFP_KERN= EL); + if (sdev->scsi_mpath_dev->index < 0) { + ret =3D sdev->scsi_mpath_dev->index; + goto out_put_head; + } + + mutex_lock(&scsi_mpath_head->lock); + scsi_mpath_head->dev_count++; + mutex_unlock(&scsi_mpath_head->lock); + + sdev->scsi_mpath_dev->scsi_mpath_head =3D scsi_mpath_head; return 0; =20 +out_put_head: + scsi_mpath_put_head(scsi_mpath_head); out_uninit: + mutex_unlock(&scsi_mpath_heads_lock); scsi_multipath_sdev_uninit(sdev); return ret; } =20 +static void scsi_mpath_remove_head(struct scsi_mpath_device *scsi_mpath_de= v) +{ + struct scsi_mpath_head *scsi_mpath_head =3D + scsi_mpath_dev->scsi_mpath_head; + bool last_path =3D false; + + mutex_lock(&scsi_mpath_head->lock); + scsi_mpath_head->dev_count--; + if (scsi_mpath_head->dev_count =3D=3D 0) + last_path =3D true; + mutex_unlock(&scsi_mpath_head->lock); + + if (last_path) + device_del(&scsi_mpath_head->dev); + + scsi_mpath_dev->scsi_mpath_head =3D NULL; + scsi_mpath_put_head(scsi_mpath_head); +} + +void scsi_mpath_remove_device(struct scsi_mpath_device *scsi_mpath_dev) +{ + struct scsi_mpath_head *scsi_mpath_head =3D scsi_mpath_dev->scsi_mpath_he= ad; + + ida_free(&scsi_mpath_head->ida, scsi_mpath_dev->index); + + scsi_mpath_remove_head(scsi_mpath_dev); +} + void scsi_mpath_dev_release(struct scsi_device *sdev) { struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; @@ -142,8 +276,21 @@ void scsi_mpath_dev_release(struct scsi_device *sdev) return; =20 scsi_multipath_sdev_uninit(sdev); +} + +int scsi_mpath_get_head(struct scsi_mpath_head *scsi_mpath_head) +{ + if (!get_device(&scsi_mpath_head->dev)) + return -ENXIO; + return 0; +} +EXPORT_SYMBOL_GPL(scsi_mpath_get_head); =20 +void scsi_mpath_put_head(struct scsi_mpath_head *scsi_mpath_head) +{ + put_device(&scsi_mpath_head->dev); } +EXPORT_SYMBOL_GPL(scsi_mpath_put_head); =20 int __init scsi_multipath_init(void) { diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 0d69e27600a7a..287a683e89ae5 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1447,6 +1447,9 @@ void __scsi_remove_device(struct scsi_device *sdev) } else put_device(&sdev->sdev_dev); =20 + if (sdev->scsi_mpath_dev) + scsi_mpath_remove_device(sdev->scsi_mpath_dev); + /* * Stop accepting new requests and wait until all queuecommand() and * scsi_run_queue() invocations have finished before tearing down the diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index ca00ea10cd5db..38953b05a44dc 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -19,9 +19,22 @@ #ifdef CONFIG_SCSI_MULTIPATH #define SCSI_MPATH_DEVICE_ID_LEN 40 =20 +struct scsi_mpath_head { + char wwid[SCSI_MPATH_DEVICE_ID_LEN]; + struct list_head entry; + int dev_count; + struct ida ida; + struct mutex lock; + struct mpath_head *mpath_head; + struct device dev; + int index; +}; + struct scsi_mpath_device { struct mpath_device mpath_device; struct scsi_device *sdev; + int index; + struct scsi_mpath_head *scsi_mpath_head; =20 char device_id_str[SCSI_MPATH_DEVICE_ID_LEN]; }; @@ -32,8 +45,13 @@ int scsi_mpath_dev_alloc(struct scsi_device *sdev); void scsi_mpath_dev_release(struct scsi_device *sdev); int scsi_multipath_init(void); void scsi_multipath_exit(void); +void scsi_mpath_remove_device(struct scsi_mpath_device *scsi_mpath_dev); +int scsi_mpath_get_head(struct scsi_mpath_head *); +void scsi_mpath_put_head(struct scsi_mpath_head *); #else /* CONFIG_SCSI_MULTIPATH */ =20 +struct scsi_mpath_head { +}; struct scsi_mpath_device { }; =20 @@ -51,5 +69,16 @@ static inline int scsi_multipath_init(void) static inline void scsi_multipath_exit(void) { } +static inline void scsi_mpath_remove_device(struct scsi_mpath_device + *scsi_mpath_dev) +{ +} +static inline int scsi_mpath_get_head(struct scsi_mpath_head *) +{ + return 0; +} +static inline void scsi_mpath_put_head(struct scsi_mpath_head *) +{ +} #endif /* CONFIG_SCSI_MULTIPATH */ #endif /* _SCSI_SCSI_MULTIPATH_H */ --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3DE723D7D64; Wed, 25 Feb 2026 15:37:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033851; cv=fail; b=lfQNWFqOdhMzRPS84ZunVlHlf+T09wwkUEPAL4zTM3GcaSMhTbvGligfIJFDqx8kdq5SQowcfm+rVV9eTh4t7MKhUmSZN4aEbHtaH+dVNTTrnacm9oS5Sbm0QowC43QGrGa8Rv8QmdrTsKhVT/1n93c5EDPNzTY8X6nIMa+jTTc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033851; c=relaxed/simple; bh=M9f2JMNcnPvGovj3f0uUmRZ+patK3ZApDofVG2g+niI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=c/9kAH9RLeknONsjDsqrCsfCUmOzq0ne4CPgLcO39c63NxScERpxbJWDSfZbVjncNmryZLnIfeQ5BGOWu7+xtDFhSZ1KFp8rcGXDe+FlP2b75VkceU2uprvidwN6fyWyQ55CEDcqTwwR/fE8oZvy7uWt9Lsi5XqiF8gbNGPHhRs= 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=p/wYSpV1; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=q5f0BxrD; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="p/wYSpV1"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="q5f0BxrD" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9Bo7P817620; Wed, 25 Feb 2026 15:37:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=DtqhfLs3eujlV6Lg1rWSIchsQM/Y26e0GjpkFciPv7k=; b= p/wYSpV1u7Z93ziGAODox6URKciaPlSZ1/FKAoz07yMD/pm+6GomluFr7Us7qfa4 bFrfJwczJFKhT+3QcCduCzMOA1SETbrUgYR8DLjlwV1OVkm5aMTgHnBwK4TTeOwn IoIES5R2fFCF9WCkBMmffvxdIyIN8c97Y/l+jVaaWxjwD5tICNWUPCpwCH1jyATf 2bqKl4mZVUr95DIweYJtZPyJaDX+92vjLjDf1yjfLuUqaMYCMAPtILBcnSw55OVP USOt6w4+iWZS4vRFV6NvCkQwBc25TMH+Efddt4+8OWbOtvZJKdrr6ROtJhoS0RyW q5X9JA7z9ZZmHUBPRhVqNg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4areeme-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:07 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE7QHQ006382; Wed, 25 Feb 2026 15:37:07 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010028.outbound.protection.outlook.com [52.101.193.28]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9h7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S68zmcslKlAmhX0NcqF5OZqxNkAKaJfRD7ERpgtyiC58GFaPuYTcrp2QkFfPsNhAqT/CxVY+xPQxtF2rNdjbTp3ZvT8eUroQmWPNun/ASGN7ShF37tXXV820bRrC8Yks0VgbvrhGVPvX25P5gBoqJ57XAGSm5eS3vY85qCi3mJXEuOgxvyDb+FDAHayelLmX8yFlZgHk4weiHwel3DTy6FMM3qMGPRrhOPYaCLiRS6X8deoA8XcrZ/0sjMF9wdfVeMPMxQ02K4WM5w1ekkp/Aqwv7xvChxv2eSkDtHkoWlxx0QpWCfbe4nTDvt1PryWLokzfA+QWaOeB6C5IKBCZyQ== 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=DtqhfLs3eujlV6Lg1rWSIchsQM/Y26e0GjpkFciPv7k=; b=DyAgK64ZgkDHajTxCUVPPn7S5f3Psx17XHYPIq8T1Pd4hOe+CWz3SGtW3tA2BSYCQoao9KldgpIe4/lQj9LdamuBu3F1fcYxpgR8gg2Hk5r7kk4VUipdIYrAIicRbzwCWvoHi6ai2Js0UwFxL1qUkxhWrUtLzrUg2TQ8lObRniZn6jmTUeXmUu/GkQOjvo1K9XKUzMoDBX0yMtmaiRwF+dAZl4PGuXRRN9tr8FMgvaNZZFgyUTjmWTKEPyYioRWVKEyoJpM+ySEDDam264JPxNVDaz2FzziSoIbAoQ5Iu7R91yduMUuovFpc7TUUUEBYBOjNzCyc+BzkLePMa1yUNA== 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=DtqhfLs3eujlV6Lg1rWSIchsQM/Y26e0GjpkFciPv7k=; b=q5f0BxrDX8sAeJhg102YALh7C3D4yR3LiScX9TJcPMwMwHfY8oSbTfwAjdz35BHyJIOLQBf4Q+/hSgPbg3OO40Kz7JsH9aU/RD4fdoNdbO7KXq9WnQUFx/xMX8LPd0YdgRRoukCYbhE6nyK2w+xsrLd6oIF1HcmhzPXM6zU3xp8= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by CO1PR10MB4626.namprd10.prod.outlook.com (2603:10b6:303:9f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:51 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:51 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 04/24] scsi-multipath: introduce scsi_mpath_device_class Date: Wed, 25 Feb 2026 15:36:07 +0000 Message-ID: <20260225153627.1032500-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR21CA0015.namprd21.prod.outlook.com (2603:10b6:510:2ce::12) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|CO1PR10MB4626:EE_ X-MS-Office365-Filtering-Correlation-Id: dcf3eb13-cbca-4150-db65-08de7483b1d6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: UV6z5cM3spXpT+7l3UpOg+oV7HdNrE0xmGdty223zT0WSyL1MNtsm8Mh26AaLqB9mERR0mDwFD9QwkstIWlXMpARXB/+2GRDlsaaxXGaPEuHsru7iV7VQv5nIAgmUxI3/pbYdWowkSqF9pKKdYXCOrVIf0bBf89pnO5+9Jk2sOH7f+8LMtmKcp/XOphfh0hgOitQR7dthQyOBOQ/VSgfmP6cHW7kzK8DDc+kQxQBX8kFP87EkuFy1oIwBxWPJ2Atc8gFNWwplrOa7OHfYmoszyIEGfDwh00RaVjwWA3JHdJBOvBQhpxMvZNpflDAl7AKh/lDCSVazGfoaqaB3RaSxCL1yEIJq9A7pu7fc6I6/vIAI8WU8NGTAhqWcWv6Rx0haSwUHnYxgrTgtlAvuOczzRM5pM0bMcMn8+vTwdcW2XyEudcok7qbmyHEkhdFwbpuuwxNCrFNYd+84fo7IWx+eaVj0Ka/gWsNVy5SphpWq8TbgDMoPoqD0zyT3TMY0s0wfrNaqOg34Ds7LbIOSYonJ9kp/pO8XueROu2GEXDSBynLbaF4nmSCwpJ81OXMsSqcIXMXfD737tVEUiWj3h+oHaExpmcSjysVlV1qOW1kBoTFjUyTejEAKcijB0N7lMybPvYn7QCrhs7K4hgOLpl0OW1TaDeK9tuNDRYR3G6WSPLspNefN8YYwAW8ieYllc9b6VGzaUpfVWRH2oBRVQt5ya/ME+9y1GATeyt6Fdja9U0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2PlYXiSOqBzzctsXSE8kIXKkAXLlqPhHtrBOKfZ168f3YgK9x2GBEJs3URmd?= =?us-ascii?Q?FH93s9zk4Bp9HzwC29MvlfSlAVdVC8YBlE1atNUIMlQIF1fyADXhni/4Tp8c?= =?us-ascii?Q?wXi8OA5Mnx5fV32i3/yqvF0toxbhgKdaVdfZJ7qfHp6XoeWv3fFMl3hp5V6J?= =?us-ascii?Q?1/7FNPfYr9JoWo1X+FASykeBYjr9BHrbDDJDJmVHg1IAYy9iAYKLQlgptRpI?= =?us-ascii?Q?BCWTcRUvCPlPikESIBuczbe18EstmV7mr5UlJiR51Mudw5RlADLxZFJ98/go?= =?us-ascii?Q?kaFUUt5DHOexttA6DM90QUCFhW+yU+yuTzljJU2iCQsBNqyXinTn/v0JA9Ju?= =?us-ascii?Q?jR3aQyy32S7k10ZHPj1iSf5sNCPRHpqD4ce8/T3QQ3xE1BHxIgvG8g/rz82u?= =?us-ascii?Q?lSwzVB7Q0jWDYLdqeBRpIriJE2hLnX9GUXrJDXhDRaQLw/l79zunwyQyesH+?= =?us-ascii?Q?4tOWS+7ShTMb33Ks+3Ga3U7wji9277tyQiGMfqvFSKUQ2wS/JKFa05rZSrwS?= =?us-ascii?Q?dQMrp7b5kJiJaaxMyasa4Jc4S6z3GUspS3iG3gWoir+PGFYbHDhJ636wDW0c?= =?us-ascii?Q?ZpkA8ir+wqPm+a0CiDCI6ovc8C7aSYGiSxLgRlvSTjHUK5PJxSGVFND4pA38?= =?us-ascii?Q?hyM2xprV7Hmn9KRFm6R+oxP5hDfXbRJZHb6EB5hjEcBKp3+5vwxgvk7pzht6?= =?us-ascii?Q?gLlksVogmCJkN5JOK2gFwCiUJlrqWFWGkoUnr5+aSulcjgGjnnOjalgztEQc?= =?us-ascii?Q?2bhBMkm4FjaKb4L6rDNO2tRSDy+GwEH2atTjfHuXNlmaUoHgY+B6X3x/evEt?= =?us-ascii?Q?ZJJ53cM2Y8cZPUr8Sx4wGTjPHCl3aZnO6WyrKGgrSjb7p+vVlF6aN5e9CvPl?= =?us-ascii?Q?JPjEzex/CXN0x737lkoBbqVnNWaZYRoBzt2kAd+juuXTcMo2TbnuJ7sW8O3V?= =?us-ascii?Q?26RgnmkG6ukYSjWcuL/Tij7qPY5yjpz+UT3RzZa6l5ZI+aaPQ2WKg6USO8gd?= =?us-ascii?Q?m0+QRY7svcQrZLNyGJvx3GIKTcLt/3LTzKiCItWTlGyPJ9XmWrKQ7i0+UmnT?= =?us-ascii?Q?M4NQuZtB+o/LyXIzcNkGIEgMhfrPZBf7mP6t0cbnVBiOsJFrZAvZ9+R6UYYX?= =?us-ascii?Q?oIhXl6CfcaQnT9al2/z1e3YK75Z3y91TBgThWuholLnM+LO3/iSts7wYMm6e?= =?us-ascii?Q?Pj9OrrtRJAn8cScbEn4i6kZXY1Yr8p+P+skwwaIUhtsdR9EgB2eaC7koKXEv?= =?us-ascii?Q?eUMVzh2k0tyxUgKZCvSMQpey4UePPtssOH5rwLD79WgzsHeQY+YUm2pbF7sG?= =?us-ascii?Q?pdhtRZKhxXTHQRRHVe3nPNk1KpLqg5RhMcBq9QSo0g63DOT491NDR57Dx+Z/?= =?us-ascii?Q?MxRWIJhqkNQsY0IksbbRPxo7pL8Ot5ibL+DWu6AsWQj8XN/mATLBfYwskdSZ?= =?us-ascii?Q?i3XMh5qQJLj2B6oU5tx0TRfDxMVUI2PUstF7HK3w0WqfJoAIXGDarICFY1DI?= =?us-ascii?Q?MQUiG622ri+uxsTxLXT1WNXkOLCQr7rrjOfkzxtn6hZiJSVjFYiZZCEAv6EO?= =?us-ascii?Q?R+GfMuT3ITbkt8UCf0cAykchZBC7cH26mjBJ999a3CuXC/KqIUyiZWggPzZs?= =?us-ascii?Q?79sgWL323/T3mBhAl6tGtWsZNgosa3Qj5mOokkKBHAoCOgY5INfJTMyop4mA?= =?us-ascii?Q?Y2kfLWGo+MxhOlluN8/rnfIdAez8u6b5gl+oq1WDChjgdgZCimuJijqINztg?= =?us-ascii?Q?LaKOuCVpkYrjcJk/GnEYhZ7+XFtK0AE=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: xEZFBkF1bZ5GsQ74jop8qX7LN01CrypMhAO7P2mwacWDMJFliolui9iccxqDksiVn3qclaND3akHXQ+wNfpS5bkrb+l56uYWOT9L3YaqJtFIbeL10LPJjPZl6G2d8Q9nu8/WDojnc7lwJStbyptc5S2BHhB8covvsmH5tb7yWbZ7mw0tJphgK2Cxxc1MIKduVPZDN52sos+WDM9gt0Q8GYRAA2aOcfG9YMEi90rhGQORx9Y5+mTBTmardyuDfpUIWqdUi5+3pQZ2ia3n8eGakeocDzpjyJdcizl15VFSkGtYU2ECTZBHdUdRxL+ztjiHpnmq4JzTUqZYziGYtwlZozz7A/d+0qH1RuWNz8b8YUwpV4rgzSlKGY1i/MUdk44R38pX8ArxpJih/dl1OrHXnq7nqm6Zl4gt5T0n3p6YkHAVeRDSGWLVwKdewCEkKML05NktD8Cno+NXJWeOhkJaVm9hiBR36LXoevDs0omNCQXT5ssECCvIRrp2G7teox0Qp4G0KYmSqJEdJP9cRU9hXtJXqp4nPOo8Eia+agiBI5B1xVtvU+xCCVGqaAxdXk4lwLsr0yD7MyiQAENlSD1LIuWo6IgGvN1Zl9kRCUjMyuY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcf3eb13-cbca-4150-db65-08de7483b1d6 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:50.7853 (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: P9/UXK5Ck68tBmWYuyvC6hrEOZiTLIwF7up2j6KO1EDm5mIK2rBEXS/Qn2ncIuJpnoQk7tQFT5UpUosy7QT9ag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4626 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=La0xKzfi c=1 sm=1 tr=0 ts=699f1724 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=rhLSevvXLukHn9H0kpkA:9 X-Proofpoint-ORIG-GUID: VuC59FH85PFT9ogV9ni5jTZewRrBmy7M X-Proofpoint-GUID: VuC59FH85PFT9ogV9ni5jTZewRrBmy7M X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXzBLvCxUrKUWi MN+XDzbl/9tQ10vEdlabb6PVKXusexGM1zmLdma9mXHxgspFory+8M9ndmy+1wxC7n81TZs1w13 vzWopV58BNh6pTN+irJ22oLb9hjns/VdvQ0YNiJ6FRTe2pteoXJ5+aM2Gd+0QYXuU/AVOWDYh/w 2pvto4al+I21mliKSO4h3FWDJIptrh6wOyjfSLXUWJ1r/fR9D68xkLpsqdJ6MsX4OeCPVL+q1T/ +bd1jQk7vsbZX3YJxe6RzxzPByAB4lvNH/iycJZWvJ9CTSzOiUcImJilSvpZjf0WS56cLc2OdH7 8T0H+gD4Nz/xsNo1wNJO2XAul9nGGmLOwZfcpFIZkTh6MvC6BRiTQte5geqGLwNYuD7nKjSVImb lcYgTZ0zEzwX4CaaftDQGNnZy75LlgOOFdzdkM6WVLxtV94mwZav3OcGGEtpAkmElEJlYRX6WQa E6lYRnuWNwIqyktsoxQ== Content-Type: text/plain; charset="utf-8" Introduce a new class for multipathed devices, scsi_mpath_device_class. The purpose of this class is for managing the scsi_mpath_head.dev member. The naming for the scsi_device structure is in form H:C:I:L, where H is host, C is channel, I is ID, and L is lun. However, for a multipathed scsi_device, all the naming members may be different between member scsi_device's. As such, just use a simple single-number naming index for each scsi_mpath_head. The sysfs device folder will have links to the scsi_device's so, it will be possible to lookup the member scsi_device's. An example sysfs entry is as follows: # ls -l /sys/class/scsi_mpath_device/0/ total 0 drwxr-xr-x 2 root root 0 Feb 24 11:56 power lrwxrwxrwx 1 root root 0 Feb 24 11:56 subsystem -> ../..= /../../class/scsi_mpath_device -rw-r--r-- 1 root root 4096 Feb 24 11:55 uevent -r--r--r-- 1 root root 4096 Feb 24 11:56 wwid # cat /sys/class/scsi_mpath_device/0/wwid naa.600140505200a986f0043c9afa1fd077 Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 67 ++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 49316269fad8e..05af178921cb4 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -85,6 +85,69 @@ static int scsi_mpath_unique_lun_id(struct scsi_device *= sdev) return 0; } =20 +static void scsi_mpath_delete_head(struct scsi_mpath_head *scsi_mpath_head) +{ + mutex_lock(&scsi_mpath_heads_lock); + list_del_init(&scsi_mpath_head->entry); + mutex_unlock(&scsi_mpath_heads_lock); +} + +static void scsi_mpath_head_release(struct device *dev) +{ + struct scsi_mpath_head *scsi_mpath_head =3D + container_of(dev, struct scsi_mpath_head, dev); + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + + scsi_mpath_delete_head(scsi_mpath_head); + ida_free(&scsi_multipath_dev_ida, scsi_mpath_head->index); + mpath_put_head(mpath_head); + kfree(scsi_mpath_head); +} + +static ssize_t scsi_mpath_device_wwid_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct scsi_mpath_head *scsi_mpath_head =3D + container_of(dev, struct scsi_mpath_head, dev); + + return sysfs_emit(buf, "%s\n", scsi_mpath_head->wwid); +} + +static DEVICE_ATTR(wwid, S_IRUGO, scsi_mpath_device_wwid_show, NULL); + +static struct attribute *scsi_mpath_device_attrs[] =3D { + &dev_attr_wwid.attr, + NULL +}; + +static const struct attribute_group scsi_mpath_device_attrs_group =3D { + .attrs =3D scsi_mpath_device_attrs, +}; + +static bool scsi_multipath_sysfs_group_visible(struct kobject *kobj) +{ + return true; +} + +static bool scsi_multipath_sysfs_attr_visible(struct kobject *kobj, + struct attribute *attr, int n) +{ + return false; +} +DEFINE_SYSFS_GROUP_VISIBLE(scsi_multipath_sysfs) + +const struct attribute_group *scsi_mpath_device_groups[] =3D { + &scsi_mpath_device_attrs_group, + NULL +}; + +static const struct class scsi_mpath_device_class =3D { + .name =3D "scsi_mpath_device", + .dev_groups =3D scsi_mpath_device_groups, + .dev_release =3D scsi_mpath_head_release, +}; + static int scsi_multipath_sdev_init(struct scsi_device *sdev) { struct Scsi_Host *shost =3D sdev->host; @@ -129,6 +192,7 @@ static struct scsi_mpath_head *scsi_mpath_alloc_head(vo= id) goto out_put_head; =20 device_initialize(&scsi_mpath_head->dev); + scsi_mpath_head->dev.class =3D &scsi_mpath_device_class; ret =3D dev_set_name(&scsi_mpath_head->dev, "%d", scsi_mpath_head->index); if (ret) { put_device(&scsi_mpath_head->dev); @@ -294,11 +358,12 @@ EXPORT_SYMBOL_GPL(scsi_mpath_put_head); =20 int __init scsi_multipath_init(void) { - return 0; + return class_register(&scsi_mpath_device_class); } =20 void __exit scsi_multipath_exit(void) { + class_unregister(&scsi_mpath_device_class); } =20 MODULE_LICENSE("GPL"); --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B6E73D902A; Wed, 25 Feb 2026 15:37:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033851; cv=fail; b=F5ORxBMX8F7EEgm2X3Pwxt9Ay73ODavtwK6RXqvrgUe9fCvy51h+nkYotElmaBpPoC4yXhj5okHuBqm5zmip4NeXrVUlJ3oAxAfY3SpfCJGY4uPl5+fgLYPOT/mrVuT0jHy3hQRiDrTbV5qn9+7cWMuqlfhQRjHgGDRBLK1H8cM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033851; c=relaxed/simple; bh=OBMY/Wq5Rf1DirPjBrovE9lBOaMqT7VmjqZFczj9FaA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=StrhIHHAxJqS8+8oXx3UMjcLX7ydttUNRNwA1+HEirzmPvzcva3kqbzGmx9vkjeXFqpytD7jUeAk3fPMzuXnDUHbOi/T5o7uKMm98dzF7/3uDjZ47GsTI2fa0x3v67ozQ4sT6917MBh56D3XOCMhf3nYejSf++55VG4vS++CTbg= 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=Zj14wT4b; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=kdU4d5VK; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="Zj14wT4b"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="kdU4d5VK" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PETBIl2703463; Wed, 25 Feb 2026 15:37:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=aiylXdHjrFaGUZVxjdNg2KKPHqOVthZ9NuYmfHbPhro=; b= Zj14wT4bMBJP2dh049SqPhfAmS8DvuQPSZ60zBGqbmzoWTFNOaJVf97j/In7y0da MnKw+RDC0jL4TFaTGPZ++VTj9Lf2+qxzeR2+Vz8CVO8YyqHvBavu6bjdD0fY4Ui7 fiVnf4kz04skinMw7t+swl0t7yMeYzMHGeREbqUi+aiY4mfC2EVUBxouZaQ9S1cq nvkaIlntypegydzkKja8x3qFSa3uP+sPgqLpKyDxo3K2yd5VqaKTTsMvFeRH6Vdn Br1vJdx8DrH/sjnhsg/teYNuJv1Iv3lbs8rJgfTVc+K4sRnAVAI6QrBFYxIWRgDF eVD3xiJ57A+vG8JPPAgfVQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4rbegh0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:08 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE7QHR006382; Wed, 25 Feb 2026 15:37:07 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010028.outbound.protection.outlook.com [52.101.193.28]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9h7-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JTrXJSDDM51GxQpgyOIbCs6kSCGluUBYzxwyEZ8MYm9Tqb2OMVUmx3XocfaT1GaYfwQ45PR6WJmLyNeBIaDgC7IrSvek8fFsEn92+sGuvNc86WoznOR36e1J5OfLZRGKJe5bNHwnlB0UmQLVvNHIxlM+YbCuOsgS/g7KOJjIrI+1xor4Vj13HKwLeKy3rDVo6kPkrQKLmR9bgPCuV52J5lBZeDJG4B/BwohV/kvG83WEBYyi5RSpL59uDp0FT4v/fRSweIYhgaTOahy/OLx7O5IJq697OV8YJds1oQv7SbhZetvxORXpe+nl6FJryvGl1yhnms3vO+zyjutNB1qDvA== 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=aiylXdHjrFaGUZVxjdNg2KKPHqOVthZ9NuYmfHbPhro=; b=DJ86T0amgRA7VbGAuICBEZUD/+VnFV+Eg2s8LhqvQ9kuZlcWhP6Y1KbwT8ssDPW089k27HKzasLBfMCk4uk+1U6lyHO8i79VPxYkZDSc2fgIeffcLY9VXwHK+BOIQ6ER76DM0KHGn/wps1jhiQ6WCSlH/JodJTSLTVIEuuFnOVPo+ScEISFjQGBq8iQUJIreKSnglY0071bL+A4tKqb3d53M3zJ4/RuoPuIApz9Myl8BIdxs+6xSGUKQDzrDxIuz7SB1Zs+44T6k8CUG7oorfidYjzzq3EUGfS/rEe0RLAMS9Lai/zzmDYLG3khuaICCiMIAu35L6nvTCKhJ0rGJpg== 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=aiylXdHjrFaGUZVxjdNg2KKPHqOVthZ9NuYmfHbPhro=; b=kdU4d5VKSHKqKLxqRAYmOa3mRXGoz7vIqLTwvNRajE1QoAcLYqNFkfauC0wRQuWw5eHvH0hx2xW+F/mCpOnlvGYUa/Kp4Zcx9BPEzRU/GWY0W1mrei1lQ/0nK4Xku8Iqf44iuWGN0L4y4/DfNr6eAS0ym9qWMKTxiOIWgJX5P20= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by CO1PR10MB4626.namprd10.prod.outlook.com (2603:10b6:303:9f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:53 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:52 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 05/24] scsi-multipath: provide sysfs link from to scsi_device Date: Wed, 25 Feb 2026 15:36:08 +0000 Message-ID: <20260225153627.1032500-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR21CA0004.namprd21.prod.outlook.com (2603:10b6:510:2ce::11) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|CO1PR10MB4626:EE_ X-MS-Office365-Filtering-Correlation-Id: d58c3d51-c609-449b-b617-08de7483b309 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: AUpWEc2JnGXkyQ1TilCFvcnxEqLb9ONOn0/4mSVqQbzY8JKjrNaNbrtkCUZyPw8HB9/eFN8/mTIzfTZPa7vO8qL7yaIQZWvc0AxGCFIM+6YD0NTJmfH+3JTvBXLvdBW77voWMITC/26uyI7susmdIphXVRcI/lfl22ZbiVD7biam1dNUT9eXiZH4a4+cNz5K6zygFDcFGhJod+HMosSaKzaJPMXx6Ad+PmnKoRzwqfJZZWgYwwQ7sMsJvAYZFQR+JSGmj+ibb4EFlIvsK46psPQKpdBOydknsgZZpEfCBI8dMhJGbshEfkKXsd/RNn/d3LlEMMJdmCRwX0qY230A5zUoiVmhCcuZwmb1aRUwtgze3HMk7hO+W/j1Ayiv8kZEgMrEmemZgudcZeAWG4SfZrrVlVTJiFO5wnh1PukVtwtTvYQlixLZRPhyhoyOaVeztk16bkQCuWaXx6NY2akpBS1Kw6qXnQjKOD93/8Pu88InCQxOojIQxjpXV5VovOoKoDOhclwiKyhK+tKGbZwb2j37lbvwtdQqC3587bh+c8GehhDKbOaHp1Q28OYY13nUk0i/POoxBju/U6VpwUnc0k2ls3sAHPbJUqqoDepVjPtIIQYc/TfnTEHy+5CDj0AXsi53+0JibZc8OIagpqRTTVxnJYaFut5fe19SURdWIcHaH1UxjLSQp3MVNQR7ZgPYE2KkSIaSrSTkWCBGor1lFlZfVqNnVvM4uiF2S6BkqT0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?h4NdVqaXzFKPMKShmKgdxCl5dP8krzNXcIJehBXzTP5uP7LtgViYaw4crPo8?= =?us-ascii?Q?VCpzIkOMGSV4n0EYzmJXI9f3uqg5Mh+v5vO1AE01qC7RowgUG6Lz3chEzgIE?= =?us-ascii?Q?OoqBTO1egVrzGgUbrilmwTYKMBV0yAnE1j7Ym/ro5t9Pn4APSlb5yTcnfjx+?= =?us-ascii?Q?Hw8ugnc6NqMJ46s2BvLiIxnnAEO0goVSlEnaY6q+TZzn2e6gzO0WTuwgoKz/?= =?us-ascii?Q?psAp01XmCjgyCd1YIW0l/HrUWutQGNUKigYpqzE2ENvLxJo9wKR5iQoFsvKO?= =?us-ascii?Q?Vl4XrWN47tLO4Q459dNniqgemwDY/WYUXxtnzxdEM94i1bLQtRkrr90j46Ou?= =?us-ascii?Q?eMTwRfLeUsfEKcLaxjFqLEJpV4qSXE1ecq5tPUdo5n40vyoWDMYgRDPVWAa/?= =?us-ascii?Q?H+MBjf7jpO1Gvhr4RNRmZv/XqOy8X3iFKHhLkdJARzdVkEs0FhlXV150Iltv?= =?us-ascii?Q?bEatht8Q1dvbiodGhn9mxQHh7XynyaD2ktAom4bXHhEqMfgMZNm6Jrz2+NeF?= =?us-ascii?Q?ZFuLPqRgcsCuZz2R8etiohJWt3PA5YQZOzTCJqeXa7WJu6hFawZwCv/KkRpm?= =?us-ascii?Q?1U8LABnrwEYDm/oENWmJ+V+yGXF/5kRIDbH6GFVmxusAvuS2DfT1lyoHNUrX?= =?us-ascii?Q?yxI+DQ4H9NdMudzQ7XPsCQbqKXjmC0lfSL6IKyhTcDUnFCyTwnBpL6wlQtxh?= =?us-ascii?Q?6ctUte3of3bqWuNQilK7FGLGSiJXycK/diCoQr+tJ4V9QL+G8KGcRb1ZXFnr?= =?us-ascii?Q?Mh8UdESGdUwsDog1s8HtpvxsBaKrAiIpq+l0pHEzBLcNtrmdpXbokAtzhpFT?= =?us-ascii?Q?p8d2C/YIPLmXq2WI1xajRcmKGI/Z5E0WsIQfOhLWjFFdrY6Ut+gLo8V9TjQc?= =?us-ascii?Q?NEbjUitakv1Twr4aSbTLuM3AAjd90zje1c7Hq+hu83mcaeH+HvMK63byVqfi?= =?us-ascii?Q?xrsb1VJDnQHf/qYXUet1RWcjtrjyV3fWw//SCfm5hFY9jbeWhgl0isA2oFFQ?= =?us-ascii?Q?OxQ28IvbPz/kxP/ZrEsOJ+8gncMgDg6aDssiTjc24Lq0DstmGR9EmmX6QxBv?= =?us-ascii?Q?7hrPFlzD8Lm7pXRiklD0cq+TFTCpdDipIaoOmCx8BudddsnHEqUjZc5eGxE6?= =?us-ascii?Q?Myiac2qscMXc93BtXZxrL2ln5xW9rjqE3PP7dTwR7mCHnu8JdBfY3gQH+xaV?= =?us-ascii?Q?xzJH7B572Gu0IU0D6Ik+XuXaGYBx9GDhZOjLbU10ng9gvL1z3eJR2M9DtLdX?= =?us-ascii?Q?UU5fN9nVgqJmWAUVVeIxKzpFBSlSXmr5jqjb2hk8B9agDSPhdFCtf+MzAPv+?= =?us-ascii?Q?GUVbi6vau/LIDPpd+GvQIyUkQlAjyPKCL/U+dmhupTnfjE0jqgAf8/lWknwM?= =?us-ascii?Q?Dh2Bge7nRokeyrLeeU9FbQ2e1Syxz5O1ZZz9/pmBvuHWYp91gr9wc98zz9nY?= =?us-ascii?Q?JPg746ye2rdIBigVdqkSUsKrcfjBxNHapM3LFjy9vWgyX5jIQ3sXqOrRKAX2?= =?us-ascii?Q?XVtLuFF+T3UsjSISgRBdTzG2rY8vKIsz8BXf3/wtlhOr3GmK7EPpw35LHGfc?= =?us-ascii?Q?Jcd6+zSNGzIba0onp79OrPWkV+XW9XZeodQ8oz2VToD5oKjizzCWClwhyTvA?= =?us-ascii?Q?+qRbQYvSszJKWBFiTWAwgc7F66SeNz6WR/ixBQZ7WwdKgE5TwNJhjIUx1wR/?= =?us-ascii?Q?1HOUAwobIsUlYb7AHB87P0BOrqq96pWUXk8Hh4rZ3tqdbLAdylWUJB7Q4l0m?= =?us-ascii?Q?/dnXXi4wktfFfEMiWFfmTZmd9cKgTo0=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: RtD3z30Ykh9fqfOVqGRY5QCWYELjc1wuS4lWByeqKAWaORIkOvaWUG9yUyho9HxN+Cv+tIG4uFVTZd9DSvKrZC2QMB1hMeyza6XapF2JmnMTJ2AG2ObNf7rdbrWqqRhmgHhnPRGRQleLDtvzyHuBlw61nOFb+3GTm+vycE02Gq1UIe5DFMz17vgCUtSUq9upg9IrgSr3yru4OdgqZoJ6JCiev8Lfs9n+n1z5jXhFUcRHBmZtlSRliAMgr+zU78sOYOvFF1yVQN8M6Acalt+PTikFcbd8my9whhgP6KnNEBQ8CtXhx1lrxM3NrBTy+/KXj4+jI9E/6dOksX9gVB7fv2bIgG5LrxUDJriPgxk9YgI7KxJRqiyQT3jB+1wZj/fzp0SltViVWrXrIaUugmYKKY08BFaL5YFDG19T+oKqBtIbbStifm11qowpLu5ek+2sadr47mIWrXx0eghbbGdQhLud0azjKW2kK7mLh8xeqepGmrWKaZccfxShLl63T8UQIlpTzJShkP8/vIS2vqHJu+003F6zqMyuVtUpPwokkN2xy51NV723UWdFvJ+fGhCZGHZ7ejJNW0pqARhkC2o1f9/tUFOLItVt423dzE+rCwo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d58c3d51-c609-449b-b617-08de7483b309 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:52.8430 (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: Une1MNco3EvCCmz/6YIkcUIbokvyvddD9iiE36g5qhLZxExGLHpsFuR8EE3MM8y8dqfTwoQkvbxTNCTQC8Fkrg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4626 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXyyn+3KVos1RP Ur2VbmWGqB3fh4jxbvbv8nAJ4xuEjSErmsl5rMswO+glNo5sv4WJbCimLOw1BRwz7w2qjcem1sw 4rOsf8Xp4kEsaYyiDiTBr2Lv4mrl6zunTimmjZOfjCFL+TJVfJJddmcu2ySbLJGctmK7tMh6DGH o16zUKUKqSUBSXFO8zgdsQhEOco9eMMprn5cjFfUFsT/83Qr/MbrNfGkk+8E7J4B6fSEOPylro+ yw+pEo/2fUb2wyBQNHoZqKv+ACk4SEn+92LOZeFtl08WvsMlteibmsV7LPPvj2Tqw+S0UBpVhmj h/Dg8UaelNgNsCpHRARfj+VkPm/4Cn9uezIWyX97PImAW9dkvadS+IInp0dGxf1bj0/WYInkF6i D+J6Nr6tNYH6TX9wf/QgYqOn068FLcxabLIyYOOjWigAp1S9SsKA+VHEJRLphr50fmDlhBVn6S7 HK5PuwKHU4zl3FoO8Rw== X-Authority-Analysis: v=2.4 cv=S/fUAYsP c=1 sm=1 tr=0 ts=699f1724 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=ZbQ-JUxe3OK3M8wTWUQA:9 X-Proofpoint-ORIG-GUID: PGIivQJw1NP4lzoizJWPZRq5EMF0WNdu X-Proofpoint-GUID: PGIivQJw1NP4lzoizJWPZRq5EMF0WNdu Content-Type: text/plain; charset="utf-8" Provide a link in sysfs from a scsi_mpath_device to member scsi_device's. An example is as follows: # ls -l /sys/class/scsi_mpath_device/0/multipath/ total 0 lrwxrwxrwx 1 root root 0 Feb 24 12:01 8:0:0:0 -> ../../.= ./../platform/host8/session1/target8:0:0/8:0:0:0 lrwxrwxrwx 1 root root 0 Feb 24 12:01 9:0:0:0 -> ../../.= ./../platform/host9/session2/target9:0:0/9:0:0:0 Signed-off-by: John Garry Reviewed-by: Hannes Reinecke --- drivers/scsi/scsi_multipath.c | 45 +++++++++++++++++++++++++++++++++++ drivers/scsi/scsi_sysfs.c | 5 ++++ include/scsi/scsi_multipath.h | 9 +++++++ 3 files changed, 59 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 05af178921cb4..ac55f9f39a5b2 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -125,6 +125,15 @@ static const struct attribute_group scsi_mpath_device_= attrs_group =3D { .attrs =3D scsi_mpath_device_attrs, }; =20 +static struct attribute dummy_attr =3D { + .name =3D "dummy", +}; + +static struct attribute *scsi_mpath_attrs[] =3D { + &dummy_attr, + NULL +}; + static bool scsi_multipath_sysfs_group_visible(struct kobject *kobj) { return true; @@ -137,11 +146,47 @@ static bool scsi_multipath_sysfs_attr_visible(struct = kobject *kobj, } DEFINE_SYSFS_GROUP_VISIBLE(scsi_multipath_sysfs) =20 +static const struct attribute_group scsi_mpath_attr_group =3D { + .name =3D "multipath", + .attrs =3D scsi_mpath_attrs, + .is_visible =3D SYSFS_GROUP_VISIBLE(scsi_multipath_sysfs), +}; + const struct attribute_group *scsi_mpath_device_groups[] =3D { &scsi_mpath_device_attrs_group, + &scsi_mpath_attr_group, NULL }; =20 +void scsi_mpath_add_sysfs_link(struct scsi_device *sdev) +{ + struct device *target =3D &sdev->sdev_gendev; + struct scsi_mpath_head *scsi_mpath_head =3D + sdev->scsi_mpath_dev->scsi_mpath_head; + struct device *source =3D &scsi_mpath_head->dev; + int error; + + error =3D sysfs_add_link_to_group(&source->kobj, "multipath", + &target->kobj, dev_name(target)); + if (error) { + sdev_printk(KERN_INFO, sdev, "Failed to create mpath sysfs link, errno= =3D%d\n", + error); + } +} +EXPORT_SYMBOL_GPL(scsi_mpath_add_sysfs_link); + +void scsi_mpath_remove_sysfs_link(struct scsi_device *sdev) +{ + struct device *target =3D &sdev->sdev_gendev; + struct scsi_mpath_head *scsi_mpath_head =3D + sdev->scsi_mpath_dev->scsi_mpath_head; + struct device *source =3D &scsi_mpath_head->dev; + + sysfs_remove_link_from_group(&source->kobj, "multipath", + dev_name(target)); +} +EXPORT_SYMBOL_GPL(scsi_mpath_remove_sysfs_link); + static const struct class scsi_mpath_device_class =3D { .name =3D "scsi_mpath_device", .dev_groups =3D scsi_mpath_device_groups, diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 287a683e89ae5..3b03ee00c8df3 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1389,6 +1389,9 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev) transport_add_device(&sdev->sdev_gendev); sdev->is_visible =3D 1; =20 + if (sdev->scsi_mpath_dev) + scsi_mpath_add_sysfs_link(sdev); + if (IS_ENABLED(CONFIG_BLK_DEV_BSG)) { sdev->bsg_dev =3D scsi_bsg_register_queue(sdev); if (IS_ERR(sdev->bsg_dev)) { @@ -1441,6 +1444,8 @@ void __scsi_remove_device(struct scsi_device *sdev) =20 if (IS_ENABLED(CONFIG_BLK_DEV_BSG) && sdev->bsg_dev) bsg_unregister_queue(sdev->bsg_dev); + if (sdev->scsi_mpath_dev) + scsi_mpath_remove_sysfs_link(sdev); device_unregister(&sdev->sdev_dev); transport_remove_device(dev); device_del(dev); diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index 38953b05a44dc..d8102df329d6b 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -46,6 +46,8 @@ void scsi_mpath_dev_release(struct scsi_device *sdev); int scsi_multipath_init(void); void scsi_multipath_exit(void); void scsi_mpath_remove_device(struct scsi_mpath_device *scsi_mpath_dev); +void scsi_mpath_add_sysfs_link(struct scsi_device *sdev); +void scsi_mpath_remove_sysfs_link(struct scsi_device *sdev); int scsi_mpath_get_head(struct scsi_mpath_head *); void scsi_mpath_put_head(struct scsi_mpath_head *); #else /* CONFIG_SCSI_MULTIPATH */ @@ -80,5 +82,12 @@ static inline int scsi_mpath_get_head(struct scsi_mpath_= head *) static inline void scsi_mpath_put_head(struct scsi_mpath_head *) { } + +static inline void scsi_mpath_add_sysfs_link(struct scsi_device *sdev) +{ +} +static inline void scsi_mpath_remove_sysfs_link(struct scsi_device *sdev) +{ +} #endif /* CONFIG_SCSI_MULTIPATH */ #endif /* _SCSI_SCSI_MULTIPATH_H */ --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A1973D7D8F; Wed, 25 Feb 2026 15:37:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033847; cv=fail; b=tDsDr7UMAV0RGo1qj6r4GPvKX+gyk4K1agmzS9XdKMt7Jyd0t1N1GMDJ1Wm/d6w2LPehVgssJiN84sWPGbgY0uKWArZikNNrjmzP2ndmRwqnr9WMqNYskrGFP/dJ27B0ujZ09zd19Em62i67xepTRjZx2lEMCc89bBhRz2wQwX4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033847; c=relaxed/simple; bh=odIn6rdkiRc3nsIwV360ISPOOLh6FMlnVPmtSIGn9sY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ycxy6t3MApzSPTeuqRh/VvyC3FFCZf7Xo36UQUD9s0XEYHmUnM7CE525EhshaMCuGTMUwdgbZfl15lShz8tPazsTMsiox9h1vl5S0K0F5goLUIrbgn/6I2urHv6qpuUezgF4DeXXa58sKnzdHugMNH2IhB4YZCWYJIlcG7JY9O4= 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=d735J579; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=hdIrofSX; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="d735J579"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="hdIrofSX" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9j6Hh1959968; Wed, 25 Feb 2026 15:37:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=rxQVP3W+bMhYykP1T+bGduYNafHlLVAKpdx8DqbC8lE=; b= d735J579SYA2dmAKVkGtalIDpRSKyM5vo1FZ/GZJiyyWX/STpj0Ki/42zI/ZRMqj p8WRS1cVaYQQCQzW1hwTqdOP26VEOwRIHcHRfrkkB49ERv6bxmTYOOiQhUims9t0 lCxKvX3DhasBakncbW1x5xZuFSC5rT/yEcl44IrZ98GYPV/13sSzJfuUk2xXSJCc ibvF4JbA4zapJCntCZJvF3JghJFzt6YMEHZ+TpTD+F/HCynN1/j7PrWPDRcXBrqi txt/oeP34SKCylzODS/fdRJG5WyifYmP/iEux32IpekRd+v45FsYglZLM34V26Iz 8uXMr/OIt0z41n51BxeWFw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4rbegh1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:09 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE7QHS006382; Wed, 25 Feb 2026 15:37:08 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010028.outbound.protection.outlook.com [52.101.193.28]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9h7-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ck/H0+8AeABa3as0sZZGe6lnjsoyYBSgyf5EGS4d3r8UX5H2Qx6W7H4sLVBxB5bYKojt4/IZKd8XGG9x8YHubR+gfVJXvt/2dykulHX1VmXzaBlrJfcGuQm4qv0G/rpW2yO19glXdXrt2qLAC6PIrNrjNxm/3OZmBsI19roFECAHo+mjJGkeNAGk9605z/dNN3ZcRQjMsZ4cQCRKo6BRat1wYHq8oqN2YJIAKNf8JETPzjQ9CvbNUSzmMnPgGOoeVfxn4KVtkALNn5yv465A1j5dAFMjRGkp4F72/5PKqXF/yBtZ/LvCAvhmEX96l55C7SnzDVhJ4NbmBz+071b4XQ== 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=rxQVP3W+bMhYykP1T+bGduYNafHlLVAKpdx8DqbC8lE=; b=pCa6zLG/kPLheN3TZDmiaqUHSUR6GDQYtwTNE8Ts8jBI4Zl4kipRlYMlocHM2ep5Hx1dc0okOUuN3nWNT4EPSae5ibXpB0/VppZX4kDlZMde88fGdBKT8aWmooz/tT/YCtfGhjoeMlxcpK+7LYwMHrYCsTcmTZiPyiSWvcVsdd+Vxj88+WZeQ9OAVg2Cw4chxnwy+5f81J47VNtih6ox/vRTWStJYKaYv0zLFAFqnYuSMykMhrfJfA+lf/kuUQ8pafiGwxIJvIkkhEmwbYw002N56+ErHfr5N5U17Rn3bLEXMKb7S0NzlZeiiBkU1T/MRzzYXWFJ3as4G1hcgiuXkg== 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=rxQVP3W+bMhYykP1T+bGduYNafHlLVAKpdx8DqbC8lE=; b=hdIrofSXmCkj1qTCXhOnrWUCkAUk0sNemPuF4+GgXzkZQzj39rXX6bir3NdBe6FMJ4x6yHoBJB7hNa+hN79Gb23AJI6b52o5k3IOln00pjSiv9eaPGE39lkvreYBT4iGpmw8DWjCgPM7x4O0i5suk0RvdVqlIItLJDpd919YVAA= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by CO1PR10MB4626.namprd10.prod.outlook.com (2603:10b6:303:9f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:55 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:54 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 06/24] scsi-multipath: support iopolicy Date: Wed, 25 Feb 2026 15:36:09 +0000 Message-ID: <20260225153627.1032500-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P221CA0020.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:32a::6) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|CO1PR10MB4626:EE_ X-MS-Office365-Filtering-Correlation-Id: 86fbb82a-d8ef-417d-a69e-08de7483b448 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: DOtq8MMBEpiUNWkUylGoFS2u9T5tTVTNdPGnUm1xN8iaeR4KqNuh2Roz3VFD/2yaS4zpwZd4HxTtTevlw8+5Iitmh28B3d+kH1NmhnBmTNPcwmqkOpDKfUG6XheWOHsWm33nSNFzuSU+sc+7112dKjRk7XsfYz4qphDqSgGQOMEbxECph61VzXaRVsX61UCEaDFPajHJnDAK9dU4B64jNsY+MFtPiWMeUxVDWAwhwBJUWMR1IAszMLTOS+gynl1GyNYdLu1KA2wuTtcIN5d4yknihUW8mlJRF+11qTsesOusem4N6QYUCYcZl78Ty/rkSGeR+glcBVBS+6Oq8TwcMG1a5OdaIpqselDsCCmdpEeuKUN/kuoG6NX3Bhrz1gMutevinZRFFWOtSkxoDGSwvcX1Xq2TS/1GohjzKknQaSg7e9qAANuATmcAxaeM3dCt12PvxPhool2QkYkkz/Q/J1GMLmmC7axXkiYkr5RfM1z47fxo30LIAX2j9kCkpFq/A3OI1xm7s3OX0XNXCC1ux+824Kb1Gak8HlU/8O8plKcIA9FLK8e5bwzY9ovYXKo0aMyTel2PbS8dKZMBOB+BKimzktrBhNHauYt1bfJV2LAdzBCF1rg9zr0uyvPruvoCfBvEDmMsBEObTz0F2SkeZzClM8/CkfSGhNG1eFuyGXR3/OnCtXJXFrEfJuAuJ8DXxY0Bs8D3hdSurjyxwipxs/eYV+0ogwx9H6KPNPNLu28= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?unQ69kIHMy9bN9JDuyNEo2SOfTvHD1Hn/dZ7J8PBvAxwCx9YtoTXMfQuoIJF?= =?us-ascii?Q?YsQdMyNRdVVKkIb61vM0HtxHGs4eXeV2KhyT2cuNE63K7KN8/rh2qZzrHSsy?= =?us-ascii?Q?IiCKQu0B8lAxZFWiOPf888tl5AkSGdMyKg+zVFuiXhNNX6wo6UHqnEf4EyrK?= =?us-ascii?Q?noW7XusDhDa5J0aPOrEiYQuWG3YCJB4AAQrrZYYK85D0kjMvyb1ABmYKKhUs?= =?us-ascii?Q?IFsGZgsNViuXndxTaR+hhGOa0AlKijbjYbEtKVhqkocKl+Z9oW1WdAVjlhTy?= =?us-ascii?Q?AQctkJ3jlFt7ndyU/2DKwKTv29tSsXVSjUe7egGw72k+b2EKWTJYKfOrhmMs?= =?us-ascii?Q?tDy/BcifIDa+SzGR+NudPK9y+p6x9UvV1L1XMFsSMB0CmorrEPa+4UJXSwNR?= =?us-ascii?Q?otwTREpRXMujsuoEgXnpZibC0FaCQAxvsbkBkPf+8PGz2tX2DHUNAOhJVdZV?= =?us-ascii?Q?8dfTmWlw9hXi0NccCF1N8E1XS2CF1cjVZIqbkwoyTrtPWvY3cnmKfxX/gMHD?= =?us-ascii?Q?wYG0m3sP/ExZmbXE6C+7Zs9gdfOLwXXXP9VK9uzdK91d8VuG2vl3xBY2EZ7R?= =?us-ascii?Q?53gEcEhchnWDvVR9PFNPwxq0ZriAwBzpumn1jUUNKPcfPeEbjlQEzkX/IH94?= =?us-ascii?Q?ilUxeBuNaecXBtFjIkQTAp6AcIcLsvR0IEyVskT8+MU88NADPNxpqbSE2Fiz?= =?us-ascii?Q?6vOIm/aK3mNx9DJxru4WhNrhidYhxo2Ieu90Me+EmzG6MyJvMBPT9uw8YDbA?= =?us-ascii?Q?/mLelfusDj0UUznqqgRn+8Q/R+SLIprSBO49o3gMHle9Go9ZzKC1HgK+DtY6?= =?us-ascii?Q?JT1LoyizrOLamkECbJqWv49aevQUSWfnHiIITs3teW/x5a1JbkDu1N+lr3wo?= =?us-ascii?Q?dy80/QDVKqc7p9PkY7J9bpyyBn3t99I41zmUVVwYDEfA8Men872vIuubDC/1?= =?us-ascii?Q?2DrckB2y8ARv81V6eAGJsyxWAJd3GL3vzCcmbHCzZ40odOpiXNhtuQGF05uM?= =?us-ascii?Q?b/i8L7V4JWMowC5TTmUxNie8nZ7qOxgOV6HO9fAvWUPILiDgVKR00/u1krlp?= =?us-ascii?Q?+iHZSmmNeWZ5bLOAruZNfv9IBSTSJAcy7bT7p8bCiKgp/4yjw0HekNBVvDgS?= =?us-ascii?Q?YxXLsBZ7nQSB0vwGJ9zpaiSX+4D0YnjQYRAsFvNX9UQqQT5Y3rkAv/vghhj8?= =?us-ascii?Q?IzrM5561vVJEbyJ6Aps6AJRf38M5m/xgDxNGtx2/H9P65+t9KAGzCC54YHtd?= =?us-ascii?Q?Nt8vMhVG2FGyNqVsBH2QDNhejEJ+Lr81dLrvS9z4XflPxtzl63+WzaNVX82G?= =?us-ascii?Q?rcnvs+l+jq5ckC1laVF0v44HvrZJbIFv20ZxbXdm0WOlPG95jAguN+nJuvDw?= =?us-ascii?Q?4AQ7DDNO2/niFvASaaRqZZRVJnFBwzatxdIIO49hkNEdx2Npux0obdIBMdyP?= =?us-ascii?Q?bOlYXPR0lmNR5LE7VvFvg7EdjLtRYCz20KQXpHaloPt0UAY0jRXHre1TL4hj?= =?us-ascii?Q?NGYojHrAvEITCC+brt9VAbg1VSrYMKlWWOnVBZUUygMajAK6G893XoBFaKTo?= =?us-ascii?Q?+Wn1mNNjwd7QCEUPfZ7MF/ebx00zOOSMCAIPElYOA4es7qQ+YHU6aKL9zL86?= =?us-ascii?Q?UTn84jIS0o7aHHbNwisbDFXDQhPdpqo8noDJ3fO4pbsjoO68vjz1lsJV4yTL?= =?us-ascii?Q?/hjoF5ZT5JOH3KjdsUx+9+H9X4N50Ybk4jwnrslwEVWOdLLILL4ZImM5Vu0v?= =?us-ascii?Q?FnLA0F7DZeLg7BbCjeWTud3No1KKVRc=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: BHskpXJaW4u3cu2JQDGg6cY30CV0jt8mkiZ7VJZsy0shfjKvUqK5q+c02SXKdi52aQlKrJn6wbNQaAChRwCGouojfYEjOcLwmeTJEUeH8n1MXRjssADcehi3IMGBu6EE6MwznIHsXWQYCNSviXMUPSO07hTtRLIv6Va6wBX8UhY/e6TMlX4+qOeGsiMwZHa2qMnVJzAjtkpz8iyae2sZcj5MvRVlOxu+XDVBLjBydncte2wum74pgtqOHqkIFCX1dLjrnFleBys7Vbh3AXefsbOXkUMWUnzxLGbQ2iw7T3MG+NgKgOw0amMLw+dm0/6pKqD/UeApB0khnP/seOFRYG0KPBxvQCMah4qzTFgD4T/3Q8msKjIHirV838uo8c6A1OZQDbfOA8bzUT1y6Di1oemiUzeIpVXtG6asvQFhsMoZOdKT8Ya8caXxbuS0x8pysa1UVeji+k5WaoG/PFIPXKQ3JKUmHqBL1B53qvGhQR4KJFi6aKHCnonJUbFnKwju4R0jPqV0ZVzshrxz3BbvP49gevkzJXGLNOxLMWx2e5fhukewHA/fUrg4wb4d3VI8HSIK+SN2EMm58EKqeJ5BXBESnvuX8l525Tb2qyC7eJs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86fbb82a-d8ef-417d-a69e-08de7483b448 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:54.9016 (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: TRAuFVsXw1zTSqgOw6xg3l8iFxLOP/s8fM7He/ijvZ0Py46Mm8dE5Oy2jt37WDM9vnFaYLnPz85MFq5k6nvhCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4626 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX+9JwgTiPlCoP GH17WN7CwFvT2xZica2Xx0p4mfP7Nv5IKepAF1telyzYTcX/iTxHYyI3H9D4pesebe/X6oVzcBz V6ZuqdM1ZiifiXyuaN8TGbj7e9bUscd52UKJA8fgsTrfy3o3eHPDlVLNElzdmjQ9hOphqpJG+Mq p4T8lDHc3awA7kmKjeN9/EB0zvV7IGfv8QqsKCoDNEWa/hushipDTzM6SJumWfK1nJQDhyKlyHV PaazuIiEZpBFBLhVI+u31ZmLczbFrclV70CgQ2mqfZUcqahIKWLpgc+QeGktFeMlv6j9uT4GaD+ 0MeXxRMl5RAqPlXOlmHlzRUlx+Qj4P9XTp8OGzEKiOgnmtO7OXSKhaREwGReViYTB6TCwStEON9 ABfDsraCWuZ0YmTH1lhEpH5kBY3cKVzlvPls/CxzcdcoKKhP/30qrj18M/RRx2T4BPaY0e61Etq CiRg4LecbaoK2o9sT5w== X-Authority-Analysis: v=2.4 cv=S/fUAYsP c=1 sm=1 tr=0 ts=699f1725 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=8fwEAWchWUUFBy44-ZgA:9 X-Proofpoint-ORIG-GUID: eDZ1fS7ppT2iigYniJC9Sxvm6lLXyf2U X-Proofpoint-GUID: eDZ1fS7ppT2iigYniJC9Sxvm6lLXyf2U Content-Type: text/plain; charset="utf-8" Add support to set the multipath iopolicy. The iopolicy member is per scsi_mpath_head structure. A module param is added so that the default iopolicy may be set. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 57 +++++++++++++++++++++++++++++++++++ include/scsi/scsi_multipath.h | 1 + 2 files changed, 58 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index ac55f9f39a5b2..4b7984e7e74ba 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -72,6 +72,23 @@ module_param_cb(scsi_multipath_always, &multipath_always= _on_ops, MODULE_PARM_DESC(scsi_multipath_always, "create multipath node always even for no ALUA support"); =20 +static int iopolicy =3D MPATH_IOPOLICY_NUMA; + +static int scsi_set_iopolicy(const char *val, const struct kernel_param *k= p) +{ + return mpath_set_iopolicy(val, &iopolicy); +} + +static int scsi_get_iopolicy(char *buf, const struct kernel_param *kp) +{ + return mpath_get_iopolicy(buf, iopolicy); +} + +module_param_call(iopolicy, scsi_set_iopolicy, scsi_get_iopolicy, + &iopolicy, 0644); +MODULE_PARM_DESC(iopolicy, + "Default multipath I/O policy; 'numa' (default), 'round-robin' or 'queue-= depth'"); + static int scsi_mpath_unique_lun_id(struct scsi_device *sdev) { struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; @@ -116,8 +133,40 @@ static ssize_t scsi_mpath_device_wwid_show(struct devi= ce *dev, =20 static DEVICE_ATTR(wwid, S_IRUGO, scsi_mpath_device_wwid_show, NULL); =20 +static void scsi_mpath_device_iopolicy_store_update(void *data) +{ + struct scsi_mpath_head *scsi_mpath_head =3D data; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + + mpath_clear_paths(mpath_head); + kblockd_schedule_work(&mpath_head->requeue_work); +} + +static ssize_t scsi_mpath_device_iopolicy_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t count) +{ + struct scsi_mpath_head *scsi_mpath_head =3D + container_of(dev, struct scsi_mpath_head, dev); + + return mpath_iopolicy_store(&scsi_mpath_head->iopolicy, buf, count, + scsi_mpath_device_iopolicy_store_update, scsi_mpath_head); +} + +static ssize_t scsi_mpath_device_iopolicy_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct scsi_mpath_head *scsi_mpath_head =3D + container_of(dev, struct scsi_mpath_head, dev); + + return mpath_iopolicy_show(&scsi_mpath_head->iopolicy, buf); +} + +static DEVICE_ATTR(iopolicy, S_IRUGO | S_IWUSR, + scsi_mpath_device_iopolicy_show, scsi_mpath_device_iopolicy_store); + static struct attribute *scsi_mpath_device_attrs[] =3D { &dev_attr_wwid.attr, + &dev_attr_iopolicy.attr, NULL }; =20 @@ -211,7 +260,15 @@ static int scsi_multipath_sdev_init(struct scsi_device= *sdev) return 0; } =20 +static enum mpath_iopolicy_e scsi_mpath_get_iopolicy(struct mpath_head *mp= ath_head) +{ + struct scsi_mpath_head *scsi_mpath_head =3D mpath_head->drvdata; + + return mpath_read_iopolicy(&scsi_mpath_head->iopolicy); +} + struct mpath_head_template smpdt_pr =3D { + .get_iopolicy =3D scsi_mpath_get_iopolicy, }; =20 static struct scsi_mpath_head *scsi_mpath_alloc_head(void) diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index d8102df329d6b..8dbe1c3784d2c 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -25,6 +25,7 @@ struct scsi_mpath_head { int dev_count; struct ida ida; struct mutex lock; + struct mpath_iopolicy iopolicy; struct mpath_head *mpath_head; struct device dev; int index; --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD4393D6666; Wed, 25 Feb 2026 15:37:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033847; cv=fail; b=PnXa9tj4sTQ6csJSCEO70FuFXLe6RT2Ft+k2g1s/WOaAW6uOXnIPbQ4cEEmYkHdX4TijpRGZDyKT2kXVTEgH6Qp+SvE54mAGfY0kHoW8YtpAKGjdJ7bj9ynuqKIMKTsU7REPRn76l4rsBdvD0yQyzn0N2kPW57q26dEuxK5KVQw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033847; c=relaxed/simple; bh=0o6CjzA9v0pvDm6Ybs/L07wmzCUf25EOyPjT0bq9eqY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lkMfjmsHksMEp0un5dEq4r32VvsJSM6j5db+UMPNlrBE+DxuH4/2IswZqYhijehF8tKIibhfLU3W4t+VRKfHg+X+rSyEnMrr25gHz4v4ucafLk8G0gGyETXVcs+De8HzV0VGoHTp6BgPYL6CY8gHxKIlEYzkRQXRj4dz5shoD5o= 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=elZzTjdd; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=YW+kuPLE; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="elZzTjdd"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="YW+kuPLE" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9hrEt1959667; Wed, 25 Feb 2026 15:37: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-2025-04-25; bh=Exm79OwzNg/Q00hfsiso2MbSFOBipBU0w+UR3nXNq+U=; b= elZzTjddgebNT0ptXfUF7EUedkn9mvMWSV7v/8JE0gY7N0fe9Q8PuqHaXoq1mObD ZM2W6owiAmi6QT6hO1pRPVsJ3ZbKlfAZmAUyPBMlc8fubliGtE9g2L1gXm9ueo/Y MlMDvtpOK7QnJiW0p3V+dlJzCOFFAjZgKAbfYae2IQj+5BMScSDPeBbjLZt5Ng8Y zGjfzFs9MXvoSl5W1WeXb/OwmRnPwHWwCLMnN467ngnob69480pEi2PwTRH0h4Hj bzDg2SbcfQ7gu4TnNL07050Ct7PRuT2onDB5HZuva0QKP8ZzJYibKAtjp80u5koN l3jy1vV1qBUQG4UBCkJubw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4rbegh3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:10 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE7QHT006382; Wed, 25 Feb 2026 15:37:09 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010028.outbound.protection.outlook.com [52.101.193.28]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9h7-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NH1c1m4K95HIoGv/ab1qdwwqnQocyCX0qRCQDjn9QwlQgghaEQRrhiipwYf+IqkZllMwQmtU2OZnYC3neYWnMXDXEXRE+9u5DLLPDHwBaUrOxGhOdDxxujv0aBHq0dXg7WuxTXjCzm0POI/pBOlgokWzgFZlfStf565kreSAJZgxAETprDLCgxHVukZTTaKrn1A2ipArkqseF7n/SKk8kiMt8dv8UvSXfrcGgjuO2JQozCTqziYft5LWzBhihPKC7HTZzB0jA6+rAgM5ox+qtQxaLzQ5MD4u0tQwTiD3vSuA2ubzFQua+jrs0KpW25e+YNgSCAoMcOaH3wZigIVVlA== 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=Exm79OwzNg/Q00hfsiso2MbSFOBipBU0w+UR3nXNq+U=; b=lRPTYoZe9kYgiCRO7lL6iuLQ22xf68Qg0BkRiv25vITcsAIUbjlY9splqwtMbFbITfNuFIJsqmxKPUFl8diTec3EBHWaL35RfzRVd+at/cVcJ+bIOqLxM6AlB7i9br5fA1fVuU8E3oruQfEhurG0xc1ygDlKAo891gTOfSMBSTuaSqTuC0V24bSb50O/hKtjxGhCrFwM+B22RmhlR98OU9mZe4lySvESpM9550lYt/o7bNBQlK18BFQq0Uz9rljO3p7ZQX4D9Ua4W6g0VlmobHSs9r1Yx7whxave9KpkOKszkjJARV0YT9rh24WHpT4SN3TijDJ0OHeVX2sNgerymg== 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=Exm79OwzNg/Q00hfsiso2MbSFOBipBU0w+UR3nXNq+U=; b=YW+kuPLEXXizBcZ0ZI5qeDxXE+YVWWhPM7zAc3F0ExqSF3pcCaEfL8C4Pb9DMAHlq/2gO7qxCaUTRWtY74IofQpsgMvFR8JMOyTdYQV7gSIjO+s/u+S0dfTrXoXSJ1R/vYYCzXaY8lkAgRx2kezYK6HkeMz3sZDPsiFAhbCdwhc= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by CO1PR10MB4626.namprd10.prod.outlook.com (2603:10b6:303:9f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:57 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:57 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 07/24] scsi-multipath: clone each bio Date: Wed, 25 Feb 2026 15:36:10 +0000 Message-ID: <20260225153627.1032500-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH5P222CA0005.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:34b::16) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|CO1PR10MB4626:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a7a2dce-d369-4084-b21c-08de7483b57b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: WCimTH8LkjXPx1+2s8trR3pSTkI+qRy/TXLWZzyoQoUugwi+GQ4ZuxpS9UwF/w/dnVgZ8YrtHIDEdIPLAMuJkReKjOxOTrJ2W1jT7gu4kptaOsnAED/L3MlN7E6eAjoq+Rnd/OhWRk36NxyAMOreHt68YWCqFeGRyCqwZ3DOg5sZNHuHf0LeQGYXjed/geyQO31Qp4oWLJ3B1vFi9lrLLKlus3p2e2BiGCjcfDbJEFSXXW4H5VprkRIBBJNsevqES95kK8VhQrniwHto6ZNPbIygrKNgqrJPpdZ71ByJ9YXrE0BTwbSJF7SAkEUjGIoy+FIhvsJ1eF8zT6QR50AToYamOqR3Q/dZK5FVdIPqtWerT/eDSFXUUvWBaTUGv0z2q8YGxsApFGd3cV05NkgsHjv5geCYSzs60/dHBgTijFidL8dRg0jlHnX7+PKyUBrUXjP9B8ksdTDRbFJgPjoNRJME2ZMkQs2uM8GhoV0U0tR8QhpAeIFWNiVRJ6+kXK8uE7D1ZH9pLbo2gjXfawxx6rflx3EUz0d7/B1MM+UUIGn3AvieuDjwnzsQjG13FcOeid3cp2Q2arpd8xEcgIIF9nWjpqi+6iIgkRBgr4OBNupTKf2qO8X29ROSxqdO447VV68pLwhDsomhcZVEaF2pFUCHywZJv2RLIcMlB7MPu/x78vPGuz1kJu/IeAYVLPXjhXN12cHZjrq6VL4QLbmiTDZqJSMr6PCYGEOtC7Tfwto= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TQQITOP11B/lFYawx+fhz2V1gkj8W+ZYvlkQSASX2uKAox6h61swKP1H83bQ?= =?us-ascii?Q?CvEQoXE+vcOSjFKXuVqKaJ8XRgthIge1SHjsZPKAT7KpfzTw/0dZkUxpjkUN?= =?us-ascii?Q?Mgou0Pd4JjrE9USp7v5hSqsZdOQR18AoCVC6e1vJtHNxia6W0E6Ob62w8ak3?= =?us-ascii?Q?OokWAT10k5+UC8DWtJnqo9n/shD/8yNnwzcDaG1qq/L1DJ4mu/OyqjivPfS4?= =?us-ascii?Q?TImWNfZ/sIjCMhflhhMN3wwN9y5DBVgrU3IR+sB+927E6k9X0S0/SIjNffQJ?= =?us-ascii?Q?hbsigzSx/S2Whauztwk/1o9e3EEx8PTCSnctTr3/ddWDiAfSdsyJEoR6RB94?= =?us-ascii?Q?ghukzceHDk3dqfpIw5kmI/onuntjUi9peMvtXtPR7seMuIbPmGTQbdLci/E8?= =?us-ascii?Q?64gJgoN/S+eKtWuKHr445I5TpPmpmjU4GBOXing3sbDGuNKR9tSkNB0R79Bh?= =?us-ascii?Q?Ovk7YmtSIH1XjIIuxHglk10dJurQPHv1Z3N+D1Ejp21htuE9CsFrGDp2m0N/?= =?us-ascii?Q?UQchlZFUjghQnJujWBhm4UV2HT0AYAIQCZ3OJaM48p2hkvKCHogJ9bM+do/t?= =?us-ascii?Q?cE5BPKoD7FyT5xtzzIgbdhgowCSs2eKtp05h5yGDIb7OdsS5wQtR+boyNUvP?= =?us-ascii?Q?Fcun6SyHyJF6Hy30KII9mOy47AQX+1kN01o9GSSIjrFpUwrymwnCkYUvs9jY?= =?us-ascii?Q?tjqufj95plHiOSOEdCnnUaQ/qZ86hqZwy6rH6fvG8jg8xmoJX8Xk4phU6elH?= =?us-ascii?Q?kgZUAEFjqrboy6iC1idD5gPFmRgk0Z6U/r94/72p5GFWkGt4B5HsVHYpH/ta?= =?us-ascii?Q?CJ+n1ijnwyEt5lxCT96EYiU8Qu+euMtY9y1lQj8F0qq/dTIMwJRUi1Kn7N1E?= =?us-ascii?Q?CS741NbIOtK0NnspyrMF1pjxCrly8fd5rQIgG3YwOLti8jyv6hniOAyLfk07?= =?us-ascii?Q?YUf7QNWwH5hNTL/57PTILmBmpdOy8Cb7qSNF89DbB7axth03IXdLNDYj0xnD?= =?us-ascii?Q?98Hzg8kEmNRZhTim+9CV1U3GiEH6qXl9vPwbXphqxJZRldw0RUymG86qH4N4?= =?us-ascii?Q?7sy7iIIiZqJ1Dz5YmRan1jh+Tq3wGEeHxQeUy2vrtlPc1NFx7NiUjYpjJ9M4?= =?us-ascii?Q?WjA+X4eQnYQuqwCJuXwZruKfwthh0FXt18ii4+qgP6qUGzRZyVX7TDj5f1pT?= =?us-ascii?Q?oA7D0UXuhp4ftGXdRtC48HA/GUwDkVwGen1GDdZp/kknThNlemkpXmZx4+yO?= =?us-ascii?Q?nx060pLPt2Gp0+WFFp1eJJpUz510pttrtt+6yBLOgrPOdE2o4Eu8hEq641OF?= =?us-ascii?Q?RDdKXB+VwrEEwIUYRu7zL5VdbUn5WxniuPlD7Zj/yfAw68gRpQclW+fTVWOi?= =?us-ascii?Q?4O6g78EFZRM27lWMMSIFDqa1TFJ78naho5YlionC8Qb2Aou9OyyULtowmy7K?= =?us-ascii?Q?rU6KemNdbEaxBAqbyaqxZh6shB+Ykzb3BnrzUguayZW0qdOmsGt5EsdEnXyL?= =?us-ascii?Q?s7Ps3xX4pVWAw29x1sbZ25QrvB4bavfGrHZoFRaWvy0noZrpewPfX9PkwGFM?= =?us-ascii?Q?kDBAmuWmfoA3Hwon+2lFlu7DQkyq/bHPvNKEEtumRjEPvxBKJSUPF8Yxnr+j?= =?us-ascii?Q?ovHUv0r4LJ5mSPlPqTKEk4pZYtjWGxXOQOgzkTheaNKdy4A3+mUiAox4aSOw?= =?us-ascii?Q?lyYyaMjGYaImM9SnfzfkgKMsqXP4TcB50LSwwW1GFu/3w0dcW113fpGp9LPo?= =?us-ascii?Q?LUhGuYVBEVVN2JfePP5lbZpnNj2YXgc=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: f741eyjPxf28qPEZ+YQ0zLQyxMLTqMklxmThxWLvb7T+a053IvEn6t1EJvvu01gQ/9d4b4gUHMPOsyZPhrO5pcdDMl5+FU9pqSpyokzRvw4s0/lSPZLbujSuDcWv5u+A9pMKZTDP2MgXWRKIgnnPpc/tUwiUlyWOa5UbzafD5Up/Z6ZrFjv0DPXdFso9xz4ktgTdu8GFvHwZP+N2OolTpQ3FBOZArgrWAbyBmvJTu/XD9cF5j6vsAkxAl1i89rAtX/tkMdElYBBhIBgLfWntaQ3MfTqIU/1HiySJ2w7YIAYJxEPRJu+yp6MbC9Ri11yQhubuYcvcB0ZuB+IvvLfQlc7zfcgIfVE9HOza4sdZoyCOLcfRrzzRxJ0y9ZYJYtGA8BnpZdmDGu8LrnyirRO9LsXg+0eBb80+7RKZGaCoicPG4dE32Aq4Z6n2DNjXtHEcUTDii1AOuBvdPWwOXN1sI25qnX6Aol32Gvwk9SUGcjdjQsJjTbXLXzYezlRH+NyAISskflElVBVy11+fBrWKegp/EsaHgXHAHCKE3xrnnl46b5RGAe46MyA4/fwdileYOf71qoKoqjT1OHANm8txd6K7K7KhhpLIuWCVez0x8XI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a7a2dce-d369-4084-b21c-08de7483b57b X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:56.9447 (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: v+Duc9oNcJ3Yntk4YY3hAquTzOqbu+2wMfZUgcrWtaZyQgdlwNsN8B7UmYzVqzt5b6N0hDqOh/WBTEySF3aL9Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4626 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXzEGKEObB+jBa NNIK+gIVCxzi0KDikh3Wz0QfmVsDhQrY0fiTn9oW7ILDyeK5PBNRi0KYx1Q4GdS0XRVvMiToLAm RIqT1pA6mMmVV3ZsdUM028Edcp4lXE3BtnTwF9sQd4gyBwz6gabClvG8gjAB1ELRfwHKYuO4iaP z5I0yGAy6NB+B1cIqtcYSEQev9lRi262qN47rtoDNy5/cAOI/Ry1qJqBy61bbkI/QNgqokLApE9 BGpPROg6ojgu3nO+TOSyKzt5bSpI+INrp02YGy+x0IA9OXAXDGVcvkPkFgsvQuMfMj1iZYB8zgb yybRGFTC/gcGE4S5fjoOojYKK9OXpmnqT5BRYCe5tgzZqoUqaJvoouKstaTrDhVXnwP2PfDbkG5 QFYAM95iQ5DvWTNxxm7pDThsqn/VCAT6UQ+rHjVOskD6dVgoqN3maVt13uoR8RvhN3hT4y4jRlp 7MLOyCiNZokp7KVI7Qw== X-Authority-Analysis: v=2.4 cv=S/fUAYsP c=1 sm=1 tr=0 ts=699f1726 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=ZdkLGmXbG_RT5LqYXqgA:9 X-Proofpoint-ORIG-GUID: 7NMr0VpZ9Rk0zTjZwzFFwssXjR_ESXJK X-Proofpoint-GUID: 7NMr0VpZ9Rk0zTjZwzFFwssXjR_ESXJK Content-Type: text/plain; charset="utf-8" For failover handling, we must resubmit each bio. However, unlike NVMe, for SCSI there is no guarantee that any bio submitted is either all or none completed. As such, for SCSI, for failover handling we will take the approach to just re-submit the original bio. For this clone and submit each bio. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 51 ++++++++++++++++++++++++++++++++++- include/scsi/scsi_multipath.h | 1 + 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 4b7984e7e74ba..d79a92ec0cf6c 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -89,6 +89,14 @@ module_param_call(iopolicy, scsi_set_iopolicy, scsi_get_= iopolicy, MODULE_PARM_DESC(iopolicy, "Default multipath I/O policy; 'numa' (default), 'round-robin' or 'queue-= depth'"); =20 +struct scsi_mpath_clone_bio { + struct bio *master_bio; + struct bio clone; +}; + +#define scsi_mpath_to_master_bio(clone) \ + container_of(clone, struct scsi_mpath_clone_bio, clone) + static int scsi_mpath_unique_lun_id(struct scsi_device *sdev) { struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; @@ -116,6 +124,7 @@ static void scsi_mpath_head_release(struct device *dev) struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; =20 scsi_mpath_delete_head(scsi_mpath_head); + bioset_exit(&scsi_mpath_head->bio_pool); ida_free(&scsi_multipath_dev_ida, scsi_mpath_head->index); mpath_put_head(mpath_head); kfree(scsi_mpath_head); @@ -260,6 +269,39 @@ static int scsi_multipath_sdev_init(struct scsi_device= *sdev) return 0; } =20 +static void scsi_mpath_clone_end_io(struct bio *clone) +{ + struct scsi_mpath_clone_bio *scsi_mpath_clone_bio =3D + scsi_mpath_to_master_bio(clone); + struct bio *master_bio =3D scsi_mpath_clone_bio->master_bio; + + master_bio->bi_status =3D clone->bi_status; + bio_put(clone); + bio_endio(master_bio); +} + +static struct bio *scsi_mpath_clone_bio(struct bio *bio) +{ + struct mpath_disk *mpath_disk =3D bio->bi_bdev->bd_disk->private_data; + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + struct scsi_mpath_clone_bio *scsi_mpath_clone_bio; + struct scsi_mpath_head *scsi_mpath_head =3D mpath_head->drvdata; + struct bio *clone; + + clone =3D bio_alloc_clone(bio->bi_bdev, bio, GFP_NOWAIT, + &scsi_mpath_head->bio_pool); + if (!clone) + return NULL; + + clone->bi_end_io =3D scsi_mpath_clone_end_io; + + scsi_mpath_clone_bio =3D container_of(clone, + struct scsi_mpath_clone_bio, clone); + scsi_mpath_clone_bio->master_bio =3D bio; + + return clone; +} + static enum mpath_iopolicy_e scsi_mpath_get_iopolicy(struct mpath_head *mp= ath_head) { struct scsi_mpath_head *scsi_mpath_head =3D mpath_head->drvdata; @@ -269,6 +311,7 @@ static enum mpath_iopolicy_e scsi_mpath_get_iopolicy(st= ruct mpath_head *mpath_he =20 struct mpath_head_template smpdt_pr =3D { .get_iopolicy =3D scsi_mpath_get_iopolicy, + .clone_bio =3D scsi_mpath_clone_bio, }; =20 static struct scsi_mpath_head *scsi_mpath_alloc_head(void) @@ -283,9 +326,13 @@ static struct scsi_mpath_head *scsi_mpath_alloc_head(v= oid) ida_init(&scsi_mpath_head->ida); mutex_init(&scsi_mpath_head->lock); =20 + if (bioset_init(&scsi_mpath_head->bio_pool, SCSI_MAX_QUEUE_DEPTH, + offsetof(struct scsi_mpath_clone_bio, clone), + BIOSET_NEED_BVECS|BIOSET_PERCPU_CACHE)) + goto out_free; scsi_mpath_head->mpath_head =3D mpath_alloc_head(); if (IS_ERR(scsi_mpath_head->mpath_head)) - goto out_free; + goto out_bioset_exit; scsi_mpath_head->mpath_head->mpdt =3D &smpdt_pr; scsi_mpath_head->mpath_head->drvdata =3D scsi_mpath_head; =20 @@ -307,6 +354,8 @@ static struct scsi_mpath_head *scsi_mpath_alloc_head(vo= id) ida_free(&scsi_multipath_dev_ida, scsi_mpath_head->index); out_put_head: mpath_put_head(scsi_mpath_head->mpath_head); +out_bioset_exit: + bioset_exit(&scsi_mpath_head->bio_pool); out_free: kfree(scsi_mpath_head); return NULL; diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index 8dbe1c3784d2c..bd99ea017379d 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -26,6 +26,7 @@ struct scsi_mpath_head { struct ida ida; struct mutex lock; struct mpath_iopolicy iopolicy; + struct bio_set bio_pool; struct mpath_head *mpath_head; struct device dev; int index; --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC20433A6E4; Wed, 25 Feb 2026 15:37:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033849; cv=fail; b=RtpFl6u+otnIQ3hzDrCJ/mrOrIudRwPDY674HIBkfugHHTaz9TVvtrITTH8rRurH+lsomujcP98HeWvUXhqzMzeGWuSASDmTjR1KzLAg7VaZICkiNHomJ9zS0gHmEvQ4gwI3bgfgVk/vx/r5Wvq1K6cyav/L745mIzVh0vUr5oE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033849; c=relaxed/simple; bh=56TxEmRZPWHGM68cODSfnsuoR8wm7PEkmDP3GivHXKY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=AZOTciEpkwwhZK6wBddc1T7tjKut+9n+Sv64QWF1twCZ9ERem4A78sJ2qWuj9MMxuI0Nfgkuz/OdDRqgQKjpjMzZzf99oDPpfvW8PfbX4yDFz/UOiKtQklv5+bdTNy05ayfIeYsJNlc9p1lp39djOs94qm2vZ4xIP3agQqzaiL4= 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=qRIKcKA/; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=y1A18bEQ; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="qRIKcKA/"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="y1A18bEQ" Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9mnNk553428; Wed, 25 Feb 2026 15:37:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=SodcUmGCAc/YSjIQnnxV6Pwo0IMOyUFW4v6SeAPKKYA=; b= qRIKcKA/wMP07PsZ8R3/Nwhcb8kgOq7paMESMR6oHnvD5VVYTwLfP73KRhR/GTW2 ZU5WJowwRmPLCmrZr/uZz5F2l6mxsQ1oLeMVRflmWr522ATM9WNW7AZavzeJF4Z8 iBTFzA3HUyX7kCbFLXTe2F2wEuMvmI5DiSG9XfpuDgpAC3wHksYcC+14BK1WESrA fgwaK6CEWBDwoMQ1stGXI5QeLB9rDgqYYbqsqos5e97a3oId7Wxt7kZ4V83NSz5m bdr5orr1kgshXxvhu1n6ABvXCEbO5STkFx5f7ju7SHGyFxHfECDxWaAk63vk5BPf 3PN9ItAqhUsm7QWSBdLJEw== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3g3pg9u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:10 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE7QHU006382; Wed, 25 Feb 2026 15:37:09 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010028.outbound.protection.outlook.com [52.101.193.28]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9h7-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ecoEhZPPm5k5CERD4CTXNd/f9hzX696d0pEd4QsvxE9303ongOeFaaIEheZRJhUKex9CMNtEbN5ZPvixQy9BzmPrbiI8v7fyQO/bY0zHOb8FQ4YCmkeCHu8WVzlin553Dqt1VRS/Uh85NY3SBclMCltSjqgFTDB/zSVck8KLXApEOxDvpn9TrHmi2g2AyK9zD9pwiaS/ojvxPhPXfEZ3X4/89MXG/ZO0CVOldKp3gmkawTyYrpfxYGorT9tNWSuedAFi2fkLPzrfk+o1q0dHhPB9bL3zs14/UM2YaQ0Q4KNtMvLstqDRnUVTZjT+qGGXZ9JtgCjpRO6DGQxfawWJjQ== 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=SodcUmGCAc/YSjIQnnxV6Pwo0IMOyUFW4v6SeAPKKYA=; b=yIXeaBeKXSjPT7c4wIwlWUIfgrJAeQVNXw2AUMHR+ma8gFmZJ8I6YoDBqgZSA+FSTzOSYfYZzXvXIu2pa0sD9u3NDK8RhHdKvHhLGajskUkohm26rEXHWD5NBttRnJpZpp6n9odT9Cc7zc+K29ikvJqSh7qQHzl6rU6oXeXjCsTQUp/nYF+Q/s0+9+0Byt9QKaaPQ1bUVy5damH06nRO3zXmEcSrasa0iznkWA68RVeagYlnZmb8MtRgGxKBr7y+xAcG0BrIV0vAeVz8eabkw9kgS5Hs65mZEo9kSJuukP2EOX4sOnFNOxI23yur2ryn5fpJwlyMyQFCt9YDXEjmyg== 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=SodcUmGCAc/YSjIQnnxV6Pwo0IMOyUFW4v6SeAPKKYA=; b=y1A18bEQrWhQc3N20s/oUUz0HMvwRAlOIzC7TClwTUgQllTbC1ptlpM6hRHoV7Con8xdBx8awfMtzx8Q9VjNLcvXTr2yH/pnUYdcJEzHwKxJEhXd0cnSnv43hXpVtJ8ITutdUz94/g/yhBkiF1T478q50P6Tul33q//FLRyEY5w= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by CO1PR10MB4626.namprd10.prod.outlook.com (2603:10b6:303:9f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:36:59 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:36:59 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 08/24] scsi-multipath: clear path when decide is blocked Date: Wed, 25 Feb 2026 15:36:11 +0000 Message-ID: <20260225153627.1032500-9-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH0PR07CA0074.namprd07.prod.outlook.com (2603:10b6:510:f::19) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|CO1PR10MB4626:EE_ X-MS-Office365-Filtering-Correlation-Id: 64f4c639-20c5-4c07-604b-08de7483b6c0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: fYX5KCgj9dchmVnIpvOCv79IS/MXsyqdApaHYg050jaYgWtG087/S5DmjCafzkiirhAH/SH39drbemx2GYfO5y0usXaJBc+22gbSbFWrPFgsoIAVTFBXi6L9gCUZw/WRlZ54U/4ABCCKTaEKrfi31wKAXocK98ITj39aGJer6UIZAORGvMK4RYyzFBAvdChnz3y4F4IQYSCCW/TBEV9qsIydmYyVKWTDz8f0DR11KybDAAfztTaVfprSvVM4PaoN1rROFtKy5tgZl0Qxedugm6Oe9b+RPRrGoT7rI+iYYW0UsC9aYFGR6bD7pwEwuzz/S2V3ejSiOgLMtzVyUyNpOvdpK4cHLj5RM6kqYzwbszLKjGzo83opP2SSN0oIeqbGlzCt+BPmVl+GkfoyEaHntxTFXlaBuGjw+lHkD3VIiH6wH7lhQo7UiEOrMTZLmaKoqLDECFzf5xVORKg4gw/vt8cAl4K8pNoO8lktNWzmX/ZXGD/n36fG8wZdyYBkUVhK96jHuzX8N3Cyru1zyGPBcUSum8IqMuHzfk2u0iNhpdKuGNuQU+GNEZar2Wpm6WkNkurSQytUmxZYM2Jkopa/PGN4vC8xWhkm/1p6tTAO4HFHRqYnGWXbbw5mpbZhgxCpEjARvBY9MW/DGaq1iGRxHDEuDM8U03Qdvsvlf4sOhnGVXGHf5M5YE2Zkw+FAf5RIA+0IzngjrAB5g3OpL8OtfyFLKLcP4Awn/WkEb5ZcN0M= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AgK7u0oV+0bw9eaMWs5dWtdUqlgZ16A9wIvFZSOOeIvlNa7rNlC21TAXsp8c?= =?us-ascii?Q?WJtI/GsamkHqEOO83FwDZt4xu1qZnqDVpUf4bXUxZoNNlMqgrnLgpO/7dtUc?= =?us-ascii?Q?kJ8w0mq8SItPOFNhGTKN/mv5OQp/QlEYk0reRy+Mxpbll6OX282Ls6uqD0dy?= =?us-ascii?Q?rkxMEPO8DimIG61OZ7UEK1d1pOyrh2FrxwMnaKm7n3GLvWWMOV1i1YMiYaJo?= =?us-ascii?Q?VvSuMUSO1msUzjLbtHjFLzNrXlWxSv5hfA8q/B3ZJqELLjNzraIhbw0SPkW0?= =?us-ascii?Q?PBvaSCnM568N3Le+4brGmN3UrXZisJJMsc3MEvGcD5OT3TZJ4rY5d0SXuDZf?= =?us-ascii?Q?8Ecx/4dD2/Yv49NI8Xvjk+7Y7aZUJZAV54xM9W/mYv/ZEyuw0cuVP4Xj4BQJ?= =?us-ascii?Q?Lf0iCqdlqoijlaY6KOivFJ6yhpHPhPtRR4ZS10aThPTBxkrmG1uCNXarkiji?= =?us-ascii?Q?bVtXUQdp45+VV8YLkkwVGMcj+ZtR5c8n50g42C8Vcc+mym8JLXCcZmAlfDJq?= =?us-ascii?Q?wPlTcY/0Y7VdFXARel8OwDF/tlWi6Krwj3OmtRMO19/AvIaV7HO3vxxPSsWv?= =?us-ascii?Q?040UKMQBFLU37/Q9cvKB75RoLv51sd/FxC4pFOGJ7eMmIV0lXqZ/DPgos6Z4?= =?us-ascii?Q?XPGRF0xpRunXQPfKgc5m+NYqPk/yh+oiMr5BvmCj8hg9s8+YGEYjsLomwY76?= =?us-ascii?Q?N5uBMTY3WL/42ReRaIovvGbU9qzY5sPenSX4MXyQR8taQVMXk3Dg/sEN5Odd?= =?us-ascii?Q?rJAurAc4evr2LxbdDlmuTSNBy+lnlirKqkulTTnXCOl6GcbJb63Aje6XRHRG?= =?us-ascii?Q?+xwG8RoxWAyxCAJOw2d2I01hl0ZrEIZg59WvXGfLMw4iwqa+gtT/TPx1rG9v?= =?us-ascii?Q?zLmXq0Sdu6yeJUI67/1pck48iYgg3/2Y173kDFDpH5yRt2sg2YseaE3CuCpd?= =?us-ascii?Q?noCpPzyhQ0Kxo2UK+5N9T786LEp2jitnQ1U5tfoDBQQ303W5favIrUbU3orh?= =?us-ascii?Q?71xA/QYI+aDdfTUsYXvnU3PFWlBxIo9el50+ExS61Yy9PAPWn0hFeCNVBwQD?= =?us-ascii?Q?bvxcVXBKYAhgCql2dvP28ONT8ESldOI961BeBPxP+5ZlBOqTxpzOjHlIWic3?= =?us-ascii?Q?Wtdr4CfTqqPm7TpNhNik1s5d54tLnH1eexrCbkqGC5Zbn5tEw4CU3o4TQffl?= =?us-ascii?Q?reVQ7HCia0SeSVskEm28IlgTbFMj7IPJDxpS3HDqMIuWLYvQ7BnvvNg2DZlw?= =?us-ascii?Q?xhcvDRCNVyY92bh2Ur/yoKKM5ImCvqSyqI01ZBvL7MqnKmcK+qpD6h3CEj1v?= =?us-ascii?Q?TK6W9wcqLIj0cOlPGrc6HiFdWJmazbnbATH9nJxrXmJv2YEoQ+G0DO11OsMm?= =?us-ascii?Q?o+PpbW63LXoWQ3DLId20wgW9GBUYs0dMYFkdHVXOlVTikPI54sdFvlTqrpo/?= =?us-ascii?Q?sAUrtq9ohbIxUeOKjvBZcpDyfLdPjR8wcycSe+tcB5ngwld5XuynxPCiyGNR?= =?us-ascii?Q?86h0hBjPhT6zWx+6NCpsetRWzmQBWRGckvML0HpujALJfjLXPyzlu6grpKIe?= =?us-ascii?Q?7MPyph9VuOEbwM04jI0M3Xy82p+wbN/X3tBePLC0OU2u3ER7sdxTW7cV5Zzl?= =?us-ascii?Q?nlu4ekdGvdM1Dpl1j590DCQvPlgE6yXa+5CeT5SK5PhkuVYYZQh6/iKTTwkL?= =?us-ascii?Q?GnwPpttbMFGlcWF52KdMVZvwzcpMvOD6rtGZgWEfmkGdiuERCkkwlF8H73qc?= =?us-ascii?Q?cNJdJ91X1G3f0jM7/4VAlfVB5Z6itE8=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: JfUG0n9dwvV6NJPBTmmBgCxIDEHmOvaZ+8JyiaL8d2BosadlV5ajx4fhs0vyjBwtg6YCj08a0taXbTB4MTWb4N3G55nN4C+1qkO77QrphsZtvSIS22sIGzmkOB/6EGaepqmZePUrxy/642Lzv0PrDcUAcd6azZdd5jVnhD6gj62XXiIIcIgKrHoX9nIHeBU+viORVXz9gCtwExxD/QhuMbe9be3QadadZD/+DlY2l7xJj9jNQEaqbP88/WB3AoX2OjorE4Xx/2rZ219ffGhvUQHh9ku1/n6rutUx0jUKSfPgcwu4UQyTxBBCCDK/TusjJklFnQjb3lh/4Ay1IKZKY16fDbcSpiGX8HsbDYr1ePKpMNlQhYHrmiFNb/xD3LMrtOIys5LKovnYxG4M9lVfQF6+LBKSePiO73d52eS8VwN25fxe2Hg9BST1V/eUFTmM4rTnFH3KmH+BnEnhiVZEZldLuOKgE25e9+8U4YTCrnrX2hJu/PwNw+UEHDvDoQvJ1b2Ei5Os8yo9ROF5S71dux1foVOAb3yNiV3EQM9t3f7/3aegqcvGWkWYx6wMewdKSrpJm5klz6seX7ste6QubVy08LF82Y+T8b5yjelislc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64f4c639-20c5-4c07-604b-08de7483b6c0 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:36:59.2248 (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: 4DCfyBvdqCEGASQrdKipmEPgy2ZQFGtDRUC23dKxLdfvXtJy366Qu2WFlkcZ+koFo/IbhOwLBW3jDQwbCJKNLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4626 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=Y6r1cxeN c=1 sm=1 tr=0 ts=699f1726 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=z3LZiCDobiYP66PUldYA:9 X-Proofpoint-ORIG-GUID: t1sy-ViBHsHhNAGxcjNwGnDStpjbOCgZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX5lCwZHM6W2vW KkU7mDoOkvsRj6z/kCgK2QKtt+Djt7AJ/HmFRf8G0s4BPcU/39ka8vy8S9Sn78lvupMwz6l5hMm V5qDlopw5qmXE55+U4yly6Yt1mNgcPk9BPwiS9ea4MsVvXKsnEVUBz50BFzEIPwwXYLuUQdneN6 Vxy/xGnJdBRvKDflPNmp5PXlEMrlz1DAgBliJVg0wbvHXffcmDbvJAJR8ayUywh7oGVvIiJo85L lmkVbdeEurjPVk9BmvwVSG3KyIioOEyHZCpgqivsu8wUJY/VmdS6Kn6XKcgJlIU/oqqeklkuhOW mofjOhj7BgszhbhZRqTqMtk8BIIB9cfEmSG5ewnfn2vU+SrAEbJtIN23+5tHd6MGsRsWfLWTtxh qPblzKDiJHOvkFkfTB6t6qlQ0CNCCO9fcnlSpz0JSf1T5k9Qth5CXugVAfpdk+KX8fQVOpOtLzR 1fsJGBHlr+VhPh60INQ== X-Proofpoint-GUID: t1sy-ViBHsHhNAGxcjNwGnDStpjbOCgZ Content-Type: text/plain; charset="utf-8" Add scsi_mpath_dev_clear_path() to clear a device path when it becomes blocked, and call from __scsi_internal_device_block_nowait(). Signed-off-by: John Garry --- drivers/scsi/scsi_lib.c | 3 +++ drivers/scsi/scsi_multipath.c | 11 +++++++++++ include/scsi/scsi_multipath.h | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 93031326ac3ee..ab224cd61f3ae 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -33,6 +33,7 @@ #include #include #include /* scsi_init_limits() */ +#include #include =20 #include @@ -2898,6 +2899,8 @@ EXPORT_SYMBOL(scsi_target_resume); =20 static int __scsi_internal_device_block_nowait(struct scsi_device *sdev) { + if (sdev->scsi_mpath_dev) + scsi_mpath_dev_clear_path(sdev->scsi_mpath_dev); if (scsi_device_set_state(sdev, SDEV_BLOCK)) return scsi_device_set_state(sdev, SDEV_CREATED_BLOCK); =20 diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index d79a92ec0cf6c..c3e0f792e921f 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -151,6 +151,17 @@ static void scsi_mpath_device_iopolicy_store_update(vo= id *data) kblockd_schedule_work(&mpath_head->requeue_work); } =20 +void scsi_mpath_dev_clear_path(struct scsi_mpath_device *scsi_mpath_dev) +{ + struct mpath_device *mpath_device =3D &scsi_mpath_dev->mpath_device; + struct scsi_mpath_head *scsi_mpath_head =3D scsi_mpath_dev->scsi_mpath_he= ad; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + + if (mpath_clear_current_path(mpath_head, mpath_device)) + mpath_synchronize(mpath_head); +} +EXPORT_SYMBOL_GPL(scsi_mpath_dev_clear_path); + static ssize_t scsi_mpath_device_iopolicy_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index bd99ea017379d..79e6860243e74 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -47,6 +47,7 @@ int scsi_mpath_dev_alloc(struct scsi_device *sdev); void scsi_mpath_dev_release(struct scsi_device *sdev); int scsi_multipath_init(void); void scsi_multipath_exit(void); +void scsi_mpath_dev_clear_path(struct scsi_mpath_device *scsi_mpath_dev); void scsi_mpath_remove_device(struct scsi_mpath_device *scsi_mpath_dev); void scsi_mpath_add_sysfs_link(struct scsi_device *sdev); void scsi_mpath_remove_sysfs_link(struct scsi_device *sdev); @@ -73,6 +74,10 @@ static inline int scsi_multipath_init(void) static inline void scsi_multipath_exit(void) { } +static inline void scsi_mpath_dev_clear_path( + struct scsi_mpath_device *scsi_mpath_dev) +{ +} static inline void scsi_mpath_remove_device(struct scsi_mpath_device *scsi_mpath_dev) { --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51EDD3D9052; Wed, 25 Feb 2026 15:37:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033853; cv=fail; b=pSmwSYyjiCtZzXBcojFrpJh07Jq7TlGWmccEd2urMTTw/F0VSar4KGayoH3GcQoKoDcwvlTO86XCOUPCCZf3RgiSgc3lDfk2aWWF2uz8XFezoz0z5chxtys6eBjLanYBAuc7uN1KtwHWxiYnGUh+Rrb8YMgK2t+GVGH6i9LmxaM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033853; c=relaxed/simple; bh=zsnstZC2fWFFBerB23BHIoQIk5Dii+4yDul5kv0tJys=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=KXrrE6/QMX/67GFCZaBLcRDTUW+g52HLQ5/3zbFDIDuIhtPP3Iiitjr2tQSEl4BU/+Gir2bhg4zr04WQ3+hmfmNfy1NGdibg0VDz9zxz/Y6xdO9CEGvs/B8v3UzaWkjitedxeXAF4bwP68f8KSl6cwrPEpC8uytrOjCYYmJETdg= 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=VUATOFBH; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=yqU+y3y+; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="VUATOFBH"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="yqU+y3y+" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PASJN8817877; Wed, 25 Feb 2026 15:37:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=hXVI/lhrlza4KLxbg2PZzwOU8V1932GRAQrVFEctQXY=; b= VUATOFBHArY5rXo18whq4NGgfcS1y/xjS0NrV3XFSIbLAXDlB5yeV7apwZpLsVMn 0qlFG7cPdxeeTi7hx354l0G8iFL6SML+H7LXHJ879ASqRvsS+31SAKcMSzeBqLTR 2BFiFEp8uinfbQtUA3tcvxOm5Z2jRmhbk7UGK5qNOO/oTMKCSvJl/UYdFQwycgwq S5vEJB/Kxbjg5BY9ywTSoqeeCGJHYuV8mczRtTAjc+I8ipno7XdaGT7bWyVuHHA6 SJx5PvYGJl2gGM3k4UGlp1YDHa+h8EcBh4pFu183IwGvqk5QRnWZILpKtcZY1El5 v0Hv6Eus3Dty4/Vqk0HzEA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4areemv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:11 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE7QHV006382; Wed, 25 Feb 2026 15:37:10 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010028.outbound.protection.outlook.com [52.101.193.28]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9h7-6 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FJoVjVWScnqiK+Gi9hl1uxbs2RJNBN06ai5bKvzZkEKW74yDCHH3mY3khQ9aof03Pz4K5PNo3SEdYASrBxrgEj5THhe2iVHCRIgcPsaCMxU7dg37USjUPlJfPITaxrnb9D8KDzTqxp8dLexLTVHuwYQHfMyxWoaXUqFccY11Mk3OERp6r5d6Ci/fL6W5ljh7WtAyeoP5BnPLoQiGi61NJG5c7hCiYFXST0Y5ZRXlGptDexiZuPp/CVM8oSUtKi1RHwkC/ocO59ZHViX/AA0p+YlGrpxrEZC623CMASQX/zSwm0RqhOUGMcqyvk/Ns6yu6oZe+wfeNTUfA4DNRcs9Hg== 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=hXVI/lhrlza4KLxbg2PZzwOU8V1932GRAQrVFEctQXY=; b=gVqyhYETNZqQW+9WJsoFdmcysiqav0BvN5sQtpsBXwfpYQh6wUVxz1W9ZkqazpPlC+g0XSbJFvikUG6m/Jta3ZMxStn9GSBLNQpsi+ZNtplYZLu5L3Yj3kbO2CrHpjr2ExFlsFcHfqx1m/8hZs+nd4DC9pQXp0/NQyuLZb9SpZdXt9g+BpwGYHQPmMOnJsDtnMK7TwlOQWP/cG45rZyPcFF38B+QTLR6do1jUy5wiJ64LzvKy7+S8tE3fHXX0dbfVFwg+PJ04h0bKByx5s4qxb2D8Te+IoD0uvlmQAINfWnz+M5yAOyjsEKZLhtrbVMWrGPLpddRDJzs9PstquSz/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=hXVI/lhrlza4KLxbg2PZzwOU8V1932GRAQrVFEctQXY=; b=yqU+y3y+7LPewYWZ1afG+VWe1af82000wG3cdgt3SI3ch1Fo7c+e2eEuTUKJ2c/VU3/SDhe/h4oI/oZgPQJU3sBbuYu/9rPx1JsgH0ZGk3JjNUTsAF3lsj29i13mA7kSahjvLopsWy25MBmiz1UuwEMJemLI6k0FtGvW9igL5Pg= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by CO1PR10MB4626.namprd10.prod.outlook.com (2603:10b6:303:9f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:37:01 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:01 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 09/24] scsi-multipath: failover handling Date: Wed, 25 Feb 2026 15:36:12 +0000 Message-ID: <20260225153627.1032500-10-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8P221CA0061.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:349::17) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|CO1PR10MB4626:EE_ X-MS-Office365-Filtering-Correlation-Id: d4da3c09-39d1-4adc-cf5e-08de7483b809 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: wU/AiWBHEObB41L2GRbpMglBsF+qDvO4ZX4k+k1Z38g66t8JJTEPEd93NSAwWLliDBzGpvAILlx5HmsikDDorFB8OnjHojpAJXY4wuOih7YALqwGDwZfPQGtaBIe8+ce/737xM9v08oCvQxDqa6dmh6+wuQ9di8PmCDpJXQuUJ8CCHGqvusQDR6Rbe7AeHZ3Jwnj8CMfmQOIdObEDKj2rd93GC7X03JFxqou18SjJqLs+PRM6AHkhJONhVVhJL7X/fvxeJ3Qs+jRqrx072mYxjb7H22o+scv9giDOUiWyoMLE9VvulOwlQv2I8nTqLX/r2gQdMMsieXJ0KxJM29+duN7BAzUaXTjS5YMigSln9fbZwndLSS+vsqnnOQt3CjDJPf5hzoMFmXa1WsijgarSt7gGYoOViyg9y6A0+qyA0ajmBWgyz78S31VvbAEmA+HwX87NOCE3yE8EFRSoPjd0Vrxn4qYYUZvO3Ixwc6DY8eC7/83fdflS8ryBgZddUBTjGAfIOQdwQrw+V0tGMOqBHNJn7f75KTf6jyLekEzqdBLYjDzvkIVqN9KuecvD23sITbV1Ejg0675y+xQ87pNg6x90k8gR7yigGewtiXtv3/yQe8d1GJ6+30mCbHgmdpu7FKIKU0mRxVT1LyTeu0jyWVFAZ9aBgEQMLz2Y3W9cZ+qBU0jk7QnCkvzbRLvbc6N1AsG2F2tw8exyS9ZaPC7RiMe+N2Pci/E2n2c8HEbGrc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0OJuqFoOJjOKuiKnI3kHZSo8LCqGBpgP4BiAA7+3Kpqy2oX8BNHOjsko2ZlX?= =?us-ascii?Q?M/yJhhaLyj8zy2aqeO1ogsJ4QIiQ3GA7S62WrTGekVtnoozFGuDXheyTtMVu?= =?us-ascii?Q?6W5aUzKrbrVHiN5o5s3iasmXQANiuc281kQYyt2lmiYeNgjOckPr+Mr8ws+v?= =?us-ascii?Q?mf41kSsXUOcFC8RXWJqTnXWJ1tEDVUjTAZ97r3td5PCwtX4iCtYrV05cIBHF?= =?us-ascii?Q?dSQeimMaFKoN9ZVDZoGO8yn+r6QTN/byKq8nqRWyzaoqdUSxuBaJyznMeN1S?= =?us-ascii?Q?vLbTegYPENm+WXek5duNYiofTPxGrhEg6hMlleUQe043iy4s+MbYo4iv7jQb?= =?us-ascii?Q?HdDzYS80uydtB9g6qx0VjvY4RxQ0pK341WBMq4MMl5ijlLxdto1q9+ntp5MH?= =?us-ascii?Q?kb5IalOK8SyXaPA/H5yHURpzg6tA6nPkcdt5ID6hhZ5gFeWi0L9WM+7W9v92?= =?us-ascii?Q?CoRCi4xVK9+i9IGbWopDkh0/0Nq/0G3Xt1h8i6O2o8ZEJkfo7lMzHYASCaE4?= =?us-ascii?Q?Y+6I4MMfuNmZx4yhkie4qrFbNL+HqrE8iyrxVZIhci5F1apS/IrTocjaQJ2z?= =?us-ascii?Q?PhCMDn/FNneRXHeuAg1wi8+UfP0a/RyUNWY6HD3deb7FeDJC19g1td92tirH?= =?us-ascii?Q?EfR2ptc0tgXpp3B8Nvg0huf4Rjrp7sgchVpPeLLFAeLGIToAj+65QIgxGH5U?= =?us-ascii?Q?9dktSBZo/FYwIsyrfXyh5oZDcvTi4NQvkuYdj8uzowGcqJmLH7RTV87lyICF?= =?us-ascii?Q?MZI32KwpN837YTMyd1EkvYZE9FUsFryhDQZYP3X/Hy8BOFGwO+2GqSm64x3Y?= =?us-ascii?Q?LxmKFVA8dG3YX2EUogROLvfXl82tUAyJZwdNSQgYo9v6+FkTTMfMyPlEBJjl?= =?us-ascii?Q?BMTeJJqV8JfCwLWSo4wzvyMXYYmpB8ntD18GqRN7hI/SkBJxBdULlXKeUqOh?= =?us-ascii?Q?MTllKXfDfZFVcnxOhjb5JGMdVtkbTgE+JUoryKDCTsLdzVIb/tDbeh3iWuF7?= =?us-ascii?Q?pZfgklHsiCwrfmhBMXJaMIj7orPLW1ln8iK0IMXQtJCblRiQ03ykDMMXB/ko?= =?us-ascii?Q?uzTalctHvnAsL8niqhNDPAI0xXdGoS9MroKwp5A+29t7cq+2SWwefvnnyvhv?= =?us-ascii?Q?he61+9tU6zZqFJHVenMqaymsTOyvhUPmuDEyl8BpAzgEKAbgJ1pLKGiPFCec?= =?us-ascii?Q?Xx5FGP6HAYqXuMM6/LmQo1HU78lQBZJ6b0Vqd+we9SpVtlpngCqfSmTgDDmv?= =?us-ascii?Q?oMM1IifmmhSbyN9Sx2wG1LyJTVxTiMxt6OgIogoGwTyq9O4W8sM5gbt4WyqB?= =?us-ascii?Q?LrZUpMRs2IoZtG6XI+lwP9Tv6qlTHwCjljJ0JLc2nzK5F0vJw4L1OUUS8JVV?= =?us-ascii?Q?kOfnebMIIpFPLfRQ35bjucAuFg7xuuDDoVy5/nsliatYrVl9YQLjXDiKU5zU?= =?us-ascii?Q?mI6c8/JIEGIwAiQwuExOxqZCxfKo4LFr/8R1xrTbXkYFtL3Plm68lNAoUlrz?= =?us-ascii?Q?7whPZaSxTFnZYZdIJY1GaYUO0w1wENi/R6gRUgJ4vwRKgdobhp8o7JxYVMpY?= =?us-ascii?Q?+mQVfKq7Z4ou6waW994gytwX4MC2S4+VOWJMZXPHj2X6zzkdEXjrJtOH5sXl?= =?us-ascii?Q?I2PhZqewxmTQ4NQNGUnT9s1IQTJczBoLDFuRbNbJqGaV88H0aY6uL2gBbOLB?= =?us-ascii?Q?D+678aGxsG5SoOCAbKtLH+G3uOFW6R+4GzXHWqkT2Hv6jdYxPXMhwDv3w2O7?= =?us-ascii?Q?mQWnSmbDpXpGVRcGWvLwrfR9RYN2KTg=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 9zpYsE3BaNEvSGAlS43J66hrI2GP1FViqyYRlqWQECq8Ev5J1B/JMwnfiBopse42Ww6ZRMcfFI4zq5b4RVV6lwHo78H0IvDTNGxbq6PcE/IOM0jcVXRhXuyT6CO9kzA6R7ADMBjR8vSskU0gGyssf6SUViCsUw5hFALXnJo5sFN2dl4KkmdH6Z30VGHTh4Xn3NYb8XraxHV0VIyKr3ukI4N013EhLEw4OdY/dq8D5a6n+K3AQAk8Kqzunq+pDdgHNWIZSI2bHg6v9nWJl2DebqvlLAytYG0Ylu9rkyAm/r25p7P0a3hiAtb+ddqjeY3rC2hq182Um1UTaqF8nkXsjApNUZgowd0lBhltbEC2F4JZNK/m8CEwdQsbVmmlNUzOVWoD3BXvj7WAvjemVLrVfU+qP3OTDtP/dRQy8xD3zh/CJfQfBgtMCIFGmOKWnMDMSPeZtAkL3RN0qk0xEoODNSOsNG3VQVt+qLxmtAOzqWmpIzhHCryMEJh7IMH9CYtuv3upSDjkxUKBv9J0D8fm+jUzCq82B9JsXb9f4BZ7iHI4KOCzQdpYsJJBMf5nT1WCUOi97XV9EUVYDyOm1lS+BQp7qTBsZcV5YO3kdOXtCMw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4da3c09-39d1-4adc-cf5e-08de7483b809 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:01.2490 (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: lE2lchiIXowY3W76WQ5UQ2Y41m+C0M9PHIr6jHw1KzEfqgBdLbdc2brNkITzpw9inVTneHEF+EDh1ju0THtNGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4626 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=La0xKzfi c=1 sm=1 tr=0 ts=699f1727 b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=QZGp1NzAbWfVdzUme-oA:9 X-Proofpoint-ORIG-GUID: Wt1ch1icA2X4NWlfKrZxTdduvaZY7Dha X-Proofpoint-GUID: Wt1ch1icA2X4NWlfKrZxTdduvaZY7Dha X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX/G4ih/sUb0QU wVvs/5/+70zZitXIiF0Kq253nWJnLMs7OaCdSTwNqKMOT9Ak0JT6w7JUHa+Eztu0LgBlhA5nBs8 DRYS9dgmBsY+0L69Wr8yTwhPivuEBQb6jP56xPKgMpiGoSPWvkpssGhF6uMX1DsOAFjWLB26Gc6 L75KRp3h/ABPmpoP0I7W95wUrPOB5x9dbWGlCjsJLV0jq2f6vETnp1ltCtLGVaRj8+xuU+U0ABh WQsHHsZOg3x9cDwEm3b9jDsarkOtaxPlH+CEBKSOx/99f6M5moWFGmXa2kGVJsEITUTEIFfIUdy LFYcKAZ9ozNshyJEqSU8lydzhJ2sFY2h+X5Dik/u382WB8SanyRrPCoAksE5DUQjziOCIE8+fBr XcrGpq9ZXyq+BHJXo2n+ksDov0zyh7Ludc5GvH1uZ62avY4FWrtE+EzZ3vqbQD8MaU8TLWRUE0/ IMdmlwrTdECTfKKWlJA== Content-Type: text/plain; charset="utf-8" For a scmd which suffers failover, requeue the master bio of each bio attached to its request. A handler is added in the scsi_driver structure to lookup a mpath_disk from a request. This is needed because the scsi_disk structure will manage the mpath_disk, and the code core has no method to look this up from the scsi_scmnd. Failover occurs when the scsi_cmnd has failed and it is discovered that the original scsi_device has transport down. Signed-off-by: John Garry --- drivers/scsi/scsi_error.c | 12 ++++++ drivers/scsi/scsi_lib.c | 9 +++- drivers/scsi/scsi_multipath.c | 80 +++++++++++++++++++++++++++++++++++ include/scsi/scsi.h | 1 + include/scsi/scsi_driver.h | 3 ++ include/scsi/scsi_multipath.h | 14 ++++++ 6 files changed, 118 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index f869108fd9693..0fd1b46764c3f 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -40,6 +40,7 @@ #include #include #include +#include #include =20 #include "scsi_priv.h" @@ -1901,12 +1902,16 @@ bool scsi_noretry_cmd(struct scsi_cmnd *scmd) enum scsi_disposition scsi_decide_disposition(struct scsi_cmnd *scmd) { enum scsi_disposition rtn; + struct request *req =3D scsi_cmd_to_rq(scmd); =20 /* * if the device is offline, then we clearly just pass the result back * up to the top level. */ if (!scsi_device_online(scmd->device)) { + if (scsi_is_mpath_request(req)) + return scsi_mpath_failover_disposition(scmd); + SCSI_LOG_ERROR_RECOVERY(5, scmd_printk(KERN_INFO, scmd, "%s: device offline - report as SUCCESS\n", __func__)); return SUCCESS; @@ -2070,6 +2075,13 @@ enum scsi_disposition scsi_decide_disposition(struct= scsi_cmnd *scmd) =20 maybe_retry: =20 + /* + * For SCSI Multipath check if there are path errors to + * trigger failover to available path + */ + if (scsi_is_mpath_request(req)) + return scsi_mpath_failover_disposition(scmd); + /* we requeue for retry because the error was retryable, and * the request was not marked fast fail. Note that above, * even if the request is marked fast fail, we still requeue diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index ab224cd61f3ae..7ed0defc8161e 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1550,7 +1550,7 @@ static void scsi_complete(struct request *rq) atomic_inc(&cmd->device->ioerr_cnt); =20 disposition =3D scsi_decide_disposition(cmd); - if (disposition !=3D SUCCESS && scsi_cmd_runtime_exceeced(cmd)) + if (disposition !=3D SUCCESS && disposition !=3D FAILOVER && scsi_cmd_run= time_exceeced(cmd)) disposition =3D SUCCESS; =20 scsi_log_completion(cmd, disposition); @@ -1565,6 +1565,9 @@ static void scsi_complete(struct request *rq) case ADD_TO_MLQUEUE: scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY); break; + case FAILOVER: + scsi_mpath_failover_req(rq); + break; default: scsi_eh_scmd_add(cmd); break; @@ -1935,6 +1938,10 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_c= tx *hctx, if (req->rq_flags & RQF_DONTPREP) scsi_mq_uninit_cmd(cmd); scsi_run_queue_async(sdev); + if (!scsi_device_online(sdev) && scsi_is_mpath_request(req)) { + scsi_mpath_failover_req(req); + return 0; + } break; } return ret; diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index c3e0f792e921f..16b1f84fc552c 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -518,6 +518,86 @@ void scsi_mpath_put_head(struct scsi_mpath_head *scsi_= mpath_head) } EXPORT_SYMBOL_GPL(scsi_mpath_put_head); =20 +bool scsi_is_mpath_request(struct request *req) +{ + return is_mpath_request(req); +} +EXPORT_SYMBOL_GPL(scsi_is_mpath_request); + +static inline void bio_list_add_clone_master(struct bio_list *bl, + struct bio *clone) +{ + struct scsi_mpath_clone_bio *scsi_mpath_clone_bio; + struct bio *master_bio; + + if (clone->bi_next) + bio_list_add_clone_master(bl, clone->bi_next); + + scsi_mpath_clone_bio =3D scsi_mpath_to_master_bio(clone); + master_bio =3D scsi_mpath_clone_bio->master_bio; + + if (bl->tail) + bl->tail->bi_next =3D master_bio; + else + bl->head =3D master_bio; + + bl->tail =3D master_bio; + + bio_put(clone); +} + +void scsi_mpath_failover_req(struct request *req) +{ + struct scsi_cmnd *scmd =3D blk_mq_rq_to_pdu(req); + struct scsi_device *sdev =3D scmd->device; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + struct mpath_disk *mpath_disk =3D drv->to_mpath_disk(req); + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + unsigned long flags; + + scsi_mpath_dev_clear_path(scsi_mpath_dev); + + spin_lock_irqsave(&mpath_head->requeue_lock, flags); + bio_list_add_clone_master(&mpath_head->requeue_list, req->bio); + spin_unlock_irqrestore(&mpath_head->requeue_lock, flags); + req->bio =3D NULL; + req->biotail =3D NULL; + req->__data_len =3D 0; + + /* End old request with clone detached */ + scmd->result =3D 0; + blk_mq_end_request(req, 0); + + kblockd_schedule_work(&mpath_head->requeue_work); +} + +static inline bool scsi_is_mpath_error(struct scsi_cmnd *scmd) +{ + struct scsi_device *sdev =3D scmd->device; + + if (sdev->sdev_state =3D=3D SDEV_TRANSPORT_OFFLINE) + return true; + return false; +} + +int scsi_mpath_failover_disposition(struct scsi_cmnd *scmd) +{ + struct request *req =3D scsi_cmd_to_rq(scmd); + + if (is_mpath_request(req)) { + if (scsi_is_mpath_error(scmd) || + blk_queue_dying(req->q)) + return FAILOVER; + return NEEDS_RETRY; + } else { + if (blk_queue_dying(req->q)) + return SUCCESS; + } + + return SUCCESS; +} + int __init scsi_multipath_init(void) { return class_register(&scsi_mpath_device_class); diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h index 96b3503666703..544153a01b3fd 100644 --- a/include/scsi/scsi.h +++ b/include/scsi/scsi.h @@ -103,6 +103,7 @@ enum scsi_disposition { TIMEOUT_ERROR =3D 0x2007, SCSI_RETURN_NOT_HANDLED =3D 0x2008, FAST_IO_FAIL =3D 0x2009, + FAILOVER =3D 0x2010, }; =20 /* diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index c0e89996bdb3f..85e792dc4db50 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h @@ -19,6 +19,9 @@ struct scsi_driver { int (*done)(struct scsi_cmnd *); int (*eh_action)(struct scsi_cmnd *, int); void (*eh_reset)(struct scsi_cmnd *); + #ifdef CONFIG_SCSI_MULTIPATH + struct mpath_disk *(*to_mpath_disk)(struct request *); + #endif }; #define to_scsi_driver(drv) \ container_of((drv), struct scsi_driver, gendrv) diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index 79e6860243e74..07db217edb085 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -43,6 +43,9 @@ struct scsi_mpath_device { #define to_scsi_mpath_device(d) \ container_of(d, struct scsi_mpath_device, mpath_device) =20 +void scsi_mpath_failover_req(struct request *); +int scsi_mpath_failover_disposition(struct scsi_cmnd *); +bool scsi_is_mpath_request(struct request *req); int scsi_mpath_dev_alloc(struct scsi_device *sdev); void scsi_mpath_dev_release(struct scsi_device *sdev); int scsi_multipath_init(void); @@ -60,6 +63,17 @@ struct scsi_mpath_head { struct scsi_mpath_device { }; =20 +static inline void scsi_mpath_failover_req(struct request *) +{ +} +static inline int scsi_mpath_failover_disposition(struct scsi_cmnd *) +{ + return 0; +} +static inline bool scsi_is_mpath_request(struct request *req) +{ + return false; +} static inline int scsi_mpath_dev_alloc(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 A09E53E95B4; Wed, 25 Feb 2026 15:37: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=1772033859; cv=fail; b=b01tq86a+LzKjVK51TMEbg5y8/DAWlLL5eVmhHNTHFj1WXPyzCUsAevUwSPry3Z+jd9SEUXUuW20axVfQ7j1GcyYwD78HaVJXuBAOdHSYlSZfNArtJ0shZwPEjSv+Czb20y2fmThl5KiXLvZ1cxN80KHJPCJTDP5IiSJ7foYFrg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033859; c=relaxed/simple; bh=NYldLKLlAmThJFQnT2QBpjCEbVgIsZwwNdOSisAjtfk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=UaEa/ip5AaGpEWfMjNgoBbkAal+/2AkP7kKAY3e4F7sxLfm54mcDxFP+JVnVXSHtaCrGbKPrDbyI4KOLCPuyYgQXefa4sS3dIxl6H1rUu1RLeChGrD0GTHcNrdq4eCkV6WqpPrwS7UX0V56DQQBqzHZInOQp+CwBr0b2YR3APVA= 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=oZPi5/Zz; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Cqglc4J3; 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="oZPi5/Zz"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Cqglc4J3" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PALCrV3928816; Wed, 25 Feb 2026 15:37:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=O5gULBjhGHflReyRi2Zpz9HVekDOOyrM9812HVoYDUQ=; b= oZPi5/ZzRgXdV8NJodojD1SIz9sVaH8pkaBpJOyGVTLe2LzdxjiNeafJHb9q8Z7g 5qMHJizdJxA6XOIpeplloVmr0y5P3tMRchhcBy7M1Ml4hYP37QQZSCVE9YCTbf2s FiF8eoq2nWluyrfOtZWdoS1i3uEa/X3Npfp8BZqjLKUnNxTJeKPrvDORyyQwXbEt GWUOjcYFz6uqmEwsYkL7L7J3Ra3p5DHWLbPAkUR6wjvIK/eAOgS77mF1sV0C5F12 7mhzkhBi/jC4hfVkcgDQY6B4zJQZ98QF0o2+SfAOIWtIsPcoUY7DK5smTDNIDVD4 hkrJQEQ3cenywfUbBP0VGg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf58qedy6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:16 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PESt01028497; Wed, 25 Feb 2026 15:37:15 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013057.outbound.protection.outlook.com [40.93.201.57]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35b7hfn-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V2vy4iFDyr7uy4AOWfhv6yAmyJfjFpEaPEOo2wr8usfV1jL04Ux2vK9Mf12XXDR3hR0qiYOhaD5IIKoOLRo/JMTl3SLzxXjcXu1kbWvzkqWtMd4G0kYMsn0VCghe+XEA4KgJ06L02+/A+aDgFDU5u6/Rj7phQ10U+3C1onoYOPUpIOks4R88ULpLYZvnCq8IwT9nnE+WIq2fXAne2WoYOTLGevGsXSC2Crhu/4s4uKq8fRp1CYtWab3ofbLDjgxi9sJFMpL3EKUuQGtHSF9bGi8+NFQzjyCE6yqoiyrJ4cmnwy4h2NRx7jyTDKsCSOLbkM8BhEwHfsKd6VKCs8p/fg== 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=O5gULBjhGHflReyRi2Zpz9HVekDOOyrM9812HVoYDUQ=; b=AUpuSKole2DHAmRTAe3j2e6RyMnkxtMNuWygWNuajQVMdNQToj7OzE9ZLq0FLh6YwGJk06I53mSXrZ6vmT6HXKVUOMu4d3TCEzWYv5s2OsTywVgl/ULhbR3jYsGyzLQ/mBwRObVoNQd+yUq/hHElgL2DW6nhBM5QdiO2ssbzrXAs6KcS2JjX1V49zTIgHvWpm4NDnBNC9tPjtPWV0wTy3Q2LLGI80F882tJBCgFa9dD5J9155qvRZuydvDsNQ+Bx//I1N6TUbvoLl17ux8kYvGIjdkLiOKIvNd7AOV1e7ZEc6Zy7xpJODIt+iTOEQf3M3dmmn4BJsQAat6ZtoSvQCA== 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=O5gULBjhGHflReyRi2Zpz9HVekDOOyrM9812HVoYDUQ=; b=Cqglc4J3XZmwGWJ+L9/HqOQJCfsJZBnwKXgu6+9JkQiHZnB/TGGqfqOYD4h4HMHv0kjaUWYK46VqSKcO9Z/nc9G4ALiKNQF07XUSGkzsEEv6PmERnv3Yh6yvtTrOpEiElOC9NPeTT2y1kciK8cP9ZMGuyE0Z4XDAUfHfV8tlAV4= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:37:03 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:03 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 10/24] scsi-multipath: add scsi_mpath_{start,end}_request() Date: Wed, 25 Feb 2026 15:36:13 +0000 Message-ID: <20260225153627.1032500-11-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH5P222CA0005.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:34b::16) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: a85e08cf-d67a-4ebf-dd5f-08de7483b932 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: T7ntfPtwjQq+A0SNKbDBFPge4v3DtxhNpBmecUhf039SQpO20A3t8IgiI1a66jCejWKs6GnZ2kL6ZXgNHfOPrbZeBJw45gE7ZouBf06R27aYa3tbNt115stRZ7Jx43Jv7EJOUuW/EJCcK+k5+Whowl/b1Ztlz5y8TD+ITbYIByTbLxus6JkaUC/JO1/DNTFOD+KI6DsTEOkqrYQA7RRfKibZpN58xhdXojLZAiAIJKPziDYO7raIpizQn93ILyAo97m9/6onsutx413zZN4ksu3Cy6098D7BQc01kJW6n6nsInn6NvONqnNpO4T2FpXKKk56KeTwuXzHcXeqYireyWYvR1J+OxEWeoVx15SvHJ5Ar2rW+Tv2vdEtwYRigYsBnVigf1+frOOKx1AMB4hIXsFtFmqMhXk1sqMi+2nmi9acC/B48upkAcUBYz0tvIyA71sTXeZnqwnueOI60bgCetrZ8BWImfwTF1uycwnzeIlcdopjN4XJCSNRvAXW9tj5ccwGz5ZPpuV2smC7HIEEMDI52uKJ6fIkqKALOd9+x4LzuPY71affYr3+dmWUbLAr2CiJJzsfB0YlfUIJEWtpLkz7RsHzycA4J3VIaYgomaHPyYpyuMvfr5QUHhfb0oayRR2yIuHSf/IUhy+RJL/ZseRURnqCrlC48/Itm7Pf9fri9MITKzxo+TJCGKaAqOPpPlSdgaMhloYN+Uq+LzBn6lD8h7ArTM4zhD3SYiEDdFw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?v0Nky9OlUEDEVF7PIGc7rrs2ynWTv12T+mf+J+vWJ9LuXFNE0CQlvoNGGv9B?= =?us-ascii?Q?zDfhlZ68eHeVSdG+iTohrfStZBlnAR/9b6BeZv1jNyN69msF9NqUFCE26Dbg?= =?us-ascii?Q?NWYJIMadYetqJoPuTbzCCbiHN3BMfdptZEy/FC8iyC4Ahd0zNU/StuHCI5Mw?= =?us-ascii?Q?VzRPHE0x3moaI0iiGTm9sfM7EwAOd24VyfiPhdlR2Hpi1LKSFBtgz1+zNvHz?= =?us-ascii?Q?N1FgwqgEmUmB8XSYOx6x/bMAEFyLEqTgLwzSIZ/epREsPojxDp6IhZNA549+?= =?us-ascii?Q?i/WPenU8YszDH7BgzETvMXvmRirhKTvatpVKqLv9ZHKLZCx9Fc/qierbFSR0?= =?us-ascii?Q?f/B0b1N9+cdESQG60McWeuGuah74DveKBlmpQV2v4G7AqZJ3W7kk04r0lGWz?= =?us-ascii?Q?QRUA42S7nTxnA0tmlcrQz17l5POx+K5pfj2mjHtLZKcJwM4UY8VYZkNpMPkx?= =?us-ascii?Q?N6pNXOHsoy6fniheUbGhfvppr1k5VrnyF6DwbD58og5aGcl5KtpvWfWglU6u?= =?us-ascii?Q?/R1f1OqmkFDWQj8RVsDS1ZpISj2XsQNZklThBxXMyDbQIadYT2/pA0bIAOUu?= =?us-ascii?Q?I/gS1AImBmxILkwFV7lrkgCzWDg9YOnrpHYcjaeOfdSf5WKxqkCSPCoqj7DD?= =?us-ascii?Q?Aga7O0jl6a+szbPmFbIkA5FfF1SQYtCM4zGCEsTGcZeYp3NvlqPZ6UV3uB5z?= =?us-ascii?Q?nxq4qtsyEzAz9yBzXBM+SFjlxb1OvS/PJsf+/09wJBNzkKBtSTwGRjntuNhe?= =?us-ascii?Q?ycYIFIjEBKOPiRaRTaOe1Qdsnpfs20A1NGYI4a8mcGjHIJxsGhkX456mQ+3n?= =?us-ascii?Q?56vnEiZxPPFjAVT3GALYHDjpGApauuLn2C+ITnOslaEPXGEgzomIPkC11OKy?= =?us-ascii?Q?b3R3DyXqLhjwqrULxWRb3R75sleU8xFB53YIrodEZdKEBKcuhPaSqL0JbH1U?= =?us-ascii?Q?S7NF5Osfdo7oSilRQHtK/Kyyp3ZwMJoo4knx7V+tJG51pV1qurBdV9Md/MGv?= =?us-ascii?Q?vGqP6kji1ltIPHeZ4oGqspJoiT9enF8XCDrOI0YmTqElOmn25de1hqpe6myD?= =?us-ascii?Q?vV8PTuQ4S3dbnXIR93lthplklGBqcOHSY9vMTCqFKPuJC0BkayuF1OZb4SuI?= =?us-ascii?Q?fTDoK8TjWUkqew/sYZcv879XAXRSi83ogIKA52Mr8HFGNq9QE4ernLJ/Ii3n?= =?us-ascii?Q?Ab9jGcdWuC6yE6Ifqe/dcgB9uvZN85w7giB3Qefz5XQMSsEA54VRP1pXZQ4o?= =?us-ascii?Q?402Kt4e4Is1FkUGz2sZ5ka8EewZ9MW8gyffobAJt2u96yCWRh2FGrwI5k1fU?= =?us-ascii?Q?Du4GD4Pl0lNiUmMI2GP7hheTqwDkUcVNaq7cbrgjgwibGqeONO4TW1T3WJR6?= =?us-ascii?Q?c6D8t28GuLvH4DzUnCvXNWg2wG0rJ7DGuBzyEX1S/xem/CtRmbigJtJ7Zn/e?= =?us-ascii?Q?uWWtR1x7SGMt4s03XQZ3Zpyk3KO/DjYNjpoqJW2WRerOOxV3bJIX5hII7ebz?= =?us-ascii?Q?Wid9AZxy0lrjJQbk9LHR+FnFjnZ1fXHSv40l8eZK9NB/YcLwAdIUi1B8t0Er?= =?us-ascii?Q?EAOIckRzkEgPcR4mgCYFki6Slvx/ngRW+SlRYnL55AzDoaf+eDVl4mnUxtEV?= =?us-ascii?Q?tPLiv+smRWyqs3VUpXWTA0r9FtrUoU2aaq7x6uToTQrAvlAT8O/P6h9S770s?= =?us-ascii?Q?wLjBr3FDbNvUeKfAyyCFks4jB76s1jwsVVorMB9MMsRco2z/3rMm1TNroVJk?= =?us-ascii?Q?jkY2fzHCy+O9OnjmO9M0BBrOHstyyqY=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: gyIy7iOOT6hmAqBjgh8IzKfc6+/HLPC6ghppSYfyKaoEhf9i8qIlbV22QeQEVDUep6nzfoOP38FrrrxwCbFELR8lSBFasP/87jkrgX2nhV/jEMmvXjVIqAMw24RcYcxU+lA9XEgVwUtCmYCoxb1dbyK7dt2cOGE1M4GjBy9+QBq1nAfXkcbAVGbuFUQz8M4taMdCqeqbyd58DadIhCTw9zb4p7M9fiCOc6lVOrou0VeqgRwmUXpBFYS1Qv3Qmr636o2c7/yb/upFVW36otSIPC1H4P2PxJuYuJJZXtqDZwvzuM42pm9wcFJpthssCBvuCzCV4b0jyEDOsLvfiOirNovEuk5Eax1jXMwfM+1vJSCbWvPIxJ9KEwvk6iOjYqCgbhblRFB6TYoat4qhHGp11OcHEQ/d7Q5Cx1msj4HWWemd4GOxRKGZbNyxn5ol1spqm2377a1CJ1njjNVoCpyViygcY1NbndnOqdmC0UeFOOYw4ZqdyMsw0wrvBRB06/yWYulp2S9ud9EBsNxfthSGB8b7p8oYojTy7GCtRIx3MN7kX0FPY5gyrz8pQ8jlS1lUGlQ2SwSL99TVdMjhSG887nkkD5/7/qCtTwwv94y6pQk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a85e08cf-d67a-4ebf-dd5f-08de7483b932 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:03.1826 (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: T/pNJSd+VuC3b7VjcvTzgxZQFnqJ+4ZXAUOaUxl5YFpjX7/bFz+2mwmxMOlCMoKZPxxjo1wtLNDxDaTFxsutxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX77zdp496Set2 UypenfMzEdh8ckreonSBytp4nvSy7BZzqBIV1Xe1TUZ4Ath2spij/2N3te+a1uWEG/0cntibhdS 2woleGUgSv9S2I84L81vAi27IDsJnt+SsFRMx9QFxn9e10cb1jvQ+LYfvv16oTJjLcnUOj9MRS+ JeLG6RQfsajGLJnHYy1cS1uujqjr9zB8JeY8xjyLrMTRfFQB7EYlMfu2wbT3RfVswx1HYTJJbCU nrERg33wgdZ5egwv3r0+vkd5eorrZFotekmwRVsf2AUDYlURf7rzTaqhsdBE0bsm1YLcUp0pY0/ 0r4rASm5IswGb/lGcyihrI8yv4rL4ZZHOiUvoqRqfOvJkXk13lzbTKVs/3+PQpajBSAH7m/fchU 3ZMaYlc2B9pALWcUjex+hHgwDYyCmETTR53/Iqe4UlOh0tffAzbhwm9/B61X6A5WbEgr9YSmWo5 1JqrG8MjDzY1m6YiHBg== X-Authority-Analysis: v=2.4 cv=XNc9iAhE c=1 sm=1 tr=0 ts=699f172c cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=sw4HHgXiYKNNKPSRYmsA:9 X-Proofpoint-ORIG-GUID: SA-OYZeUNf2ISYUf5cMR6cdtoArJGr7L X-Proofpoint-GUID: SA-OYZeUNf2ISYUf5cMR6cdtoArJGr7L Content-Type: text/plain; charset="utf-8" Add scsi_mpath_{start,end}_request() to handle updating private multipath request data, like nvme_mpath_{start,end}_request(). Since we may need to update mpath_disk data, add a callbacks in scsi_driver to actually do this work for the scsi driver. Signed-off-by: John Garry --- drivers/scsi/scsi_lib.c | 4 ++++ include/scsi/scsi_driver.h | 2 ++ include/scsi/scsi_multipath.h | 24 ++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 7ed0defc8161e..61179caa7b2c8 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -654,6 +654,8 @@ static bool scsi_end_request(struct request *req, blk_s= tatus_t error, */ destroy_rcu_head(&cmd->rcu); =20 + scsi_mpath_end_request(req); + /* * In the MQ case the command gets freed by __blk_mq_end_request, * so we have to do all cleanup that depends on it earlier. @@ -1887,6 +1889,8 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_ct= x *hctx, memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE); cmd->submitter =3D SUBMITTED_BY_BLOCK_LAYER; =20 + scsi_mpath_start_request(req); + blk_mq_start_request(req); if (blk_mq_is_reserved_rq(req)) { reason =3D shost->hostt->queue_reserved_command(shost, cmd); diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index 85e792dc4db50..44e50229a75e7 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h @@ -20,6 +20,8 @@ struct scsi_driver { int (*eh_action)(struct scsi_cmnd *, int); void (*eh_reset)(struct scsi_cmnd *); #ifdef CONFIG_SCSI_MULTIPATH + void (*mpath_start_cmd)(struct scsi_cmnd *); + void (*mpath_end_cmd)(struct scsi_cmnd *); struct mpath_disk *(*to_mpath_disk)(struct request *); #endif }; diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index 07db217edb085..6cb3107260952 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -56,6 +56,23 @@ void scsi_mpath_add_sysfs_link(struct scsi_device *sdev); void scsi_mpath_remove_sysfs_link(struct scsi_device *sdev); int scsi_mpath_get_head(struct scsi_mpath_head *); void scsi_mpath_put_head(struct scsi_mpath_head *); + +static inline void scsi_mpath_start_request(struct request *req) +{ + struct scsi_cmnd *cmd =3D blk_mq_rq_to_pdu(req); + + if (is_mpath_request(req)) + scsi_cmd_to_driver(cmd)->mpath_start_cmd(cmd); +} + +static inline void scsi_mpath_end_request(struct request *req) +{ + struct scsi_cmnd *cmd =3D blk_mq_rq_to_pdu(req); + + if (is_mpath_request(req)) + scsi_cmd_to_driver(cmd)->mpath_start_cmd(cmd); +} + #else /* CONFIG_SCSI_MULTIPATH */ =20 struct scsi_mpath_head { @@ -104,6 +121,13 @@ static inline void scsi_mpath_put_head(struct scsi_mpa= th_head *) { } =20 +static inline void scsi_mpath_start_request(struct request *) +{ +} +static inline void scsi_mpath_end_request(struct request *) +{ +} + static inline void scsi_mpath_add_sysfs_link(struct scsi_device *sdev) { } --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 37C343ECBC7; Wed, 25 Feb 2026 15:37:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033864; cv=fail; b=HzMSC1SJQyiHv/EOGSGjqMAVX764dO7xaFbDJBv3cyvMuUpBHyfijhLf/Rz7UAFxd6cyZRckyx0wFlmKhgxXGq/FITCgjO/CkSnAqC0GC5TRvX6yx6bS9SfISeCVLcNL/wRYlfpFD6QGhD+3UE9lKN1gl0IdrAC9ZsKfUhrfS9w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033864; c=relaxed/simple; bh=nxlaE/3HZ9xD97luNaMBQqhzQBnSuChg7hMqvxWFwVA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=M4K631AyXraT7QYet3yZYQh8R0WZzBv/gJDgvCQFBRmoYZZRYssKc0G1JaEuRHsRZ2Ou4yeyywVu+hYZ0EH5964W6BbZsqJ6DscC3Fz0UYNumjNxEVk+qVRvS/GzUopzI0fKP7GWoI/ZIdjSKneewu/xtVlQlYshpAk+eI5HB8c= 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=iOSZBe1P; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=xNnLcZ8F; 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="iOSZBe1P"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="xNnLcZ8F" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAfTNu359637; Wed, 25 Feb 2026 15:37:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=YPf/ivMc4Nh4wNL9ML9qKSX6eXfFIIQHzQOzIgVpeIE=; b= iOSZBe1P5DfDc669bRHVEV7Sj6vdlt2hsYCCjzgeE+Epi71eVoc0rFk2xlzndRPI M1BPYf4b2Ot/SVvKoFALX5JLzWYXoJEs2jsZmCcAVFgSXdBc+jfJHx8f1xiKdk0G K+q/BUf3HdYCh0dWQSkzVbdB2/Gof3XAQKxWi7cWm0LZoiTykBZCjyLl/pa8PYg9 zWoUWFdhx1s75ZE5XBmjgC0Zbv2LbgusCh/XxQFp6tEmM5L9dHANgWswUtklQQOb Uwyc0ilkhzQPKrCGuJ6ShU9TKfJWFuAl69sm9RsjgvGGaRbLvdkns5pO0CzSv+BB UOQ5au20gXFP0D7nGG7b6Q== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3m7xfh3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:18 +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 61PFWE8v038454; Wed, 25 Feb 2026 15:37:16 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010033.outbound.protection.outlook.com [40.93.198.33]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35nfrbe-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DX5XM0vvQ5+3OJtleUQlC8C/nz0iBEtbpY7M8V21tqr+7DuzT54n76I+JxG4kjEA5duBQ7CgYBXGdjfDwSVj072CtmecKqTNg4LrBq1fsAV8iz8+KwdPrLskaPt1TdEuid5pR2Bz9YBUJLhufO6+AvpOv2wH5GLPXl38BiXshKMic92Tm0bKqKyUuuA0HHbkYcrnhPygslQ2xgK3q+ov6Bv8a4CSnLWol37sydrgRT/k6pKjbXgitBbUVPHMa5a2OkF1ny4CQYQD4/cKcnQhnxQhJJV4rBl561FXAVQmb8wP/tR0qirq+a900Cx5fCfpbAy+peWIiKKkYbe7diXJgg== 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=YPf/ivMc4Nh4wNL9ML9qKSX6eXfFIIQHzQOzIgVpeIE=; b=gRpg9rsAjeRh07cgMZ1g3z6QJmmUrPMdsofK7xkkjBhomka0OJfnh/npq48hNT1aNZcDexQZ8v5WVlExjtLWWtivsKhCqDbEp5ED2UHgPgh+JmaM11VLynkz5XyGKz0beCKPGdn2lEnKnmHl9AzatoRDJVu7CHOaqOzFHopWc0mtvT1pvJvC5NUGrqzAUca0oiDZAsSQ4ltHG8nNXCn3niILDcctfhAQnmPShLpg1XqEHiMWATiMa0kwETMTNdpuncVAlKvlByZHK763kx33LA7BTns45xtEB57Pc/DDZ1U4pE0kPv/18xChDK6pyk+bannlvjAWT36k6pPfTEgYFA== 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=YPf/ivMc4Nh4wNL9ML9qKSX6eXfFIIQHzQOzIgVpeIE=; b=xNnLcZ8Fp4oSMzqQ1WZMF0K8e/LZ21p1n6AwkKOJkVHu7KhRdzP4Tag41BKBSHHujiiWCzczw9EghZ2g1ZJeEi63l6d+yJ+6eZ3W1qxTREr2KMhX20KX8JR57X9UQ5ae8IXp466JCWlR4K+rBI7uWRqmEwp/rpoduqzd/CUYi/U= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:37:05 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:05 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 11/24] scsi-multipath: add scsi_mpath_ioctl() Date: Wed, 25 Feb 2026 15:36:14 +0000 Message-ID: <20260225153627.1032500-12-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8P221CA0060.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:349::9) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: c2fadf7c-e2a4-46c4-f303-08de7483ba78 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: +cpHPBLfdaDoydeTRIRuqQdaorJ6S+bu4z64u61ZXRv7iSY6LPNLGeNXf0Mj88bmymF+1zoafUleMN3vJcCl8bOXZq4cs9xGBTPusTTNj6ghRtjcugZlp+0s7LIAm+HXwNnS0mOMZNxJBZ016PTzArqMqPu3oYM/H/nysHPwQsrKj5OTUfDKmxI+rAXZyZjskrY3RX/3kw+dZCa709GE5OFCgd51iVHF7/2usoM23FOshnAUjPiLRTv0tByCJKf2RdwxbwA6Ws8gPG8x3oF0dd272HybJW++uw61jYS8S0rcE4wz3Gc1jod+qwkiKuHzB+BCHQIW8Kky2ZQnzGwpUt6fERDRI49Ez3U189h2uZ6tcfSfGjSA+ow9O0gYgFuLbW4mt9ybg0Jime5HxiHo1UNhfjkHdY7XIuzubWOBJ/4Mzk5Mlds39I1OaP1Jeip/3AE7USOUHYkpDlyG9ZT71hAHocbxep/aJl8G6GORlHtGvJGp0mWvdOYk+Y6C8OMicmwFYf6jxTgxOK4h9vUtnhyLBh/0pvQp8PkyFogllEf3Rh2n/iyGKoAvPVF08cZ+doqLeJwRMsuboZ/BsWIOoti5778eCN1V6HwQE/W55P3k43r8hWk5ZnzyebuX5qcF48BzxZ6icnWYO5t8tzsG8xwaXeC/dJ6+jOdcoDLvRQFsvAvXng2CajMRo0yizUmFFInTzByVtKLVOCDyepPmB4V+nYWEVy7THJ/RIarRdSg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Gs6BOM1BAGFWAl3oYqvlONjnigZSWUYZsbykOUkIlQRJsNUSXz6xQVqUUJtr?= =?us-ascii?Q?jPykDWN4OibLN/Yk3fzsdEPbRzfK4fsS1W0JY7GU/yKbQ6hLI6f1jt79hbqB?= =?us-ascii?Q?71Sw3NnfK2cv+f8pJ9K9GouE7ISdDXOhyXgn3XvV8Mm/PVwWoRamQoE1xrPc?= =?us-ascii?Q?yKbIFKc/8Z5dHT0swhFxj7dYEzCHEosMXbNW/0exUFY0oLHs/7QPB7NqbgYW?= =?us-ascii?Q?6g9fVoEnXTCeusAeo7zi40P5zZf0qfqrGl0FPKN6WYAkW1XAheDBmCtQplTB?= =?us-ascii?Q?D9yHBuV4nB2A+AbAfZAKRrqeVPa0FShAXSyFf2V8zwm8o24uqjjeV1qXc+u/?= =?us-ascii?Q?2vXk7HUkqQIjD54/EIQq9iMGJw20Bzs4wQrVa2wvva0/A75vmeaERq58i5OA?= =?us-ascii?Q?cUU14M3qrsHbq9Zqe+HZX1/hNkpcymS40jJnouon6aMfr9vLzQZk71tkgRYi?= =?us-ascii?Q?I6P9TkNoRI+Q5WByI9ZxkU1ESuJGS3CRLXGcsziVDfy93oZtTSFTxZtcj6cU?= =?us-ascii?Q?9ADIzFoQzQ4xyNpmTNVNYMpC9OTPJ24O34YXM3W61Pgpe7RfaOMHYgsj0+Hk?= =?us-ascii?Q?Sqkg8fkHOdHXZ0oDLVPbE8VaaZ+s77xfrWQk2xrKVgbN2iKN3IpXtXVIByhz?= =?us-ascii?Q?yP/sF97kwmVasEahiaP4dAvIK7aalnd/tZ+4ibsplp1G7fMWUqN4dwwyBZW/?= =?us-ascii?Q?ibzcO2d9zJ9sVCG76NmMfcM2XEnOTespzDu4AZkELYQxgd+NBW1BjrEZl+H1?= =?us-ascii?Q?gFKoTb5Qqa1J2RrURDbtrPj4TDI2KmPxNNnvddMrqgdYH3p9McHsqCYeaRc1?= =?us-ascii?Q?mB7iFspN8jGmyBV3oS7rsHVpmsBGum57jCfIO3XHm5Nw47X0uBhp+IpEEkTR?= =?us-ascii?Q?KfagP7tLCVaVgewE3tQYd4/cYCtqmHrcmNzwradO0xxjkmE8LVL8GiRUSnA6?= =?us-ascii?Q?jpgZVNpHaPeQoYDsiSpT69pZWAnP7E3OO6/voJV6MHSSEWla3s7+pkfiQ8dx?= =?us-ascii?Q?jFjovi1mutWSXmBYpMDapAp+eaIR3c3FJILBNTZoJllVFIqHFL6alPjLrg+u?= =?us-ascii?Q?ufwBfHOnMXMEllE6k3U/+QbOMv41NvhDcoUX358mhBdBDvq8+EEbbb3N3ig9?= =?us-ascii?Q?66Fc36gcMtpFXCi5yeb3jk4sBJjWPzZAnmV6uCbkTkuoTiPSlNsxcK+JmWCm?= =?us-ascii?Q?ToexEBRl27iogvxLfDnbMzai0Qv0cPuGsOWfg9Pk6WbZvNpoAtCs2Av72KS9?= =?us-ascii?Q?GHpRrSYvVIXQzgBZ8/d+gWXpUUwdLEfWQF05/GT/0WhCyEgjdvEAHM76cf5H?= =?us-ascii?Q?S08QVUWImCfDjhsyypVhcnndXHGEocpBsriJRpqRcBLZDYsEcdPNaL3c3qKI?= =?us-ascii?Q?l/ZVqxdZfP9uLbG/Gf5pfYVHgeJIPUGZZ7zsUVO60gCeFw4jMyW5Jn83esZh?= =?us-ascii?Q?t09Nril9NK0J8SZiiCsFON/OKgaZ9/LUGmhm/AfbD5nnTVWsW/t3xp5eLkVJ?= =?us-ascii?Q?BMzQb/eZSc9xHiY0L7r8d1x/BSuMgezkT6OFvo05x1I8YtfmtCk+jBFlCqio?= =?us-ascii?Q?j2XP+axd9eLkOxT+/3TOZ0LiaPXlQ5l941F7CjcJ/DcS46ac4X9CFFgR1AMK?= =?us-ascii?Q?Y5NHlZlJlCxPpuvmrLCPKol7UYqC+ns+ccNvulY/xpx1VeV0L9BnWlBVVyXS?= =?us-ascii?Q?O6A8dg8SvSHV+L+Ab0SP16ebv2pT86JMXAGygX8SHmbvHjAyLPt9uFUEZQvI?= =?us-ascii?Q?JjLPFjJlq0/Y57hlPhyv+x0ZEimUF+M=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: TWJMeZiiT+75vnkzTMI0r/3hrSFBh5x7/w6B0GQDKkWEllWSa1Aewnv/PofroEjYdd0CoMu58ySpRft2JbJ6oEZOorTAcW1d5oF7CeDKnccp2jotXoUxbXYS1b5kyR/zmUNuJnCcV98ZpMkRCCbAzrpckKeSBTC056zqMXFdsAMnp+m2NKeKIfTwJ+DPNRTQtGwVgqUnpu1toBKuS5YGGqzDJ+D95rOAieASg4GFv/8lCnkJDK1DEU0cpVY96d6G5yoRhOdJJuuTFFdPZkJiQfYEXHQdSehzEAD9D3sK0Q+RnJNBdWHiCG+cT8NMy7RK7I9UL8/185r/H26p1WNff4ZgSqbcidxiOBNbQ2y9FtnUcgvBqxSWDpItNRx9g7WPZ+FrDj09vMa0IYw2q88GDrCz5cusAnvDnx6kBxujQxKnzCIUZp60D6TnJmvjhIY+NRJFyS9JGwgbpisfSvYXa2EQHIjhIWDJEJeBBB8NDbZyE2MCQ1XeL+HnjavoG2XZnSh6jrLnPMA/uRyD4c2Y2toiy8tR5/0o0bex2R9dYFTfobw8MFTR6zXALRDWEwRuzBZeQOqHJ1qON7rGbMSFRIZ+/82gH7E+LIKElDAklFs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c2fadf7c-e2a4-46c4-f303-08de7483ba78 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:05.2459 (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: azW+od/WUMZBEC0/+YTr+/tDH+FCkuBtoIitumtIkePc3wsBaIDO6aQyIj55htzym0d/EiQ4XD3c9SU0s4BUWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 suspectscore=0 spamscore=0 bulkscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=O5U0fR9W c=1 sm=1 tr=0 ts=699f172e b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=_Q55jHKZp0h8v6rxsPEA:9 cc=ntf awl=host:12261 X-Proofpoint-GUID: bW-NN6ehlGWO9oVMAiTcfyrHHieL40GU X-Proofpoint-ORIG-GUID: bW-NN6ehlGWO9oVMAiTcfyrHHieL40GU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX+OvowQnAV80A CAbfFjGY4Srf0eP4DFonYCy+HaSFDFnX7pfp3QMYSHdd04pRQLde4y/Pcm2soLy4Kdn+4yBtpCP nhj2xo3bwytMQ2S4O1qMgu4OZwpBeqDrFDTrNwQi7Q0NWpQyXY69o2e3d+pQlL01E8QGcyX+WBl r099KcB6f+OBNxespD1827/3/GC9WYMY13rTgWQCa3Hk5DwK4ZavYm4rbCffhaG5C5EdC0uRg6P 3Rll5/gcxeFBFl3altjSMt2LZOvKJReAx73rb/lTkdESMXITXXaC3EMvzsEt+OSbuYTJQeSwb1N tnIEx9Cy37BwKjqpGf58cI9HecXs4+MOpg49+1zV1hGQGRGAk4WCp9exK2i/tcCxTg/JRvtDU9V PfEHdtPwfePh22LSiJB8dntk3U+wzBPQyAyatF8g7mAFTiB/68fDmiQBthb4mAa4qI187UmhR6B 0APFvgY55vXGpL7bsw0gBvGXPEhOpfdlQ+0NA3Rw= Content-Type: text/plain; charset="utf-8" Add a callback for the scsi_mpath_ioctl.bdev_ioctl . Since this is concerned with the mpath_disk, we rely on the scsi_driver to handle the ioctl. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 21 +++++++++++++++++++++ include/scsi/scsi_driver.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 16b1f84fc552c..36f13605b44e7 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -320,7 +320,28 @@ static enum mpath_iopolicy_e scsi_mpath_get_iopolicy(s= truct mpath_head *mpath_he return mpath_read_iopolicy(&scsi_mpath_head->iopolicy); } =20 +static int scsi_mpath_ioctl(struct block_device *bdev, + struct mpath_device *mpath_device, + blk_mode_t mode, unsigned int cmd, + unsigned long arg, int srcu_idx) +{ + struct gendisk *disk =3D bdev->bd_disk; + struct mpath_disk *mpath_disk =3D mpath_gendisk_to_disk(disk); + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + int err; + + err =3D drv->mpath_ioctl(sdev, mode & BLK_OPEN_WRITE, cmd, arg); + + mpath_head_read_unlock(mpath_head, srcu_idx); + return err; +} + struct mpath_head_template smpdt_pr =3D { + .bdev_ioctl =3D scsi_mpath_ioctl, .get_iopolicy =3D scsi_mpath_get_iopolicy, .clone_bio =3D scsi_mpath_clone_bio, }; diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index 44e50229a75e7..799071b8bdee2 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h @@ -22,6 +22,8 @@ struct scsi_driver { #ifdef CONFIG_SCSI_MULTIPATH void (*mpath_start_cmd)(struct scsi_cmnd *); void (*mpath_end_cmd)(struct scsi_cmnd *); + int (*mpath_ioctl)(struct scsi_device *sdev, blk_mode_t mode, + unsigned int cmd, unsigned long arg); struct mpath_disk *(*to_mpath_disk)(struct request *); #endif }; --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 4FEB23ECBD0; Wed, 25 Feb 2026 15:37:44 +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=1772033865; cv=fail; b=k4IgKr2Bm42sOWcq+OD0AdL1ARLhwT5Q692xLafRYrIp1n7CUH4rpSn7JEESZQKLOsgmvLM949v8JEjz7IfHaqViZe5L6ao5U0umCRVVmUSKxUeuc5Q9QSD7WfL4KL7EC7TZaJzJ/fR3PoZGYApdND4F4gCMHmjhpRiJFr78z7Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033865; c=relaxed/simple; bh=PRr3PwGJ3y4Kqy1EQDD1M4hJnAGzNwoud3uZWJbvf+8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ux2I5wRJbTekOD3TiAXCTCZ9jdacFPDRaxsgp+QLZO2GcN7AxUHDwyv4jNlwW8IifGM0eqgpTeku1LMJObUhpWo4yFngMueIUotjPcvXfsbnwAu81JCoHgafM+7LeKd951NhQl4M5PKuiBcmWJ3+0ifx6y/U5nfXo72k1B0EJno= 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=Qjn6WdrB; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Dngvp0UO; 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="Qjn6WdrB"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Dngvp0UO" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9a3Mn4019369; Wed, 25 Feb 2026 15:37:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=XpVfQQUl6D4mJyAvFI2vmbDFYz12jAkliBajXlvRlng=; b= Qjn6WdrB8dC/rgtCtIN/AfM4XoLglg8HJFfjItxh/CHMXh1AGvqwRvALaP/Zh4ep Thp6Gb5+ItkOYD7FURvRq3kj966+6JduoZFUazbrdH16YUJOXPqjalVNi67nkn98 YVv08NuMo+GW1Y/34CisGC/qimNiR7X4EYqYuPIBpoDyJ75hnNoOs0tuHcTu4+Gl dKUt+T/0W1m98UxpS+ViuOlcnfMaFlwK0kBkxDUhJOvnNvJvejb+1FkSL0ZGmi4M 7jGEAsRTGwHhlNV3y5U71PVv7YSNb2m5D/7OoDC2MYm79u1jFGeg+NoOXR8DnSyl xKcBvbZdK+bi/PwzG+onaw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3a06h95-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:17 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PESt02028497; Wed, 25 Feb 2026 15:37:16 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013057.outbound.protection.outlook.com [40.93.201.57]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35b7hfn-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NA8X3yt1Ty6Qa5TDfqf151Fw2JcYMiUf/BxVCJIbKGkAV0HeGUqyY3ksL42vFaMrom3tlPbPUf6WVJZro0DL5eVr/cREg1PArIAOhYQFB0trupqLzb7E5qukXc71+Hwvf8hqDEz+MhpjWaj1Ov4bLwU7vxvMJ67R1nKQ7KTRN8QnZm15V/x6ztMNymvTHitKE8O+2IVESQi4ZhBJVl2giYGaZIFp8genHR+D0WgyQdv5fW7Ky+D55vBAZhUNyHfKlXlCqdlncvRRZySxOzh6bVoy2r+NmyD9+NddqOkokQLQc8WufkXXhRCWl8RuF40s9fW1gWbaWHrbwEFRw9SwIg== 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=XpVfQQUl6D4mJyAvFI2vmbDFYz12jAkliBajXlvRlng=; b=vSsEFj0rbKRSTccmV9ytmttbnPDl9jwWjRE+9OJjAW9CmeJFc/dty1BjKld80IkncOZ/ZPC3Fh9r/8W7f+n2u6WiHv6r0lZq+/jTLSNv/3o6T17sLJ7PshPOIWdf9B/z9tDKU9QN3QIfm/J4UKQvwr21KGvi1F3CWtlj32OvAPla3Zt9iw3PmG4TW6PTbeZwtOTfSxkYLBX3TueFiA1triemtbVozIQyp0uCtpNXSlynWrWIs7BWh1ZeBr2j5sea/0jtN0t6VghBjpTcg9n1z7X7MFCe7B44hrgKlETJZa10B3SDE2GvlqYwGMtR1ZfeacRn8J4p2I5JPfxYpKimtQ== 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=XpVfQQUl6D4mJyAvFI2vmbDFYz12jAkliBajXlvRlng=; b=Dngvp0UOJu4H90MZ3Iav3VV77wFlvQM9p8YdLjZGpZx1FZTGws9orvWOXyDpCMJq1yypSaTdEgumsouTHIWaD8gYB3iGapsHvzPWM3Dn5RZj2RQl3S6Swa3KVR3zl8iBxiW185ooRsnCY/BwgbTLnTS2NGbj0GCA7BwSVYsBXfU= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:37:07 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:07 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 12/24] scsi-multipath: provide callbacks for path state Date: Wed, 25 Feb 2026 15:36:15 +0000 Message-ID: <20260225153627.1032500-13-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH0PR07CA0076.namprd07.prod.outlook.com (2603:10b6:510:f::21) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: 60c3d579-b7c6-4ba4-dcd4-08de7483bbae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: 0TzCigxWLlsovZ4LzhlK88mjRhJUvK0fAtWu4HCYL9FaLGVo2cNHd8TXqTIPorO/zg64ipFOWGTkeQTDsQZH2OytE+TrunpD3MMlDA9DF0wtb8uLWD0vHalO+VyAWLxEuuaTWSNJnF813HWFpRpwb9kp1jybsSu4nmi2o7452/vkZQYozGiDdQGH9Q9bBs+UKiZDrp2sAfrbFynXKpPagPIMYjljQxcx9t7x1W6i+2NvM4v4oPlpnPWV2S/uGe8kFhi7O4M8gZYVqkN1x/+r//aSErm6D2FcFYortBJ4MrQStKr9s3E3QgV1bb6Sh6cyDVW/zYXAuY20l9nWBQB3V4+SD1x7OOCqzOV6FqK5oKeNHjjGjvVSX+3efjmnvwaRHvaRc2xsm4zXei2V0CycStWv26KxhsGT+psfoMbph/pl+ja9CbxFNo3zsUj89F1Bi8foqnpvy3clQop64liNRnMU1SEkI+moBs5mVEhIKUC7Av7rqZRMB7gVs4ctdiSTzkzJFaRmifwg9OO7FLpTiJeFiDuifDmZJJPngxyxhkvPRY+ol2ienagP0D/Ckv34tdv+vfnIcDZMFijRykfSMzH9Yb1no3Fl3FvYwupQHqet5ceTphzXWfmTrZ7oPKYlYGFx/8nUYbShrv3e+XA9JyysEZZIjDde67Q7WqMOlIb2NcZRybLHLUKV30uHsQHr+ILfopTSY9cubRgrKgekkTzMgo2wtVmea1u5svOSU+Q= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QwH7FfHdJRFOQkg2tL78H9cCkAZyGohUwlBu2Llaxwj8kfcwisblihmc8CRI?= =?us-ascii?Q?eD+ynEms+BRhGw+jQb7Vc8ShvNASfP7BQGIIcuvkaR+NltlL6FSA3Hz/2tD2?= =?us-ascii?Q?VvL53YX0RsfJzhBOEYpM18I2ninyhZ/7qC6ExEsUPILPTLnc3aT+hQeQXiOq?= =?us-ascii?Q?rICRLMOBWzI+DpjMPjSb+nQzL0AKImmT7XcvH8kr84RncEJtevO19r2GAcgE?= =?us-ascii?Q?EiYw6pzNBNn1lAEDu7yv/GYw+DtQv2+OPcLbk0h6piYy+v52qi37t+QEWd1b?= =?us-ascii?Q?/T4SC0rovLdAgXdaLk7DvGRoTejgUWq7hTdyNH8SK2eIPUoo1zdCvAHqR4ZA?= =?us-ascii?Q?mHAJfTdip9D5BI92+sb9xIyY1Hn8iz0QdtB+PaAN6r4PWu8EFsVE0gzfirLM?= =?us-ascii?Q?piFH1rDHP+4e4SuJCDCHTIguuzOflpzfX4gMsEoWHGOBGU900gujIvqjvaU7?= =?us-ascii?Q?mKFfD7D59iz2rKB1x/dIil5g2F7Z+axYQblrM/BmwUFT8lw2CLzj8ujQzvcC?= =?us-ascii?Q?/mgVVk9HOkmY7eetB48FPXISzyOjibwPgP//hQNmVSzHZzr6DqSODdMhrdPU?= =?us-ascii?Q?Jw587hUn6A+Pvsqw7VbDcpQsg1O2HyTh5HRxULM7HwIcOt9HtCs70LdhE3t4?= =?us-ascii?Q?OIK74rGyaCU6J+8v3NSSo+/IRZ+fQa6XC7JfEyk6+JmkH8kYc5XFNo4FW9Bw?= =?us-ascii?Q?zhZ7h7nG0njfC7KvrPs2t7rWxJOlpXYPu1KIR8evg4NW4GqgkQDMqxbjMawu?= =?us-ascii?Q?qaG2ybwfXWkpnHgiZqTaYuS6l9rzQdM2zHP43rXEUfHu6lV2h4WrgUaEYWtB?= =?us-ascii?Q?25xXQhb1XWP82m7mN1e4hSI0ZOzLpFlTFbNwmSS40OBtDzIcspo1IqSds5Db?= =?us-ascii?Q?gOCmBxBptD9LDwtAsHpiuiCe7gypwf0+X4qn12IgLcGRF9ylzliO/lWcvJPG?= =?us-ascii?Q?33lek+ZsrPUsV/rE1s6KyFPP0NpuPawwS2TdHn2Gp3qstKz8MqnworDR9Iqc?= =?us-ascii?Q?W9MHZYOPeBgRB/g8pPUCE6i3g27Px0ikUC28jXM3WsB6MAM9nsSCvlg1Ozkh?= =?us-ascii?Q?khGlXEbl/IF3eEyeZaMyMJht5Iyv0zd/9834b9knDjRc+l1FAsaTRWeQBSF7?= =?us-ascii?Q?LTT8PGJ+F4x4KSmQYkcwdKJ9yozww9sieioLFDvGEPCF85Xg2Gep7H77bn4u?= =?us-ascii?Q?KKUI5e//rxCS/JUm2ah84QjVwCjwQcueTgJi0E817wMtuBlpuAX4om/syOx+?= =?us-ascii?Q?ThyecIguAbsPz4UnnPJnSdwNul7OQf4bRH6gO+apN0B1vhZVZC1r4HcOTUOy?= =?us-ascii?Q?FMMiEu11//8D8bF2vfvHbzfDIazkEwTBgt9UloQCg20dymUnoTjabLuAaM1g?= =?us-ascii?Q?WujC9bkd5+WhixDW5siz9lDmsBiIfrlA9xELqnweYdX89zsehJ1H75jATe3u?= =?us-ascii?Q?JQExyJU5Jt5jeJYWQb7axf2IexZUQ7oZk4Fp8TveNPUlvvWtB6vdMQIiLw4R?= =?us-ascii?Q?bXAP76bG7kAtbuXqSJqjWT0V5mJz3BELpxi35Ve3n9AU9IYCE8Y0iIOzqcor?= =?us-ascii?Q?6q/nhMZ5imXhbFzsfD/VY5bk3stwQZySUgzvqkLl5g+r6t7OkWSgha8jbeRV?= =?us-ascii?Q?10kQwuajBfU+xdueSYVvLBBBiyBRXRpqd+4be/+COZjHv4kVXnTOv7GXrUGs?= =?us-ascii?Q?34EsEkG9AxRE9JxZ1SAFh5gu/gEgpuV4hofe8J8rS1gc4U24mSM3DPG6DrcG?= =?us-ascii?Q?F3tbxIkrBwx/gfk7APf0wWM+BGn7nQ0=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: bPHknMdMQK4H2WkqAf8rkkUMf6+R/OSv0psZz9b5xhlEBGPwYNiMCpt4vXQHYIzWCRHaGxW7aDyUF5+bBbHDL4JsCVd1uvC5zV+qUGH6kQpYH1w8B9mGVS+Efx7SHg6om7vb7F1rdg+RP4wIl/7VWJ9nqPixn+yMMck0ZDHoCm+9mBD5a25VrTUF2cp6dxOVNMo+ZRkCUkPhKmFtnFI+dLb3iLUhdU2ux7D5FzM5KptDJDR9xheSjLKPFOEk3H5+ULULr/ifQkjfpQgwenJJJsD2sppBTzMjw+3+VLJ5C8XMwkeS0sHF8G/kTEfTk8PB28rt7wdwGfPguJ3Sk3807QJv1YQebpxjZx/O68MeZHlFUZwRV//R2CHcNELTFg8qjipa4ZTDoK1BEcgPAlTEIhq7NhhXLGDy/uA5BP/9bj7HGdTdKN+E6KkJLiRhjCaHWXxYFXfQsoh+eKdcsT9EUc9Qeh2IuK7LmjM9dVHioCK45UXTBUp7k1GE3IGIgJKJlK4xW35PJadCpYWb0qpKiJIVehcEsvAnH7R50bMw0YKz+w9pPLKQ4+fJl7FcHWhvPyk/xaZzKScTmPmVghZ8e/vFDKHAhurkau2bUbdZiJE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60c3d579-b7c6-4ba4-dcd4-08de7483bbae X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:07.4845 (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: X/OXQVL8YT4/9HGDyY0iyqiDjnqETw33WfRpsbb22ET28vDhNIpm2FYCvj19s5ZLJQpvN5XDqlp1HzFuKYKMEw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=IskTsb/g c=1 sm=1 tr=0 ts=699f172d cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=DHJJM_rHgSnfI6yttmIA:9 X-Proofpoint-ORIG-GUID: jUfynJcoch2LDQ6Tw8AISP6EoUywWLkK X-Proofpoint-GUID: jUfynJcoch2LDQ6Tw8AISP6EoUywWLkK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX0+QP0RRTMLjA o+0FUMFek+ouwKjhrlL8wJJw9uTAm9Hmk+WZ1mG9a4osAgXjxIfvdMl4uaC+39fFIMJ/vWT54z9 78Uq3aVaGP3kiIbHOIgxnoEgwBRFqpa165m6V0rWsq8S2bdIgI4xPwu/CuvQD7DxZF+urE8EkT2 JTtYmnAewFoLkXjrhkAGIuoCNo1BE9pBfzT/pLcmBJuMnNP7V1HLUKkPsL3TdJA4NorNGYVaZwE mSLVst4vF6tqcMeR6m2bhpzP/fbQSHYJP8X8xY1EqEtNWOhdD8wbUKB9ryrTsdvQHGZG0eFHMnI 3BDVuo7LWkd/yWpkGQ2iA98gTHV4QBqo7ixmhrmp74MHrWwZZqOmQtCfrO9L9QrTA6wXhfxzNkG tSk/1+4d40CNJ+XJ2GI2gpKI/x1pSvrVuLvxL7CHUcNYLp5Vu1qyCOoNhlk2OgO7CFs6WqZwzC+ QK5GDHeU3QvQk/XWFAg== Content-Type: text/plain; charset="utf-8" Until ALUA is supported, just always say that the path is optimized. In addition, just add basic scsi_device state tests for checking on path state. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 36f13605b44e7..6aeac20a350ff 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -340,8 +340,53 @@ static int scsi_mpath_ioctl(struct block_device *bdev, return err; } =20 +static bool scsi_mpath_is_disabled(struct mpath_device *mpath_device) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + enum scsi_device_state sdev_state =3D sdev->sdev_state; + + if (sdev_state =3D=3D SDEV_RUNNING || sdev_state =3D=3D SDEV_CANCEL) + return false; + + return true; +} + +static bool scsi_mpath_is_optimized(struct mpath_device *mpath_device) +{ + if (scsi_mpath_is_disabled(mpath_device)) + return false; + return true; +} + +/* Until we have ALUA support, we're always optimised */ +static enum mpath_access_state scsi_mpath_get_access_state( + struct mpath_device *mpath_device) +{ + if (scsi_mpath_is_disabled(mpath_device)) + return MPATH_STATE_INVALID; + return MPATH_STATE_OPTIMIZED; +} + +static bool scsi_mpath_available_path(struct mpath_device *mpath_device, b= ool *available) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + + if (scsi_device_blocked(sdev)) + return false; + + return scsi_device_online(sdev); +} + struct mpath_head_template smpdt_pr =3D { + .is_disabled =3D scsi_mpath_is_disabled, + .is_optimized =3D scsi_mpath_is_optimized, + .get_access_state =3D scsi_mpath_get_access_state, .bdev_ioctl =3D scsi_mpath_ioctl, + .available_path =3D scsi_mpath_available_path, .get_iopolicy =3D scsi_mpath_get_iopolicy, .clone_bio =3D scsi_mpath_clone_bio, }; --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B0BD23E8C66; Wed, 25 Feb 2026 15:37:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033856; cv=fail; b=RKmJtNpSdIIPh6yLeoS1ZsNWTbvVlNmlEsf1RxdpdG+Z4QgWik25xBMnDX4O5aUp7fJkSwLHYBeE1X7hsyGCNMPMwKW+Kwdw4wnep/rcr5hkItvckAvlCjeA+UHaILpJZ52H0w+L32Z63G1AFMI8T3LAM4ILFahauQzwx2c2uOg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033856; c=relaxed/simple; bh=fq5p5CjLS2j7LPB+6sxotsmVIuPM0oaYO4922evm5bk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ds6XCE8MOqcMp4Cn4ZW8u4oAIxbpfRJG/ct0tbpbxr+NOKwsAJ3Bkz9mJEJer90A+1nzVwYAI+qAirVV00uWvQ5U6EPFVqYynxn8MsMEfwWX1rUaGSSMaRcIa5b0G9WMBgQU/GraYeZ07VsQACq+cvTGAZJnpZDcedf5m9Wbo/g= 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=jOPukxTA; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=gG7nS8oM; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="jOPukxTA"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="gG7nS8oM" Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAMUCf719679; Wed, 25 Feb 2026 15:37:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=PWCKpgvvSVtg6V7tn2fLsgSOseeO8p5XNuftN7Upl7s=; b= jOPukxTAU4zNSvatH0p6OHKkyuJIw94EqmGy8Mq8WDIN8lzqUhSzZ6nEgVD3WhNJ MuYuYC6LzeZilFumRffMCCCO2JjF8LMmMZ6uAmTRSWofibTuBDlY41yJe8oGWKJz 1txjnaUYjksfZi2VvoQdll+ssrm5sVoDbGHBUmrXpWudvXHz9nw03pxpOLYMHRph DNK2m1kWlu4yyPggtnkGye9L0rzAoNvI4xdJXWbks2z1kdFloe9L/+RJZZntzcYY hPXxuR68Kj/4Q1Y61WgUaxHhtEq3YgS2PxrQavMk0aecLrN/do/ruCwmXZjopWvp JUNTRUzCgu/uoXyhrcIZWQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf34b6ejd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PESt04028497; Wed, 25 Feb 2026 15:37:17 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013057.outbound.protection.outlook.com [40.93.201.57]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35b7hfn-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S8je3/jckXSnYdHIaq4Rg/shFajanLgWMl+hUkMfSQwEphebDVAovcaQjfIlDFWQbMo89/u8R6w9yG1Al7JLoxSHmdVvIjPJAr5+eL4rl/+3WQSD4WwaAHYPJJfTQo3SvSKriCdHuo9/SV5YmskCKIxEz8Lm5XfflWVrt1zG7OEpo28KsKrOwvmxs8MoLJZt2A4URjGQlkU5KGg5bF5pW/kI+I7WIcw1UxIFSSRAhgq5xMfJ6r381klrNrhKoVzN86DpJryHGotSkKLNGNCM2i04hCgvs6I+qWzc8MwxYutO6gb+WBkGmtZaAkIOWJkOypQ7VlRZQFMicxOGg2MXig== 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=PWCKpgvvSVtg6V7tn2fLsgSOseeO8p5XNuftN7Upl7s=; b=F+zRjvq0Ca+GEcN2ri70ZDJZWv7adptGWVN84m10MnXRH4ARsUe1uKsjr59rp55r06aTpWdELLgIQmfPsixgJK+xBCGnpRUOdYz9fQef62vRKecuOmjNCPoXHZxapYGtHg7Wv83RE/6NIjhvlr5leSZopiWMOUi6Sta1LBp5nsL077VNDgNZwMg1fbvR/Ki3WVWVRom3rlMa2Gl4VdnIsq81jBOuYmPOrm7u94KFkPIbVwZQInCVIZ1bty2iB3ZLd17ap8pC3+9J5OQf4BNa3vIy9FgsXhu0Y8PqVPw4W8rDdrgjmlI+F2qyOSwDSQj4HMQ417RzyAOIsWWbU/y96Q== 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=PWCKpgvvSVtg6V7tn2fLsgSOseeO8p5XNuftN7Upl7s=; b=gG7nS8oM7Nfl4gwHh2uFyaZK/G1L/O4JH0fL0OWUVg01Q/Spv+58sPqp1ISlabGoaXZmB8/kNt6MElgG6FO+Tn1gyCmiGMF/F9WcvAnZCtZfXkFsoCwEHi2b04ddb+s22k73qpvryztjQowRK2mREHXpDVNNNnZy9NRUsCA1y+o= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:37:09 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:09 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 13/24] scsi-multipath: set disk device_groups Date: Wed, 25 Feb 2026 15:36:16 +0000 Message-ID: <20260225153627.1032500-14-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR02CA0048.namprd02.prod.outlook.com (2603:10b6:510:2da::16) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: 4e79b758-bb8b-4c32-39e5-08de7483bd03 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: qddN1azfr3Y+56chJMjI+i43Ac4MN8dyzPLzcAJzP62Y4vr64k3qYeNEQpRt2QILAub6fCDyrhbUWiknEvsqASohmWMFftulDLPFyBoLg02+0j/D8yQQ7ZjCIoUeGStFYr2kOXS//GyNQ0X9CRzofjJfc5m2l5jIGrCBir5v7pQ9OsDJgXqi0Jz4/a6kPx67kpcvdWlcJ6OVJSrSSm0Lq/+WMVoTfy3Myr+rR/oVJ1uUzMvNwjDM8GKxuDCf5mwgEZ6JYAKYjM/u+HXDoDHYwYS5zj7F2HYaQW8Ms3eS4kidlqHzGbtXsZTjXI8CW4QITDzGkFmFaZB3KDeE+HSbhWPt+dB94twOlYnUpECD6G/lKiXMUlZ9lfewPFYX4h9RlWmXsvMJcJ31GaD+GaRsT9FYbJu7ABaFtEIgnSFsmEwkqDHzUAPF/iL/AcLGsGFL1zpcLLqKP3XF1r+zVzgl4EF2h/Xgz+h1K24ncvv5FVHMevJJ/u7JD8S1b2KEM/fN/kAXFAGTMxbNMs/wlMblv0aipiVvAwVqraeXhcQHgXA1jA43JK8rinWK9qhlR3IgHvyVXMJq3zHkmaxxYfFi2BpeDIs4kn0/TuCUVQGJ15AbG6m3sm9tJi2xEAlKbLks+xZHA2Y3SHxC7ePgYTogVQXALSzLNq1pndmtp6uSJXv2ca92RVPoKXytnQTiFDRWfEDbpZJMsS9aAnNQl98NIs/gJWLsFtRBAgVa7CDuKxI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IY5zi/0usKBE/UJWPxvwVt0fEKUoIzZ14iHFrto39O52UTFPY5nS4WW//ZwN?= =?us-ascii?Q?8qBBHdcdP+bL1XqB6fi+J0c2Y8tMC0op9z2j84pGS2ibbOY4m6c8TbZ1O7ge?= =?us-ascii?Q?4awNwNMZLFhHOrRQ9XQ0s+wTDT9o1k/ElBS654hCvuSg+7Vk3CUyJVPYgR+f?= =?us-ascii?Q?UT5N0owrMPNu3loHve3sABrxMEDy0WONu0rr0HNs/HT3DxGYVawqfvLwV6cR?= =?us-ascii?Q?lh4B2U/VNuuWWiGqs7QPQ7qJM/YeVxS3Un9lyJO0F8eEvxu3pB+Uq88A9SRT?= =?us-ascii?Q?DXoUVWzgI+EFw3uP6qtxinCTwQJijLrjIiKaiXg+rQzHbVtXt1QtlL3ZSbTn?= =?us-ascii?Q?3IxTYQlEROArORiTttiT0De/aELeD1E+AiSrYbgTzw8BT5ISamqmwxSdFZCE?= =?us-ascii?Q?9V5QFb/kvrNlu/e/bwEj3ZfT711rmBwIbEKDjpqFLn6p0+3l9yJ1XlPkQlpd?= =?us-ascii?Q?w4K2VFYP8eIgj+nGe2vcIVrJqQ8+zPVtodrSw2Ouh2dfFXLabvFxXbUUgm6V?= =?us-ascii?Q?nsZmjBDaKaaU8SPqIvCrIxPZgXLIwkljtybwg+P5bszl0C16vMmAWomsKW6g?= =?us-ascii?Q?LcDWPwWvpAdx8FcyjgpYueiSp2+NESCrYaohbrFnlaJswDIhUcPiUDkFi8bH?= =?us-ascii?Q?Op6R4O24UdFAs+N5z3NfWdpQAp9jXnn8lsB9noebnsdU1LqxOlWrLoqHKQyN?= =?us-ascii?Q?q0n+Y9B3nl0mP9+XVCqFORfUi/BoNvZsYtmTR+dSpWDFuEIwIaK5ZXj+roDX?= =?us-ascii?Q?A+JfUsTOoiTl1KuAD/StaIKg6RBS3Ijpt1dfjFhxkfkak435XdkJk9naWdnV?= =?us-ascii?Q?D9ysFdGI3rVxFwPiamfmi0DdFz5t/0OR4S+beSz0ETnVNDscPwF/0G+1w/Lr?= =?us-ascii?Q?b5I31BqVQdD6PJhnv4ulIqkyzNSQfO6YmXa2oUMsHtLc5yubJU3XzsJomyOi?= =?us-ascii?Q?HqcNw+svzSfUIbh9bBtrPjePLU2PaN760nPdHuebJk3iwl1/moUuYU0kH8QK?= =?us-ascii?Q?dSlnw8E6ArQf6rt5IqbetEaa1g0zUOlFuGxXkEBEvcvBSHV7ADzhOPkF7NYQ?= =?us-ascii?Q?h9SR7tKgmqThLsgM9noZisUBb02KlkcLllVOMNjAnhrVegpFeMhzV20J1RKp?= =?us-ascii?Q?DSbLcT0kJqbbvxiB6aHveEQOj6Axgkbp1MNimZnm/zP1Y0zWs2lioolaTWew?= =?us-ascii?Q?OGQ6rKoirOkvv06HKGeJN/5622IjpsxpQ15Lk9i3ZDKq8LUjLI+tzYPZgzqZ?= =?us-ascii?Q?u7Ohh5m31kTefD6rfsKRofqaoYRMcjM/ZKKMjh3RsGd9z+ArLsyiXaJsB2WU?= =?us-ascii?Q?JvQqKmeRig/TnV/xYnasfnX89ZORWG/EGqy75p0/c4a6DJJflATgMiepnFVd?= =?us-ascii?Q?KprTmDtULXFn4lBDHJDi4eS42I0ExYIaNYKCxTfuwe8V/SvKpX+7l2RXEXjc?= =?us-ascii?Q?y76KaBzbru248BTIyPVHQPnQRiC7yEBvAtMy1WZqmL2VtxReoITX/f/RE3A2?= =?us-ascii?Q?TL+wlMTEcx4fMKZ4osT0vUpBH3GQMS7duZQgM2svSNhiMWJzcz2wqHJLTLYR?= =?us-ascii?Q?YHQD4f3QtkG1p/p49aJK1HtJvuubynazKlIKEnhS/4fEteAMMrv43hB/6QuZ?= =?us-ascii?Q?tISLcryDM7doAkzlJAktC3H+UEf4GRIlxRjmVpIdUmAj0m/bjL6IQV1ASXx+?= =?us-ascii?Q?rjlhhTz5qRNk3BnrfWTUnjfpXO3QirEbfUjFu49tf8n73KZrK1VVebJCJC3m?= =?us-ascii?Q?7TrFg9rdErOn0mOUq4qxHn1SrE1tb+Y=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: a/KNViuSXkjSIOuJSsIp0fe4l/KqKrbI1bYDAcLoEHUT05KHgjW7ROuAhlAZa346wcFWz3pD5LWQo1e+EF+2Wu/IY7c5mnSZ400VUzqv4OILoVdKoFWDCV4+0KzTATDnJRHLsY3XOElIo0ZZOu9Z0XcWsenxA1ZPvuoecCGvda9JfG55sS3Hh54Mv4/WkCLsCckwcWLQpXD348/rONkGNApY9VR5dnBEtFEDXSawLWXHQACakrD0sULMAuPTqGrvfa+Th630dLugwwMSlqBnL0oLx1XsxFs8W8RIOGJM7gE+YVQy5vQQPzB/PQQfeJ6QDYYj9RjEnpTupNQSzPCV3L98yPp/oMqg0ysCfvjFd68RTIAjPu/lGr3AdoIcXgdJb5TG+Q78B43J2l4FLRifia6q9PYvY1QMxlTbFq4oIUdj8kCq5+fAZAIOBHthBalllJyGG0ra5L9TpHxa8La1+gkPQzTx3b+P8h8WzVhAgMYiiKtjJ9P2jZzPhoEReEljGWJJii5ugKtvXR7EqwI1qyZ9tLCX391avwbz8fxbB1inA5VpnhqV2zGSSOQ6DCp3zneJ3vjHthw53vJh0CBa0hIkRRbzQy8DRbWSluaVDGA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4e79b758-bb8b-4c32-39e5-08de7483bd03 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:09.7440 (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: HRJm+KgNgTAJnhEqAdv8T2LdViuRDQi/jJkpDwrAhHjFOCmwmku6REJc08TXa1NAmwXVPA+gqxEK65KzfNb1Wg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=GrlPO01C c=1 sm=1 tr=0 ts=699f172e cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=V0SITuWRk-thg8KP-pwA:9 X-Proofpoint-ORIG-GUID: NOUw8fL3oAp8ViFcFBcMnuMkGlasUfdR X-Proofpoint-GUID: NOUw8fL3oAp8ViFcFBcMnuMkGlasUfdR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX9zbjj1OvA7Pg gSG2R3JaTjgEr1apNs/XLknmplQPxVg0wMwFGXkM88r1aTjvy+p1YdJDhjFOCkdnNeUTsOGH8lt pO7JcIfth2aOzggFoLTH03bsJnJEfVDyhCeuiXNPV8DxRqNd2Fb8/bf5qlt3kH/CkM6HTBlVuFc QFba5pLaeYw/hyT8/jEn+hGprEXgaO0P8q7mEFnfZVgxy5r2COsMsPmlCnMp5/u2Taj+4Qgrc6Q uhCwgsmay0H4mEoWl+/61DmQ1KLsBhnq7396JM/dee/JkkP2ftg7DK1b/pgkTSDYVHyYWhql0id /DD9ab2XxFqwQVAGOhRQhEd5ldJDK7nA6KlLLNSHIvbsyQtXD8qyUOt03WTfZRFe6yavWaQ9zG8 kheQXG5YXSRznI+ZWS7NhH9DBIzYwZB6BLW2/mrFzuy0BDjXpF4zaeOJZkQVESYbU0REM+4FPx2 d8RtZlSb0J87aFxjbdw== Content-Type: text/plain; charset="utf-8" Set disk device_groups as mpath_device_groups, as this gives us the "multipath" syfs device groups. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 6aeac20a350ff..73afcbaf2d7de 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -389,6 +389,7 @@ struct mpath_head_template smpdt_pr =3D { .available_path =3D scsi_mpath_available_path, .get_iopolicy =3D scsi_mpath_get_iopolicy, .clone_bio =3D scsi_mpath_clone_bio, + .device_groups =3D mpath_device_groups, }; =20 static struct scsi_mpath_head *scsi_mpath_alloc_head(void) --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 D7C043ECBCA; Wed, 25 Feb 2026 15:37:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033865; cv=fail; b=j0kknYBD5Ng4Zzqs6p9ZHTtSVxX7o+8470sY6W5Oy5r9iIbzzDJv/S73DyNCm96dDHJ0Pr4UGlngJSQbT2kGsxErVxtCu/5gDct7h4wFGZAngZKHdFFgV597QMtNYs0lXskQD80HcmXn8jaD9CDLL0/PqoX9Qvgcfyg9N7+MVcM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033865; c=relaxed/simple; bh=JYSW90zJzIADkpREn5bvpydDBGOPHMD0LKK+Z01sBZ8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YLZZv5i0TchExxXX+woxU3aI7U9FsUOSDJGUAEluKFbfHMLBd+IaDDIz1l8pKmIv9hcZpdbk+NDPX3Y47RwzTTxy10/3ipf+Ux6dzrDWbCnYvjABWB2lWvp5WQ+ScvI4qGs2YI/jtkx9nzxu3W+meoWYwmivWKGmUWwCNMzKLsY= 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=EQchh+ml; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ewrB6CbQ; 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="EQchh+ml"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ewrB6CbQ" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9vMm2369228; Wed, 25 Feb 2026 15:37:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=7Dq5gnbE59bS6pgBsIM9cRoR5XcG2ZBZzi6pFtllP2c=; b= EQchh+mlFXdwv+xb1u9O4oGzPhEoNwcDRfHriBHLM61JfXi1HqPGTgnKrdlH4jwy qfOmscqjZxcVbqrZAVbIU+Sf9wEymeZR9Kvt8qT5yG+GBKxbwv0Rf9llLUaPEaaE CPfGecAy+o6WQbLTlfF6RgteIOXAZY5M7f3h3rIHnzK77Qdi62zfrTp6VF6qwFN0 74b/1vXO7cElJn54e0rxPQfx18yVRKQOFB2OgGlSmy6PMPaMcv/pJHo5oBOcHjvT 7WhF91r8lmMp3KK6AOudNkUfU4Q+XThzUzaVij/9d8iq6oPjFFsG98e/OaYa8e1q lCf3qrqoMXgSF1O/ULtzsA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4k5xdn9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:19 +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 61PFWE8w038454; Wed, 25 Feb 2026 15:37:17 GMT Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazon11010033.outbound.protection.outlook.com [40.93.198.33]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35nfrbe-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wXaKomZCtiV+b244nWQEF6iN0W7y+V5xZJA/Ngt14K1rkdqq8tFzol+vLzRZEpAiGumL/aYYlYC35F5EyP3O52T0zuTM1GP0Jm4/15mYJLZmEVAp13iVQFtRBD92Gh0hf8LwFY1vTfgsM2FvjTWAbXdlfEhvoOb8uVomfoJS2405GqbtSuGVi07HBnnSd5+jImfqfyUDcynuFz95wsrfz+WSzbEZr8T0MhH/rMIuFgTMcn891TpyCfaD12rGCJ/WNLlAJaiDAR7woiDH+TVeQjUEDBROh/6pw/+BktBPQImPopWYDEuY9LSA78t3ipg8qbsbjKCEf0V1dbEW3Ea5Vg== 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=7Dq5gnbE59bS6pgBsIM9cRoR5XcG2ZBZzi6pFtllP2c=; b=JUwltvjTI8A3J/vRRd1LaZWTer94g7+7yE1rg4/pqkB4fwrwgQvXAZwNfLHaoj+TlT+aM0SorD0ZKfDpla461EX5vXtfnCKKXhvGPVwOO+QbYR9fviHgrJIGd9Yz3ggxg6tCKY18lJCeGtYXDX9KwEUICnPs93SHTOsn3vWsGGrJaVuvF33MWIvs2itS3Yaic9J4Ya7zTCd97mzmorsq4i2TJZTMJxsvp6jV73fJneEpD/2ZTgr95IqOxAPr0MVhs3c0ISSuf2KzQB4SwZ2m87rqv1UiAGRE+84AVhtbVzu/9cpRDM54ydWBs2DrecEB6egANlmvQkQ6PeDHr+nZ3A== 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=7Dq5gnbE59bS6pgBsIM9cRoR5XcG2ZBZzi6pFtllP2c=; b=ewrB6CbQfv7YdUTf5J+7nTx4X/DGmZcbDklCMzTLwokFxvxZWC7c1ZuSLaMmf0BzGSZrHdMnbsRnL7pCNdofIf4jpBRii5fsVC2n/Srwnql49Avs3PHWQy495zYmYp44NA6Gs/TWZzKFhjxHqXUZBu1yHKZ3EPK/M4kL7j2G/ps= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:37:12 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:12 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 14/24] scsi-multipath: add PR support Date: Wed, 25 Feb 2026 15:36:17 +0000 Message-ID: <20260225153627.1032500-15-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0070.namprd17.prod.outlook.com (2603:10b6:510:325::10) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: 9276e4c5-6c1b-4b30-4abc-08de7483be88 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: Qf4n6+TkdLESBtTS6TMUV2Jesb6WAU5Q6eICGdoLI8jlv4eErTfh52SnyIJtNixXFbS8Wb6XNMDqP8MCMgu+IvUJrXIYCcWpQfriujJ5kBG8vn9rKWa6Nmk2wQVr7bhLXSsROn/eDIOQXJK9CsUKLa/4ZtOvdNGiT5+gVOxy9zQLZVVZaMaRSuHOsTK0wUTojd96r9yxnW6C1ZZbYtDSRwYba+UJzruNTWZCL4tgiM3oQTkerxd7scVR1kJnSpJttSxvgY4izblUBK0e0TewK4q+uIL9DJ3THEEclXP9gr7rx/g47F2cUzHVIvpOAISttREjH+VS+eOmDXmsP0+PxTAq39upmf8nUPqpW0xQ2wfd1+XCBcTPNTND9tkRwz/DJ30FAdEH74d/KVs3jZXtyfne3g+15jLxyRDzDU4xNNTFEPT/Ufrz0ol4e2O2iIJEgKrBc41WWeO1UytYLDB3K4oRMFkXt/sHdI86j2nxBwI3pqdrKoBqHybmPA1jX0eM+K0fsAnVGyZiiGNLfGPV7grmUUEAWXRYYd1uKg3YClsjPoDy1Tuw2uhjorcXP3acyxY6B18F4xTbZBHr1oLKrhSsXL4zOuFfskEnJk7JClyguDF3OihgkM3ZGUmx7hsx+AcHFWW1WoC7RGJ98au9AYYlYDDJwAJF0URTQVnTIMSuvcv6UPaySpaI1S7/o52UA8dBw3izsUVwIDKh14PkU8JT+BGKGQCqtocYqPUCqHE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9aEOqLKoB+lkuIMKkOPYQEppZW/5wMdymS4JcV34Z5U/ylkZW6se0MU52b7x?= =?us-ascii?Q?E4gYirsps51xTiB3rK5AXjqiyTe/Elv5gFqsqp7sZtstUTpCAGVolk2zfwRI?= =?us-ascii?Q?RxcmYog06RWkPY9A4JUl+iN1X06yJP5C3Hv7yeybqAhLKxygbYPP4US6gSV2?= =?us-ascii?Q?D36pkCCGNelyTYpAJhHetiqyWQwRqso1ijYLRc2Kynua6PgvKflMtY8PCbsB?= =?us-ascii?Q?uKAedV9NtW94S2mAWnRaHSiIG60gkFCBkkXa6j7uSD3M3SzBhbRD32J1/0Hz?= =?us-ascii?Q?1HhcIjE82ghcXmdzmIb3LKU9Whr+WyLjaLZn5jqzHxVZpe3s8c8oojKiWNN/?= =?us-ascii?Q?DtakEB53JovhPRIqR4MgaaFr7TKd1aUGltKwlodVUqfIkn6ujBUCBAyM07GR?= =?us-ascii?Q?P3R/zAGhhuAUdSrJgSq9Vnfq4LhcuQXqIPeM+JbMf3HraK5FukeIAwducsbK?= =?us-ascii?Q?bsYR3zDXFLWMM30a7oWN9Dw0IE2H3SkVspjff7sNSccZzb2PD9JdnqPK3XXE?= =?us-ascii?Q?B1EGnNHWZWAlKXcv4fUwYDxJ9DaUMxfGE8UgR57Q5sEnDk6MRIlQJ8cXY21+?= =?us-ascii?Q?iv/ti3LC5GIRWHg8zrrXNUXcFF4z1zevzP4ip5OVI8tzZjbh5sVhYlZPYBlV?= =?us-ascii?Q?hlI4WKUUOXTt1JE8amVkIIfA5OCoCdDNagLfRIODUJXAPJciRUocdSCzHYro?= =?us-ascii?Q?K1ttqBBRF9QXWlRGvAKvULpJroBYR0/F6FxdJS0RgTrEvf1hz/g1EeA856Fv?= =?us-ascii?Q?b2GSqaKzNf5r7Gn1X6XF5Da15VqUBvs3ri24eG6tgmeby0eWpdpJ2GHJLh+c?= =?us-ascii?Q?xsV0p3EYOpfMqiJR0+U6/BXpJhEcFOJbR9hPOmWyrhvz1Jhbpi/CMW/Yf3/X?= =?us-ascii?Q?Mqtf519Yy3L6KGBKXzpybHDXQKj1whYSKIZ+PGzoso3KmrbfPPnOdcQHoKSe?= =?us-ascii?Q?F3Oyez2O6KfP+gFKue3HcEUd/G7HMd+jRcHMQ/7f+9tPcCps0oTIqJKdKrBV?= =?us-ascii?Q?dRIg+HOv463A/T/12wmBKud4YBAv5vjpsOUlD9FsQsHgOnvR7QC3QpSfiDjy?= =?us-ascii?Q?ZzViH9vHcLZyXKGKVoO/m0aQPCFrtxavxSyiguOp9yHeNoaiy06C+kVI6sYO?= =?us-ascii?Q?+SRg4zXUBNwj5BwJsz5ghw5hu+xVuMz71rfvOM3qNrLZ270uUXIiNp4p9hS1?= =?us-ascii?Q?wJqKV0sMjC6trRoTDL2qBL6L6NTOq/VnlIqcdNjwEL3brekmBKUPL+jK7RFz?= =?us-ascii?Q?nD0cm8QT12rre8Xy5AfsvN6z9xG9hpQKMrMrDAi8r652f3ryPNyyUpeKl1dE?= =?us-ascii?Q?fSyFbNlO8OHI8aBzj8Lrw/3W1N7QzLS/qqF0TrfAIZ+9B5Dor6bFPDWT/K4T?= =?us-ascii?Q?qtpftg0I/5itYpUcpbOZJgYQ4kIV+s29QmU3c0n63qYgbUKkaYOK21dPqhkh?= =?us-ascii?Q?XveB1LnKznV4fzFKdVBUKiJImCJuUbqx4QixhwQt0YUerdT5hMNSH4Gg7EL9?= =?us-ascii?Q?cU7Mrnl+pNdILzh6w3BiIkmPUZQBuSEBiP9OYDuMUffvy3WRptlaA6GPn3hk?= =?us-ascii?Q?irkdHNz3UehUVNDAiY2tETpNN865ScfbpeBcMx+gmL8JkqDIL3/Xynf8e2X6?= =?us-ascii?Q?0NV7HpLJ1q83E6kJIAgg1eVuPXg8XkP+RkodUHhX5+uuxhcaALfGGJFo/1Qn?= =?us-ascii?Q?neHCbBW4sDkNg4OLO1uMm3TAH1I+n9tHehDMwFWYZ8JXH5oTmbJeFhxlVgK2?= =?us-ascii?Q?OzWzqlZmvpuua8ZPiA5kdj2Y3xI4LSw=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: CnTa9Tbbq3NyPKB+fvB1J27eKSyV4q9hfngxHztDR297HxIlZgGyJXvx3vh8Ycmluue4iMDXN4gZKRkiVr0W7cM23df1ASwVFBnQ2RVpFbaQl/hNay8urOKMujretzJrNV18l8RDBHP9zrgwStm8UfwymGwZCCRFzGC8jXgXp+GZBLJ9+JifmcUFFpWME2iPUpX6zw1NNVVWjn7R9vsOYUjPuClsg1Wsn3qSo3mPt0J4ZKZPXdSpsKsf2OtzhLJlsoPWKXtPaKwZ2oUY9U7exyuothTq8mFDRaZHxkURpQ8SkXIGMr2Hevr6El+1wiXRmQYzBu8J5U8HsBuz3l8yxvEuEEmptd0K96PKIhHXhJ6FIDQoK29ULkRLWiKZY10hWELpjWtrTwOFbTjI7HbEFWwbNbk9f3BnvjeQQfNNzWVktOspp6ss+/ovp0Y9u0hTSfRby9cERR8/kck7dLbouLeVRTIHlqbPea54HOuFfc+UECCNC+/6KmEJM9EmGv4FNJTGBjj4C2VQCO0qZIXzjEfc1fyBknHKWSoB0JOjUHjaQF5UbQkQfg2G1pKPEPTWl9VcLHTk6kenMGmWGXaAnk+BEKwVlTYRl5YA1cCo1BM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9276e4c5-6c1b-4b30-4abc-08de7483be88 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:12.0907 (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: VlHTVEXRyYHuDcptQbCq/tm1BNxYKogzZaUtvKsXCo17DhNcLFJs2N8LUVIWt3XWUjpeW+Pu1uxgy2iN0zY9zQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 suspectscore=0 spamscore=0 bulkscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXz7X1MKVkUwCx zVUbCSMw4K1sYLfqF5VPxYQJ7KkJas6PtkY5MmaeUn3Q6il9iHtuyBr8tPU1YJ++C18cvr3wksl g0RsneYS/Ffln34yFWG6oWLeyfHZDYZ9tjT4+cPQqSUx3NEZCGiWI8z8fzs43t66aNN3jvKHExv 93wFA7Wd0DTvFzBKODtwGW+dHx9DcTNwpfTi6naCjGzJzjjYFox/MuzWOfo1Z7YRoUHb7JIV0md bohAJzwL6VQV3pD4oaARt5RNMOaquQXw101QLHukLeMDqV1bEp9IYQrtrERgJQMVeAsymWwF7Tq YQg50mLiGDClbWze8mKGTX/03j60JImB2jHMN4UlkXDD36jfHpfbW/F2pYSBDov6OfeXx7lUwG+ TSXR9OmDTojNtTUNp0WLImSYd6gifqaQ9E7egYRxxMeyDOeTQXuV9iM8NbpCyVgOQVRTO7c0yAf lWYIFqi7o7q9XCOLSYISGDc313SRsjA5725DxoBk= X-Proofpoint-GUID: TNbIvy69k05mSz9A9gbtoQqykd1P1F47 X-Authority-Analysis: v=2.4 cv=b9C/I9Gx c=1 sm=1 tr=0 ts=699f172f b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=0lX8bk87CFIzALYfjnsA:9 cc=ntf awl=host:12261 X-Proofpoint-ORIG-GUID: TNbIvy69k05mSz9A9gbtoQqykd1P1F47 Content-Type: text/plain; charset="utf-8" Add path_pr_ops structure with callbacks. Since PR ops are related to mpath_disk, add new structure type scsi_mpath_pr_ops, which allows PR ops be executed for a scsi_device. Since PR are related to mpath_disk, provide scsi_driver member to allow scsi_disk driver set it PR ops calllback. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 110 ++++++++++++++++++++++++++++++++++ include/scsi/scsi_driver.h | 1 + include/scsi/scsi_multipath.h | 17 ++++++ 3 files changed, 128 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 73afcbaf2d7de..1489c7e979167 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -381,6 +381,115 @@ static bool scsi_mpath_available_path(struct mpath_de= vice *mpath_device, bool *a return scsi_device_online(sdev); } =20 +static int scsi_mpath_pr_register(struct mpath_device *mpath_device, + u64 old_key, u64 new_key, u32 flags) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + + if (!drv->mpath_pr_ops) + return -EOPNOTSUPP; + + return drv->mpath_pr_ops->pr_register(sdev, old_key, new_key, flags); +} + +static int scsi_mpath_pr_reserve(struct mpath_device *mpath_device, u64 ke= y, + enum pr_type type, u32 flags) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + + if (!drv->mpath_pr_ops) + return -EOPNOTSUPP; + + return drv->mpath_pr_ops->pr_reserve(sdev, key, type, flags); +} + +static int scsi_mpath_pr_release(struct mpath_device *mpath_device, u64 ke= y, + enum pr_type type) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + + if (!drv->mpath_pr_ops) + return -EOPNOTSUPP; + + return drv->mpath_pr_ops->pr_release(sdev, key, type); +} + +static int scsi_mpath_pr_preempt(struct mpath_device *mpath_device, + u64 old_key, u64 new_key, enum pr_type type, + bool abort) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + + if (!drv->mpath_pr_ops) + return -EOPNOTSUPP; + + return drv->mpath_pr_ops->pr_preempt(sdev, old_key, new_key, + type, abort); +} + +static int scsi_mpath_pr_clear(struct mpath_device *mpath_device, u64 key) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + + if (!drv->mpath_pr_ops) + return -EOPNOTSUPP; + + return drv->mpath_pr_ops->pr_clear(sdev, key); +} + +static int scsi_mpath_pr_read_keys(struct mpath_device *mpath_device, + struct pr_keys *keys_info) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + + if (!drv->mpath_pr_ops) + return -EOPNOTSUPP; + + return drv->mpath_pr_ops->pr_read_keys(sdev, keys_info); +} + +static int scsi_mpath_pr_read_reservation(struct mpath_device *mpath_devic= e, + struct pr_held_reservation *rsv) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D + to_scsi_mpath_device(mpath_device); + struct scsi_device *sdev =3D scsi_mpath_dev->sdev; + struct scsi_driver *drv =3D to_scsi_driver(sdev->sdev_gendev.driver); + + if (!drv->mpath_pr_ops) + return -EOPNOTSUPP; + + return drv->mpath_pr_ops->pr_read_reservation(sdev, rsv); +} + +static const struct mpath_pr_ops scsi_mpath_pr_ops =3D { + .pr_register =3D scsi_mpath_pr_register, + .pr_reserve =3D scsi_mpath_pr_reserve, + .pr_release =3D scsi_mpath_pr_release, + .pr_preempt =3D scsi_mpath_pr_preempt, + .pr_clear =3D scsi_mpath_pr_clear, + .pr_read_keys =3D scsi_mpath_pr_read_keys, + .pr_read_reservation =3D scsi_mpath_pr_read_reservation, +}; + struct mpath_head_template smpdt_pr =3D { .is_disabled =3D scsi_mpath_is_disabled, .is_optimized =3D scsi_mpath_is_optimized, @@ -389,6 +498,7 @@ struct mpath_head_template smpdt_pr =3D { .available_path =3D scsi_mpath_available_path, .get_iopolicy =3D scsi_mpath_get_iopolicy, .clone_bio =3D scsi_mpath_clone_bio, + .pr_ops =3D &scsi_mpath_pr_ops, .device_groups =3D mpath_device_groups, }; =20 diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index 799071b8bdee2..2aaa5d270d818 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h @@ -25,6 +25,7 @@ struct scsi_driver { int (*mpath_ioctl)(struct scsi_device *sdev, blk_mode_t mode, unsigned int cmd, unsigned long arg); struct mpath_disk *(*to_mpath_disk)(struct request *); + const struct scsi_mpath_pr_ops *mpath_pr_ops; #endif }; #define to_scsi_driver(drv) \ diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index 6cb3107260952..cb63c6536b854 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -40,6 +40,23 @@ struct scsi_mpath_device { =20 char device_id_str[SCSI_MPATH_DEVICE_ID_LEN]; }; + +struct scsi_mpath_pr_ops { + int (*pr_register)(struct scsi_device *, u64 old_key, + u64 new_key, u32 flags); + int (*pr_reserve)(struct scsi_device *e, u64 key, + enum pr_type type, u32 flags); + int (*pr_release)(struct scsi_device *, u64 key, + enum pr_type type); + int (*pr_preempt)(struct scsi_device *, u64 old_key, + u64 new_key, enum pr_type type, bool abort); + int (*pr_clear)(struct scsi_device *, u64 key); + int (*pr_read_keys)(struct scsi_device *, + struct pr_keys *keys_info); + int (*pr_read_reservation)(struct scsi_device *, + struct pr_held_reservation *rsv); +}; + #define to_scsi_mpath_device(d) \ container_of(d, struct scsi_mpath_device, mpath_device) =20 --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 899803ED134; Wed, 25 Feb 2026 15:37:47 +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=1772033869; cv=fail; b=QE837ncD/QlJUgu685s5mlRrsshACWujkaZS3rHw50TB+f6p/WfFUCagEsl9LRENrKCUEelNdagot10oIJmXCZcomDGfuMixIrdjP2Dt2B6OGCv+vT7voQm1ebR3q43anWozIZVzdvNhc5uCWmH9yA8tvxNu+Q9bJ+XJKdXZUek= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033869; c=relaxed/simple; bh=FOrb1XVrzP4DUD7aJYD1IcUKp3SmZDVam1/l/nFg67o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=eXiiCLNkdgtxUnQaU1Y2aj6H+cWRtr+hkZOcs3eTldDfTWtLsZuhgUgK+cqHbhVAEvJZ/ETDt2cvsjLP1vxZIqPFMs7I1zr+lc57BOLFR0RH1PY9KPKadkubCXUzlk5hmeJNuMmliFVN88bybronhMEHT2S05It1X8rOY1p2CGs= 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=eUe9lrON; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=BuZjVXDQ; 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="eUe9lrON"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="BuZjVXDQ" Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9oPvK4019329; Wed, 25 Feb 2026 15:37:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=Ok9weDdDiohbcjalblAblskCZMXTSURSRTsosW6NZuY=; b= eUe9lrONZTzh70UH1Jk2GY69XPKtYZqX9o179YogFx5rmjx+IrXIM19FW/mBAFW5 83ii76rYIV8WLij5Lf35ZuLziAkO81LRhzWNs0Tkoa5UXqZrtdGn8emf5Ik1TE2t 084O2yvxW9f6+aOTG/pqlmJCF/6Cn1bz5glFTibclAw1GWxQ+GjE9wpX4lSr9D6Y TAOUNoKgDN3PFkAC60QpZYqV21r2cRBL8ticOLG9N+ymi0wXcuZOjp98u+Gl6Rxu HUQA/xn8OKuGtZ3RmOBN/oEKhm80TqRP7yqPXIi8gqlE3/fbB037ub4YgesnaLZu zxmVXg/amzCg7pUjqAkYYQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3a06h9b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PESt05028497; Wed, 25 Feb 2026 15:37:17 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013057.outbound.protection.outlook.com [40.93.201.57]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35b7hfn-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I84baeNDlFu5H3gVuQUgWivp8o8aUq5L42eC5LqKs0CoMqpjkfQZMHVA8mlB8Jr0Yc0H9HV2iNwpC3WQIec9P/E7EZw3m6XHr+NREb+Ek2uHw/qL7CFt7gN6DAsPCcyGS7eA0UWRKNmRS6m7j3O/QcmQoeIOZhQxAzscgIdTsTqbrC7ZwtWJ3o4P/SW2eX7O8aRFYCrrz0KES0o8frjeLOcugZKZBPZ2ydRp2bC+oCyMlelvokVo1dVnwpnAS4J6CJT8qE2/smxigFGTUe0vZFS9rhvP4nvRxZBqFHCNcgM4oNFASYEBAQpGze/SBXCd/lwcuOf5RnphQDsuv6XOjQ== 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=Ok9weDdDiohbcjalblAblskCZMXTSURSRTsosW6NZuY=; b=NpvZ2gjYQgGa0F8e5BlCAeh+Q3Si0kEI5Tbrhwt1o21j+uhkHjRGx0ogyd66zRReLC/In316JNYX2jZamhkVygJQ5Inuz5NjFrIplYXNHq2iNEc5MAbJ8TjqmUmzHkIFxFnnHCO6XLpLTF0xJFF1z1grX4n08itvynzlbJ3Dxtc29Y0MnSY0qLjRw3xzSsidaLvc9ONbTXjQWlSbYMMBQeN7NaFzbXyS0Zzqp83igp5BdQZcdecyzfPJ8ewR21ghwENBEkEJ1O1M1hCw1qF53hbArak1d9oWDKVTlCarXxeecWAolmqOIvMRTDHda03LiL8jJ8kp4U5QBjZwuiBVZg== 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=Ok9weDdDiohbcjalblAblskCZMXTSURSRTsosW6NZuY=; b=BuZjVXDQw1Yw8XIz7SJOP+lpQ+X+TJHbFwMvIcRAOT6GroT0P6LsFwby/6exGH5kP4p5DeppZvnEUkRubpp4g31haZREH4ES0mVPvHgyZhLf53CFPOZG5VpOxCBvA+vff2p6buZ6m2c3BX2Hx7sAVeMLry12m7TO1IRfL2OMpug= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by SA1PR10MB997712.namprd10.prod.outlook.com (2603:10b6:806:4c0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Wed, 25 Feb 2026 15:37:15 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:14 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 15/24] scsi: sd: refactor PR ops Date: Wed, 25 Feb 2026 15:36:18 +0000 Message-ID: <20260225153627.1032500-16-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0061.namprd17.prod.outlook.com (2603:10b6:510:325::11) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|SA1PR10MB997712:EE_ X-MS-Office365-Filtering-Correlation-Id: 37953f0e-8339-464f-8d64-08de7483bfbb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: kyCTdd+lCdS3AeFXIh02EBw3QsNHrnU5kjsugDs3udoEhTHDAUs4Rvc7hUYk0QF3iHQ4Xt35+GrMW2SWAugOD6quFiAVuquYGiqQ9jtaHUYjkwDEhY5kxk6WYIrglsCEbZV7WGNL+2rv0F/kdWn+L+231q+KHK5hzh1Ghuvay3vhKhWkqzGbYVJRp0ZXMLDPWRGAiW2XUk3Aa/BiGflm4HQt03MzNiSODuD0GC08YZnpWeeHpDhT2BsLjKrvLILq3sdcS1fQ6rpDLwxKOXgfB+ltgy9dvlwE2GWKcflQXeaD48El6tU5MPJQwwIa9IUovdlsDzUWsa6Z+cH3hADZkrG9cBe5PvcjT1liOw9Qi8mmx3nZ3DZbt7XFjLEKA7CI++0uCQ5aNuMKpnVxzhmgwpdJR8zW6FsL/8k0YG3epQvcgFOC1w2+/ou7UFwPkO5elvNCgAZOMrgss+uUFQ9rQ/xhPqXUMGpu85zW+Wx0bADOy0PR5um05iBRu7x+Y7l5z5XLlL9L5T5Zp5EJ6cqnEt/QFiMUN25YgDbCf8ICIrjFKNsGp9qgnQOA2MnNW0fUAjIM6X+f7CWxgYCN5bSEzKPpwszM+3lYvs1+ErdlEK3d5gOv2mzTVdodN1PKHH/nOnkaDoBw78nHLkrUnY6cltkdX859vLyXR/rO//MCU+I/FIfFVrMJNOAE8N2UwVQW2Fi8z9chFJll1qoLZeP80BmCSy0ojR1NEpvM2uPDhkU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(7416014)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fNBII4kh9zSx74mVHdkLwdvx/R6FnW8XbhpOC3DpDmGxwYeK9K1EGQ0Q4otS?= =?us-ascii?Q?o0ce7ohax88EaA1m0UvxfXn1TjNB+/+pfelG/rMmo125VNLJJM1o1C5jz3PO?= =?us-ascii?Q?vnm9922raIjvfmDSJ5meNS3kSgvkl7CmvLHKBHV7fst4KNQqASEaun1tsgeR?= =?us-ascii?Q?8i6o0PDUkFhOvcecBtvM/HbwMkCyBUCtn32P951n0tZStPk8QN0XwWKPHjVt?= =?us-ascii?Q?lZS9bbF81WafcEPIWeRrse77cl0VWSwiM0uBZW+4U9x1xomS782Nu8fLxFXX?= =?us-ascii?Q?S5KCwr8dwuzyU3xvsXpN+fm2qmDdX0iw1ZU6Qm+82Ji/BuGhktOBvdcQ3z48?= =?us-ascii?Q?IQ69Bx/pOoAcWUTttT4iBAj7jLYf6p1BthJBZ7h4DdTkaN7PJI8sMk29IVZn?= =?us-ascii?Q?Ko9/Dl0lvxbOUHLeboXIEjOWTb/URlM59BJmPvlW6wKRrPUv58wNTMn9BzgM?= =?us-ascii?Q?W8Q8vnLSKB/z/Uguo0Xtz/bhUXTdh02gm1gxsIw55pI+qWdfwHR4WF9QMEqM?= =?us-ascii?Q?K6+T1jfdZihoKsntz2r9UNWX6KFyi0VREHTeIfLbtZAgnp3I3QXZCNixdGww?= =?us-ascii?Q?llPeDni4xJj89yTQOpuTsN+F+YH+6k1oylArncS5LrsDHm2NLLseOnilhWYo?= =?us-ascii?Q?b/qIpsNJm+2uFZzRu1jyvBEHSPxJ3seFS+A1icP+hR2z7rDzUI9ZkFhMcr8w?= =?us-ascii?Q?mzJetdnVSDk3ecoK/PYpK6pV/g9wkIIR5iNRKYde+nWpXN/TYivm4jKp8Xuh?= =?us-ascii?Q?jrGW4uzrVwwasQbj8/mKeE9RJGVs5CTYUeMDKnnA9LF/7wlatvM0Ljl+tJVN?= =?us-ascii?Q?s/vSLvzH3Gd7/b+/pFlpLO3Ntux92KnCFwM/l2PDpOBUFO6ao/aiQGo8UVyA?= =?us-ascii?Q?J5IKZcxk3CG3omst3dZNxKsrpyAk4JjoVEnbcjVCKJNIX/TO94qP7UxyaSPP?= =?us-ascii?Q?S5g3cscVX4Wv7vkuUavRnd5Ml/GnzSLGHWAIzNQ85IPDAe6WdH7b9iCf+bvJ?= =?us-ascii?Q?Lvuwk7ZLoUOn1HNE2GWCldEkg8N+rWDMhAcM+lcMepjmcEt1j2ONcScprFsb?= =?us-ascii?Q?W/GC2v0fZGuUSstYxJXrdvtV9Du+mcyLL00CGb1HB6O8cbrYmIGg4qCW9Ljh?= =?us-ascii?Q?qt9oxIQdRORuhgbsGXrFhYAjujl0ZF631lCeeWenGN/MvPo1dVtcDGX8YCMP?= =?us-ascii?Q?OzpKpgRxP0cgNDY0Wvo669vSWKTn1YGw6TcUPRBqGbziWZDV53CpNRwVhuEZ?= =?us-ascii?Q?sPKwx+QC3kzH6f2MkK8ffBwrb7Hbp/0znQLDDf7kV5aBF5pNXoS7sgb3/eEy?= =?us-ascii?Q?GwtXGBoXlHlKsChSWvN49jrvjgLMZrRrAk9rrJK3IcNTo7TbhpI5MEDZn8R9?= =?us-ascii?Q?kGP3+rtis2aWSXDOYQZ2ohHIKv98i0eav6dIwaIz9WJV151xNc3NXIecLp2d?= =?us-ascii?Q?khHFephvGyZh38rDKUgSNBSArQufPyHL2lMbK49ZyFZx+czvEtSUAXHWvPoE?= =?us-ascii?Q?vE+AcquaPqo/LF9J5oJ1+HW6dYoMaBZpmF2ynzkDPySi6uxjdl6jb2OFAZP5?= =?us-ascii?Q?0PP+dnXUmjPUpbcZPVQCnfzZn2vAej1vPbFtcxoGNcN2VzIdKBhrXwhQky/b?= =?us-ascii?Q?AZJirLkuAFIDGGq6+Th+NWBfzHxcOl4eDk0+C/JpHYsTV2WUVSEUizCEKWGV?= =?us-ascii?Q?NaxBFgeNwdtZof2gdFg/nUQSP76ymU/pHTNWsIWYiz54G7bXKgdIEAL5/LV1?= =?us-ascii?Q?19WTVGQCcCdTo5FtyZKSvqF0oU87HyY=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: tCnA0uvTwlULjT94IqswjCsxFmxdrp+vNH8mFVRHn0JiT2iwrvEFWbyVUGrNeoQ4/495GdW4KdHcB2t4EoVqWEYPUjTL1PVhuGGVJUqLFsxtbBeMXqw1ORmEfQbTcq+TFBen4qsDNSoKIKUFKkIaHfd7e/dmw3tTOhzZWSJil677gSBagSIqSv9m18qQouYQF00TFOtnZyUWDJvaLvVUhSY7/o+89SXVvHnciJ9rawkmYKwydGi/6NEHlKvuafjZq6aBS1BHbacGDE4QFNPjJrXUoLVlfq1DzgkpgDAFpBUdcJIh3nZar2l5hmU/VR4/Y17EuDlhT5k+yDIXQErCG3K785AiP/tY2U8qyicEAshYmm5HJpLbnuZXuhKLW2KfVxWWqs9LIW9EzRrRcGuM2zdOFSfiMt5dYcUVbX8P/vc4Wnq4k0hNgeY3PnTLGdr/DuiR3NfQwlYgE15V3T8QpYsv1tCRqEcNuEuw1uwyZ9JR4WGGAfNQy66jp+jdisY+1sM9ISV9jAzIXz94+O08hVTYi8gG/A0DAPn1AvAIWooidN5bu5iL4Ev6/VfN7BEuNN49KLHHeziW8XGRWYjAi/7V3XI/lwmkUihNQECQIbQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37953f0e-8339-464f-8d64-08de7483bfbb X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:14.1056 (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: 1WEP2/pIS8ApO+ESUdTfz50+PLJGKCVAyE129JO+yrtBnI1ZyNrkiquA/wh34jVXqHY+RvbgNTG2cB6N4GS/Ew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB997712 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=IskTsb/g c=1 sm=1 tr=0 ts=699f172e cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=8x3ov-SK5ei-yyGZOyUA:9 X-Proofpoint-ORIG-GUID: IOwNfs-iiaZg0tvHM0ZIP0-GW2_UhC46 X-Proofpoint-GUID: IOwNfs-iiaZg0tvHM0ZIP0-GW2_UhC46 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX2yGo5ubWr9Wg XvxbOyqclhVMbSvtqsu9FyW/NMw/LVsl/96wvHOOO0zqNjiuLGGx/HVeWUaYzvKUAkJTGsVtOb7 EyrcfI6qmtIoOs1eBFwfbAR1gliOM/XWky34DU2MgZe4GBXb1t4DetBwNHE8E6OEawCH+lP/4Jg sqpd4mqbGK1BdaJ6rLMPbP9xbUZTyfRKyUJprWkcPkQ3j3fUeH+ZhpeZJo133IIZkjB9WtO4RJ3 JdbNuiM5Os8X52B+1T6919RIsJfjfJqM76XAeeq1JAYv6UZjAlonN6D3uD2H43xDhJpWvhNVyoO UGTyVBtiOBxBC6yKShAmJ6F8F3gIryw/v4ajilX0CNqor0oXaSQYk3FQ5E8SHttJswrEhMys5Z6 cJio4omU/5AaO59KqFXY/LasOjO7LkwRKKECIfJgPMgxzhqc62hwgE8sKYfUt97SYfKF0tqKVkl yGNhsu6NI9cdeLvAcHA== Content-Type: text/plain; charset="utf-8" Refactor each PR op into a helper which accepts a scsi_disk, as this is require for supporting scsi-multipath PR ops. For scsi-multipath, the multipath PR ops are passed a mpath_device, which can be converted to a scsi_disk pointer (which we are providing an API for here). Signed-off-by: John Garry --- drivers/scsi/sd.c | 88 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 17 deletions(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index f50b92e632018..cea3ab54c4417 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1958,10 +1958,9 @@ static int sd_scsi_to_pr_err(struct scsi_sense_hdr *= sshdr, int result) } } =20 -static int sd_pr_in_command(struct block_device *bdev, u8 sa, +static int sd_pr_in_command(struct scsi_disk *sdkp, u8 sa, unsigned char *data, int data_len) { - struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); struct scsi_device *sdev =3D sdkp->device; struct scsi_sense_hdr sshdr; u8 cmd[10] =3D { PERSISTENT_RESERVE_IN, sa }; @@ -2000,7 +1999,8 @@ static int sd_pr_in_command(struct block_device *bdev= , u8 sa, return sd_scsi_to_pr_err(&sshdr, result); } =20 -static int sd_pr_read_keys(struct block_device *bdev, struct pr_keys *keys= _info) +static int sd_pr_read_keys_disk(struct scsi_disk *sdkp, + struct pr_keys *keys_info) { int result, i, data_offset, num_copy_keys; u32 num_keys =3D keys_info->num_keys; @@ -2021,7 +2021,7 @@ static int sd_pr_read_keys(struct block_device *bdev,= struct pr_keys *keys_info) if (!data) return -ENOMEM; =20 - result =3D sd_pr_in_command(bdev, READ_KEYS, data, data_len); + result =3D sd_pr_in_command(sdkp, READ_KEYS, data, data_len); if (result) goto free_data; =20 @@ -2041,15 +2041,22 @@ static int sd_pr_read_keys(struct block_device *bde= v, struct pr_keys *keys_info) return result; } =20 -static int sd_pr_read_reservation(struct block_device *bdev, - struct pr_held_reservation *rsv) +static int sd_pr_read_keys(struct block_device *bdev, + struct pr_keys *keys_info) { struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); + + return sd_pr_read_keys_disk(sdkp, keys_info); +} + +static int sd_pr_read_reservation_disk(struct scsi_disk *sdkp, + struct pr_held_reservation *rsv) +{ struct scsi_device *sdev =3D sdkp->device; u8 data[24] =3D { }; int result, len; =20 - result =3D sd_pr_in_command(bdev, READ_RESERVATION, data, sizeof(data)); + result =3D sd_pr_in_command(sdkp, READ_RESERVATION, data, sizeof(data)); if (result) return result; =20 @@ -2070,11 +2077,17 @@ static int sd_pr_read_reservation(struct block_devi= ce *bdev, rsv->type =3D scsi_pr_type_to_block(data[21] & 0x0f); return 0; } +static int sd_pr_read_reservation(struct block_device *bdev, + struct pr_held_reservation *rsv) +{ + struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); =20 -static int sd_pr_out_command(struct block_device *bdev, u8 sa, u64 key, + return sd_pr_read_reservation_disk(sdkp, rsv); +} + +static int sd_pr_out_command(struct scsi_disk *sdkp, u8 sa, u64 key, u64 sa_key, enum scsi_pr_type type, u8 flags) { - struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); struct scsi_device *sdev =3D sdkp->device; struct scsi_sense_hdr sshdr; struct scsi_failure failure_defs[] =3D { @@ -2123,41 +2136,82 @@ static int sd_pr_out_command(struct block_device *b= dev, u8 sa, u64 key, return sd_scsi_to_pr_err(&sshdr, result); } =20 -static int sd_pr_register(struct block_device *bdev, u64 old_key, u64 new_= key, +static int sd_pr_register_disk(struct scsi_disk *sdkp, u64 old_key, u64 ne= w_key, u32 flags) { if (flags & ~PR_FL_IGNORE_KEY) return -EOPNOTSUPP; - return sd_pr_out_command(bdev, (flags & PR_FL_IGNORE_KEY) ? 0x06 : 0x00, + + return sd_pr_out_command(sdkp, + (flags & PR_FL_IGNORE_KEY) ? 0x06 : 0x00, old_key, new_key, 0, (1 << 0) /* APTPL */); } =20 -static int sd_pr_reserve(struct block_device *bdev, u64 key, enum pr_type = type, +static int sd_pr_register(struct block_device *bdev, u64 old_key, u64 new_= key, u32 flags) +{ + struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); + + return sd_pr_register_disk(sdkp, old_key, new_key, flags); +} + +static int sd_pr_reserve_disk(struct scsi_disk *sdkp, u64 key, + enum pr_type type, u32 flags) { if (flags) return -EOPNOTSUPP; - return sd_pr_out_command(bdev, 0x01, key, 0, + return sd_pr_out_command(sdkp, 0x01, key, 0, + block_pr_type_to_scsi(type), 0); +} + +static int sd_pr_reserve(struct block_device *bdev, u64 key, + enum pr_type type, u32 flags) +{ + struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); + + return sd_pr_reserve_disk(sdkp, key, type, flags); +} + +static int sd_pr_release_disk(struct scsi_disk *sdkp, u64 key, + enum pr_type type) +{ + return sd_pr_out_command(sdkp, 0x02, key, 0, block_pr_type_to_scsi(type), 0); } =20 static int sd_pr_release(struct block_device *bdev, u64 key, enum pr_type = type) { - return sd_pr_out_command(bdev, 0x02, key, 0, + struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); + + return sd_pr_release_disk(sdkp, key, type); +} + +static int sd_pr_preempt_disk(struct scsi_disk *sdkp, u64 old_key, u64 new= _key, + enum pr_type type, bool abort) +{ + return sd_pr_out_command(sdkp, abort ? 0x05 : 0x04, old_key, new_key, block_pr_type_to_scsi(type), 0); } =20 static int sd_pr_preempt(struct block_device *bdev, u64 old_key, u64 new_k= ey, enum pr_type type, bool abort) { - return sd_pr_out_command(bdev, abort ? 0x05 : 0x04, old_key, new_key, - block_pr_type_to_scsi(type), 0); + struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); + + return sd_pr_preempt_disk(sdkp, old_key, new_key, type, abort); +} + +static int sd_pr_clear_disk(struct scsi_disk *sdkp, u64 key) +{ + return sd_pr_out_command(sdkp, 0x03, key, 0, 0, 0); } =20 static int sd_pr_clear(struct block_device *bdev, u64 key) { - return sd_pr_out_command(bdev, 0x03, key, 0, 0, 0); + struct scsi_disk *sdkp =3D scsi_disk(bdev->bd_disk); + + return sd_pr_clear_disk(sdkp, key); } =20 static const struct pr_ops sd_pr_ops =3D { --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 494713EDAA3; Wed, 25 Feb 2026 15:37:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033869; cv=fail; b=iIhg+RjlCLAqXO3UjfNLJOD2xL0ov8sQ8BTdccx4EfGblCsghS8CidAstHqAXhiMG3xIAYKTRz+nycdb6vKXMW9tHwUL262CQ7iXcr/kf6ujWLn39GwpMDQ1P+YDA8p5jDufUD1qpEedo4U7yoKbyJLsnQkIjBol0hqJAznM0x0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033869; c=relaxed/simple; bh=++6VZF7tGKSd22v6GkMvdDs33NvsfnfUu7qyRzojanA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jjp4IKP0APLtte+Ud7TVIQxHH7H/WDJKkUq+fQGXhiTkvZ8WScaDTzhZU0r5U1l2o6X4FM6LHCF7BUMCob8uw28R1wVQQeW2QTnVFo0ouwTpcoeHPg/fB3/BmNFyJ2svhSr3UaEMcvNbESpm7jiC3ngvB/bT4bE9Kzj0s/s+Kko= 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=E/p5fjRc; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=BHGERDov; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="E/p5fjRc"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="BHGERDov" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PETBIn2703463; Wed, 25 Feb 2026 15:37: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-2025-04-25; bh=0ioWiD4Nr1bVF+cjfq7WzOnc8SFoWIxw4wR1krCiYqk=; b= E/p5fjRcPMQbQ5KPhMc1KeRpQYqdAJb7PUNYHdGLaAzIaDidEcuhkaY14VRHBL9x HJCW6N09NDYJiyGemwnjvaeqg+C+5ZWrvUUFyS/W3KKNmqlIk3MVqzj9HvZUcTbG qZDF2uhfO3ERAnq4zGO7pivF6jFyDvoUrbl1kW8PYpAgankLQriTQNy7jzyI4qal cCoo3ELUYooAnBYwFSp0KehB9a5P1DhMS/eZe/1kwJ3dgKpvfHmlD3vlHsVwW9lO xZh9ZRcFnRk/4oLEWz7t9vw+nYP0NI6X0ppShWZ9vYM3vCn81QPKSAo3javfPSgA p/DAUzO5UKrF7QUJSbcLkg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4rbeghr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:21 +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 61PF5ciM015907; Wed, 25 Feb 2026 15:37:20 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010066.outbound.protection.outlook.com [52.101.193.66]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bfm0m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S9DeMpy4yQ6NiIZ0HLyrxSpJHa6wVj9U/Sd6a6RekFbeSyW6z2faxInWNJjm/7WHJKpNIpRKOLgtgeS+1dbHVBTNSr3Ye127JXIX4QQeVdhy/A1KvVQhbFiRvWcypxfpbu5kH1KkwBOHaV5rOrGG/mrdBEz1ZT9daJ9+r2xCSt7xU8ZYYjDx4Ql80xEvSIMc8yxPeKQaj/rIEU5z7/Tj+hfWITHfz9cGWNvG0n2tz8MBzLxAdWLxXbJlt8YzJ7rnNwQygxVsTVEFX3Tc166nrbALzOrID2ueXW1HTelrOdar2oSROzyDlIgSLSGEvwZGhqaZ8x3VfmT7FzceKuiDQQ== 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=0ioWiD4Nr1bVF+cjfq7WzOnc8SFoWIxw4wR1krCiYqk=; b=L3Gp0TuePVhndAWLKsZF9eKPkemPGaGhsDSy6TK7pBZWEplQZ61jd6NUluIS+ExYWBs+Vl3ZHfQ62NxEgjp9IP4Kf7Ir5LS+XSxYBRuy92BXQR9OrkVXV6IRSEII0jp1OAisPmwJi42cWyvwwQC6O96k5UvN51ZTfygE9qNB15nHo7EOA3Q8CErriilI/4ieZISlWkfxSl/3gJGf9OSwyZXvTQar/PyiXBjwnBBqaAhatMJkIP4diNYuam/otBvskM9PJ5OYa/UFEE7XkidC/2dNlV5nFicaaKrFZAGy60P+0qyVYtWt8cayj5w4ji6TzFB+1TjDVeb1p3BtGVn1yQ== 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=0ioWiD4Nr1bVF+cjfq7WzOnc8SFoWIxw4wR1krCiYqk=; b=BHGERDovQaS/sZ8pppCDIbZq2mBv6v14liYmA2cPIfvXhn9oQ8eo0fjlP0UqiOh3eOJnqAHGa/6MKqvwLA2MXqBcFZqYEcPOA7EQWJlO0TB7DUFwvrnmKLCOSClX43ci7LjYnjbZcW5X7xE3UFmnhAqXQgmu950E93Th+Hqc0jU= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by MN2PR10MB4285.namprd10.prod.outlook.com (2603:10b6:208:198::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:16 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:16 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 16/24] scsi: sd: add multipath disk class Date: Wed, 25 Feb 2026 15:36:19 +0000 Message-ID: <20260225153627.1032500-17-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR05CA0024.namprd05.prod.outlook.com (2603:10b6:510:2cc::12) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|MN2PR10MB4285:EE_ X-MS-Office365-Filtering-Correlation-Id: 2226697f-05cc-4cd0-3435-08de7483c109 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: H9Opij4ONmF/h+RLppuq7FBGvHV+rJq/KXcdUO36BkkxYiqOT23J3hcYG2s1i3w1QujA9KdBdbtbQs9tuNRjv3lPj5p/KhtykersNBn0blnU8hufhfcMaXYLGw8mdyRcwgHMUeH2zoHc++NxrWRC0JhgxbgYYwvM7WzU2K36LNRzC7tM0JMn8vhTcqgbY+AoYiitJ9y+CeM9FDR/p593L4ZUd0mMpjXEuCqTPR+9MlFMoHDsWw4NQJxrB+CON/JWJwugjv3bFdasJuiDP+W4/yn9peJ1Ns8F25XT2tUd/8nyvkUsmAVlzn4LWEbqWQ8yBb8cvuKCiYG+W/V0tujxK3VN4kggB9rhYA8ShyFv5veCnPskykVU6sQ11BFIAYuNX69252D+NRtqXRR8rkWerslvnWmOcqWdGH5VgmG/Q6UwIETbd0EQWBhyXPGh3hlB19tW2mdY4otR2l+edd+YfSIpsNd7Adoq8LlC52KpzQ1y+jZhdxsciHG8Z//vaGzXsiXe6475nTUvnefZXCLlGe+MZ/yJTXLADw+XhFQGx0bZ2W5Ae3bfbftTvLxuFCPEp336+7RXwWypIlaS9bsZaFqNontlsLPegrK/XrHRYJWW6i4Jmy71UXaGvWnGFtm+jCr3m1LzrCGy4IQ1+7yVHDBzCVzEzYljFmVarXiJBBy/MyU7HhXWgTCBnxt1m+9WQOLdCFPTG8YAuWz69OuxdtCZEQqMykQ29xZHARpbQZI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gUtuJxVElx4IePrQFYGk1m4X2ARmxg1GteEKvb0ZAJR+7iRJUR1TNC6WebkR?= =?us-ascii?Q?rWIp+lmzc3yHsWa2aMNFGM+aA28Xt6qu8GnZ54vVlk61zN4i07NKHdoq5w2O?= =?us-ascii?Q?ufWvcVZzcg0GZduq5UyGBokSt0f5fhVwCvxXbHS6PCQqxds1KFTEe6KPFwgd?= =?us-ascii?Q?+XJn9S9UwZ8fKb0BiwW21S9eJWbhOQAdZoBck9pulNIO8Yob6yP8Qh54OTHV?= =?us-ascii?Q?4VfOctIGQWCo3YIvELkuN6Gk/jqvQ3sPXrBPK+xleDDZWGbNxFYRfmn+hYZD?= =?us-ascii?Q?+6wG6+RONS7Z7l4vH9FBILSCe53MPBFEFZuFm6FK0jGW1kvgCBRzaB+qHxO+?= =?us-ascii?Q?gz7LXW91yQdTrP0rBR6zywwXNRwMIvc7Uk5vpO9wgivdNLlxRx/yKvHW3Oit?= =?us-ascii?Q?DceGBQB3kuC1LX0CyiIW2b5tMN3GrEQ8FC4fueKyEa+2nnOvtyHsVYutH5h5?= =?us-ascii?Q?xVsxwjBFZEBjSqHqODLs8Iu7R6TpK7F9o5t6wnB52z1lDcO8FZXqmpWPpAK5?= =?us-ascii?Q?VMuQUIj40sR8l2DLPk1b5jjHz7tcFnsDNJxZtZZakNpztb+3ULlWe7LtVHj2?= =?us-ascii?Q?z2jtVaTxNL0mlfFQJ2utClZa+CqITyufxzICXt/Z3MEcnNPIsVeIWl+bAo7I?= =?us-ascii?Q?prJs1Tq3/z72hTW1QlnWB/Pi8Z7FvIk//KvpmSaNe8YjUf/Gnh+svcq4V14V?= =?us-ascii?Q?Mb5nUIy2NyL+nKFHfrBv4HFXIJSBYMw/JJ+Af6Cx15p7BP4/W9RCvz6z5BUM?= =?us-ascii?Q?hh3RexkhdGJheZZvLikESZ5ZphBm4FU0pDXtzzuKnNwdWzEhHeo17i/jrUoB?= =?us-ascii?Q?T1JMbCHXqhKnyVWC9ZMSl/IZ6PUhD4KV7r7s+gcmiQsFLZxqL/yrY6kYerKB?= =?us-ascii?Q?fT/KkdCYzAyMg8YMyaRXuAkqf7z//eFKbpUsyIQCVW0GWEJ+xp293MvEwITt?= =?us-ascii?Q?t3ubhRaSqR7DZykgwFoOjfgAxjkHBLNFirfYOeNq7D4sP0TB/7rgeJ9qOvi7?= =?us-ascii?Q?ep8uf2byOrbLYSv3d394dKCZxJr//uF+x8HYBZnFd1U97+wuidTee7qwptSu?= =?us-ascii?Q?3x+KttG7s4BNcMcEovqhplKdd2gQbs2TiJF/ibbrWOTi4y4w+itSY31CL09N?= =?us-ascii?Q?d9JRR1i0ogxQO6VR1+G0v89KD5WLBcqEUQK0l0KW0EbKfLVjvff/wfhiIpj8?= =?us-ascii?Q?FD16LbacCzauLc30JfwTGufUjM2VyxDeOEwhsLAc2XzfwUwbYTDqglqpBkp1?= =?us-ascii?Q?LcgGDZUO2UZ4jnf/y8GGaC2LKLFFY1hQiUb6aGwmRKCXzTWj66xLyb96ku2P?= =?us-ascii?Q?+mAdPA4P5GrrMt17rcR6V/54wOgbplRaGD8ep3YE7Y0J5Z8pjcjFTdfnxkHO?= =?us-ascii?Q?fAIAZHqN8/hl5MkBcxn8M9gS/oL2yM/ZW/etGSxi66V3eSClVoAZewSfTUwG?= =?us-ascii?Q?oJy0B+nuAoyG2dgFwEH+Py3KQVUIxJw2ZqdP+AtH9f/cwyQuhudYdZfT0o44?= =?us-ascii?Q?MgSSgvSeNSpIesvLhwzsl0E585sbE4sjhn6BVg2oClngDFEAS2giF+ljG1SW?= =?us-ascii?Q?vBE9NkhmGQO/J36MhBnj4gSM+Gs7hwasbQ8sL6OItlO8hxznTfs5JCaBEAoX?= =?us-ascii?Q?Wmz5h9CnBqi+5hWYecEBdTrLi3q/Hg5HHFwbsQA3Rb8hxR5PaJGxdZiBh4aG?= =?us-ascii?Q?Sl6+XddscizFGX21+3jpTSXOS0Z3fpRY6x/mDr39RKVSK7/mtKdH5MYEsyQs?= =?us-ascii?Q?m5miVmOz0yLF21m4Z768A3txhhBgZlk=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: voohCBAxXlpM8clxYsRd1trWsk/wSOpQ9Vm08FhfHgYtxe5uVzfM0iTimmjEVy7E3O5Fe6i9FWjlm//g21jLJGzKpG3SL0/CJyEB6VgOgomEIhBX4dSyF5joEokG52pjorFQDjxwsVbjBJ1GAnw/678IGocqVI9H8DyUECPLNmttDDZrlPd2fHPvUNpGz+Kig4YGsy8tWxc+5n//BjL87yxGXtTXudWokUtaYxYlAF9MwrfMAgS9UlWvP/8VzMTUTveq2HTURW7yLENqXA2qV4Yn6t5OCl/95xWNApYzYQvuR9/Qa4kqYhcVhuQk36jrB108tlwhv0Rl4byfgnJ6HgyZg6rmJgCu6Yt3EqcADPxlR2FSRzQXpMKJFOftKKPlIy65z8QZyiiIHTfcnme7+/kDgV7JOwpGwmwPfb1n8CURfSa686N9Mzr+Ie3nLXtckkYBXlo4Qx0XV59Lkh4qhx7bpwDLaXOjiRZ8+aV3RqJmM+n7w1yoP4NggvpjVfRFEydrlADWSvm9MFqWaQL/9nO07E3us8VdV49JoLGlJ3KuYPLa59RxGNsotjm3UrWU/XjcAf+zaK4hLxPW2N4+I7m3nJy8lRTPivtlRNMImKg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2226697f-05cc-4cd0-3435-08de7483c109 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:16.2893 (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: OUgxlWZ5zQjL4gwVLR6+/wb7KMc4ZY6qshTm1/gLwA+Vm2Cmyrit1VFVa4AEDviF2jjqbRPI4vNYVM6IDVS0wA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4285 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX0+ucS8bD9fef vQTZJtOLRkxzq17WrJlh151fFXz8efD9wjB0r0FwAVCN4wjr1pBQUeI6jofP/7U0yAgF/UlfEix iw5NV48PHF2asyVfcSMYKgq2sTguVzZ+BfZWLCICaPF9FYTsfrpuZgGzBb4tBYk/GMh8V8JbAfG qt1f4C4KEhp5Mx4nf6i2Z3j4uo2V+ssU8MA5hRbtreb/so36c6p+xbRP3ZwLNj91Oowd0I+X5vG F43gN3ksHx5+FYaWaxNqHJ6KpJF4/Ui+PRfQVHBmRCHJgF625ajG/X1z/wMqb+ODNONb4tZ+QGd IzgYGrZaQeg2xDAtNOvexxW8BHxK+cCq36r6HGvYl8yEyqJUemuf5L3efsNLbgR4SXrnAbGUVeS zq45FPk6KgEGN3O34p51lH/eTs4ms/GzfGcBG/r6e1Iv8rpvkfM67s4hgSuZwGCZrMNJkSyrCgy Vyzns3+QDqgave2rQgQ== X-Authority-Analysis: v=2.4 cv=S/fUAYsP c=1 sm=1 tr=0 ts=699f1731 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=ecQ7zCoEdOpy3JLqRw8A:9 X-Proofpoint-ORIG-GUID: aExVfJ4pBLfE5xWB61n6xid7iV9lQDa- X-Proofpoint-GUID: aExVfJ4pBLfE5xWB61n6xid7iV9lQDa- Content-Type: text/plain; charset="utf-8" Add a new class, sd_mpath_disk_class, which is the multipath version of the scsi_disk class. Structure sd_mpath_disk is introduced to manage the mpath_disk. Signed-off-by: John Garry --- drivers/scsi/sd.c | 43 ++++++++++++++++++++++++++++++++++++++++++- drivers/scsi/sd.h | 3 +++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index cea3ab54c4417..222e28ed44e9b 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -70,6 +70,7 @@ #include #include #include +#include =20 #include "sd.h" #include "scsi_priv.h" @@ -115,6 +116,39 @@ static DEFINE_IDA(sd_index_ida); =20 static mempool_t *sd_page_pool; static struct lock_class_key sd_bio_compl_lkclass; +#ifdef CONFIG_SCSI_MULTIPATH +struct sd_mpath_disk { + struct mpath_disk *mpath_disk; +}; + +static void sd_mpath_disk_release(struct device *dev) +{ +} + +static const struct class sd_mpath_disk_class =3D { + .name =3D "scsi_mpath_disk", + .dev_release =3D sd_mpath_disk_release, +}; + +static int sd_mpath_class_register(void) +{ + return class_register(&sd_mpath_disk_class); +} + +static void sd_mpath_class_unregister(void) +{ + class_unregister(&sd_mpath_disk_class); +} +#else /* CONFIG_SCSI_MULTIPATH */ +static int sd_mpath_class_register(void) +{ + return 0; +} + +static void sd_mpath_class_unregister(void) +{ +} +#endif =20 static const char *sd_cache_types[] =3D { "write through", "none", "write back", @@ -4464,11 +4498,15 @@ static int __init init_sd(void) if (err) goto err_out; =20 + err =3D sd_mpath_class_register(); + if (err) + goto err_out_class; + sd_page_pool =3D mempool_create_page_pool(SD_MEMPOOL_SIZE, 0); if (!sd_page_pool) { printk(KERN_ERR "sd: can't init discard page pool\n"); err =3D -ENOMEM; - goto err_out_class; + goto err_out_mpath_class; } =20 err =3D scsi_register_driver(&sd_template.gendrv); @@ -4479,6 +4517,8 @@ static int __init init_sd(void) =20 err_out_driver: mempool_destroy(sd_page_pool); +err_out_mpath_class: + sd_mpath_class_unregister(); err_out_class: class_unregister(&sd_disk_class); err_out: @@ -4502,6 +4542,7 @@ static void __exit exit_sd(void) mempool_destroy(sd_page_pool); =20 class_unregister(&sd_disk_class); + sd_mpath_class_unregister(); =20 for (i =3D 0; i < SD_MAJORS; i++) unregister_blkdev(sd_major(i), "sd"); diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h index 574af82430169..304b24644d942 100644 --- a/drivers/scsi/sd.h +++ b/drivers/scsi/sd.h @@ -83,6 +83,9 @@ struct zoned_disk_info { =20 struct scsi_disk { struct scsi_device *device; + #ifdef CONFIG_SCSI_MULTIPATH + struct sd_mpath_disk *sd_mpath_disk; + #endif =20 /* * disk_dev is used to show attributes in /sys/class/scsi_disk/, --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 9BC2E3EDAA7; Wed, 25 Feb 2026 15:37:48 +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=1772033870; cv=fail; b=rVGhN8EMvv5rGHRxZjCW9Nbfhn3QKzvRVxxYdKqLcGNXHX3PUPF1eKv7L51ST7uL6CoUOdQ8GtPzVehdg81H8jv/pZu5Ubs2UG4IRMD3kEyZZhyebfHfC7zLRXxzbKzZq0Ltaciga1Hig8d4CNYHMICvkXvtVynp4UzbwiFGmnM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033870; c=relaxed/simple; bh=eTB+qE36nmn+UFhbKSf9G3cT5D/POUYYNrnTmAuwFSw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=KzurTE8ygQhwGbTvXlwRFzuAL087s7ju6pKBmql6VU0faNrL2297Vzgp406PZVbr1SeCwHzpEi1Raf0xfb+BXMhs4TI7AyLrkabjlYchjW05vo28/55QsRnk1xyhajrDNkbkN9tqF2m8NtJR7YJorixjz/NFb3ZoPsjIsCXr0uM= 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=EP2/MzRG; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=nsCE0pXI; 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="EP2/MzRG"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="nsCE0pXI" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9pPXO3928883; Wed, 25 Feb 2026 15:37:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=ezE1yPdG/XvgDJAO0s72hQuy4ghN50ODpRPfQMA7eLw=; b= EP2/MzRGlEuSMClOX7bxVNng/HMs6mBQHCGL3l7N+OiJQPVVheqJu/HP7oX9wtTd kteqmr8S/oyzCid1ZbgGw609oZka386ehtekzyolJmBjsMEcDVbfAZsOVxKmybHC 2IBRQ2HGfKL+pm8TOl2zm4WPUUxy9SBT8Bj8taBatC3gsztXAq8MiW2KZdeq3ZmH OMc1q1iYJvcdjaRvpEuVONGxL81bLZAM85V340T8EQLAcVbbkAfBfzeLEoqqh99z wzUAkfNHFcTE6IbsdOhG2phF+mFdzgLYnP+jWfYMUYZDatzwcvZydhDkDepV7urg nuRcVKpdzKvjFpMlxtiNJg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf58qedyr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:23 +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 61PF5ciN015907; Wed, 25 Feb 2026 15:37:22 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010066.outbound.protection.outlook.com [52.101.193.66]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bfm0m-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Huq6+FJ8yCyjRJkzTmkMxMtVyaTgxHkG85yRBiEO1ScXQVOrRC9P0IaHT++64H4vo3xZgF1pGWN/kxVjlg0Kb983B4xB7IcQ9wT550R8NL0b3rZGdEQtwmh20L4LS4TtIaZLqCqeqGCT6Y5H0g8/40KjBgR68pj8BhneK4yIeNWA9VOkkpLKUvuE/ORRfveHB5viz1boVnbmzITJ73NoSf7ZvB1F70FqqUX3XqX5mQfRqru6iTVMraRf4f+SiHPrYTa58XgOQRTskjpbHWEcMNw1Lnp6jkpSPXVSNzmFbiodZgg65L5Fj5iGXX0luRRcgOb+l40uvV01BBMXap12jA== 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=ezE1yPdG/XvgDJAO0s72hQuy4ghN50ODpRPfQMA7eLw=; b=X/odugoY1/nF2n2FDlKcfw+xyxIdKMvZawfU86+3D+xO006Lr42tjKeSnpLDPBgMcp47dm+fwwjAkc/kX2Se1puLSwhq7EMIE8nKgIRpnx4ifv5mlfx0DilfuTQj6vTypcdR8n+X766w+FswG8en8mJwMcjL/UJyFPco2m07K82cbz/TyU7JMv0AHWW76x+hi7FmH378Swrjr1JwDirQVM0Qos/Rn3KJcbT948e1m9s6sWmFEt4z97IorPoZRCTiRfhB1FAXx3OWuAkAghwVWPo/EPqDttSVf7OJ7t8GIvU8AK4PkkkQdfR20WTQSu/3ZP5dQ029CKLrkJXvXXQKQw== 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=ezE1yPdG/XvgDJAO0s72hQuy4ghN50ODpRPfQMA7eLw=; b=nsCE0pXIkBcSZyG/iwL74IQaDtmM9HRAeyLXzm5jvQ0bfcB/wDTxS2tAzREMNeU/QRFLhL/wGJ/oZ/cnKMmNJq+mb2iM+l9QxlqG+oEr7imICJxpBZrLSH04oTLI5x+Ppx2Gx0GsnrkXo6m5Gyvb42jETRDJwMrkVZuoIe8/RFI= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by MN2PR10MB4285.namprd10.prod.outlook.com (2603:10b6:208:198::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:18 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:18 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 17/24] scsi: sd: add sd_mpath_{start,end}_command() Date: Wed, 25 Feb 2026 15:36:20 +0000 Message-ID: <20260225153627.1032500-18-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH3PEPF0000409D.namprd05.prod.outlook.com (2603:10b6:518:1::50) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|MN2PR10MB4285:EE_ X-MS-Office365-Filtering-Correlation-Id: fceac4ed-52f6-4b49-27a5-08de7483c247 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: VdWpg/yQENCIVZUQM3v7MripljpauSc3fFvoSoWgisxDkoxofB1ROs/+sAvQoyzgwdvFg/j2j4bMdiB1O7BqJhOlGn00/LWmmq5KnGJ6CsAxyeW2UMYU0mnOQ+8R8zikg0x/ffh1ILGigm+u+1gWVFo5YHtOAHXUTk0RkU2dTrh6DF7xO3EOVUeYA1l0L/oWd5BTda4WsDMijE+q+inhB3hb+iS6qA/x8svbi2NrLbK+NRbUNj793NFdUNQ/p62jGFJccGdBAXhJnYxhJObdXQqqrdsYMDrS44O8S7kPyGN4Yj9GTxME6+5nBwtj7Ezw86SlVptiChzan6ZUH6TjVhbkJiVbhUepbgF5rfd7rt3E08rs/LUg3IyEcErdamlH2CkdlAqOlG7dOJL4H60jdrognWVUWkIueodqget5OAOHCoRu22D/w8JnLNXDlGCKmcINrhS2hsRHZIWfgYU0JIFcSxdhBpoLgDfmmgNSqSli8IcZd6l/GgqoRfgmk/v7m0U8PagqESnUE6B0Q5nZJSbwCbIkmFHBe8ndgJPxESXckuCQ26HD2ZnE8M7inEWdZxFZueMqH0qSstJZFu/fMiNp+k+FZPQlV2Hr3u0wrWzkzQnmZeD8Vi9QBy7RlBUN7JlFl9nCOV1L2k+8gw1qknnjn8K648BijLTuypFpDXPt5STU6ExroQnaHvRpd3Uc7eVtSfYQCXudnzEa99TRFAcSl0XOOmZf/f6h7GIKwhI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iyrGq9cyGRHkXdJ/JIntGW0yBNwN2ClqTrw/VNn9cHIdvtAWDtjrgpntFRG9?= =?us-ascii?Q?hJ9Q7MWvAEcwtFmcJ+VaSJMJum963KzrgtFTMsjvCbOTBdan0G4aFo/oBOXF?= =?us-ascii?Q?gXTulnlAplNTWRPqOL2XAGhyeos+S8Ca/XqZ7EhZh9A+A0d/BMlv2tuUQm05?= =?us-ascii?Q?bFEHfIx2UxjDiQKyNxfXr03zV8QzJtcRBxaGayITvjCF48VfqOVOzfjCEy+j?= =?us-ascii?Q?e8SSCOFAW3Hi8lc2okkmU2xUfvz45kLReh9PXSX3x0/YLUAt42CJk3fckCs2?= =?us-ascii?Q?zQNsyVqjjR5zYdoGYu5wF4seYlph9hrEULWwCdRfyhbzzLyFon5yBYsRkXnU?= =?us-ascii?Q?tsRfO8egFs9+inFX9NZo3rqyDVRy8oVeE0OdAWG47CQLgiLU7R1HbONIC68G?= =?us-ascii?Q?4Rt9niEOgZIjJPxEcBzBc5mR9DUwVxVBUHNC+JQh32Wa9zQIeNT7iKOpcNYX?= =?us-ascii?Q?Bf2KKiM61T3Rxc8+vgo/2ASiM1TbyWNiKt6DSlyAOC7FaEFrn0AipJE9CFDc?= =?us-ascii?Q?rvJZK2TDbRQHNkkLSbiqDqAcVf1oSI99zRTbTzHlr78g8WSiWERy5z8UazWZ?= =?us-ascii?Q?P9F7lLQqmen3ErsA6xbOFPlsUjcQMeYVcR3mkwoaUZnlBIfN32l+R8DE973b?= =?us-ascii?Q?MWmM35qXskO77Gm9lO7yxG6jXvlaxxkvg+hZ2VcemAo3REeTnyQf4vd+sGZQ?= =?us-ascii?Q?f77OxISn8q4RlLBdvFYQIBTwBHU/kISv8YmrDtj88pAJLHMJPJkooeMsc9UG?= =?us-ascii?Q?xqwOk4F3VBEZvpc6pEsH42b6LKG9xcGYQSKONS8zgWgch9g/cimWsyjb5F6f?= =?us-ascii?Q?0OyqbOPwBj6KuJ+wfft4CneJ51HeIktodqcFHWJdcjvLsYkBUekPofCl3lAf?= =?us-ascii?Q?65EwYyVhaAxkXspNJ/VXGAAos8fv3YNYR5TTiGNFTba58EEeVolTj2+A5AeK?= =?us-ascii?Q?ek2GkYXXuL0iqxxwOcNxJiixBJB2Tg+1kwAFTE4RQHLW2mz4H1yAVgDxUwFW?= =?us-ascii?Q?LyYqQwFw2sb5U4e4YZIYfADB80sNfpEMia+y/OqC5KxKiTsxpO3ebgH6LZL4?= =?us-ascii?Q?aX8oqGSjdC5ePjNw8SRiwEGqi+Y4K63yrQNyIX24NqFhPsO9Da3RdUwluDcM?= =?us-ascii?Q?da43vLu7em4AI1Fk3RNBvTvrNJ3zkYnxZeRmNxFYIJ+DnRewvZr+psBStelG?= =?us-ascii?Q?EkdndmVKoOrUlgobMK3A8Oopvljzpoc5w/euvoHpCWoD7hEkuYOxk+1xiKFc?= =?us-ascii?Q?o/j4z9+Z8UQQxNMWPSsGnQ1AIM2JtCmRpqGEoo24QWpe9dw9Qh+euCkjDZHP?= =?us-ascii?Q?Wy2O4JVFAhZupD648xcqr7SCYCbpLTWFPLv5J0m3tiSz1IFWicgusJJyFydy?= =?us-ascii?Q?psgEhj/3/zyLCtfZEvvq+1ilSManD1qgyCbuANkOSvxJFpKwvkVQl7Ll9vxB?= =?us-ascii?Q?S21BgcxMXfmgkZwgjSP9wnSz7XHf3qiatMfCgjXKOcUQNpwJ76uOjU1PfKQ+?= =?us-ascii?Q?nr1PPJp4KRhUl1z93AQOS2/HSP3nKrRBI7UbvgLioAnGXG3jkpdSvN3FTGBx?= =?us-ascii?Q?kqhVzncAI1G/LrzG3/g02Fzaj/e3yl3Ob6WCPXMRK8DzO7CHu5aQ3gTtRL8r?= =?us-ascii?Q?ndMgSvPW3j0ROuI/i5ZeHvw9nqFB8GjTDZTAfRcVJ1ygy1iGhWWhiQzDc6z1?= =?us-ascii?Q?H1zojzqU7lJc361mDVUglFexwRRIgJw+1AgPz6NYIeLlYt90LvEEDQCdbsil?= =?us-ascii?Q?2rZVamH4RywgddrxMxkIYSy+2tBzQmo=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: w2+AKNrC3RMrhqiqSYwOCkTV+XL7G9wGD2Li+4vdNI2t2Ai+POZstGTCKjkKp1iz/qu14bsDdY098HneOIXZwGQ3U3I4yFTx96ONOmPw4JNSdxUY5JENY6Po6HA+vs4Z7OwulwzsLCfjypLisxPdW2HYxxckMV/K4AgA2yQJv3tsntO8fGsC3GH4tRUrSpsMTPzm2zPBoA0ahWOWZD/owwq9NvBKa+kIfyysgF7xa5+Bc0rpSPEah/O1e0YpNSfX3/C7Po4J/2Pgqt4TLB0emt+vv/SxkR302Zx2fuO+llwSRCd1pFk+DWLGm4UtYe3arcJLZiUJEFyCcMr0C8bLwmWQDvaZdv2HqeoiSNPZdgHuk2THnARNEqZgWcNLq5hVr0vNIxvG6cvshNSJXoJ2kj4Y0BBHsfqWugcPKM/LP0kxHm9IP7QuPdOPaDcUlkZF6P+sJv27bQsTtGHONX99XWnYAsPZ5xW1CHRTlCh3peQWv710JoGRhFBQXyITzCZqqsfjr11KEiZNwTRBUzvYXEEi+64y+5P1qq9bfBKmUuJwd8F0jvX8Vh8/tyTDDD5qkOKRp7+gDnfBFotVziM60DCEGYfOoTGw8zXH/MtHVzY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fceac4ed-52f6-4b49-27a5-08de7483c247 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:18.3558 (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: 8r+wakE/X7OImuaHXxrJ/cCbffPAl72cDAkUH4yMIb7x9zGT2cvEgfMgzZbYobOUuEQJv6ldweP1EGJk/j/tmA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4285 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 phishscore=0 malwarescore=0 spamscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX9Gp+OMpS3BkD DS6tRjT+fBYdtLIV//xP+1m4jUDwLd6zH8Sb7RXQW9oXqvx1D08Zi20Um3GdHU53yvK0S9h/CVd 4FpGG4A7Q129IZmOngWu6qljOymEgvFRat/a+1aDcGVsvoBfJbtZIKuOOzEQMNjo5NeHAFc4CaZ wwquGplwWI5KkY8lrZmtU7wETs6+mWWMgngxGmcf4sPH4NmYYz2KniksGZqKCMxnwF4UBp1aZV4 JWw5+RWmfsfjqGrb3ggS//YhhbNZeXgmc4h81p1Wy2Xy8IuZJxsWSwMkDgkiiOIUAYAdyqkgrQa 0EXUwqxwh++riB2rgmUIBw2rsML/MoCur0mY64vQWXPt/h6cfm9IpBkcXJ+HZhjW17bjtGuMTUA meRnYkuTU/x7uY67dWkc5U5EfsIIKN2x2wrjwhyaQyS0saBqM6wE7xg0RZs+ZeIipKE/2FLUjX2 MDejKt3c3GHooTfP3AA== X-Authority-Analysis: v=2.4 cv=XNc9iAhE c=1 sm=1 tr=0 ts=699f1733 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=XpjiT_gqlVZMTlU63hQA:9 X-Proofpoint-ORIG-GUID: EScnXCmbvRLDMAnjJoTSzNVzQEWeQugz X-Proofpoint-GUID: EScnXCmbvRLDMAnjJoTSzNVzQEWeQugz Content-Type: text/plain; charset="utf-8" These do the same as nvme_mpath_{start,end}_request() Signed-off-by: John Garry --- drivers/scsi/sd.c | 55 +++++++++++++++++++++++++++++++++++ include/scsi/scsi_cmnd.h | 5 ++++ include/scsi/scsi_multipath.h | 1 + 3 files changed, 61 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 222e28ed44e9b..845d392456549 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1546,6 +1546,57 @@ static void sd_uninit_command(struct scsi_cmnd *SCpn= t) mempool_free(rq->special_vec.bv_page, sd_page_pool); } =20 +#ifdef CONFIG_SCSI_MULTIPATH +static void sd_mpath_start_command(struct scsi_cmnd *scmd) +{ + struct request *req =3D scsi_cmd_to_rq(scmd); + struct scsi_disk *sdkp =3D scsi_disk(req->q->disk); + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + struct scsi_device *sdev =3D scmd->device; + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + struct scsi_mpath_head *scsi_mpath_head =3D mpath_head->drvdata; + struct gendisk *disk =3D mpath_disk->disk; + + if (mpath_qd_iopolicy(&scsi_mpath_head->iopolicy) && + !(scmd->flags & SCMD_MPATH_CNT_ACTIVE)) { + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + + atomic_inc(&scsi_mpath_dev->nr_active); + scmd->flags |=3D SCMD_MPATH_CNT_ACTIVE; + } + + if (!blk_queue_io_stat(disk->queue) || blk_rq_is_passthrough(req) || + (scmd->flags & SCMD_MPATH_IO_STATS)) + return; + + scmd->flags |=3D SCMD_MPATH_IO_STATS; + scmd->start_time =3D bdev_start_io_acct(disk->part0, req_op(req), + jiffies); +} + +static void sd_mpath_end_command(struct scsi_cmnd *scmd) +{ + struct request *req =3D scsi_cmd_to_rq(scmd); + struct scsi_disk *sdkp =3D scsi_disk(req->q->disk); + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + struct scsi_device *sdev =3D scmd->device; + + if (scmd->flags & SCMD_MPATH_CNT_ACTIVE) { + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + + atomic_dec_if_positive(&scsi_mpath_dev->nr_active); + } + + if (!(scmd->flags & SCMD_MPATH_IO_STATS)) + return; + bdev_end_io_acct(mpath_disk->disk->part0, req_op(req), + blk_rq_bytes(req) >> SECTOR_SHIFT, + scmd->start_time); +} +#endif + static bool sd_need_revalidate(struct gendisk *disk, struct scsi_disk *sdk= p) { if (sdkp->device->removable || sdkp->write_prot) { @@ -4468,6 +4519,10 @@ static struct scsi_driver sd_template =3D { .resume =3D sd_resume, .init_command =3D sd_init_command, .uninit_command =3D sd_uninit_command, + #ifdef CONFIG_SCSI_MULTIPATH + .mpath_start_cmd =3D sd_mpath_start_command, + .mpath_end_cmd =3D sd_mpath_end_command, + #endif .done =3D sd_done, .eh_action =3D sd_eh_action, .eh_reset =3D sd_eh_reset, diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 8ecfb94049db5..c6571a36e577b 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h @@ -60,6 +60,8 @@ struct scsi_pointer { #define SCMD_FAIL_IF_RECOVERING (1 << 4) /* flags preserved across unprep / reprep */ #define SCMD_PRESERVED_FLAGS (SCMD_INITIALIZED | SCMD_FAIL_IF_RECOVERING) +#define SCMD_MPATH_IO_STATS (1 << 5) +#define SCMD_MPATH_CNT_ACTIVE (1 << 6) =20 /* for scmd->state */ #define SCMD_STATE_COMPLETE 0 @@ -139,6 +141,9 @@ struct scsi_cmnd { * to release this memory. (The memory * obtained by scsi_malloc is guaranteed * to be at an address < 16Mb). */ + #ifdef CONFIG_SCSI_MULTIPATH + unsigned long start_time; + #endif =20 int result; /* Status code from lower level driver */ }; diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index cb63c6536b854..2011447f482d6 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -36,6 +36,7 @@ struct scsi_mpath_device { struct mpath_device mpath_device; struct scsi_device *sdev; int index; + atomic_t nr_active; struct scsi_mpath_head *scsi_mpath_head; =20 char device_id_str[SCSI_MPATH_DEVICE_ID_LEN]; --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A7383ECBDD; Wed, 25 Feb 2026 15:37:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033866; cv=fail; b=W9+opTSQvGC5FtuVwzzMtzubkuBr0p9+NIyXcE9gfsl0VPay8+vCsJN9ejnvFqzOl+0AeXOkbmbhSoXQNzH6sdvBpHvDPMq5O/p9N4EgS/cj0256HYMGjED1j3ob9wbYymZsdem+0LFwYnpepkxbo81VR45Lt8DvE7CIimjoYXI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033866; c=relaxed/simple; bh=z1NfjG42wf0kEbqhwyYvU/28AkHLKd6cJ7gzaRR6754=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Oni1nB2NNZ498jeUERYyJNPo/mB1Zi1LgdtqKc85tR5R9LoPQ/ODzSSLCC12vbnGv3wrJ6Hq5MGLdNIYuQneRG7nGfYi/mqM0ZkAkUkALRqFw/5DPq9Sjdc6McOmhpzZxzH9/WUq04wOiVOSJzsXjNXuD7hlf8Qph//mTAuh34k= 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=TPTPVQHX; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=F3R/KhXE; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="TPTPVQHX"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="F3R/KhXE" Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAjt7K817332; Wed, 25 Feb 2026 15:37:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=yb+lTrEeNM0VNLi3d1oyBIg/R3ui+bCuIQvEnaZUTBg=; b= TPTPVQHXNjBZ20ra1tw5hw6eE1ZjssVwzQQT9UcUC9UpED7el3Dj0FgRbpJb0MUr oc/NjYUuiBr1wfWZPt8wD5kzs794ntHyMp3TmhIAnYZyAnYcDWLjHJzSklHIUGEd 40aFsDDK3NvCwI2MidWHuAp8QGHb4llJc/UChm/8IMoA8HVI7Bxu1VXMf8ADOl6E gQziuZB52gRjLkFBEu6Tc1F9TVkdL+MdR3O51lyPhLRiciCPfON3EdQmKjwFCztI kbm4TejEDg071qcWNbfQCNcz2O9Kfj6WaN878r+m8miwYcJYkhuJRj3KkvdGd1Ya XYDkezh5cqQ0uyZUEe9QUA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4areenc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:25 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE0UGe028678; Wed, 25 Feb 2026 15:37:25 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010015.outbound.protection.outlook.com [52.101.193.15]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35b7j4r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TbcT34tBStjigoVGnfMUiXBqbkE3gmyBzUf/2410keSnLKLfM0rmDkBfgmuXrdEqGYswXi4BmGsqw22Vyj7kZz1ok8bfNwajczya6kmVJlSP1mJum/z8nvTAV2dQ4SfIMvvvCCu+TyYXN3e+g5UlSFngwwFFdYM7jdSmqN4U9t+NrLrUqSKWIqj9naPl0oY87p+tuFQmllydq/De/S0phAO8tW8J82KqtLR7xxpqUQHE7AUMt1+rpVe5yZG8T28PuJw4IUorxypphzdiy37vwzagIj8G1YminjXxmjQeQo9L5U/X+OqcPsraBlwJDlXDszWggEPkaDfN/ZStF2Icxw== 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=yb+lTrEeNM0VNLi3d1oyBIg/R3ui+bCuIQvEnaZUTBg=; b=WkuS0zF+ylhj+y+1dxWb3AWMP+Am6jpzrK0R7b0z6uENSogqcCDrgLH/BJbA+zcOgmpsDmC7C4CWD5PS5xXtSH0li3w2U+QGADCPl27n8JmovMOhNpo0OMGNnLPshGNJQoAfr9+4HwOKkNYYbHSmAc9TZ4j1ykQSlaTsq14WBZbRsvgc4k5l3a9M7eJ+7DNqaVICC3YygXSwkt6CGl5de7CUsSeOyi4OE7s5pmmM1FAfJnm5fOD3vEr2356DOSJolNYq1FjzOwnhQ/PYtrFn1niGuHqvMiJ+v9T/3aoYsZNn8lsimcdl3FCFw9ui7yktp2vzlVuP+VvGZQM9t5brXQ== 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=yb+lTrEeNM0VNLi3d1oyBIg/R3ui+bCuIQvEnaZUTBg=; b=F3R/KhXEAdW+GXH7oImBQdKeNVxnrFRVLkIOX8OXYqXAc5ouxxvmhDgWg/glUXaQa6WzFx83AKlZJQfVI7fqHO0SE6PLFc7ijMK8kMOjMdLRiGi+u1VzDsHPJ1Exdmx8+Ibit76jiWrEbiHnQFcpcEQJGM8hljhM1LPGgTJyqIc= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by MN2PR10MB4285.namprd10.prod.outlook.com (2603:10b6:208:198::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:20 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:20 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 18/24] scsi: sd: add sd_mpath_ioctl() Date: Wed, 25 Feb 2026 15:36:21 +0000 Message-ID: <20260225153627.1032500-19-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR20CA0006.namprd20.prod.outlook.com (2603:10b6:510:23c::11) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|MN2PR10MB4285:EE_ X-MS-Office365-Filtering-Correlation-Id: 916dfc99-af3b-4d60-1f5b-08de7483c389 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: T4j89n+z5R/y/veIbCXJW0x9G6DEwMt1Z6U8fY2Delb5o1TfTtD0eMZfqjrdzyIzC8w7+gTQ7ey1Qp8Rc+0TYtjU7A1bwugTsWUIfNPzRD1sFmB6vpHrr/B375Po+9+4Yt6e4UJUlZb+cppmkMuuyC/Zlv6iwBlBnRvSIgoUkVU3p/sq4nnBu9QVAdEAzWlzu34IBOk5IPftRwC2d1aRhe3HGj0QcUcPElL3rHDzkLvIxmiUAuC9NI/UGzE9vsN+7MJNnx9ztVIOSfM/xwXQS7O/ndyqKFUphTeB3QJ8Bt2CDuOah/ExKMJPgIU9jxrx7wEY5bBVgcR48KllGOhR5uhn+JoJl1zvYX6HOM4bUlUycLKcZLYOoAQlYfITBLZ37S++1e7/NyEQT2s9lY27yzBRrD4avZ6sHPAm+0N8CeoV+YgcMVKX6jXlw8dGm6aqeVo4teloGWddCFhpNOk65+0RuXfSHjFlqcTaspz9Y6fTD83DYuTku5J6IqoKC9AQO1LcICE9zA3LTStZfDHt1u9m1kVC337zIiWvqAZS/fcMHPELp+oQHKIIVoEyxn1npqaMRNFFcgt8Dr32gNl1XtYOWGcdeX3lUUP65I8hC/iPJu6k1GSQWdtBCVOHYMResSHEzuIx7Crvs2MW1Y4L2fOftI/kJoolC/F/DUy1mL99y1r1gMtMltCHO0aubPF8nt7zzmWbRRy2nKp/uNQDpINsrRAAMUhtCnKV+h8AM50= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WvWJ2a0QhhjaouR8cgSp7TowUFkCgHCoYTccwd4CNUGznSaHRJAwJfp2ko0Q?= =?us-ascii?Q?cmVE46zWx8I2jQXX3aUziVvG/reQmJ6RCTK3YBS38ycJV/9sGy+x+sjN9+uP?= =?us-ascii?Q?J+N6jx/YWP33mlV7qTuv5vV5dOUwllzwRtXhWofBOAdNmjaZDbNrdSWRM6EE?= =?us-ascii?Q?w31yn9zpPiAUAF3KgM63gwXJCAjUDY3eBlQkzazotydZ79Kv4RzAbxsjfB55?= =?us-ascii?Q?842QdC8VOyVYydj/FgycKXp6sFAwXq4TAVT+GX28Xdm1MvxV3OHcI2kvpc8X?= =?us-ascii?Q?7uDinZ7F0VQKBt/r1+jFAwG+iCalHQFEI5MUDoDN/egV/59aQh28FXqaYaiQ?= =?us-ascii?Q?KQ0sgHPTtDtH43nvbnh2BI3WaC+pRXHKQkSXmTCCqWZAswsM2assV1iFwfx6?= =?us-ascii?Q?TzHjytkrLa8EpgcKhRCD+APjDAy8NchsWUoT8DmB1JwRwJl5oG+UO1vOK5zI?= =?us-ascii?Q?MPFGoavifNBowf9jU7/Uv2NsmamhBZp4v4Bu+ecO1NDaeXBWeTmw4Sy+W9mU?= =?us-ascii?Q?UozdDGDez+aonj5MN0yi6j/HqxeKZn6zR00R3WggXHs+w+T/IVoYXgaVLRwY?= =?us-ascii?Q?r9IEDasBxcppjyWp+tSz9u4PuqRcbtuVt+0W2+x27ZVOeSmFVqYjdBr5+3rt?= =?us-ascii?Q?3gMyx7KON4rqWs6+J29qG1nBaPOnUiJrK82lsRp0oW7LPwvFKb814BwOdYOl?= =?us-ascii?Q?7mSV+QmfVEIFybPev0rppR/dlSLiXiRMcNUzRNZLV5WXIYpsITlmhV6/E+zk?= =?us-ascii?Q?racHLhjT79JPLv6XWU6VjPuyfbQDu9VBZlI5WZF2bqzUpU4I6EcVJARBD6r2?= =?us-ascii?Q?UDXD7dy+fhlvB8QnU2pD/ihNkh0p/VNhqGuk8/pYxif/1zHHnMeX2n4OkRM8?= =?us-ascii?Q?7RSNMo38wHDf3pjRvdP9msL+gyCAUI09jC5LEmviKvp3dlxJvw3n/z3mBN7Q?= =?us-ascii?Q?9S6yPLc8GWoK+61PWhWfof9QRIDH18q/dUH6Voxse6fR4tEiHDazKSfyQoo3?= =?us-ascii?Q?HnYyb79E8+6unHqltk8wtz8/Agj0BkkA6Ym4QuPIGedwMX3w+HHPLtQpLn1e?= =?us-ascii?Q?zq3aOwRfOIsjojC4nQwMFUGOcfk4f7gI2UrcJluMD39Q+xJ0BEeBzFVa3nqy?= =?us-ascii?Q?HBqXTf7ljvABibdlqc17xExBzUmj1qBnJAHwIDUe88zNPeLi0MjrmJfFzzpU?= =?us-ascii?Q?EO1PZKXZhO+UuHuthyx+zymUyEjeztrWTSBlINgMdqd4ROkZDqDgjXyxAf/d?= =?us-ascii?Q?qcI1nVbaoP+HBZ+GuquL+4D85kvKIncqZ1uw/vIoZ4r0YDQPz6FpNJKQc2nj?= =?us-ascii?Q?PIoGoUlSMhBkmodD39cYr091/jxCfvhZyovjBFxCuoQYmXc7vp/piHIrYof/?= =?us-ascii?Q?tE6EmT7u+X3hmwr9yUv6NNoplhGr7k94zVfT6WTlvy1K8AAuSN1wa8oKBM7z?= =?us-ascii?Q?XWHU+5cKR445+30IH78gEncswmfRO3woEnpGotC/OvnpHk1/e2Bvpr+hcaKJ?= =?us-ascii?Q?RlWC/5wbyXDFZ2oWWVVwJV3gmOciw8tdWjRw3aAXlI97aRCpm7qJFBnO5pWa?= =?us-ascii?Q?bxw20r107yFNMmVN8ppHiBXo2jIqDbJpq7Hn51hJJw8eLZI9w+kqR6iSdX9f?= =?us-ascii?Q?VZJ1B8B50aHXULD20YCa9ti2n9wcGPdxkvKBu4m30Rct7HODesH8jeY98cNQ?= =?us-ascii?Q?r0UgEE2q/BQHhH4RWO7Ir6EdutqFjEdDcpaE2cUNaIkdjTKNS5QdkKdcJ9bA?= =?us-ascii?Q?04EFSOVhrbJznY1V6xU3hLpOTwfvxvM=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: SZjxuAQ6OJIaq/iM8sW3iVckU1xr5O8e94HOpj5iP4nKpB0zNe7ST3xu5JYUMJP6dQoPTZZX1kIsFZYah4FQdzF1+LWxISBSCJeXhQgk05npgjDsiqBVNVKY9PSZn5Z4Gl40PW1Hc1FyIqJqxKEpCvNsgrZvlPVFcQr1pGJ/X4jv1WSwxNgSKcRD0EGd1ZqzBfEl5zJ/EnWdJZJ7X18SGTOCLzgrw8+fjR2DlqjFLraZ0Tnea4RiZNLtvkIfvy1L5L/ziha5lSj1JbK8EsQytDqfD4PhOLScHdEy45SD3oQRbxYApBN0HQpVpFlLEV7nvhLVIm876J2Op/dNRdWZerBc6zeJEShGVBuMbKAT6PrFfT0v5PET8PkckDHK9HiGbYoArelMJyJRAj4g6PLLrFSd5P2jVOm631fK3nEpRL9Lu+1a36yozTxcCgAVFVbNBEJ9oaDQoRuaYEtlevNCjLT9E+w+110mgKogE/apjMWk1xtpAOZmtU41GG3C3PEPIuGZxCsVhlm4yHr5wbMjDvyGFWXRjmL57yKKr8lZerN93WXxwuGpLlOSSUCC1401ZKV758XMN1MKLFJu5lYp3ahlu4+Ag7QaYK6prft6Yf0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 916dfc99-af3b-4d60-1f5b-08de7483c389 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:20.4606 (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: w58XuXcVbIEsH9sR23OVVkX7xbxQdRTb+FBCJx+2rHvXxNGXA5xqNIvQkh53vUqArqnHAnzhlF6VGjYxNZPgvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4285 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=La0xKzfi c=1 sm=1 tr=0 ts=699f1735 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=v5Mwit03CL4gI8pcBxgA:9 X-Proofpoint-ORIG-GUID: Alee6iG7ccQARgR_paWFYMLNYkV1swns X-Proofpoint-GUID: Alee6iG7ccQARgR_paWFYMLNYkV1swns X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX5Z9KskwaJ82R X6HRd6JxjWcUbr2EnlWueOHTBHqIOycrzwI9q7KrvX8KMjET/LtFMw008sYzncRXVSBBK1ugxzP DkjAvw6rFrw/Fc9tac46eXWCSVPp4jTvPnP/pWnDFmjn3jOyPEpeIns11g5pVfPcZW/29ZckWBz KTbuIzFt7dQg7PKMwST3H3CFqMTS3ZWwSfxu8+kosYX81Br0bpDkh1rNLANG/GCl9Wcfh39nplU Q2/q9kvtBi9IV+D0+RLuXS7Geqxp/k5oXCfy2KHqERSjjSqTxIDTkRUFOL4yPPBok06Vcbw4Ter i+x1ULlHDA7WqtpRc93AudZ5dASG3qNhPUHm79BERxdMApBLZULFyJQ+2pIssmTesqvv1ra7kur kfpJUBGCiIFbUGFEgEzpk3RyxpgKSONYEy8FAfVxOIAi1FlG6DCZp3HQiT/0q9AFvft03n4IXY9 mEZ7xDdePYDCSaA1WbQ== Content-Type: text/plain; charset="utf-8" Add scsi_driver.mpath_ioctl callback. Signed-off-by: John Garry --- drivers/scsi/sd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 845d392456549..b807452a4bdc3 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4070,6 +4070,19 @@ static int sd_format_disk_name(char *prefix, int ind= ex, char *buf, int buflen) return 0; } =20 +#ifdef CONFIG_SCSI_MULTIPATH +static int sd_mpath_ioctl(struct scsi_device *sdp, blk_mode_t mode, + unsigned int cmd, unsigned long arg) +{ + struct scsi_disk *sdkp =3D dev_get_drvdata(&sdp->sdev_gendev); + struct gendisk *disk =3D sdkp->disk; + struct block_device *bdev =3D disk->part0; + + return sd_ioctl(bdev, mode, cmd, arg); +} + +#else /* CONFIG_SCSI_MULTIPATH */ +#endif /** * sd_probe - called during driver initialization and whenever a * new scsi device is attached to the system. It is called once @@ -4522,6 +4535,7 @@ static struct scsi_driver sd_template =3D { #ifdef CONFIG_SCSI_MULTIPATH .mpath_start_cmd =3D sd_mpath_start_command, .mpath_end_cmd =3D sd_mpath_end_command, + .mpath_ioctl =3D sd_mpath_ioctl, #endif .done =3D sd_done, .eh_action =3D sd_eh_action, --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 92B8B3EDACC; Wed, 25 Feb 2026 15:37:49 +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=1772033871; cv=fail; b=AEPt30ZMkXw3uvGVkoIU2Vn7fNgZ/77M9rxgfN4nNx0J/piYWA3SVhpgJIIMWMJZbv4PRL2ml1FGDLa3A2jPe4CKdKV72IEcIE3VUtoj3y1rcKz1dtKKQ8gaL4ly6nU5OTmOMqMkO6TQ3e+6Tf8kmBwrPnlPCAdrbAUtWyUl8/o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033871; c=relaxed/simple; bh=rv8Qw86pLN/DR6tWLExBauZkrk7qe9QKPxwRblkGBy4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jBaelUQdGSwFq5uhssAMZJ3yHpcC6dTHGvHQ/F1F180q7wYfN5JOJpBeBneRamJftzFSc9anNH1NiufIlwaI22t7fBnuEzHBS8OWgonwJdkCkwxifuPgSJyuSRQk/ZriLplzHsJpaN6n+HXyKNWQIoVStH9E5XhNnHwr9+LNBmY= 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=X5yznmGh; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=QyPx6TmX; 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="X5yznmGh"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="QyPx6TmX" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAUklw360714; Wed, 25 Feb 2026 15:37:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=2dqU2P1nEO6on6MG0lJJzNFOOplvHJr34eyzNkvP1M4=; b= X5yznmGhHcY6tydEdpZbbpTcjAYblOZC7ul+gvegQ31qB5zrCmYl2YmLfm3v2A6+ eh7cxFUVPeXNQ15SWQcaaMQE0dG4UPO8d+HN6hX/Dgkvhmi6h5pgLeVp8OSz2fG7 EzzglwUP6Xnp5PkQole0Ludcq80XgGcN48Z7atGJkS/C/XZjl7u5kQIu86TqlUfT uB5zlelGEv0/WOjVbq6dLFMgVmQfJ8805it5iveQIq161XhUPSPkqbS2Ig9g0xAp KtnK1GRUtSylA17d82jdf5Bg1VkrJAWDM5LAwxy240IXErgxqMtn4kD6ItXauyqG EiXcE5IDpgE344GJVWCXsw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3m7xfhk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:26 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PE0UGf028678; Wed, 25 Feb 2026 15:37:25 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010015.outbound.protection.outlook.com [52.101.193.15]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35b7j4r-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hFkYAdySBX3VvvyLzvd1rBLP9+9XIcdPsUZDeYxn7vg8KrHbWiKOMFGDADWrhSI7+5PE6KbHPB+u9WqegoSB3zI3dmvWz3M0yND+NKjpOoFsaa0CqveJXyi7Rj1s2+xxCkx5WrvRwkaoQf6tsuRsLD9tWsV+y5ZOgfRevL3lH1ia9+s5ECPIJcq6WSK55+IRmYwcoOat+aTutYF+8M6AhiadfPwiinrTr9T30g57aH9GqgdWWBO5IT7aO8NuoGJq8f5NE8KdwNJfhVLxaTWtnyGlkpppqRqkzFQbZouRc4kF+1OU9utgoyMHhLg5HYPNSQE26Pu79AGJQRVVOQIIIg== 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=2dqU2P1nEO6on6MG0lJJzNFOOplvHJr34eyzNkvP1M4=; b=C1z1Olx6He9eGYWqjuX3vfklZP9BG+bWPVD5ML1vnRZ25NgfjHRPr5JJ5cFqWIjOKQaP6pKYuZOz8SWpcw7kX+aOJQZgh6F/A/xLjYohJ5FFxjIh6btN4iFO4mvrQrwWPbXWtlpENEJ5Gv33sGYMSXLx9wtGQjcg0C1T5Vx3DiRvbt+p4s/tfyejOSOu1duGFy4JQMwczPNYHrQLzFY6iUiUXWm2Grxiqu+ErpWxwAq2ogqI0holGXfRxPTTmfBN4HU/mdUKUQ1uFzNXeIuZZ08di1CYQceF41n83R7IYp7JAFWXucbQq9xCWEYY8kjMMSFF+Z6tjtzSTfMTAVEEVQ== 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=2dqU2P1nEO6on6MG0lJJzNFOOplvHJr34eyzNkvP1M4=; b=QyPx6TmXuzGr+BlB/7tmMtf58TbnD3SJbZ+2bp8WJZ9e9xcRr2ehS1X/2iv3y+Ul5C6H1XVr30MtS+zPXgzVIdeNmEuDpBP7Rqvhhhl6GGHZHch1m9S973I7cR4C7nx6Rykw/h8dQLWhqwPVFsyvVTdF4zMXm31AZlAxHOFoLwM= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by MN2PR10MB4285.namprd10.prod.outlook.com (2603:10b6:208:198::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:22 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:22 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 19/24] scsi: sd: add multipath PR support Date: Wed, 25 Feb 2026 15:36:22 +0000 Message-ID: <20260225153627.1032500-20-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P221CA0053.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:33c::22) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|MN2PR10MB4285:EE_ X-MS-Office365-Filtering-Correlation-Id: 1dc902fb-6f8f-4fc8-819d-08de7483c4c5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: SoVD3J6/IctNRNq+klyV5lgFPjDY4Mv+/tN07lTXBHT5ONbSNOuUB1hRItdS2UuksfW3RcpUpOnrJU8uAYHlD5ZNDogofKuHR7m6WzHsRZLI+q+Dqcur9jDhNX6BeZDMeqYeuLjBqOMGMPILr8NtpzoS8Tq/7mkbj4lPOxbrgolGS8AxFCetq7HKeb0b91n1gfIIygHo84x+pwxMxo6BSO/sovFjAm0+gKO64uL72SIxaOgAi7c90ZMDzFjTF5qXPD1usKnSi9mN4Vm7obN5Xf1Qes294Gv2VJjhLJEB446sk16wWyGaABqhmQ2L2xEBOwaFM0Rkuco6tvYJ7h0GBcYaF4NZRaz67o6yCTK7vKfdDDye89b83XmyB2ah3YJ09yhw2DJbBz/vdCVaIdVz07rojg8OFB7zuoEVvzavJk+ruohmWtCpDHvarPY6b6OyftTPmMMryYNDkCfF4ahBN3ofCgHoPBV2aHoUTs1SHT3U+Ja90Yw2/FLKlMYiTDSH4gwzvVyGQWVG7t8pL15SW7HwczlmhxOzeQxaWPbA03lEF6KoLDpPi2TwSjUDTdoHPQm/5pgKQkmHhYFGXq3K+Y8/uLI95v7Ri3I1uFxvFY0WWnL5QFsQ0xTR4SG5XjPLleYif3WUJuo6YReK1KCCLou11nNxsnGn4oB3N9mpGA5IFYANtrsC09LJP1EvZcZ/3+4oDefh22FMXoFI8RvHWScbJtHxVkv/xZsfTkamnLw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?21UlNgITGFb31hPAl1ut7RhK31o+uKz/N9dk73Nz3dVuwfigG9R69DqR8H0c?= =?us-ascii?Q?3WYfrJsw07npgwnhnr4boTJz6aSx83LxAfSUalurY3p3GG2LKbxQyfl0HzF5?= =?us-ascii?Q?5/ykYLryDZ1OeQh2D05nEG3fz/wn6CkMA6KmSYi2TmdK3hlVclkwa37J3/bP?= =?us-ascii?Q?clkOO+AxAbf+5H0cX38OLE97/BZ87tZC0ckkkgQB1MrV1jGU7OyaI9K4A+IU?= =?us-ascii?Q?CQCucbjILXL/gaW5nmLwV2F34ol5IQUtvTi/wZuLMhzkpZRbo9RFZbTG8ejJ?= =?us-ascii?Q?E5E6v6+HZwZPYCL80mvjWrIdrN4p+5FR0vCY1WgrNUSQvzf576311TozeJXa?= =?us-ascii?Q?xgdjVjb6i1du9nLXQ9TEWobltD8CO+8INZwtvaKVwlWg+y46EGPuzKr4d7J6?= =?us-ascii?Q?y5hTxtW3Tki2L0xvlmakrJWskYwF+9Xa3FumAJC5/6Vh82JgAmz6xFYOWxos?= =?us-ascii?Q?4Rw74oWvhR3Pkj6iVAnuTU8T/auOWlSHe+NfyY9X/T3V5yoJCxkzQCXet9w2?= =?us-ascii?Q?FP05Ev5fFWKPBDKMgzHtuLB5Ec6Q7w4Y2a4CU6gw9UYQiBbBL4pIjiUaAFa6?= =?us-ascii?Q?ljzg6K6CtqM1uY/uW1J+9HaI2f9Cg/o2V+EXR/CZ9poBFfAnKo4e+QsNsexs?= =?us-ascii?Q?LyCUYHEzwg2eaYc1QgbKuCd8xhhde36Mi+XxHyRRMOhjmqkSnix4QsdrGdEA?= =?us-ascii?Q?kFFqlSnVufRCIwRtv823U5rcJNFc3pQ/zN7p6Y+/5qqwEd9YCJxeYhbSTugc?= =?us-ascii?Q?XBYcoOQMVXxtgwGFrXHxHapB6GvF64z3e+7WF2OI692SMatGBCS0zdpw19r1?= =?us-ascii?Q?BS9oOD5ikvBnH4qHr3/qOiT5uyJ7BigINgbmM02J3pLD1AimrRFnQSd7bFz7?= =?us-ascii?Q?yN1Me0PilV0jbHJvj5IVjdbmkH+8VBabB32If4oVHkXkVdasmCwveuEDvmTD?= =?us-ascii?Q?j7TpjOlvOPXkw3vm7/9KT3wZi7sUVT52FiENMepSHVWyYPVABDt21gcM7AHG?= =?us-ascii?Q?LmIsHriBfYCkgQp3jJRHol0g6eqZ7HWJJ5wJHpPoePHdGQhSnmklBJ8XkwXX?= =?us-ascii?Q?TvhLg3+3iwcwKhCy9uWLqG+cExoHm4PJ9cWTJ5oMbAuUz8TyPJbpDrz5qErk?= =?us-ascii?Q?FLcNXmiScEKDNAasA83GPRTZA0ECskZ/CNly589dm6Walbw/G3DvONPPq8JB?= =?us-ascii?Q?qQgpEINnWOCPGKlPXnhScbJN85fnXBDONmMj6RlMiiDNm112oiZ/npToU79m?= =?us-ascii?Q?QOIo9Je/J6e/4WeNmJa9pwNLScsbXiVl5rSb0u6Py+AY++yHEcjBVOJ6YBdm?= =?us-ascii?Q?7hN9PgS2FDuObrT1MwO5UeXUyl7UQwHRSjRo+R+QILTsNtM5NbFuYna2TsIX?= =?us-ascii?Q?0KkZHSzyR3Ft1Z+kv0XpJSWr9xFh2W+OmKg/G7pyQahejnf3iKMcjlVoCbz6?= =?us-ascii?Q?5sz9WgysEQGXnep6TZEU2MM/O3q7ViBTEe6ddt/bNaTZ4LxXeb+8WETozY5h?= =?us-ascii?Q?4cXypNumbfX1e+pY3LhmS7DhsTRIMQPqJ1ZGDbiQwnJ+7I5PEiv8oupzJsm9?= =?us-ascii?Q?IbEVfb0micPG8KyNL4I46Ok9f5+hQ+aO8a2UvsShgfcnHaqqlc9ppL1aw3AQ?= =?us-ascii?Q?MKAVJiAVvkUiAgFAlbnSZzFdSFIjKJocDMYmVjzyNMfe9i7pbgG6dVpIsLmX?= =?us-ascii?Q?grGwbAuPXcgN1eRvDQKacoTzXMMEfFh/5tWxRfkn0qIuF3gZDPkihi3k8mar?= =?us-ascii?Q?vW68lzU/+X/J6mOSK8COktAUW7OpRAs=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: zY26ic2GMfwuxV1Ap+4+L5gTM2QYZ76WJfDAUEJcLffKNh7J5UBhZAZD9ksAgtYumMFnfciq4huUFXhwyu4tvg5snXA3Uts9HZGtIOD/Wk++ipOFMxLFW0NTbuabWuVlQLM2P6YeBHc0Ltzk7Zs/4Uy6YIgNcUH8LIM9n/GwvmV7fEUnJFxjsr1crLipcQiIMkacnY16Ha2qVoqj/eWbtHbzoeErZkl1pprHa/0fuPOmwBG1YHgPY1VRJ1UlW6iHoWrp0gyriWTWPwZe6lsxhtRlHCkqEyy6g63wwan1uDcVKiHlZDEGN5UDVQK/ozsJuEJqL2b76SQ8K0sieZjuowU4YDBwsPLUuNsyZw+Dj7n/16+64FcmkIpyK0A6UuVEacza1NctHpSeZ+LS0t+PApUSBlVjfhBtdmTeGKG9IMxbWai8xItTJNFGc/IXfQiTmVtuIbIlvMzv+Dvv8h0Wvacw27A5G0ZGX1Lg1RojtvVLENLGqnmxcGsYW8whEJzvTyNg5mDoARCVJHaYFFZ3uefFn/RGEZ8CANVZAm4UJ4YD/dxCvcWIcSOh2owxc0/aiYcFO2W/PzlhyUi6OlO7ThZs9WyClZK+kPghsynSUDk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1dc902fb-6f8f-4fc8-819d-08de7483c4c5 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:22.5393 (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: JHncYvBkE1yLkvA9XHrRkvj4PI/S/EYdvVqoXGmpw6jGFmtKmXWCMqs5TMiBfYoUm96Ww42vmrTEjl5osD8kMQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4285 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=O5U0fR9W c=1 sm=1 tr=0 ts=699f1736 cx=c_pps a=XiAAW1AwiKB2Y8Wsi+sD2Q==:117 a=XiAAW1AwiKB2Y8Wsi+sD2Q==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=O1YyqwQlfr7JMOhWvYAA:9 X-Proofpoint-GUID: X4NRj1d5BbANL6MNgveGw1LbLYZDxJoR X-Proofpoint-ORIG-GUID: X4NRj1d5BbANL6MNgveGw1LbLYZDxJoR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXw7XHJgt8e878 9o17Mo5hxc8fN6XhxL02db2w9K0qUzMOFdFZgM97IsRPlz2n9lVVlqwyM53sYiB4+JWsP9uTBek Off9bPnygfS9OOr9Eo3z2CoAjokgT8tN2oPCeCEgLLwYsvEs5oNlwrp3WYDsEFePoFYA19VzcqE Ud2WssDwD5Gmx0aH1RpWXrKEoj4BjVOirehULBeMLj+SuingNTWQjaC+ayylENZs8yUBFAggp3x oGM0aiF7MGXX4Cb3bIL00J23j/2HMvUtawaS1rGyZ9ZBvhSCBFZpT7XOEB9bQYQY3FSpVQGz6MH iNlzOTPmQH6JuuBlxxyr0fajcKvcTjrM7MFaeSV9dVgMHw0HOchEVlvLjLiosygK0YFsVpcC4bx JQMLJ7Flu1lD7qgdgZIvnsc6rIGYq5QW4O2DyX2hkRIrDoJe5xFRUcps4TlHRufM1ZhRHXN4aGj 2fdKv+rCDMNVa7LOVmg== Content-Type: text/plain; charset="utf-8" Add sd_mpath_pr_ops, which callbacks which call into disk variant of sd PR ops. Signed-off-by: John Garry --- drivers/scsi/sd.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index b807452a4bdc3..f94a3b696dcab 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4081,6 +4081,61 @@ static int sd_mpath_ioctl(struct scsi_device *sdp, b= lk_mode_t mode, return sd_ioctl(bdev, mode, cmd, arg); } =20 +static int sd_mpath_pr_register(struct scsi_device *sdp, u64 old_key, + u64 new_key, u32 flags) +{ + return sd_pr_register_disk(dev_get_drvdata(&sdp->sdev_gendev), old_key, + new_key, flags); +} + +static int sd_mpath_pr_reserve(struct scsi_device *sdp, u64 key, + enum pr_type type, u32 flags) +{ + return sd_pr_reserve_disk(dev_get_drvdata(&sdp->sdev_gendev), key, type, + flags); +} + +static int sd_mpath_pr_release(struct scsi_device *sdp, u64 key, + enum pr_type type) +{ + return sd_pr_release_disk(dev_get_drvdata(&sdp->sdev_gendev), key, type); +} + +static int sd_mpath_pr_preempt(struct scsi_device *sdp, u64 old, + u64 new, enum pr_type type, bool abort) +{ + return sd_pr_preempt_disk(dev_get_drvdata(&sdp->sdev_gendev), old, new, + type, abort); +} + +static int sd_mpath_pr_clear(struct scsi_device *sdp, u64 key) +{ + return sd_pr_clear_disk(dev_get_drvdata(&sdp->sdev_gendev), key); +} + +static int sd_mpath_pr_read_keys(struct scsi_device *sdp, + struct pr_keys *keys_info) +{ + return sd_pr_read_keys_disk(dev_get_drvdata(&sdp->sdev_gendev), + keys_info); +} + +static int sd_mpath_pr_read_reservation(struct scsi_device *sdp, + struct pr_held_reservation *resv) +{ + return sd_pr_read_reservation_disk(dev_get_drvdata(&sdp->sdev_gendev), + resv); +} + +static const struct scsi_mpath_pr_ops sd_mpath_pr_ops =3D { + .pr_register =3D sd_mpath_pr_register, + .pr_reserve =3D sd_mpath_pr_reserve, + .pr_release =3D sd_mpath_pr_release, + .pr_preempt =3D sd_mpath_pr_preempt, + .pr_clear =3D sd_mpath_pr_clear, + .pr_read_keys =3D sd_mpath_pr_read_keys, + .pr_read_reservation =3D sd_mpath_pr_read_reservation, +}; #else /* CONFIG_SCSI_MULTIPATH */ #endif /** @@ -4536,6 +4591,7 @@ static struct scsi_driver sd_template =3D { .mpath_start_cmd =3D sd_mpath_start_command, .mpath_end_cmd =3D sd_mpath_end_command, .mpath_ioctl =3D sd_mpath_ioctl, + .mpath_pr_ops =3D &sd_mpath_pr_ops, #endif .done =3D sd_done, .eh_action =3D sd_eh_action, --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 92AB33EDACB; Wed, 25 Feb 2026 15:37:49 +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=1772033871; cv=fail; b=A0yrV8ObibIoRMk7R3KxzeKVrd9CPEGOAWqKdOX5X/p7LNz/4EbsP5HBY3aUyhhTJOCRRJODXrqclTCzEdTt4sJcIDMLsvOyVhXs3kWA1dP9rBdfrE3LTvkh8oKaqPyla5uTQTKOqoXuD9eBFkAX6yu7oZFWbUdRqNuDdg90Ko8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033871; c=relaxed/simple; bh=H9yoZSB/FQak7vZCoTNb9+XfuINk10B3mTlYkTuRrnA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=b4o/5Qh5sRpOngfEt7LuN23SHCpoBUGEgvWK2LKPMtfosluniN5wq5ojUdULKfM0ruSmDN92F3Nps1TQfUaKfDyseQ11PBAHoEa5v1Qa8+U2OKC1M0mkQcqyPFjxzCczLNW2hcrAXM8R7xuYoS9dln19n6p7rTYS01WyernIUU0= 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=HSuHWCEe; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ZhyqitOr; 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="HSuHWCEe"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ZhyqitOr" Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAXlWl369450; Wed, 25 Feb 2026 15:37:33 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=qxb48zFszR7Uo94G8PaftFzIWWw4y6QntVuS34pj1lg=; b= HSuHWCEe8O5bSLrTLvUC+R6puYn8kOxZ4JR6pPRJ+wmqhUUV5g5jNTkIqBkBGO4s cmZyURtIhZ2SHeeTLUsrDwqK4I5S9R3479pTlMZIFr2UvoVtVPItNngcGAumEN0V 3nw5o8c4lo4yCCg0seeXt+kqsQidb1C5NWUTGI++RHI8lIZyvQ0VqfHrtpQfbkc0 5Wa2MzSXUwPTRQe6Mv1OCA8pJEozb/gHTPuaGea1P6sNHphFvkGiK+vE906vzEpt B9pZP9ORur0irMt/xJb5gByL7Lm8+yPgNcvB/FNFdnxRbu1UW9s6OSRzEcGhgmKF sEGBM3iPCBdzVvbVO28wBA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4k5xdp6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:33 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PExufx006258; Wed, 25 Feb 2026 15:37:32 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010010.outbound.protection.outlook.com [52.101.193.10]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9u1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UYAHFw3OG7OYKHs+Xj7l7srvEWyhRNu+TZszLn3puAd9/7AR430ci4xrQdlTSeUC6xwg6E+42TIRfL1YgUwvk8QhVhYIAnW0YXBBZkt0To3DqrrfYnWb9sSONcB2wib0/CriWPRLCKseXv48dVdL4Gi67Dwgd7fCl87jRDgmF4RTD5fW0hC5DgQVgmT01o6gLgW8TRGiNG4IynxoCGQ982l4bao56DCrd9RPOI/yQkiYb316Cif9N9hXcZI/ffDyL4k9D8yGWDI1vYY2Qmk8i76GBxJkhvr+jm2dFgnpPIWnkNdHopl4uCazDz5xiEiC1fOQtqbgGW9Nuh5+o972Rw== 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=qxb48zFszR7Uo94G8PaftFzIWWw4y6QntVuS34pj1lg=; b=I6Poxej+JmQF0wZ7Qye4bwCxGTupiGZfkKii8t92eooROg8PHrKXGctqp7iFBjezy3q71Ruhqd7nyZyxCsEMy9uxdUCOJfvGcD0BAxLWapfWnmqNLuaz6yUP8oQ6Q7bwnnHMNH/zLmiAavoTBBl3GxDdWh3sNqGhDzcNixT7C9AuOD3bk/D+Tn74JrK5DS0z+RjR9x+VGI/hmG5VEhURhDKFxKPlP/FaFcNlcvzww1vshFJT+vZtOv5E27/tcU1u5knYgEWPBm4v2NkJcfjaEhw5IGWouN/wJPGr3cVNGDOFFBS+0HdhFBX3xoLHlibaoVJhZ5PUKbsyolRl2L0BYA== 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=qxb48zFszR7Uo94G8PaftFzIWWw4y6QntVuS34pj1lg=; b=ZhyqitOrCa+8lHUsIriPXYx8VOVDAKDp9BxEiUdIB7cy9geJT5lLcrdiecCrYq3gq13E7bEHsgJRFhznhKwU9W7owjJrVqa3RCfM6dWNpV4FVRmo+z049l8+WKWresgQwxPr5OYkV4VyhylVzvjIS5vPIYwnlrbu4l5/6Th2wR0= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by MN2PR10MB4285.namprd10.prod.outlook.com (2603:10b6:208:198::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:24 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:24 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 20/24] scsi: sd: add sd_mpath_to_disk() Date: Wed, 25 Feb 2026 15:36:23 +0000 Message-ID: <20260225153627.1032500-21-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P223CA0010.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:338::19) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|MN2PR10MB4285:EE_ X-MS-Office365-Filtering-Correlation-Id: 5c78adfd-a690-43b7-4bd1-08de7483c5df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: oQdbd0gUIVUC9MPcJY5RCg2LkkcwQ4C4XY6jEI2JtjKH9qxLmmBt9919xhlIdDeLsJmNC6UD175Sz62qnycwGQ6eJ/vHtUjT5nHgOyBT2XEyn5kiEJ53vmAEkkocAZg1EyI/MNow1gsHRoxsU0dzEwJacJC/gWx+gZD3QNpSLZaJQ4hHHWejeNsK59q5BVnLI5UaiGpmc1UP16JJHKBjFkOoS+F/iYjeBvTpEPJJpd/uKhKXDVsxfFcCVERSOyHOblqcreLUA8Y4lNLvJYo//M9cBaJczHLWUGkWtaK+5pHPjFtLkroRJm9IKrWUHnWXgVwtoUtu/cT2IYM7TZYhnvyxJn5DReBghuCfsoczhalDDSOMb5PWGcrsuywBGolT3EQa8e7ireBUM8Ovs0c5P0twlTXCOjyjvAvG3meGNtFaAY21sxppx55VqyauVFW6nIaqbeLF+juVaK9CuQUVx1hdXNGjbmq4sxA+mJfu4dQaYyfx6qL+/eUfpguZEQzVdd6JzN2j2rVWSR8tx9wKRiOinjLJ4Cj4rSDIKN5Puv+gjXMyiGIkTUXzIYiaE7ok6PUbWGMwOn3CSao4FMEqbNPK+S39C5dKRAl2DuqAEvgeyAGJo4N5dKfuRZQbJcwgmnfq6PFJI+wWys+C+QdcDAWHjUv/b/FyokYenZYiRD5WYG9e4G8m8q5ncL1SNsbaxQLKzv2Df8Qn1TD/OAFpyqM+aUgZdmnHytrBlQ4rEus= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3uDWDli1IEmdEL1CkVr4IACqfW8yfBjIrllKxuqbbBso03VuWuPi3MOLOo3A?= =?us-ascii?Q?cItsP5YsYRUCQkNCxHROQ8HpzUpU8qqD6YtiXGFHLi15fqsjspsKn77HcX8M?= =?us-ascii?Q?me719rGwSJf1Zdbjil6BekVWrA0Jk9hbWFqpvcO/MmGK0JIa1dvVRud0uGth?= =?us-ascii?Q?JCforVGmvHg5RyVTSsji57t/+EQilCtsB9y4GB1bj1QGmi+uuGFLfdttwQSM?= =?us-ascii?Q?EdJDbSertSVrVv4YRly8gG+DL+kBbmjl8S10WAa16XnL1CeQ+NEDLkQBK3Ij?= =?us-ascii?Q?zIQ76Ignf+I2yHGLHYbz9oLGZ6Roheys2kzyiMx0axvdfRX7RXsPHcLu36q0?= =?us-ascii?Q?Q+KLSmq1dV8fJhmTp4+H+eJ4BI2bBnUZ6czzXkPpC1GrklQibA+8cmV/tmCZ?= =?us-ascii?Q?EGOt4+PynjScinTDg/rb822zsCW8emY6Mp+tyTTCLEl5dYdRx8MY8VCY6nux?= =?us-ascii?Q?3y5ltsRKK6J4/p37VMINK2B/xbTTKopbXOAA4NGYzefn4GawUygrb0YXwMgV?= =?us-ascii?Q?7bfsvC+wo7rDXzeuF7hGf+53DJ+OZPqaTV/6nl/zwyw4zeRl0QiNsZG/SjA7?= =?us-ascii?Q?0/TE+qEaqvfyDGQnwwG2fJE4WX1ciCy8CYEhhk1EXuV/kWGY/oDf7z2vHkAJ?= =?us-ascii?Q?q969Npet+VfNqtBT+wzhoVxhbwv9ziwWB5sKmLKbindGyqO3Ymvl7gLPt3bT?= =?us-ascii?Q?+s7M08xnHfumYbnP2+GwfP5dIUOF8MMay2UE1/jpeaFoXkzK2sNC1+rtCu3z?= =?us-ascii?Q?ZyEmWxeiowqvTYsZy0dp5aHBdTosOV/oYAtQ5f6k4mJx0m41klRamIa8YX/I?= =?us-ascii?Q?gPufCMqHdb7HqpwCXxyFBq8DjrhU0CuRfgvSlGTmn9LKHapHrwWFtoARW5Da?= =?us-ascii?Q?sdCtCU3Z7hJ/RNSDqOXT+5ikXVj6Zuq/viGrws61N6qXKGHiZ4gdngpmyDs4?= =?us-ascii?Q?PeT1OF+sE2xZEy0pvKNojwF9Umi2jmvCFTHcAvglPZ0fB8lMbB1m+s4TjUj5?= =?us-ascii?Q?bFjdY5qh2z/D1vvDv2DGPjefkyp+dm0zy9P1Ttc3rRGZk3bKXYQlTDLxx+Zr?= =?us-ascii?Q?N4QkNr3EQQ5neaoSGqzeQt6dbxOdDVXN12K/GPj6A5eg9joMYMwYEE+x0HyV?= =?us-ascii?Q?gNz7cfVpbwAOZrw9Ll2rCMsod9DqXYojy6JE2S34S2tgczc7jk3bjGp2FrDN?= =?us-ascii?Q?6n6NQfF6bHHPVwD2nak60fjYWmWpDKRZOhZVnHg1giUFxuA1/Xp78oOTszIE?= =?us-ascii?Q?rF+WyKlIbMsK2ghu1fN0InSovvebLaE7+4T2xzUoZghnEevoedUj8V8fTOiL?= =?us-ascii?Q?DR+53kg5GZ6wQadoBFA0P0MhiSRRQ8+Wgup/OwMShJneez+x4FJXcABnY9l1?= =?us-ascii?Q?G8VKhv+wwZNorUXODf4JtMUgQGqLgNbrzr6rkXA8D6ddQ/ZqyXdBkFnCWlo6?= =?us-ascii?Q?Ia7q+CsxXGmizMqpX3MGJZbD6od006NTmIAWmLMGVmLTEjEalWF+vw1Dm3cc?= =?us-ascii?Q?8O2xZfFW+WTUVA6U9yI1hqz9k/wuBklkhCfiDHoKRrz2UxtYHdgAQji7O05G?= =?us-ascii?Q?uMeFrSwcPLZ4t9Pci/BUQ0nDNiCO4b3q75y0HjiEHBPN3Z25og8toAhYwv23?= =?us-ascii?Q?ckhplITfW81CDceic9xaUtlDVZCH/unu7+2T0XG6Cv/pmC08WP9FRXwTQQYg?= =?us-ascii?Q?baPo4BuqJoKUrH9iP7kjRrKueNbt30+Yd8AMGYyhTZhPfw5Jvv4L15qG482H?= =?us-ascii?Q?RVWbl08Fa/5XPJFULJ5tl3UdZEbG9Ag=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GYjSV9+4LRMeoDtgEEoULiZyXcjq5hVX5mTiA7wJZY3JJdcn0bG7IQbYa2Hqbj59fXW78i9zGHwu86swHQ+f+d+QoFnJ187PN8yUhZpuU0yt+B/nNjbWfeR2naoUanlXCjxVnLDvYdKN44kJdmRhkBzlYhUZVKn7Ii3PsTk+UG5yK6A1sar+EuHRFmaaw6dw710zqdDVsFlDLsCR75ZakHWqwOBA5/pf3LimM5C6ifB5R5TQGjRCNTI15z6FmH9hwWtxlebTP8TdVLeYZn7H6DgXa+IhZ5nOisC9cAIswf1ySaAOorowWU7o2uLEqrmLPqr6EDgnQUjUsL7YltZPk3iOYHnV3tbtaRG7Q1ZFy/H0WiDc5+P4Fg/hsvefZAfuE+7KB2+kmQL7/aDnTwo2t6nRqkV2pHPXqNNj2XsC7EZydaqLJdaNWBcAOcIdtjRJizEF+p79gd5h3Z+Vdq+Lpn++62um7j0SUBAkMb/uMBQNpHFsl7vzEadQBBgw5pJqYNFnW0Oc4Z19VR6UZr2ryo7jbrKM+PD7dU8CAMIhFOpEV8Fqn/vt6LBQL0zaoxbC4Nem3+K5t6KNPlMyNmjcQ1LixwHbRfZYSGN60PqvVPg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c78adfd-a690-43b7-4bd1-08de7483c5df X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:24.4024 (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: EdF/V5hO10iyP4HKqdCPXaWo/g6zjOJkmbjTmUqZOgE502FWILZxQX2nGKwm/sQZ8TqJujx2RARfYLI9gsVQYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4285 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX/XJY53UE1nOD vqbcSuE7SpXfhuZdij4rnT6vYg5PRzG1tjo/FwgA35pxsJ+qyFY2suyEmVP5f552AVtJX2vMMNj fnXNt2kE3hNgZ4zaak9jPFfN4BRXR9YH6n/pi4Ec670Y8D5sHnUwMnQ9RbG47aEhfw0cTZ/uXYN CXjtZdzjSGm+OXr2pzBtvM8Vb2eYDuP157FJG8FA/hug8wWv2MO8hYE+Y5Az7ktd6oGA3YgzFjb 1I1aeqmr/npDn3oTVdbUE7mI0Dp1uLB5z+20uD9ROFnhGYmUtYN9uBr7cWiXAIFHxrYcmzbDTej rZ2WV8++bo/FzKG1RPnIiKHMybk6jD8I9VwAD88dWDvCmaT59obIf6z72D9SauYi+of+Lcymf51 CvY7AoRcEptBmEpdqrPCOuX5rIYISHyImzXP6+l5KYH4JWVcMubjSC6eWIRkAnbb8EK0tlX4uGF agOdQ1rO1sCkvyf6WCg== X-Proofpoint-GUID: KOSYw9myPWKRG4TtGg3ohKSq6ZZ6EGsx X-Authority-Analysis: v=2.4 cv=b9C/I9Gx c=1 sm=1 tr=0 ts=699f173d b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=v5Mwit03CL4gI8pcBxgA:9 X-Proofpoint-ORIG-GUID: KOSYw9myPWKRG4TtGg3ohKSq6ZZ6EGsx Content-Type: text/plain; charset="utf-8" Add a function to find associated mpath_disk for a request. Signed-off-by: John Garry --- drivers/scsi/sd.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index f94a3b696dcab..9617878b53ec6 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4081,6 +4081,14 @@ static int sd_mpath_ioctl(struct scsi_device *sdp, b= lk_mode_t mode, return sd_ioctl(bdev, mode, cmd, arg); } =20 +static struct mpath_disk *sd_mpath_to_disk(struct request *req) +{ + struct scsi_disk *sdkp =3D req->part->bd_disk->private_data; + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + + return sd_mpath_disk->mpath_disk; +} + static int sd_mpath_pr_register(struct scsi_device *sdp, u64 old_key, u64 new_key, u32 flags) { @@ -4592,6 +4600,7 @@ static struct scsi_driver sd_template =3D { .mpath_end_cmd =3D sd_mpath_end_command, .mpath_ioctl =3D sd_mpath_ioctl, .mpath_pr_ops =3D &sd_mpath_pr_ops, + .to_mpath_disk =3D sd_mpath_to_disk, #endif .done =3D sd_done, .eh_action =3D sd_eh_action, --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D260E3EF0BF; Wed, 25 Feb 2026 15:37:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033873; cv=fail; b=jcAaCPTk/KsGUHLdmYM0i3Il0jdLUMq2cWJthaIkDD5R6720Q8tkXp+qKt4WdX5X9dXq4L1xPirdt6MUzES7qQWEr0Rc2Hsu4wNWQ4gn7p+r1nJNYzwSizW1VO8O/N7bdfnfDJ1koJ/xmOaUO4FNRAIdzr8GuafsWhPCi1QNk64= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033873; c=relaxed/simple; bh=Cdt7kSTe46cVc1nnVcq8ZyfcuqmNL16/+DHyCNpbf7s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XboP6vt4OKd6Uu2ViekpWKdTHE438ngl4SrVUCI0jAy7wAx/SkUQ7mLxjuykLPkAuKoP76UvJTPeQKHFTyV18zWCf94qbI0qO3FsStW898WFfDkUvJQCiDrVJaUV1wDHpplyL8E3k7DpDnMPZ29uQmq+fAeqS9bJBnuutTmusXY= 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=awYM9JA0; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=DUP2zW4q; arc=fail smtp.client-ip=205.220.177.32 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="awYM9JA0"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="DUP2zW4q" Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PETBIo2703463; Wed, 25 Feb 2026 15:37:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=eFCeLHzw0m1Yfpz3sNYA1mrDVW94BDP8GhcIEEYWDq8=; b= awYM9JA0EEHkHT+CppyuvdY0lzqSpSZToETKXEKolDWG+X7fh1Sp0tpyN5+hma9K jrztQVhI41zgK7Vr2SkuP0th0hKVgHQ5wvLj18a35vilyASqn7O+ErH1HW3ffwa1 uWMNCIM77DvBr6kZSLAddlc0pu5LhCsasJMtPEg8ncH48r/SFf+QxFfbCJU4W5v2 SREgA6NZWsJdv0ToIKCWHT/dx4AdY3AS54qogr4ifHVMv7ijRe9sUmpKlWW+hkPH OKAuIy6peXhBjuitlZNUSG0G96OsmsC1IkVSw9Iu3XubZ+l3MlXwd/fg/uauvkp1 tV+g19ibE4FgHfOLmo1eaA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf4rbegj0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:33 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PExug0006258; Wed, 25 Feb 2026 15:37:33 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010010.outbound.protection.outlook.com [52.101.193.10]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9u1-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SsBLFPsUSvMD4zrz0Ol20fEfXGKdEBKEmcVQVDaf1VGla3MCHFUPj1ccAgmXfr+MCAtMlMEY+PfSTfbXvOqyFS8nKhSEp5g+Z8rGx8gB9tzZQBwQ570lXonkGmXpi93oeJ7mdu+zj3dN9jN04w2dJD8TnTKWVav92KWt/wdXS7C086N80h1NXNLm8eLchRIi9doCPVi3eWuXaMd/6VgQ1vMsmYeZF6rsSrFoplvbSNQ4/wKo60fIZYInX4HA63zFDLvAPeRluGM6vP1ihxM6LllMRy0dkyMOGV17YmHtmUb2DZsKLL5CS+VupCbbB1S/wmFSB1mps/lLySrHFOZYWA== 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=eFCeLHzw0m1Yfpz3sNYA1mrDVW94BDP8GhcIEEYWDq8=; b=GmAZbg9EznQGZPxTd9W6XNK4z8hv8SdT0ZhW3TbFMDOkB5oBTVbLdxFmzdfFZzx81DIhK1fspb7NQb6ShBeDLzZUOfR1SNtItLDLzD/OI/pIRLDsz/satF/H0btBywEG4WNBoFpReK9dwTB+u9kK8Sjw/7T+nPcCKhuUO7F2qNwb3Sq+ox72PreX+YTKMWFM5UTH6Wu/kKvJig0Ei2k/pzSnt3gT6v+zBHojf48laDR8/gmTb5d70pxNXWYnf5ri1x4iQ0R0Z4WZ+TwQN8dZ/JEYVyo3Vi9W3lbdA8vwUoNfjtay7eS/SLispfzwJWsScI981mq/yFlIo3Ann7Hi4w== 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=eFCeLHzw0m1Yfpz3sNYA1mrDVW94BDP8GhcIEEYWDq8=; b=DUP2zW4q6oB2wkEYMUbC5MqrzxJQ1kKGkgq7ww2CdnP/pMaqX1zMMP0lNpGs7g56/ecGfvLWoFcqewCxcUMIq0kTTcjlXOAdrkC7SKS9Urwe+wVTDOmwwlsiucwBWUnBESRP4vnMboVK91S70yTW9FLdXLSP7JZFWVr8prITjNg= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by MN2PR10MB4285.namprd10.prod.outlook.com (2603:10b6:208:198::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:26 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:26 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 21/24] scsi: sd: support multipath disk Date: Wed, 25 Feb 2026 15:36:24 +0000 Message-ID: <20260225153627.1032500-22-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P223CA0005.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:338::7) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|MN2PR10MB4285:EE_ X-MS-Office365-Filtering-Correlation-Id: 94d6a647-e262-47fc-3376-08de7483c742 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: /KH0M8dwGlxgpwRtWqzNXrq9L6wbBCb0wc3qxRmQYsBpOlUahlETeogobWhk1h6OF5b4GTic2xNvyN5WE3oE3mGYQ593CXb4q/WWw6agltPvb4XpVAYMg47qw3IgGb5PrQeAo5FO3FkhlH+KAaSSy61EUS4j3xWc6RTkKrCYjavZXCU/fvtFWBn6sSh/EOZeEqW+USt3ly56/C86Eo19q+CkPZH+/U0BaGYu/I3Ui6TqkziGk2PYdrqzp1VIcv6fKYxT3FmtpyQNEDhhuZaFFCcj9FyvqSAs0uWKfXdx1DaBDOtD0cBrTAZGuAGAKsUFXIVC7eGcBz32kYWFlYIHAavnt9hFg5IwOdrwg/BDWSrKAsd265q6Es1WoU1OGf7p9qN8OjjZ3FMwoKeZhHyw2MNsWzMWv880PEoSuLsK6becDjqEAukX0vaDOv2ARq2lSLU3y91+7G3zvZYrp7/bnNKDVeqFUTU2nM0rZWVDV10zUEqzoGW/6ZGBrtDFk4ueo4htSUGHiZ609qiYHieaqNTui3YHzyL/jG9vUo0TsE+SDQyXDmt7PH/jOVEw4iAWp6OoUrVKy++HdlA7ZTZ82GygwFZWz0SP3WwF0vwhU5CRwXvUOkkkJrE1hZf6+iiy+ykX/EOcDIeBqG3JmO1MLQRXD0Hp6cfAZ7vV5153wxZiP+Nq6gAWGS67wlFvG92P/ez8RVyPaCyKpgMNmsjoeKUXoS2pQs07yH/wgzoRo9c= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lIncdmImMUiInbFSh2EkXrPIKWU3lFSnVxK62AT1O6EmB3G8HB2BbJBN4IWO?= =?us-ascii?Q?AGwrVT2xGF7Pz2cBNHgxoAJZiS/vwtYCtCPYOnMEf5Oi3cYa/Fdht3Ym6INN?= =?us-ascii?Q?1q+mTfu8eC1Yz+dr4ziZNOyJa2fnlXs7qTuHpkhfUrYbT/Qmc8Q7NJGcQ26c?= =?us-ascii?Q?3ODJ300Kv+YtvrI3OvNkOPsS53dVpkPqY4uf3spY8d7QXMdIUB+ox8kEUMMf?= =?us-ascii?Q?O2COh9+wi8FAo0ydMawtR+gMW38Aq47Ytw3LchWjSBIfzkWfWGzMGtoHOD1p?= =?us-ascii?Q?7YKBT2U6Oys0wwQuEnVe5hVPKxQAI/ViTiLZYUk3BjZWoORE7asvOjbSXFEv?= =?us-ascii?Q?XoIcOiD/6NXXrDc5ozwwhSbwJ2hYIyK4+uznfDlQMggyZ4ziY9sTDSbfe0T5?= =?us-ascii?Q?lDX+X+1yXdCJ0e/7XqdfsuaoemKT9Q0O4ETjB9LiayckpapUmg9yDU3MBwE4?= =?us-ascii?Q?NfXQ0UZNgASa297PAF6bCfgMnzdXEZG47LXl6p61Nof3XaIqIknyf9DtLX+x?= =?us-ascii?Q?o06gmpAedejBRrr2RRlG80tnKURyiwrdi4qDNu0fA0w4bWXvRwrUIABBMFgJ?= =?us-ascii?Q?Tyx+SayxjhzL3lVZy/dO1MS6CaXs6MifbGY1rAkDkLiORQzEb605ATZDeYIb?= =?us-ascii?Q?EszIne4ihJOI8k1iNoiluxYG7rS6BKnF1d0+me6smIuqhPKc+0o8A3O2ftwz?= =?us-ascii?Q?BwHcxaGlo3Q2oygDG3HGRbArbKprdD2ePyBcuVgMFblocc7LJeVEjJxei/vh?= =?us-ascii?Q?f7VkNgY0SFYdhexZdlX0UqxksTlIcLNxPbfDhekxI9F/mcBt5FRxrzhAAzRp?= =?us-ascii?Q?U7B+POzsd0ZujZSoEXcAC5E0cC5jgc3Yjk59UEy8IzXQr9ytcAH2TLuuaOMq?= =?us-ascii?Q?i4+Ci7ieppl/XZYa7/5ziLyzMP18FG4FOm4+YTvifNBgCSz7qI5RImYUxalX?= =?us-ascii?Q?A7/UI+tBJI78QWxVoi2loTpnZdvJjJ5XwYzL427rhegcenD39WGmHYEz0zyN?= =?us-ascii?Q?adJhSoGAMjfOIazar8otAOmfduzAyaQOlLNaGMHj1hlu86320PfzEbm0O1bP?= =?us-ascii?Q?5Q2yXqYP2u1l1Rx+/NSaPz/uA5FsvGmTZfNO6K3KqR+kXFaN/Wy7Ojo9oWbB?= =?us-ascii?Q?o8zOhnwnja0K5hy2U3T82cTSTk4SXTRftRukxh15kj7Anu4/d/RjuEuuJlqD?= =?us-ascii?Q?SjvL44ws8SxENmDDYV5BLQhCf1Xp5wJVTDf17LBv2kjYMpXZ/86QinZxNlxS?= =?us-ascii?Q?Dj8popC57UQm876C85HuSk3OwL5hl77UoL8Mj8ta1c7hUn9AgoU5xzkF+05V?= =?us-ascii?Q?NA9cPqJ6ngnbAVOqlBfp14ck7hXiTc9uO5jZH2a9F20X5uQlTCO8laMnGAyR?= =?us-ascii?Q?IHlamKA2qt9fuZnVZep6hT4Q/OfPh/Ti7BI0tXAOeaGCz1qxuTQGybQmGzSf?= =?us-ascii?Q?DUMH9qvMfqnVfhEukiqjShucJOVoqT0bflLzePHZFy+x7J6hzI5TlID9YZP/?= =?us-ascii?Q?Dj4IddEb55hGHt8tj46bAW2bfTi6vjvqOX7khYGOrNk6Upuyh7mxPLn4zeq4?= =?us-ascii?Q?UURaeUI5u6qBga8Hx3qOC+rwDX5DkhNB6ZKDFfk1wEaeB5Gt2j9IUlsbssLu?= =?us-ascii?Q?9FG9jR0xrsxBDDlYMRpL3jO/Uiz3fiKg30U2kn4HXNPDO9VCG/HFGtc2jHc6?= =?us-ascii?Q?r8viFFyUsYX9Bs/y0zYn2orfr5SNPp/cOLy97M3iJhOYyIyu4G6235cP9xu2?= =?us-ascii?Q?lqY+3kYOM1+drmJM591fhmBNoFkt+Bo=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: OvGTM2/yLkLF7IYLrpkTYaW5LVjj+yEnVAHV8qaoyLRTIKjGLqgdppxRwzEi66qkJDKhiRcIai0czjsNPnAamjewnEoLDWI89f9HVwiLrYApA4x2YZRCnqFt38Q8vrg4DCU4aSAub+CV9LaYyDp5BzSgJTGGajpQoJXqaz3PT3EeQNrLUth9bn25JgYPRmf7Ddu+hEQwGUbzQtGv+rKum4EH7tYvpWefy3ifd7XpYMdzCcK8xShsB2xz9DzmbGhvPIw2S5djr3Zhpo4EFV/H85tDntIecK5HP4xsZoliJloKkCHiZZGMZek+Iq0x8vkcNpWdRo/LOZLTwkcemTXtExKh3NYRHPibzj0LXAVxOJLDsu40AIAvzztljSvEtdrRWTY0XMWsnFkFGT6f0AxboQsiyveeLu0aa6Uulq7rKIlSei1aIbcuJHteUA9Czi+cafgO+UfNcvSW9A6a/BK0SJELCbArvTCbjIH/8i2vnqzziLl4W/TBJVk67QjwDRFYOT9MajDsXJWj81TEdKbLKsjz/A+ADOohEwdXZKI5NrNWslUphQbbS2df472yaecGdWswQVefWxvr20LoR5Rd31C5xT/DWZ3RjSCjZGq7iJA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 94d6a647-e262-47fc-3376-08de7483c742 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:26.7363 (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: omZi3KGYyl2zc9SqBstiC56v3TGDqsbKWC6LW5zhqqcX/skfCHWnd/FXnLqvpWZCbfXj9jBAZCxudkkkIzfttA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4285 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXx+Dxb1jNzxEb WK9xg/Wt0MHCY523r0B+W601BwmerQfA+A7mc9m9GOcIIOeXQ3a8WR0xvG0L0cHNudHTcyXBLGs bf6U2DCbSMhHZcdr7by7do+k5z93CER1pYvSSHmH1WaZpL5YXB/rbQmVf3kDHNzd531iM9Y8Nnz QOyIDDR2BS7gqXpvkcRAKc4p+E6N+8rW07wmRbT9vItS0KKPjxsRbSJLn+CThxs24pDD5nqe/L0 SgyzfBKWHhECRjEX51gRc0AqMmzF2lA9k4dTY9iTn+peeCREXVdqwYY35fmfUahicWXxc7FhbkF T33zCb3K4Jqg1BOdgdSkYhUJ/lyzojgjB8DhJ18CakOB0CSRsr6lgJYJYQ1t+9sEcOHwsUYezzk cmuwntOCHFRg6+eGreTDK6MHPkICI0tM6o/3U3MMNFFj2RlzWIwUbLCTHFHegkOQDIzh03Y4Uow od5DnAohJaF5X6BPBmg== X-Authority-Analysis: v=2.4 cv=S/fUAYsP c=1 sm=1 tr=0 ts=699f173e b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=f7EEZqLDhX8ApkaZtTcA:9 X-Proofpoint-ORIG-GUID: IrK6_GdlUKZEBKpV_-txGPCvb3gKNlJx X-Proofpoint-GUID: IrK6_GdlUKZEBKpV_-txGPCvb3gKNlJx Content-Type: text/plain; charset="utf-8" Add support to attach a multipath disk. We still allocate the gendisk per path, and this is required for the per-path submission. However, those gendisks are marked as hidden. Those disks are named sdX:Y, where X is the multipath disk index and Y is the per-path index. A global list of sd_mpath_disks is kept for matching scsi_device's. The multipath gendisk has the name and disk->major/minor set to minic a scsi_disk. The following is an example of relevant scsi_disk and block sysfs directories: $ ls -l /sys/block/ | grep sdc lrwxrwxrwx 1 root root 0 Feb 24 16:01 sdc -> ../devices/= virtual/scsi_mpath_disk/0/sdc lrwxrwxrwx 1 root root 0 Feb 24 16:01 sdc:0 -> ../device= s/platform/host8/session1/target8:0:0/8:0:0:0/block/sdc:0 lrwxrwxrwx 1 root root 0 Feb 24 16:02 sdc:1 -> ../device= s/platform/host9/session2/target9:0:0/9:0:0:0/block/sdc:1 $ ls -l /sys/class/scsi_mpath_disk/0/ total 0 drwxr-xr-x 2 root root 0 Feb 24 16:03 power drwxr-xr-x 11 root root 0 Feb 24 16:01 sdc lrwxrwxrwx 1 root root 0 Feb 24 16:01 subsystem -> ../..= /../../class/scsi_mpath_disk -rw-r--r-- 1 root root 4096 Feb 24 16:01 uevent $ ls -l /sys/class/scsi_mpath_disk/0/sdc/multipath/ total 0 lrwxrwxrwx 1 root root 0 Feb 24 16:20 sdc:0 -> ../../../= ../../platform/host8/session1/target8:0:0/8:0:0:0/block/sdc:0 lrwxrwxrwx 1 root root 0 Feb 24 16:20 sdc:1 -> ../../../= ../../platform/host9/session2/target9:0:0/9:0:0:0/block/sdc:1 $ ls -l /dev/sdc* brw-rw---- 1 root disk 8, 32 Feb 24 16:01 /dev/sdc brw-rw---- 1 root disk 8, 33 Feb 24 16:01 /dev/sdc1 brw-rw---- 1 root disk 8, 34 Feb 24 16:01 /dev/sdc2 $ lsblk /dev/sdc NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sdc 8:32 0 600M 0 disk |-sdc1 8:33 0 9M 0 part `-sdc2 8:34 0 568M 0 part Signed-off-by: John Garry --- drivers/scsi/sd.c | 376 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 358 insertions(+), 18 deletions(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 9617878b53ec6..409c0937764d9 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -117,12 +117,33 @@ static DEFINE_IDA(sd_index_ida); static mempool_t *sd_page_pool; static struct lock_class_key sd_bio_compl_lkclass; #ifdef CONFIG_SCSI_MULTIPATH +static LIST_HEAD(sd_mpath_disks_list); +static DEFINE_MUTEX(sd_mpath_disks_lock); + struct sd_mpath_disk { + struct device dev; + int disk_index; + int disk_count; + struct list_head entry; + struct mutex lock; struct mpath_disk *mpath_disk; + struct scsi_mpath_head *scsi_mpath_head; }; =20 static void sd_mpath_disk_release(struct device *dev) { + struct sd_mpath_disk *sd_mpath_disk =3D + container_of(dev, struct sd_mpath_disk, dev); + struct scsi_mpath_head *scsi_mpath_head =3D + sd_mpath_disk->scsi_mpath_head; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + + mpath_put_disk(mpath_disk); + + ida_free(&sd_index_ida, sd_mpath_disk->disk_index); + scsi_mpath_put_head(scsi_mpath_head); + + kfree(sd_mpath_disk); } =20 static const struct class sd_mpath_disk_class =3D { @@ -4144,7 +4165,302 @@ static const struct scsi_mpath_pr_ops sd_mpath_pr_o= ps =3D { .pr_read_keys =3D sd_mpath_pr_read_keys, .pr_read_reservation =3D sd_mpath_pr_read_reservation, }; + +static int sd_mpath_revalidate_head(struct scsi_disk *sdkp) +{ + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk;; + struct gendisk *disk =3D mpath_disk->disk; + struct queue_limits *sdkp_lim =3D &sdkp->disk->queue->limits; + struct queue_limits lim; + unsigned int memflags; + int ret; + + lim =3D queue_limits_start_update(disk->queue); + memflags =3D blk_mq_freeze_queue(disk->queue); + + lim.logical_block_size =3D sdkp_lim->logical_block_size; + lim.physical_block_size =3D sdkp_lim->physical_block_size; + lim.io_min =3D sdkp_lim->io_min; + lim.io_opt =3D sdkp_lim->io_opt; + + queue_limits_stack_bdev(&lim, sdkp->disk->part0, 0, + disk->disk_name); + + /* TODO: setup integrity limits */ + lim.max_write_streams =3D sdkp_lim->max_write_streams; + lim.write_stream_granularity =3D sdkp_lim->write_stream_granularity; + ret =3D queue_limits_commit_update(disk->queue, &lim); + + set_capacity_and_notify(disk, get_capacity(sdkp->disk)); + + blk_mq_unfreeze_queue(disk->queue, memflags); + + return ret; +} +static int sd_mpath_get_disk(struct sd_mpath_disk *sd_mpath_disk) +{ + if (!get_device(&sd_mpath_disk->dev)) + return -ENXIO; + return 0; +} + +static void sd_mpath_put_disk(struct sd_mpath_disk *sd_mpath_disk) +{ + put_device(&sd_mpath_disk->dev); +} + +static struct sd_mpath_disk *sd_mpath_find_disk(struct scsi_device *sdp) +{ + struct scsi_mpath_device *scsi_mpath_dev =3D sdp->scsi_mpath_dev; + struct sd_mpath_disk *sd_mpath_disk; + int ret; + + mutex_lock(&sd_mpath_disks_lock); + list_for_each_entry(sd_mpath_disk, &sd_mpath_disks_list, entry) { + struct scsi_mpath_head *scsi_mpath_head; + struct mpath_disk *mpath_disk; + struct mpath_head *mpath_head; + + ret =3D sd_mpath_get_disk(sd_mpath_disk); + if (ret) + continue; + mpath_disk =3D sd_mpath_disk->mpath_disk; + mpath_head =3D mpath_disk->mpath_head; + scsi_mpath_head =3D mpath_head->drvdata; + + if (strncmp(scsi_mpath_head->wwid, + scsi_mpath_dev->device_id_str, + SCSI_MPATH_DEVICE_ID_LEN) =3D=3D 0) { + + mutex_unlock(&sd_mpath_disks_lock); + return sd_mpath_disk; + } + sd_mpath_put_disk(sd_mpath_disk); + } + + return NULL; +} + +static void sd_mpath_add_disk(struct scsi_disk *sdkp) +{ + struct scsi_device *sdp =3D sdkp->device; + struct scsi_mpath_device *scsi_mpath_dev =3D sdp->scsi_mpath_dev; + struct mpath_device *mpath_device =3D &scsi_mpath_dev->mpath_device; + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + + mpath_device->disk =3D sdkp->disk; + mpath_add_device(mpath_head, mpath_device); + mpath_device_set_live(mpath_disk, mpath_device); +} + +static int sd_mpath_probe(struct scsi_disk *sdkp) +{ + struct scsi_device *sdp =3D sdkp->device; + struct scsi_mpath_device *scsi_mpath_dev =3D sdp->scsi_mpath_dev; + struct device *dma_dev =3D sdp->host->dma_dev; + struct scsi_mpath_head *scsi_mpath_head =3D + scsi_mpath_dev->scsi_mpath_head; + struct sd_mpath_disk *sd_mpath_disk; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + struct queue_limits lim; + struct gendisk *disk; + int error; + + /* + * sd_mpath_disks_list is kept locked if no disk found. + * Otherwise an extra reference is taken. + */ + sd_mpath_disk =3D sd_mpath_find_disk(sdp); + if (sd_mpath_disk) { + mutex_lock(&sd_mpath_disk->lock); + sd_mpath_disk->disk_count++; + mutex_unlock(&sd_mpath_disk->lock); + goto found; + } + + sd_mpath_disk =3D kzalloc(sizeof(*sd_mpath_disk), GFP_KERNEL); + if (!sd_mpath_disk) { + error =3D -ENOMEM; + goto out_unlock; + } + + sd_mpath_disk->scsi_mpath_head =3D scsi_mpath_head; + device_initialize(&sd_mpath_disk->dev); + mutex_init(&sd_mpath_disk->lock); + sd_mpath_disk->dev.class =3D &sd_mpath_disk_class; + + blk_set_stacking_limits(&lim); + lim.dma_alignment =3D 3; + lim.features |=3D BLK_FEAT_IO_STAT | BLK_FEAT_NOWAIT | + BLK_FEAT_POLL | BLK_FEAT_ATOMIC_WRITES; + + sd_mpath_disk->mpath_disk =3D mpath_alloc_head_disk(&lim, + dev_to_node(dma_dev)); + if (!sd_mpath_disk->mpath_disk) { + error =3D -ENOMEM; + goto out_free_disk; + } + disk =3D sd_mpath_disk->mpath_disk->disk; + mpath_get_head(mpath_head); /* undone in mpath_free_disk() */ + + sd_mpath_disk->mpath_disk->mpath_head =3D mpath_head; + sd_mpath_disk->mpath_disk->parent =3D &sd_mpath_disk->dev; + + error =3D ida_alloc(&sd_index_ida, GFP_KERNEL); + if (error < 0) { + sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n"); + goto out_put_disk; + } + sd_mpath_disk->disk_index =3D error; + error =3D sd_format_disk_name("sd", sd_mpath_disk->disk_index, + disk->disk_name, DISK_NAME_LEN); + if (error) + goto out_free_index; + + error =3D dev_set_name(&sd_mpath_disk->dev, "%s", + dev_name(&scsi_mpath_head->dev)); + if (error) + goto out_free_index; + + /* undone in sd_mpath_disk_release() */ + scsi_mpath_get_head(scsi_mpath_head); + + error =3D device_add(&sd_mpath_disk->dev); + if (error) { + put_device(&sd_mpath_disk->dev); + goto out_unlock; + } + + list_add_tail(&sd_mpath_disk->entry, &sd_mpath_disks_list); + disk->major =3D sd_major((sd_mpath_disk->disk_index & 0xf0) >> 4); + disk->first_minor =3D ((sd_mpath_disk->disk_index & 0xf) << 4) | + (sd_mpath_disk->disk_index & 0xfff00); + disk->minors =3D SD_MINORS; + + sd_mpath_disk->disk_count =3D 1; + mutex_unlock(&sd_mpath_disks_lock); + +found: + sdkp->sd_mpath_disk =3D sd_mpath_disk; + sdkp->disk->flags |=3D GENHD_FL_HIDDEN; + snprintf(sdkp->disk->disk_name, DISK_NAME_LEN, "%s:%d", + sd_mpath_disk->mpath_disk->disk->disk_name, + scsi_mpath_dev->index); + + sdkp->index =3D -1; + return 0; + +out_free_index: + ida_free(&sd_index_ida, sd_mpath_disk->disk_index); +out_put_disk: + mpath_put_disk(sd_mpath_disk->mpath_disk); +out_free_disk: + kfree(sd_mpath_disk); +out_unlock: + mutex_unlock(&sd_mpath_disks_lock); + return error; +} + +static void sd_mpath_remove(struct scsi_disk *sdkp) +{ + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct scsi_device *sdp =3D sdkp->device; + struct scsi_mpath_device *scsi_mpath_dev =3D sdp->scsi_mpath_dev; + struct mpath_device *mpath_device =3D &scsi_mpath_dev->mpath_device; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + bool remove =3D false; + + mpath_synchronize(mpath_head); + + if (mpath_clear_current_path(mpath_head, mpath_device)) + mpath_synchronize(mpath_head); + + mpath_delete_device(mpath_head, mpath_device); + + mutex_lock(&sd_mpath_disk->lock); + sd_mpath_disk->disk_count--; + /* delayed removal not yet supported */ + if (!sd_mpath_disk->disk_count) { + mutex_lock(&sd_mpath_disks_lock); + list_del_init(&sd_mpath_disk->entry); + mutex_unlock(&sd_mpath_disks_lock); + + remove =3D true; + } + mutex_unlock(&sd_mpath_disk->lock); + mpath_remove_sysfs_link(mpath_disk, mpath_device); + mpath_device->disk =3D NULL; + + if (remove) { + device_del(&sd_mpath_disk->dev); + mpath_remove_disk(mpath_disk); + } + sd_mpath_put_disk(sd_mpath_disk); +} + +/* + * Always calls for a failed probe, so we need to handle that some structu= res + * have not been setup. + */ +static void sd_mpath_fail_probe(struct scsi_disk *sdkp) +{ + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct scsi_mpath_device *scsi_mpath_dev; + struct mpath_device *mpath_device; + struct scsi_device *sdp =3D sdkp->device; + struct mpath_disk *mpath_disk; + bool remove =3D false; + + if (!sd_mpath_disk) + return; + + mpath_disk =3D sd_mpath_disk->mpath_disk; + scsi_mpath_dev =3D sdp->scsi_mpath_dev; + mpath_device =3D &scsi_mpath_dev->mpath_device; + + mutex_lock(&sd_mpath_disk->lock); + sd_mpath_disk->disk_count--; + if (!sd_mpath_disk->disk_count) { + mutex_lock(&sd_mpath_disks_lock); + list_del_init(&sd_mpath_disk->entry); + mutex_unlock(&sd_mpath_disks_lock); + + remove =3D true; + } + mutex_unlock(&sd_mpath_disk->lock); + mpath_device->disk =3D NULL; + + if (remove) { + device_del(&sd_mpath_disk->dev); + mpath_remove_disk(mpath_disk); + } + sd_mpath_put_disk(sd_mpath_disk); +} + #else /* CONFIG_SCSI_MULTIPATH */ +static int sd_mpath_probe(struct scsi_disk *sdkp) +{ + return 0; +} +static void sd_mpath_remove(struct scsi_disk *sdkp) +{ + return; +} +static void sd_mpath_fail_probe(struct scsi_disk *sdkp) +{ + +} +static int sd_mpath_revalidate_head(struct scsi_disk *sdkp) +{ + return 0; +} +static void sd_mpath_add_disk(struct scsi_disk *sdkp) +{ +} #endif /** * sd_probe - called during driver initialization and whenever a @@ -4198,22 +4514,33 @@ static int sd_probe(struct device *dev) &sd_bio_compl_lkclass); if (!gd) goto out_free; + sdkp->disk =3D gd; + sdkp->device =3D sdp; =20 - index =3D ida_alloc(&sd_index_ida, GFP_KERNEL); - if (index < 0) { - sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n"); - goto out_put; - } + if (sdp->scsi_mpath_dev) { + error =3D sd_mpath_probe(sdkp); + if (error) + goto out_put; + } else { + index =3D ida_alloc(&sd_index_ida, GFP_KERNEL); + if (index < 0) { + sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n"); + goto out_put; + } =20 - error =3D sd_format_disk_name("sd", index, gd->disk_name, DISK_NAME_LEN); - if (error) { - sdev_printk(KERN_WARNING, sdp, "SCSI disk (sd) name length exceeded.\n"); - goto out_free_index; + error =3D sd_format_disk_name("sd", index, gd->disk_name, + DISK_NAME_LEN); + if (error) { + sdev_printk(KERN_WARNING, sdp, "SCSI disk (sd) name length exceeded.\n"= ); + goto out_free_index; + } + sdkp->index =3D index; + + gd->major =3D sd_major((index & 0xf0) >> 4); + gd->first_minor =3D ((index & 0xf) << 4) | (index & 0xfff00); + gd->minors =3D SD_MINORS; } =20 - sdkp->device =3D sdp; - sdkp->disk =3D gd; - sdkp->index =3D index; sdkp->max_retries =3D SD_MAX_RETRIES; atomic_set(&sdkp->openers, 0); atomic_set(&sdkp->device->ioerr_cnt, 0); @@ -4233,16 +4560,13 @@ static int sd_probe(struct device *dev) =20 error =3D device_add(&sdkp->disk_dev); if (error) { + sd_mpath_fail_probe(sdkp); put_device(&sdkp->disk_dev); goto out; } =20 dev_set_drvdata(dev, sdkp); =20 - gd->major =3D sd_major((index & 0xf0) >> 4); - gd->first_minor =3D ((index & 0xf) << 4) | (index & 0xfff00); - gd->minors =3D SD_MINORS; - gd->fops =3D &sd_fops; gd->private_data =3D sdkp; =20 @@ -4260,6 +4584,12 @@ static int sd_probe(struct device *dev) =20 sd_revalidate_disk(gd); =20 + if (sdp->scsi_mpath_dev) { + error =3D sd_mpath_revalidate_head(sdkp); + if (error) + sdev_printk(KERN_WARNING, sdp, "could not revalidate multipath limits\n= "); + } + if (sdp->removable) { gd->flags |=3D GENHD_FL_REMOVABLE; gd->events |=3D DISK_EVENT_MEDIA_CHANGE; @@ -4274,11 +4604,15 @@ static int sd_probe(struct device *dev) =20 error =3D device_add_disk(dev, gd, NULL); if (error) { + sd_mpath_fail_probe(sdkp); device_unregister(&sdkp->disk_dev); put_disk(gd); goto out; } =20 + if (sdp->scsi_mpath_dev) + sd_mpath_add_disk(sdkp); + if (sdkp->security) { sdkp->opal_dev =3D init_opal_dev(sdkp, &sd_sec_submit); if (sdkp->opal_dev) @@ -4292,7 +4626,8 @@ static int sd_probe(struct device *dev) return 0; =20 out_free_index: - ida_free(&sd_index_ida, index); + if (index >=3D 0) + ida_free(&sd_index_ida, index); out_put: put_disk(gd); out_free: @@ -4316,6 +4651,10 @@ static int sd_probe(struct device *dev) static int sd_remove(struct device *dev) { struct scsi_disk *sdkp =3D dev_get_drvdata(dev); + struct scsi_device *sdp =3D sdkp->device; // new code + + if (sdp->scsi_mpath_dev) + sd_mpath_remove(sdkp); =20 scsi_autopm_get_device(sdkp->device); =20 @@ -4332,7 +4671,8 @@ static void scsi_disk_release(struct device *dev) { struct scsi_disk *sdkp =3D to_scsi_disk(dev); =20 - ida_free(&sd_index_ida, sdkp->index); + if (sdkp->index >=3D 0) + ida_free(&sd_index_ida, sdkp->index); put_device(&sdkp->device->sdev_gendev); free_opal_dev(sdkp->opal_dev); =20 --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 5212B3EFD1C; Wed, 25 Feb 2026 15:37:52 +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=1772033873; cv=fail; b=Vj1OYMMnfjIJDWRPe61uWKmu81K/TGixWiQKRT7xKFJ7gQi/BgSpK7V1AE9SLeLxEDNLSydC6i0iUTgAQApkwXx7xMxXiYkWESJmmwCNmxayRhRvtx7Sl6NcOvl5Q/Sfo1w6s5sfgLrkS4MhzsqaQVKjYLpxj5xIoNsKP4P8QQI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033873; c=relaxed/simple; bh=lZmv8bgSXDux3qlTXgiqfCuDqY+VQzhTf/M7ARS3/TI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=A5ifiOG5OmGBWMK7i4Owzb5yaTtHN28mEHY/GoXPIELi7+NYoJmsSYSDckigs3PqM5IRub9J5Q0UBURFj275katR6zSHU6rNGqrUbut09m1I9JmylEAHZqyezx9Qx5Q+sFmxiX0BXEhX14dwgDa6/4mra556GRy3XI6+Fnal4Rk= 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=DaP5neQX; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Uon9JxBZ; 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="DaP5neQX"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Uon9JxBZ" Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PAfTNw359637; Wed, 25 Feb 2026 15:37:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=G4Sf6yc5W1T0n/9iZu+8F9oVdelCLpuyvOHSapPJDHI=; b= DaP5neQXtQuDbGHtZ4iT4VnKbAQsJN5/nUfXRSrQtqLCegKY6JraUCJm50Iad9RB KoAnRfEi5pJ2B5MT9yBCkf4sdcGM8SD5jDDQY862DtcD9UVaxaZdtkas6rU2NrZ4 VqgEM/UTbJ4f7aa2dYUI84n5yk+I2Eg5DWxq0501l6X7NijCrHKb3Ao2tfCKmi2/ jLSbVwrNCHMI6IiKUoPeUjAXH3CcHDxHh0/jlkY8N58Y4XXFi9svqHN8D4RqM5qT XuDk0sfIClcDXL3CnS+AHrDLjsN0vqeJai8XUUh457ikEa1a9uSKKDsWISl1hZTP glhHuT5YXwxuGCPZ6qbwJg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf3m7xfj4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:34 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PExug1006258; Wed, 25 Feb 2026 15:37:33 GMT Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11010010.outbound.protection.outlook.com [52.101.193.10]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35bg9u1-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Vu2K/KGicDy8Aac0XMTo9V9o1rZNSkTVivK9whci1j4fWkaRXR/KCU2HA/Npm6vODmUxUUJIYf7VijAAPab/v76+8tv5w2ITiHAaKN7k3WCitT5raN6SYwxBO2Hxazg2nYglCEbUuwo2iWOg9MFaOOnc8ezd7ch5nLRBhP8K0hjfvshOwN9CO6OhELkqMs/tKmHvsKUCjJQcyCKyVM9WfjtXGZs0D2yrZZ3x8iEC4z9KKdWdISZmFT+jd0KeI79kFK28eSOiwF6epYQlvu4k8lbwzSkA5ibq6JutOH1AGjHqNACWX6osTL49nFPmjuIMgcQIyepUyRNUl42o3xyCjg== 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=G4Sf6yc5W1T0n/9iZu+8F9oVdelCLpuyvOHSapPJDHI=; b=OKhlgBwxTxEFoJzETMe8ai8Smy6kMgvJyj6z/EFafQvHZ3eZoZYUMaWIDFUeLJ0+4n5Rr8kixyioy+sY/G/jLAvJ6uli6JUg8ambbdxf73TY6K6PpBKuFLfIqM3pB0AfrmqewRZjAqzh4ItOxeQH0Ec1E0hNhq9nBUEKOPTSVEaMeSyQTesGdVrkDM0c7myFPKlZoyUNI20pumf4oiOKK7J/lIhbqzqznMIPcSimoWv3NoLgiZF4fEzjavh8vE1dx5IlAKfGOl/R7S67I/7zNVUC6G4/Gp9+8pyVavWLhnNiuXGn/j7KYkZVZPf1Rqe+B63hL4cilDJRbntcVvQEMA== 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=G4Sf6yc5W1T0n/9iZu+8F9oVdelCLpuyvOHSapPJDHI=; b=Uon9JxBZNK16CKzrWbQ1wiKDY2qoQeLq3uCM2O+LYeaUJx5AK95GEoy+ZyOqpfYTyqj4aI6nVbMJ6ClBkZyX/vkv7pXtD8FR93kutESYD7pNY6UEjP7CW3AJE9ymMCvZut4mOEyAHG4WPKz8F4zu3bToTKaysajBZEMKbT5MQeA= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by MN2PR10MB4285.namprd10.prod.outlook.com (2603:10b6:208:198::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:28 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:28 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 22/24] scsi: sd: add mpath_dev file Date: Wed, 25 Feb 2026 15:36:25 +0000 Message-ID: <20260225153627.1032500-23-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR02CA0011.namprd02.prod.outlook.com (2603:10b6:510:33d::8) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|MN2PR10MB4285:EE_ X-MS-Office365-Filtering-Correlation-Id: ec7c243d-bc33-498f-e46d-08de7483c871 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: YQwHLruJS8HJJhWxM0xNK1FwS6EuuXUUeGayzAR623m8BbWBTZQCQkW+6IPIzBKUNhBQUM/pEAa72iUxSEjlQr6y/tvuQMXiDUj17vG6UCnmRzYMA5/X7WCATsg0KKscaCj8iqlK8E2vHihgYA0UdpccEQE5Z3wnPmJCAnYyBT5xIms3FcV+oHDmIX6HX+TZTWWXQRCyv2IZeMrlPtGJfJNIFo2CBsml2P53Amad9mCA9wMR/SimKsbzt9y0x1HxxHeIIiyLMWINUsbdayZ0eJlHTbryox5HK1pI01BMh1w8hjpPPEL/HzDZCI+slL3lE7356aH5gA8jdR0cwPHlWhPLzY+DkD29nU6txN6FjtOJpOVbbksZ+lrAD9VHaqBQQ5L761teBCHo+heDiXvVnC/S3JfxGhcvmVVqdDAz570b/TiwYEQISxUWGgrdWcHqk6j4APEUE+aQaRwVD7iKPQfMBbS4KQWcRvkBOrHkd+EvgMyV31rAhbPNjIyWSMpQkBdC9oB96nWqpTzkFHVrHx+EdcEuyL0cj3P5ZVNASOIZ1p19VblDIJRf1D27SXWdd1dpAPPpMmyo1eeDXgnBFMUB6hyw46Zw6Ooj+9ktVFMtJyL1IUOjgU0JTSQF+sD3tP+0apYbh0lng8C1RHkpRLXVSFUNNnMiJ83KpazK6TmkISYn9skiQbqDjhtvotJhRdq84vmvPLQMavyW/MXFuLFg+a1Ev/Zz6ITz8vdndxA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sqyt/TXF7/qoItnkytjE6TJaTzynSB1igzcWIhHVQkkpGALQNeTxXGxuj07m?= =?us-ascii?Q?lCR+RQqeG6wQl2O2GxDOEDDafg9HuX53wy/xAolmS0edZpyjQ9Kq2lLnQRD7?= =?us-ascii?Q?7n3/2G+Ji2134ghjLkjPpSdQYw9TERxXJ7zg6HVyAdrbizhDomV5YKMhMBfc?= =?us-ascii?Q?qSyVn0bfNdwvGDpkm+ppzcC7CwTMt1dMQzb1GqjSP8WzblEs+N54j0JJiuVR?= =?us-ascii?Q?es2KRAiUWzZ9YWUtQnSpIkmwm54RXE/3bvjW8YGXNG0+eXnvcJzZl/SF3y5C?= =?us-ascii?Q?GX5FKsMel0lNWEKgD1oiVO4U9PC74d/RiaSAZzRcnQaHvu4LzidoKwxHN3KN?= =?us-ascii?Q?eFDmBaA1BRUkaM4DVRGJWgm1gBH51NWb9bnpzhV4gUtW2klZ2ihpzxqFy7Ea?= =?us-ascii?Q?XBO1oUuJK0+XuuD3Nxd5ejG7biGUHZ+VXoS9QW7jMxkr3M0E5L6c8gW75B8N?= =?us-ascii?Q?59+DsJwVhviYhEC1kvM15sIgDyLcz2HiIqrtAUwzcjAqN7eMvk/AShj1hEzM?= =?us-ascii?Q?4eYX+eVoNe9DtrWovcXHWWTTK6E2mubvWdW0/sPg7eoD4qO++9DuEcxqqDBx?= =?us-ascii?Q?ChdXp0uSJ5M0e3+o9PkohhFBWLPG7dDjGxF6q4AwdyMQSPUgjEo/o66Fi51R?= =?us-ascii?Q?jw64/VCPE5UJGzm6z71D688lFrT+BamcTtUSZqT/VbzMs+7b1FDkiGV366jc?= =?us-ascii?Q?oZQaALmdTtqsJEqA/Gwcb5ISIQGPSNKqubP7uvnft5At22MiMC9L1V0m8o8Y?= =?us-ascii?Q?YicRrshW+UxtJaYvHMBKi47amT0VegKrfFPj/EBuk2s+pddvRJFLlK4tgEVa?= =?us-ascii?Q?+lGJtDwZgF5jTX2LqAim+pAV5asvIaqABhsZQiLgSe2X1/YOSQYzBk/kI6Jl?= =?us-ascii?Q?M7BN387H3mWDlBrrelt2bBqUKuoGdC7G6v18mC9ZsbRsydHNvVm5eTZ44uWu?= =?us-ascii?Q?42WZNtutKfG5xQ85XAGrA9lzQ9AyrLUGelzqyvIxUkiwP3831zKBkLIO0UMp?= =?us-ascii?Q?6EcPZNiq5VHfnafZ/IH303Ehfp+ihIXMqaiwMzyx5xmrY2W9Ou3Icz6Sy0gL?= =?us-ascii?Q?EO4VWfQ8OXd4sQhXH485d43On12fpqnOPr4QTFVK2EGTQ61aOctkHyNdB3aU?= =?us-ascii?Q?Qv7BbTGercD139A27EXQR62TA69mCs2Oc5eK6jcg3fFoSErcVO7wtyFJ5pMo?= =?us-ascii?Q?KWnIuQWOb8iGFllnwGVvxLtAiP+J+ixcESHCagl72vHfCMo66VUFmdLJEJlM?= =?us-ascii?Q?pNrjCg9Gmv8q0I6CJYYH673qSqXoz58wMuS86GJXnd+M4EcYkegJMkhv7LFt?= =?us-ascii?Q?pRAEYoF5DvIDdEZaqE6NGgpqlyN9Vadv6bdReYDAgFSCGJpHFAdRFEJBlxaY?= =?us-ascii?Q?wuHTr/6oUO27C2CLB0hrUsvU1fs3zAsE110Hd7oP/H0HeInsx5LrGRmWtr56?= =?us-ascii?Q?5HEJgvkKvlsPrCJwyiBP0rNMpCPU8GbVCc326u5NVhHTvRN4CW8ye24Hkr1k?= =?us-ascii?Q?7EBlOiswH4SNMwSyLtWPOe8D3sgc3PjDCBcJo7O2dtz6MMQVFJCkevCtuK6S?= =?us-ascii?Q?KYPR8fQbeWjTQhYt7Gpc7AEZcK4NkHV3UsTl5KwpdruR21DleuYlEkXX/mJj?= =?us-ascii?Q?IIhjneG9oNxYmTyA/jmdDeurYhKfwgHl3ZCsfNVJk/otoszkgTDnSZx3o53W?= =?us-ascii?Q?HOt0B1UL1mB8I702FT1WVz82wgOW92GXQzHMV0APO+KPUmaFYMQI/rkfXdyC?= =?us-ascii?Q?FkJMxRzNlyZR3iNRkwPG5zrEsmul6hY=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: yMTYrxDHo55SmA2X8MX68AI2grU7aaD57r6Nudum7glf6RaQD+xivgQIvb/4UMQ41aynqsu1ZLh4ApWSFJwINZ0V/uKscY2khQ/EhULSkMGsf9GWKwzJ6xdIdJS8wWt+uqv/asEW2lKyQLdTVTsjcqAVoGDS9YzaOJ2Ec6Dxve5JpfYEtpHehh+Wr3/ARSbo1mdKPIDRNH7BmYRlisIDWZIGWE+OY4Xc7fKNFVA0vmN9cvcO7bWb+haatXhAGJZyGkpA8LectTOFCAW/HykgLX5JW+epRD8qTaL/YLZFHu0e6zl+pU5tGWEjj8BPs9TarVPVk+7mwWxSxqsYigr03HPMv3JewqjAkDoqYNTJOM1kYVjOnrXiG1ifaYkNRNJr9+KgCSTimwf3KKgmp0Pc3mRskro76Hprq3ss3NmLS9O6UuR03Bm00Fw782fq4rA/maVuallMESaxManX45gnCxoSEZ0j8uH/xDo5Sk4oDUZ90R4q6dia7iyMeNjjDhweQizSzsUuPIvYWajUmwagK8V1ojJSG4TicluCjmmnDfkpEBySPNHBHMxX138z8yibpwB183871/CCnu9VpZAricNNeGdtO//K10a5ZSSmrMw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec7c243d-bc33-498f-e46d-08de7483c871 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:28.7406 (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: p4GOvMl49LVjdU4u4z8wYHYpDkbSklkld+ZkylO0AlB1PbDfRgZycuFulZUHglFA/VcMMY0oGUhKuDZx0eb54A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4285 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Authority-Analysis: v=2.4 cv=O5U0fR9W c=1 sm=1 tr=0 ts=699f173e b=1 cx=c_pps a=WeWmnZmh0fydH62SvGsd2A==:117 a=WeWmnZmh0fydH62SvGsd2A==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=CHiAKCXa_bqUvZA3_qwA:9 X-Proofpoint-GUID: 1dHNo4Z_7iOOe1y20_OyfyRrg4p90hTD X-Proofpoint-ORIG-GUID: 1dHNo4Z_7iOOe1y20_OyfyRrg4p90hTD X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX8Pngb3Se+3f6 kmbbLx6q/wk/jeUqj/V2qRaORMXHq7vsaUHnvJt9g/cbtDUUzzmARfPL4DAeqOjc2AYsIsqEg/S 4y2/13yMZkuMDFevE+IMGIFzlUb6DA1PvGmQfAJvu6+XtoceW4H3nA0t6K3s32srCYapu+rnBc6 MVuzz++YOzOX2GzSgmwzNvGfsfMd9ZMjbfbuFo1bwkDP+tI5W49Jj0jM0BRtOwH0YsUJQmjP/q0 VJYO6hnw2Zne4hi2VOw6QH1tjLy5i2kkmOld5Ro4EafDbZFs4qapdQ6/7Zu5fmZoX/m+axOZ8tj RXP9WbEpfhy6unjKhsHqh3X4U2nFB/uCAKq+devk7crQqaDPcbgzZNATRSHVt1Db2qB5jf3KY6j oM+NCbQLzFr3DCMRScpcr9n1uTY/uUBnQm1ZgoPWt7wB2zeLATb5ZB4VYoFgKkzQAaOM1cRtjpj sJqqMQpb9oKPJMpXpig== Content-Type: text/plain; charset="utf-8" Add a mpath_dev file so that the multipath disk can be looked up from per-path gendisk directory. The following is an example of this usage: $ ls -l /dev/sdc brw-rw---- 1 root disk 8, 32 Feb 24 16:08 /dev/sdc $ cat /sys/class/scsi_mpath_disk/0/sdc/multipath/sdc:0/mpath_dev 8:32 This can be used by a util like lsscsi, which would find that the gendisk for the per-path scsi_device is missing. Signed-off-by: John Garry --- drivers/scsi/sd.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 409c0937764d9..f5922a9fe6c1b 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4198,6 +4198,51 @@ static int sd_mpath_revalidate_head(struct scsi_disk= *sdkp) =20 return ret; } + +static ssize_t sd_mpath_dev_show(struct device *dev, + struct device_attribute *attr, char *page) +{ + struct gendisk *gd =3D dev_to_disk(dev); + struct scsi_disk *sdkp =3D gd->private_data; + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + struct gendisk *disk =3D mpath_disk->disk; + struct device *disk_dev =3D disk_to_dev(disk); + + return print_dev_t(page, disk_dev->devt); +} +static DEVICE_ATTR(mpath_dev, 0444, sd_mpath_dev_show, NULL); + +static struct attribute *sd_mpath_dev_attrs[] =3D { + &dev_attr_mpath_dev.attr, + NULL +}; + +static umode_t sd_mpath_dev_attr_is_visible(struct kobject *kobj, + struct attribute *attr, int i) +{ + struct device *dev =3D kobj_to_dev(kobj); + struct gendisk *gd =3D dev_to_disk(dev); + struct scsi_disk *sdkp =3D gd->private_data; + struct scsi_device *sdev =3D sdkp->device; + struct scsi_mpath_device *scsi_mpath_device =3D sdev->scsi_mpath_dev; + + if (!scsi_mpath_device) + return 0; + + return attr->mode; +} + +static const struct attribute_group sd_mpath_dev_attr_group =3D { + .is_visible =3D sd_mpath_dev_attr_is_visible, + .attrs =3D sd_mpath_dev_attrs, +}; + +static const struct attribute_group *sd_mpath_dev_groups[] =3D { + &sd_mpath_dev_attr_group, + NULL +}; + static int sd_mpath_get_disk(struct sd_mpath_disk *sd_mpath_disk) { if (!get_device(&sd_mpath_disk->dev)) @@ -4461,6 +4506,8 @@ static int sd_mpath_revalidate_head(struct scsi_disk = *sdkp) static void sd_mpath_add_disk(struct scsi_disk *sdkp) { } + +#define sd_mpath_dev_groups NULL #endif /** * sd_probe - called during driver initialization and whenever a @@ -4602,7 +4649,7 @@ static int sd_probe(struct device *dev) sdp->host->rpm_autosuspend_delay); } =20 - error =3D device_add_disk(dev, gd, NULL); + error =3D device_add_disk(dev, gd, sd_mpath_dev_groups); if (error) { sd_mpath_fail_probe(sdkp); device_unregister(&sdkp->disk_dev); --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 1684F3F0769; Wed, 25 Feb 2026 15:37:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033878; cv=fail; b=WHfiPttHIGlQpFimDs3Ljeyv5OfDIgA6kGkK2O2p0svPih8ijrzLN9z+sSCIOcIi0uOC8I+ynx07tb2biKErwvA2+8M2nXCLLdE0mnjx6dMgJ8qM6XuqNvCdA+ZRLXADkVDS0HiDn8F1bvPJ2aa0hYKKrg6aPXVhr5hDb9fAeEs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033878; c=relaxed/simple; bh=P3PW0I2prMNhHNrzI0dqBfiMOJ3U77orHBSTXwds3qI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=jpinh93w7ylvIJ8ID4JsFtQj+OKRbL/TJIltWeLoKdH3ttLNfTepNC+NBWQIaQGV6FmTnHjsLW7QP6rI5xD0GRJr5eyvL6wArfDwPX90cxxIWF9CLhNMLlXsmCwwHh/r6WEOVIKbg3ssts1l+AR3NzEiKpKsoEIWDKLscGU/VXw= 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=cRsZDxTX; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Cugp2wKB; 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="cRsZDxTX"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Cugp2wKB" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9W7Xu3927984; Wed, 25 Feb 2026 15:37:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=1vGxw/15TPw6vS6ue/9wJx5FGbnAq6RN1yzDV3/yivM=; b= cRsZDxTXKnOQ32oarWOtS6lHk7I6TWIWA6/Iqhi/jtWlSDUfpKejf44+zskiFp7P XFbHLP8jqEQ/CptpfSGlw591ggfgy6uAmGJbGTd9K5AKCsHEl0hrNnMjkCQjv6B6 tkSOHciIaZUfco7u3Tn2/VypUcrKEW6qjGU6vH4OEXEzs9jl74KFSX6pMSD9AFAC OIoJ69B0kUcIObZry3/VpjeCMbvowKC7xLHafdoHAmBq14wvJLSeHoEE+7lmHpNM hEHr7gGJi+e4k9y6HZr54hvtt9cSj0ZDMnI8hevBETC/SpzxGG7Sq0KhNoWxVgGq pMD4A97BH6K0n+Gk4bJZvQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf58qee0t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:39 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PDo7Tf012482; Wed, 25 Feb 2026 15:37:37 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010056.outbound.protection.outlook.com [52.101.201.56]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35fg0sx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TGnB3tnkB3tI2EU2iQumJZhaZTxhn5zPxQJbUbyP4u0aOj1cAfLZEh3sFaWZFK0A8sfxm/LREmUWNfO8EblB2j2flLzO76uiGGWemwm1bSIPEoOkK8C4j8naLy+T1KhYZmRzgFh6jXo5Y2iXywEgOYIW/FICOqqEB9NoZeM90Dr10Y5U6GPshVz6eBpWwDATRF5tSv0PY1WuVzbZ71rxuycTWBftBMYhwQ78mDKbmN4CLCVFuQF2Cs5l2a9oCe8NSxbwM+KiED2lV7NY0y59zuponiVdhJgDXyKEmuOxrE6lwuMEz5YVrsMSwpOnzbQyXVi8QsRX5APN92fafRCZRA== 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=1vGxw/15TPw6vS6ue/9wJx5FGbnAq6RN1yzDV3/yivM=; b=N0ahmP13Bko9ZHNTz2TljPnCDMthObvKk84/aNO4C13u7LMnoGUAT/DXMVH2pBlvvAzhpgTm4E1w7o3OERrhTnl04wFEyH3Upm7YqvhRSJRmcMQ9NbgHiFpQaTFERSt/wFS+9IVWu4FihXOZH8CzHDFJsSKclYm+OVrzloHUNqeEzaV7mLvrOcX6jbc9D3lWxUeVHCAn62FJhNm8ZiXq6msVVeLDnoMlJFddFqXeGYbmiJWAenWsOtPwx9bKeEVrrNPyxu3qYt55oImW9dvbMpJRP+ZIlFRr2fIGjal1rSCG5OW5guiWFI/x/Y8abu+86KmSE+i9kwrYF0IAMR/xjw== 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=1vGxw/15TPw6vS6ue/9wJx5FGbnAq6RN1yzDV3/yivM=; b=Cugp2wKBd/MABOWl2UiIQd8qAyYlLYQSS8TfbaIsCCQ+UHSqjVnNXE5vx8jv6Nxn3sxsRySdFpyJJirvoHnDu0lJimu0COjQIIhS6/HkxFPhxiMjbmqv+WGg6H9Djwl0WN/5mcnSoFaU7LWH3GGwIUS0MTeC1xXck1/jHmGq+K4= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7956.namprd10.prod.outlook.com (2603:10b6:8:1bb::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:30 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:30 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 23/24] scsi: sd: add mpath_numa_nodes dev attribute Date: Wed, 25 Feb 2026 15:36:26 +0000 Message-ID: <20260225153627.1032500-24-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR07CA0048.namprd07.prod.outlook.com (2603:10b6:510:2cf::19) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7956:EE_ X-MS-Office365-Filtering-Correlation-Id: e37d1e7d-5ce3-435d-3606-08de7483c9b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: F6TKMVIopNvyexvA//hynoWjLvQEAfrVLIhl5R9P/JNs+DabJ+3tsteibTn4733I2fr1pEq7P+3fXIt8Dl12l7cYlloSV5dt9Nlp2xuXefHO2cpYHgB647x7733Mp8lqGagXZhIKvb/x9Jnli/erFIvKI8JCib+C4j8vpbXSSIvMARs4xHGsWr0JARhUUjGYSlBpebDv52qRcA++IxmmQniMXxmPlYCpijV+slAtAY07d/jh8VhWi4tO/dGfKqKsuwAkToYcaky4tUCAKhKQud8MtZWtc257qhgxFIrV4n778icUYndv48kfa1fi/1kyUapK7IZBrW3wQ+CeQGTw4ZmbRYwdg3tT0bSQ+K6ktlt22Bw3Lnh1at6F5ThH71kCfy85SIVJMbjOR1Lxp4D+aXCgRhFSK+/KxBh5pZ6+8IwtlefCA+CZLTEM4eag6+5GAOkCu4ykeSU/kgWhyGtHsFXaeKjC6ym+0emw4rC7uTYOXThBejek4i2zV0YKBHZ7nxXZA+o2lmSLfNnlZrWc676lh7Darm2wP993m02GJZTXTDncJRN7ZmWPFiCL1xXp3E5polu3B/b4mm2Lx3ZlECypLrCmM7JMKw1vUalavA/F9l1czv/oHc8UjJ/Tb6Ft4y7S8qWXCBgHSQD53sbvZMsP2SZZCIbnRrLuJWUMDsx4nm7n8GmnZAokNMi0RKPSiVrMFpgb1rUDONqJTLsc9G8NXZchUjofAqj2WN+lvxY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?68OgS97B5ShFYRfutarlAombBpxUf0SiScuVv6F+qcZpJvlt7t3X1m+eJtlm?= =?us-ascii?Q?1pexbUNW9qzDjxXjB0vwuDRCsp2WmicVA6lIVjyVcASl+tMrTI//owR1mKv2?= =?us-ascii?Q?k9Z7LXgiTV0ZX6Rd0hCULqA5QWbSiQyNu74tyBrBKmUkuFQNv5GhLx1ptnKv?= =?us-ascii?Q?K/FQ+t0T1Kroxz0pGdy0yO2CwqZbN0q7Y6jzHBw6yhyh3VN47rOTRhYhHcTH?= =?us-ascii?Q?QldcL32XucHEtsDbl7WgZZtF277zaaqDo+11hAl+weu8qxORcPIcQCIGuL6f?= =?us-ascii?Q?vxwVLixPwnG+Wcf7NPATXUkYrsORBuE6Dcg2J8rmdl+zDRSZYXxmgeEOLY1Y?= =?us-ascii?Q?V3GpNSj5kmtSgOoE6SYj2zmtMNs5z2gcf/sq8S9KV+rxnQHjzk/RpvZl4YqX?= =?us-ascii?Q?GVbciZdE05yLHhQzpnl3m8FLZ+YkZV4mokqrZE1wgMg2f5LmgoeykPcKFy/+?= =?us-ascii?Q?4fGGklpXF1szKmkRDlsXa1JfqhYWuUcWtYLXFDbiJFD3osXVJom1t+Rn8E3g?= =?us-ascii?Q?gXzCKzAG675Pv5MIgQ3l212lu0FCSJeRqy4CgV1qDO+tam8xcW/chMSDn8Wj?= =?us-ascii?Q?yxXm9tpWrSF5pWKD7XfplSuDfgr7ERp0VmlXQQn1Pj6IM7fYbcLDwhMfUmcC?= =?us-ascii?Q?KkB34SgNrUk94dQeHMa4GDy3i4zPDygUD9NYBUjGTwNgLNnu7bV1pQig6kju?= =?us-ascii?Q?X0X9+PcoNArQ7/1l0EihE8QwTnaC2aSq2CFiTr+qy9o9VhVDSCp+j2/9OTtg?= =?us-ascii?Q?sjVdp93S6ty9ec+bCFYR0nlTG1oXe5DyME0F85mikkxCgE9dTR+i5fMIZtPk?= =?us-ascii?Q?3+p6Zg13u5GHQrSIRqiMWY35M/FjQ2y+Toe2EJ4bgsmT1+rz/w0jGY7+Hz9+?= =?us-ascii?Q?pNUTjRKrJJqLjjE/7nm2KVZKIEFx9e3cRq7LH1s5zQcxM5EvKEaNQTx2RpQJ?= =?us-ascii?Q?GfJBlMepuEF7RdqBn7Dc73phoc+NI8zO+da87ZvyjQXIYyrRYVqJFI1KH4Wi?= =?us-ascii?Q?ocXW26gsHngkZlkNJ7JqWlBhNqsdxFC6EEM/yDCQboDP0xuyKNSfXv7ZLS+J?= =?us-ascii?Q?EhMo0WUbiKGKwGzDDbEbRa5QcL216t9VlefTPkoBIYEasYt7psYPePkl1Y7/?= =?us-ascii?Q?Eppz1j2Ru9ZIRS3u2H5GoBeNOJ4EMtfiV3p5JMXYFM4yrq3wBrFYNhGQ3Thl?= =?us-ascii?Q?zvbcUDFhvu7kcyACo6sfUdTmuRHVg1SG7XOhPcfF/elEfbtd+wYT0UfT4tyM?= =?us-ascii?Q?QkKFc1Zz2gmsQuE3CLi0vkGklg5zxfs1w+AF6elhNO/sKnNkxuPUt5IhbBeX?= =?us-ascii?Q?yvK5AnWEP1SkoiRwe2MBQ/tzvc2mQLqdUKmXE//czE1oxBO2OeXYpEU8oSLK?= =?us-ascii?Q?h1dJUGrMiqJM160X+Z3+VY4O6Usi0vYUANQCEiHKoK3Yt5oqRwe3LVHuJc92?= =?us-ascii?Q?vX28USs6HAl8ts9UCOf/rx7IcaAX/ZReI+AriLbDvcEnBdclrKWxytLedY9X?= =?us-ascii?Q?+VTrC27OZSdwd7AVVQnCyUnnz5SA7nyFl7UJfBUAwrvSSIx9Z0N3wzpQPEWN?= =?us-ascii?Q?oVPdwOfqLsV8E+a2sHrHDuvKjmactQfbLun+JmCIUrGDVzvNzPfTs3mkAnYn?= =?us-ascii?Q?djQNNKRJ4EP6Uk/+tcPQa025NhTFIUJvymsCtPeBcIPqWU3gIqAqpnEDY+VP?= =?us-ascii?Q?vMwy5+RhJfC4TIGdayuT69i21nfXPmLwk/+msbZ8Ef1QfffZMSwvlzzA+cAJ?= =?us-ascii?Q?IhR0LcHkQwBqFXxN646TRS3B2o8RLBE=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: W/t2MS8gvG8+R12Xv2TWY1GkCzi65hFHhZ+wYhZ6GbBVhDzGztOPYPZ+WM6CJxHazG8jbQT5xop21s+Z4YOQ4RqrxJH/1LXAIzZHEueDIhaxZwEN9PaIinZFe48KcFJq4MpxGjOYXZnzDOm7E0bEa6opJZIrzBCMhi9ruaEjg3ZvAFVGchgWsjRunnjsiY1Rwj4wqKvN8COtL1UzC83ibMGgGlbJpyCGQag/nYYuw4fKZfQjoF4Zji+7ekPBbQZ70q4l9Ob8s+bcdLnLKR+OUcJ3JZgrNDfdlcGt1vZWZ63fw6tkX07ADI3TKByv+uaflzTg6sdX52Tsoq/WTMeFBA39wJ8g/UuiBorQWFLNriggnQddZVfWs+yHUoVjdd1pdAhcDekTkZLxzzM0I9xfSUkJ/wZAUNJaSiYy7lgREQaOOduF1XQNgk9YJgjhMu5hz4oXX/CvJVxg3OhOqAbExS+/IsWrUFG6Ow4SzNxFJa0O9hMnikSx6NL3ACpP8y3RSoeXH/dqmAgnLQk75xqtS9+hDPpxhIYPg8E6Hl3y0ZH2b/+5KndcIzvg2p8yf1ZXKEd1FW3f74Gyyt7pZf3xcOPeITixPJoW1zf78U+pRJw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e37d1e7d-5ce3-435d-3606-08de7483c9b4 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:30.8093 (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: QRHa0xVmMFCdOVAeKYSdndjlffrNnY/9/C533q4b65q/5CS2FEqocT41cTha6L4XQUhDeBwbOk6QCRGqMkvAZw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7956 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 malwarescore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfX9S/+Yf0xjUel p4DLvbdg2kcLEoyksIE0NwPk1WPDAdHW+4Yd+7YM97jNkWvne7EG0KtTgKKRADolvn4eg8np3sg g8YDfM/Jry9TZtufHvvu94AyifWqeAYFdxlGoqW9TGE6uHXrAbnRDtqizimIV40N/Yr1FpUtY2P 357Q4oc1yQUZ5rgxgonkKu8lTlwHVhhNLyH7fS7Dk139F4+SWqDpEvHirADtKtPVQDPrzn0Umnu sl1czLCnCTWYI15GHEphuNSg+OsU1qgySdU1sBRAd9viC3KiPjzbbAhTzWBAACgtfGJBNrv6lVB zLCsLexJ/nXXIOYOEVTqvafZE1hDyWSednEg3+FmjUTvwdMQfOc1LxYxxM39417T0taCtsV7Yl7 lBxVRdTpgcv7MUcrC0kYF4H5/wNLx/LPxEzuNzzjt3mTG3F6ki5UJwzKEhfi61RiR9XtcKm7Xw7 sJf0E+5whiYPzuNAvr3HLZKSZNpfYfQZeNbj7EGM= X-Authority-Analysis: v=2.4 cv=XNc9iAhE c=1 sm=1 tr=0 ts=699f1743 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=P2_R26dytZ8aPJic-48A:9 cc=ntf awl=host:13810 X-Proofpoint-ORIG-GUID: MuHM-sU3RVXZqJWJkzanXoOA8Yfnfok4 X-Proofpoint-GUID: MuHM-sU3RVXZqJWJkzanXoOA8Yfnfok4 Content-Type: text/plain; charset="utf-8" Add an attribute to show multipath NUMA node per-path (scsi_disk). The following is an example of reading the file: $ cat /sys/devices/platform/host8/session1/target8:0:0/8:0:0:0/block/sdc:0/= numa_ mpath_numa_nodes 0-3 $ cat /sys/devices/platform/host9/session2/target9:0:0/9:0:0:0/block/sdc:1/= numa_ mpath_numa_nodes $ Signed-off-by: John Garry --- drivers/scsi/sd.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index f5922a9fe6c1b..52d9bc34bd666 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4213,8 +4213,28 @@ static ssize_t sd_mpath_dev_show(struct device *dev, } static DEVICE_ATTR(mpath_dev, 0444, sd_mpath_dev_show, NULL); =20 +static ssize_t sd_mpath_numa_nodes_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct gendisk *gd =3D dev_to_disk(dev); + struct scsi_disk *sdkp =3D gd->private_data; + struct scsi_device *sdev =3D sdkp->device; + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + struct mpath_device *mpath_device =3D &scsi_mpath_dev->mpath_device; + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + struct scsi_mpath_head *scsi_mpath_head =3D mpath_head->drvdata; + struct mpath_iopolicy *mpath_iopolicy =3D &scsi_mpath_head->iopolicy; + + return mpath_numa_nodes_show(mpath_head, mpath_device, + mpath_iopolicy, buf); +} +static DEVICE_ATTR(mpath_numa_nodes, 0444, sd_mpath_numa_nodes_show, NULL); + static struct attribute *sd_mpath_dev_attrs[] =3D { &dev_attr_mpath_dev.attr, + &dev_attr_mpath_numa_nodes.attr, NULL }; =20 --=20 2.43.5 From nobody Tue Apr 7 12:21:55 2026 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 A67FC3D648F; Wed, 25 Feb 2026 15:39:21 +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=1772033962; cv=fail; b=q32DVSZ3BcU95VKIJUaxml+SCNtBNM1cYmX6VSGwpz4WKvY531NeXRPomykIZkZ22faYVWPo8H4NZ16XwjgHq3pZuA9lJWPe7aAEILktvrhddyF8CiEqjGl9YuKDQ49ohkSPSXPDbraj3LAKW0ELucEZaZxGeP1Sy1be29r232c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772033962; c=relaxed/simple; bh=UcS/hL5v9Y6MWWPpr3U99FBjtLbHDmzhOudRde7sgoM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=WGglH/tLwl6/r0mMJNmTzTkUJRUMV+15324DblHM6bJSOdmFBnawBTW270rA7IjxuhvRconIj/XTy7Qztrb/x23h/NtAcwosgn8dDEhUvvEqdRi/bUQ1vXRt0tFOuAy8KbqKq2jivzo0t6DIqXTgG0Co21KgMDyL5kD578p0VUY= 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=kNbLRUaX; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=S7laML8X; 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="kNbLRUaX"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="S7laML8X" Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P9pPXU3928883; Wed, 25 Feb 2026 15:37:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=WWxpUCFsWgEEbbc7FDQnNOP4yzwPy+O9BxXyp0IeHaw=; b= kNbLRUaXh/df0xca+M5wbJwa0BTF0/DPBrHeP/ublF99YszAtc4IHqPULhSotb9+ exy9YuSY1ynBL0aRN8yEk/lBa88c+0ChZZJ3uWsMwdaeh600o3UtnEnYMdIRmwrc D6veK9fW20V3TlvHQFdAOdEbd6m8jPqVEqGTaHmoasKTLAPvaJVzPLJfDGgLT2vh veqgX5QT/FaC/bgTcPdhGqLfYRSOOwbjBRG5HQ+Yi1GvsDjZG+DkXDbV+xOOd0nC GIfhQtunrbIh9EARuSM/1MnJEK+nMG+t7lO85+NDdmpxbNQYP53Ha9Z+Etvw7paR at9z8a3Zmn1PN7abhtGN2Q== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cf58qee0w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:40 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 61PDo7Th012482; Wed, 25 Feb 2026 15:37:38 GMT Received: from ph7pr06cu001.outbound.protection.outlook.com (mail-westus3azon11010056.outbound.protection.outlook.com [52.101.201.56]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cf35fg0sx-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 15:37:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u7NRoVGWVmmDhh/g/Nw6dMS/q2knZakKJFHZ0zEurqXqnxpvKlNuj6OSf2jcqaF75WWn7ir7sNxtzXRtP9NENKBgQeA+IRKAlm3cmpAVihVCMOTKmxqzz6MIiC7hDJ9+uenrlneCJgggvelEGLfBb2cYDhX7DVjBrJWjl0U6QQErbhHZP6lm65oG/MXyth9xddN8jtJwraMIAv2TvCOi+uV6i4leOGUKPG815DlphaEF/Czi3fa4m8tzAz3rLTf7KGHLl6IxnbSMCfzbX/ZPIS+FEQYIlp/yEnVrtN0nFBKuwyCL0K2g5qdEtDJsvICd7cow39gqYBjoXSZz7PgPtA== 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=WWxpUCFsWgEEbbc7FDQnNOP4yzwPy+O9BxXyp0IeHaw=; b=cAbN83ZVukn15Edfs/POvrOkUf7IyF00p1vEAD98P/WUMmC+MrPVdB8IZbeEwjMkfVz+oWxk+hv1q1esIclH0gxQDLRBwvu1J152lEW89kWrFh8dXdsutTo7NMee5AmGzVe/aKqFrRlkIRcMbUp6mxNMd5myW3i7iIGm0WtD+tetxwb7nDQHgWs1juj1T1D9zU6SlBv2konJvG+soKizz9cgTu3EMQL699zudNKHGU2In9BSU6ptexiR5OAO/+Qh3Msc18NN5q8BsabV3J52mhxmfEOy6/5YjjBCglZOmHyW70xTpQhPIqnH9Z7BvI2o6Go+7ET2oyJfwNFehea0wg== 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=WWxpUCFsWgEEbbc7FDQnNOP4yzwPy+O9BxXyp0IeHaw=; b=S7laML8X+h8DBCK2EhUul7OfC98od8mNMUUfcqBRHZ87MmuhA4KCtAGCiuV5H545qbwnDy+I+IlHzzThM7i6SPRQnVn5Sw04YavLA497mC4KEgPJLZnSmjO3/fOu9xYVUxcee2rrjyDhqjeGugE+d825IYCKJihGF8Uc0Y4sVNM= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7956.namprd10.prod.outlook.com (2603:10b6:8:1bb::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Wed, 25 Feb 2026 15:37:34 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%4]) with mapi id 15.20.9632.017; Wed, 25 Feb 2026 15:37:32 +0000 From: John Garry To: hch@lst.de, kbusch@kernel.org, sagi@grimberg.me, axboe@fb.com, martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, bmarzins@redhat.com, dm-devel@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH 24/24] scsi: sd: add mpath_queue_depth dev attribute Date: Wed, 25 Feb 2026 15:36:27 +0000 Message-ID: <20260225153627.1032500-25-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260225153627.1032500-1-john.g.garry@oracle.com> References: <20260225153627.1032500-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR02CA0014.namprd02.prod.outlook.com (2603:10b6:510:33d::34) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7956:EE_ X-MS-Office365-Filtering-Correlation-Id: 60c3a135-75a0-4eb1-f3f6-08de7483cae3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: nzReQfswA1nc2KiI1cavZJqEhAjRQXgh5BwRqNf/40INACjsfx7PRfiqvdOKTJ8JktFxSGraWIOy/O+wSFUFYkEuKZeOwCeWDKSOwVmj596G7SP2pWm326dDjAwJuWX1S+YDTh9Zzdgg62kfI0OjCVpsLMv5m3NM1tyOKWMTBFWBM6MaumqT/hLfIjq+3N1yFsQ/Outkip1h8Xf/v0Qz+tqu9hTqdtqp8JmS4oghB66R8oJyKfBEY9h9rLvgYRXwXsKVziXnMrn4pZsCm9J/S2r0sPZPPAd64aKEFHL5DhLoNQ/7wDvVaoZGrWmz0mMUPG2h4DLCmKjWWDemxGzjnwiFEedFl7PSUNBX1wIwoksRuzqf/wmdNVe7lRxphAhcGeSH1DxwLd7Kww/FAmH5yxENTz7Ex2e7vd/VvNTIWo9LEQmLqK2AZ5ZaJc10IPYKyFtM2mcH0oNQ1eFsNdzmyY8WNegeYtW8hyJQaq1MyNmWLGz2kmvQXtSDUNjR3nEf0YXoaKeoWFscuSc026f+TinFMS1JWS9Z2tUZuikQzXkp6zsdCQzxN14AV/DTZ9oRHBWbk8wRwUpUtKSOxmUBDfFnM0wnxaUz/WGGkkLNWBrApGLY9GpIOHp9XI+7Xkag+JuICs6IhdTESDqo9hwD7b95IkL+U9HhGvioL/9SyQ/7jJUNJ4se8b8pGgrdaSJqX4T/6jLsG79aeblfMKE3gQhKmn8tQ51A1uFzuxKTERU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dF3hmz1ghvxcich6S5Ips7HMDxjIAmzEj6ersy/e6cxRxSRH8TXVFHimOBT9?= =?us-ascii?Q?zJsfjGfcezPsmoHsdcJQ+InT42Q40g9VhjBC8HWlNSpaCJPNTxUIfUksvN3H?= =?us-ascii?Q?uvsrxNhYaPmUbm4xtYoXGzW4ov37OYDrHaIJy3xb0fsyBNsg868wSKHZCtg2?= =?us-ascii?Q?Z/9Q3EVK5RCxzk1FEi03Km/qo0+TQ9rBoaQQGzcgQq/UShdVF+WLRiT5gVOe?= =?us-ascii?Q?YQ0iwRUBuIMGubLnJvPJAIWjs6BZVJVKziDRvVNLSuTQZTsTaNzj/yXNQYPi?= =?us-ascii?Q?yW2S/+uf/aEJEOpuQ3bM/TSWNOjkgo5BdqzA+CfyAMsTGy7Q9BWjviIrgPjl?= =?us-ascii?Q?YBEqpm1HQljzi4ViBRMSz/WO4rG4yCuWpaPie8HnlXt0lyvXI5BLs22WhmZb?= =?us-ascii?Q?vxKv1rs0MY7jSK6+5kEJSW820zgjxZdYOGzdDdADIsdlOhiMMQHU3LueWJpK?= =?us-ascii?Q?nIr/h+ZJH1U6nzqCF+VQddEEBWCI5m627RKyFVZmVAgEVSIq6GjUuqW13Vm5?= =?us-ascii?Q?Zq4skKzT2RbdRBcWFPoXrAjIfuxS0Lw8NxERIj88H1Y6RRgCzDQmCIS8ilii?= =?us-ascii?Q?ARP9VY6FOnEVLnGSb26eWF6+9JoR8YotvS/crLk2zNsMEd/YQHzGtaFV4EV0?= =?us-ascii?Q?zfslHpjtrA0i3jABuRRclfjUH/RWsYKEGM/Vx9UmmXtgLwPXu7wSCrsJsCdV?= =?us-ascii?Q?MB32R7P9G7McBejQ9pzBDGE/oh4AQaiag0qnd8vx/Ky5knK96ntXw9M2/vsy?= =?us-ascii?Q?SaG7OmJM/8X9sQNxqPgDITAbZK2Tv+yYZEU0+G8fYccrVKUsz8wHZaaMgG6f?= =?us-ascii?Q?yIqz8IZ45NXk+IfRjXjw1gmOxXdRfkpuuX6kibvhcE1uASHNawA+FM2SfXw+?= =?us-ascii?Q?dTIJA/C5q9skXqrUmiwGkpJP+9RqFAVXtayWF+VY4K9PVs5HLwLnFzdQhgMV?= =?us-ascii?Q?9hbe2fmWa0kKbVva7dGqCio8eTcgFJiWz/49ZrAyhGMEq3gS/SSG26HqKwkE?= =?us-ascii?Q?+UjJe+g59san7kaSm6p798SwZsLpAOonAzhumLavJd8fQofw4l1SCOIWpfgR?= =?us-ascii?Q?1i2U40jD0gRULA2feyTO+DwsmXqnZhvyKfchKeJpjgp9xgC9eM3wjrlAasVr?= =?us-ascii?Q?Ui3YQu9fe9kbgNkd10lyKYM3zwiu4Rdd0CpKyzcDYpmhKMbdYyXwyyC9raJe?= =?us-ascii?Q?cYP5nVYQgB1rv0JEY0MADwftfMj5EEUVSX4Jx4bt9Ex/f8zgPRBN5xPlpb88?= =?us-ascii?Q?vtp7F5yFb1M1ScVopq5moICUDsDVbWKlrRLyizZuQv4EpcSFuN3hsIAHNiPp?= =?us-ascii?Q?Bale3nnQdr54VicrfaMCle4x/yTf6FlURKo+24ddNbXu+Y2xFSXdWo89RTY6?= =?us-ascii?Q?p8+i7+UJcQ23FyQsvTug9HOL4Yjkg+3gdrLFQpGKH6ZaPBbKkqiIOmEH2Frf?= =?us-ascii?Q?fdHzDrFhk6NZ8Y6PAarkkZQWr0MklBnH6DTsAiAlMrn4DkfppDrMjZsYAt8y?= =?us-ascii?Q?BYq2J+dEsL7eVYtdMgnnUnbzxURWpnNmsQfA1QFc9miu07M8FbZveVZa0ZSA?= =?us-ascii?Q?eWbK478/I/o57r/4v0mKMfmI5JvIU/UahM1xagUSeTFU7S0hBxb+9sW9eWUF?= =?us-ascii?Q?IYFuZbbNSK5GeRgbqUdYE/kp3jjxEKm8My511HV8YcqUBJxuWoEgFSJWtlFb?= =?us-ascii?Q?hCH0JWyRktFGknajV9uUCos87siWitbhQsJcOSoF7N/VShkaGqZblzWsScQo?= =?us-ascii?Q?GoeVDLVdS3I/mV5X5joHSXl9cXf58ko=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: s0xUW6dFuHcJuuzRJd5MOcLlBV7GJNPO8EPmr+STGoGjRM5OIjP+qeK2LP72Pb/UPMR7sTTqFge03dM+CxlfGPLSg5Zhb4z/RwS/EQAiJEgBVyabnvrNF72X/YOYd1rnO6h1xGdmJKHWRqW8XuI07wNyrCG3haRHa5UILg9NGUKd5eG0WulJ0fwqt1axD4j04yNCaS2PZr69feccipLIYe6d/tMS6jBLKhqC3ObTOrzkvpTk+lEaF8Db+4WhXR35fGBKlydkJMxzQWeKkoV0wUiy2PRtk4PlRaDO5ZRPRKrb27Okp8uYdR7ROzj/94K+i3kjHFnBdttj0wnWL2kg+rpoy3nDxty0Ifld3EdNKYAuGeW7WfDevhaYYeYsFLb5s9QTknA0usCQSUmR7FVpnmPbU1AWO8HtUvps7eTcb31od9WIlL7TzYybFO98YxNH25F1s7oXv21nsTv4GqzPVSZ4biKBgQTgna0W9EW7y01pl/lmOAHwdZ/BtaBs0q0Tk4Qkbn64wrx7ivkJQs82TqsHEz/a0Q7EGOYXQgVstCT4Zq+SwvAeOMbLZntgzVToSZcbT4eOV9kB25mENU/+GaQ3rClVZjJlTn1l4V0SF6I= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60c3a135-75a0-4eb1-f3f6-08de7483cae3 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2026 15:37:32.7966 (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: rxV0Z5SHmIHrRLJjnFYJ0gZb4KD3VH0vnS+r52EeQSU0btSwpG0T+aiWTlE7yxpEWHFIqu7uJTdNg5PmFJCEqw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7956 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-25_01,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 malwarescore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2602130000 definitions=main-2602250149 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDE0OSBTYWx0ZWRfXxgEZklGFkvzI FXkJW/FkzfuT4l8B1svJzMI2+V3e0w66R64RtQ/q+kwyIMMZctLq9AcZXZtZXLS0wz6RMKnQO8w URymmAb3bw2FoGn7ljGkCgUB3aw1fsLfEUcceLhaXVMtIOIDDEMjPN3rUYCPmDH+suwksz4SYc1 NXG1/CapSQ3YR0PGYGn/z0TdgAApbzyXINGhDbG8ECaqNmMdo6SQ13dRu6ocxRZUVHHZ9bGVarv DObNVLk/9eyGvyaCb7bpRz5gSLLzoTPOPw0rXu1u6AZJ1tnXG2Y8hdS8nOkcVGKmDQhn4/nRM7J IOqu/nQ/Y7NKBr6+EwLc+bNsQSlLCm180Pj1sIXEgWKp6e3fnJVFUwZsZiuI5QToPoFtfZaVyrA s3WZQtO2sBvrm+323i61JX4s8l8j/REgmDTUUq0g5E7uLU+TZay6D1Wf3jytdmgZ1OLTLe6//P/ ALGZKG2InWBK6mPv89RCmUAyCo07ue7xjQY8Quyw= X-Authority-Analysis: v=2.4 cv=XNc9iAhE c=1 sm=1 tr=0 ts=699f1744 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=HzLeVaNsDn8A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yPCof4ZbAAAA:8 a=bA5FzAUjrTEoIiOIIUIA:9 cc=ntf awl=host:13810 X-Proofpoint-ORIG-GUID: L5WfHXMIQnk18jXo1Y61zFSEmsC-XYGK X-Proofpoint-GUID: L5WfHXMIQnk18jXo1Y61zFSEmsC-XYGK Content-Type: text/plain; charset="utf-8" Add a queue_depth file so that the multipath dynamic queue depth can be looked up from per-path gendisk (scsi_disk) directory. Signed-off-by: John Garry --- drivers/scsi/sd.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 52d9bc34bd666..27f64560335a4 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4232,9 +4232,30 @@ static ssize_t sd_mpath_numa_nodes_show(struct devic= e *dev, } static DEVICE_ATTR(mpath_numa_nodes, 0444, sd_mpath_numa_nodes_show, NULL); =20 +static ssize_t sd_mpath_queue_depth_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct gendisk *gd =3D dev_to_disk(dev); + struct scsi_disk *sdkp =3D gd->private_data; + struct scsi_device *sdev =3D sdkp->device; + struct scsi_mpath_device *scsi_mpath_device =3D sdev->scsi_mpath_dev; + struct mpath_device *mpath_device =3D &scsi_mpath_device->mpath_device; + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct mpath_disk *mpath_disk =3D sd_mpath_disk->mpath_disk; + struct mpath_head *mpath_head =3D mpath_disk->mpath_head; + struct scsi_mpath_head *scsi_mpath_head =3D mpath_head->drvdata; + + if (!mpath_qd_iopolicy(&scsi_mpath_head->iopolicy)) + return 0; + + return sysfs_emit(buf, "%d\n", atomic_read(&mpath_device->nr_active)); +} +static DEVICE_ATTR(mpath_queue_depth, 0444, sd_mpath_queue_depth_show, NUL= L); + static struct attribute *sd_mpath_dev_attrs[] =3D { &dev_attr_mpath_dev.attr, &dev_attr_mpath_numa_nodes.attr, + &dev_attr_mpath_queue_depth.attr, NULL }; =20 --=20 2.43.5