From nobody Thu Jun 11 06:59:43 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 CF7FA38AC78; Tue, 28 Apr 2026 11:15: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=1777374927; cv=fail; b=n9nh/HLaSp6P8tjC3bRO9WurwhVQWSeckeUS6khiuUGTqsHECCOpzQfTxfYq53JTCTa1cuK/2bqARpOJ6cF6wkPvOszKTkIT4ELhEiy7RDHif94H4Uzpecz1rtA1dsxWXvwqTYqFRJoaHZvxH363gdN6D/y54jrCifz6ap3nNMU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374927; c=relaxed/simple; bh=j5Uc2nJXxSe0z8XqGUMAEt6NYmLIIyNIUVo3jvtI00U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Buqydj1rzEjtsrkbzTAxP4pPdYGFnz4fyFP8HONKPVtjHrc5DqJLFw9aN/tovD/EPqlkQPOzG9lRksesl8E7B0nlj/aM6ThbZVNzzOwRJThXJK+F175DJKFxZcezW6qTlNe/ZmdVIflCkYn71OKKUCu8vw8/jyVGq3ehCe7nQ/k= 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=Aie1vOJA; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=s0MD34Fa; 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="Aie1vOJA"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="s0MD34Fa" 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 63S8JM163055256; Tue, 28 Apr 2026 11:15:07 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=L+iyl0WJy9EUMWwwy0e7BSoYfLQqN2bot0vnA9Xrn64=; b= Aie1vOJAnqX5D+xoXkeIkMUG/xgf1eCkeW9hZDxRx4dG0xLCEbU39bNnshk7iQ5j VBEHphFaxGK0WqgLOxQJ0icKyC5QJ2UYkTEHAdvFso6d1LeSlGsJb0DFk8h//APo fch9WXBKrU8ATpQ/dqjC6IOlvNVu3DwC+DjNGhTltNLmfNp8ztg958hQ8s7FLjLw 2jinAQv1DVYXDkpNOu+hVjC4XgugKGpOFPqTXsHnL3jTyJDY+kXKcdF8rW1h4B7l ycgkf/fpju4QpIycWhpOMPs0OYajKUVXdq+NP3WylEGBe+lfZKBx6Aia/yGg2WH9 bb4LCRNr7Q+UXdiD7DzUSg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drmd5ycc4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:07 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCm1Y038743; Tue, 28 Apr 2026 11:15:06 GMT Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11013051.outbound.protection.outlook.com [40.93.196.51]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccmrd-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:06 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=F3c4DEH6YZ4hYECAEYTJ2muX+tcVKtweFIInwBL+Mk4wvZHZoOktu7tKSWx8969zPFlBJNEZfoyAdGuUdC3zac37Cn7v3FQf2EtEib4lOSsyqjCoBdJ624rTKhvyydIwiPkEiz/TXUVVNBM9iRZ7bM9s0kvqtmZWPdse6P5QRUyjGKzN42fkAWGmRfhuIkvJnGzKYAf5CFew2188Rb0giqALl1hXZoYEjpfhmCyw5rGD4zReVzooBaQKHfsKc5Myft7k9NKM0iUblFl6fKeLNDTkAvGVycaVJMcus7jICnR+5Ym1FhBh35sC60cWvbcAHUtktCmyBc0w4V4rdR3SNg== 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=L+iyl0WJy9EUMWwwy0e7BSoYfLQqN2bot0vnA9Xrn64=; b=m7/t6c9djmvryhtkNMGbRKWf2Rq1wfHom6yRk/DMGZtxsb7vhL/gxxs/ag/nUye+pjqcAmE6VvwWw6lOdv66waaf8DZG3eRIPFnLMiGzMjeOwUUN0eOKQLoOm0/CIvCr2lZUidzgm3RUs6Q28MqaIp/XXircc+e7UoK90sqhSUyBWn0vdg5A2pwSHS08uq3NnqiURJfJASZ5pkpLT7l6XUgTWqCqBgQ2LQRV5yMHMKB16yDJFikC+gWgPNFVATs8wO0bniBgEQmTL/v6XGKUGD8QRbKuHxk/0FkcP7TH7WicrR1gNvjo0isKLUl8wF5L9cditd2fTwdhDJBTeO9f6g== 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=L+iyl0WJy9EUMWwwy0e7BSoYfLQqN2bot0vnA9Xrn64=; b=s0MD34FabYvPGgYZdauvPfBoJreL5n0H1UvF32AF/0QYMVoXKIz2sgr1xPfJRy+qm5VxnLmfdOU5rRKPUPDraOkygMb/Zib6XuNJBb7C1uOf8tXBhYuK6qapdka8Gs3qdED81dwYlUcOZwFvVaPSR9hVJKqSxnVKB8HKofZpKmc= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by CH3PR10MB7458.namprd10.prod.outlook.com (2603:10b6:610:15a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:03 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 01/18] scsi-multipath: introduce basic SCSI device support Date: Tue, 28 Apr 2026 11:14:30 +0000 Message-ID: <20260428111447.1779062-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR03CA0401.namprd03.prod.outlook.com (2603:10b6:610:11b::35) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|CH3PR10MB7458:EE_ X-MS-Office365-Filtering-Correlation-Id: b8486b0e-306e-4a3f-f659-08dea5176521 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: 2uxnb6nHnjdkzOKNKbcTGnGHsvFZDLxlhkextgt+xGRuqPPhUw8ItTLy6sC3cXEi17bS2bWqShUSbKqQy6g8cINRi4xzmbUtNTIuvTUyaZ223hjAveObeMeMx+hTP+WoliRg28MNIj0JgzEhxFLjWsnxbfC0Pxc1BLuYzSHV8PHPXEVvUY687aFdbAV0S+2XcVPw6i9+BpmGlFNIcKBCxhyaqoGEhMEEdiNqdbI2iV36bXYTytaMR3pNAr2oeVkfbq+pLiPMjbLit3A7KGsJPNyOlzEQboEFOlwH25DZ60mp+0SEIQopWQ2h+tJFd0szcHx9yIxcDrYSgJvipstD6HMtisgo2wWVr+9vTzFZaLhSPirVW1xBxKMplAO2QyEZf1F+Ti7J16I7pIsZ+nKL5iF42MwqVCgN6z6KtRhEqguQZTapxPb5xdlXndmLNOtE16nhTECcIoe16yVxjx9KvDaQquESVAneVw3Z13P02iPli2naLd89vQZ02lCI0DiduI73XjUUWEpU4aCVnYbZbOY+n67fC9uoehDJfEyqBXn3PT5Owt2LQZ9c83hHPQgw6Q6T3X69CwrFpmeJqTmoir5HeTuFwYJJXTwMnbuuY4EmXq1wQ73XZvSc9UvNkGjpT3VXIdGMn/uv41/U4XDW0qWxB432Yc+4hC/c4ttAjRf3b4emtSnVeSPZaUAC6t2iYcVP0G6WBqibIol3TxOPZDT69yWz5VezZyZIgDdPnk4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DoqVEbe36ogs0j0RTpI4ernQ6TqCabe/Nkrd0QwesWWDGLhKIrIxULBbvPAg?= =?us-ascii?Q?XZFtDVFdNSfUTLPxTxNTUT5ACvYY/P462vF6blK6BbjIUtaUiXwncDEjpCjD?= =?us-ascii?Q?psFMcB3tJQVYN0eyWbjTna39Sord6b3dWBXvCdhbr9e5cCM4UKw68zh8StTd?= =?us-ascii?Q?bbVRX40oqqQ8ZI73RfbnENmM9saL2Pd/ODtJnTYAxmhZ9NXx1Utrh4NKbsoU?= =?us-ascii?Q?v7ufQHHwfc7QlM4wK9aAOJwaExbk0mXwqQsg/2Hr35dIpSVIqQr7fh/zblIW?= =?us-ascii?Q?w3Fo200Y4dEFz+SPpsp7K/nNxn+hjuXLvNDjhl1FjhXda2a4f0iRwateigy8?= =?us-ascii?Q?K3Bqd189W8xrOWknOgstuUnSFBtCb1Eabw8HrxmMfP5mxDAeRPux3zGigpW3?= =?us-ascii?Q?Gy7qdBRU12neiSSokhrYUdfYRtmhUHb3J1+i1rjkd9RZyec87gYnIn97J3AZ?= =?us-ascii?Q?SCoX9hwjTmPPeRxephCfcnK8EK+eH7oBDepjKJfZydC+bdNoQ+KtWxMeLx+B?= =?us-ascii?Q?A2CC2vBp61fVNOa6Fsgee5cS50SkoqywzyjEN1umAW0fh0FtTgHw9NRTW5ke?= =?us-ascii?Q?CMG1ZAOyxf8tUNCj2A4aJ5osRS28IlCHs6JKjHWHjXsOjpmWhMGGOOMiw8Rv?= =?us-ascii?Q?+S8sXjq+fS6fY3rJTJkT0SPnynrElo8HuhJf+/NsdAblMEGH4H8Nodhak3+i?= =?us-ascii?Q?xVQ9skePPRizP+ImeBj2+18pv0g7q9Kp2eMjP/c57TJN7fN4AnovJcHOrTfL?= =?us-ascii?Q?8wSxCfvNyl3/97ox0x9v9VF7+mb/TGX8ARU6SktEwlTCNpzjYnexGXsBZQN4?= =?us-ascii?Q?MHlbaWWtowmjmQF8RlWYEWl2BgW/UlewNOHsZrhV4NLm5BV3TBmO2NFwWBcd?= =?us-ascii?Q?WwNg3JZ5FV7vvPyyHCB3UbPOhXyQ8U2ob5gmsDnTWqCr+6U+2OegaRpnG2S5?= =?us-ascii?Q?gWx2jhWmLPpBUDbe02YL/fR/kLTBLg9E3vAXvzK0Rre7vugA3UhYICw4CTPa?= =?us-ascii?Q?mWpCJ4D68ZSuPUAhI7ZH1nqMkQJ4PZnj3m7Sb+eqvAlU4U9DbIniNxAorcOX?= =?us-ascii?Q?cyelqq2jqGboFjCPm/oZkEJoN+QWkNhIrVSZuY+MEGfD7DLXOOp/Wykf2GuZ?= =?us-ascii?Q?9baEUvAW8E0j8ANeY3cL3fstgp1UuZ87ur5EOU5ks4qnjtlK13TNy4GOLInE?= =?us-ascii?Q?Qo/SO61VwuV77ug81/DCZhkIgwU0ZqF5HI795px7fgJBJ39mhedvLBZX5n5E?= =?us-ascii?Q?DsJjWmihTNWmEQEoXVfhh3WBNMn35zubuyucFxHt78T8c1hTcpmOBUX9Estf?= =?us-ascii?Q?0E1X+5KFRF8Og5xtRfB5QcmTOq6e0wMeFWjrHkwWDrE/2FLNijxbJEQOMoeY?= =?us-ascii?Q?2gVIaG0wmgLCmCvSMmHePc4pi4JHoXI/UpBTxuYOgppt+XLleB3JgFkGgqM5?= =?us-ascii?Q?9TtevFD4xqM0tluCSQKdQcEwzoPyex6P6AkrreurJ6mHvAV/a1b6MulhVxHd?= =?us-ascii?Q?+uHZasC5R8FYsHJbbfvLQjZoU96HevNIZbt+8yZSQ3xSVWa8IDrRjwY4EHVk?= =?us-ascii?Q?o9R6ANy83C5UIshjnOwp+m6ge4mAtaeGXkRRUNeTsg389KdvZwuiOFxMkFf5?= =?us-ascii?Q?UKkfnw3QfEyihQDkKmaS85z9B80JJ1DrISlaYCfZZ90Yj9n4PKWObyXwCCEA?= =?us-ascii?Q?2HQKeLXANx+VGqrskW/SvqjSZqsZfVGGp4X76s9dMzvTfos2m1bpw9kba49J?= =?us-ascii?Q?nnRiaz2G7sJm/ZXmJJg1l2aaI0R+ML8=3D?= X-Exchange-RoutingPolicyChecked: pUu38JtDdnqCY2nv3E9xa53Wfm6fvJmNu86SABsIGMOOCgQ9ubH0KAZZ5hqikY8Z+ndHipKbf4aM5uF7NCMsznuraE13Hw6hLj/Z7uaEnkCQW6ykO1kkHgeO0rsUFxjSEIub3daKM4SXOxmKFGwPpnqPsk4IbLZ3RvVnBvlN+MiPQxutef/SDbXcFH2AxB5ZVexzzV2EGKgRAG1uI0mtXAEfC/mKrbrL+m+WpaY6+WaL1yEnYzIZqaiA7tVN7WzWwymjBozmlLWEbHrbTWt0h4JIN8qT5GVOEcI6xbpE8HNehTJ3qZLz5njJkpUW0Bv9PYWH5W/oG4G42SZqBLy0GQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: jtd1CjuXaqlgEZ76/Cr2gDTlejTIRMCfjD9/Ct03PuUKJFAVW+KGykfsW3YX7GUI6o8U4MVX+jd4cBElA0IiwuS7PMo6W9SFtSZwatKzAlMKWkiOtdfQMb9lNJA+97DtN9fFo+Ow1SXl2qiGrxpcgqyPiS7kI8AC2LQ6D1SZeGoVXzEe2Bun/O+RFRUE2ctuICPHcCyME1HHdTdw2GWl8wurzewtsM9P8VenW5/paPWhSTShzKC5XngJH6Vpmf75VHAK4igSCWVJJn4fd6UenP2BfIsh4ThpnIb6nzM/1bridntToCDzMRz8cZ1XQJ6czVYFz/QIL5g8uHwrkKAl7zhur+x5wKfXv+ACHh4XR9qK+GtDtvs3ZGBuEZ5cSYkqlJD51IMhwGJbGrS8zFH3ZjUORqftiHXRMg4JFjkPj18+6s8ABnhTow2r9LQUmaOA0p/uUCRq+js8/y1sES5a0bQz+OwR+ElIB1Z0/FuDmREskc/O7wyjMOrP1VNfkD6/GrsI6EBP86waIjde3Gbwt0VM31byif10GSfUXM6rqfDYlwdCVg3t3B2NQycGOgEIt5/pXnFnxVimsPysSjZCAdb1+abt0tJvLyKCHivfXyU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8486b0e-306e-4a3f-f659-08dea5176521 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:03.4233 (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: XkgIU7ncHw1v8GC8qqMM1OS24/mS8wA1yjs8XxIqDH9a9fS6Sm3oaV9Wwyb+Kjhy20pwUbZVQNEpMaQDMhwU0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7458 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Authority-Analysis: v=2.4 cv=V/VNF+ni c=1 sm=1 tr=0 ts=69f096bb 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=o5oIOnhZENCTenyL_yNV:22 a=yPCof4ZbAAAA:8 a=pCOl5fTshOrEa-n2-VQA:9 cc=ntf awl=host:13844 X-Proofpoint-GUID: _v7pUdtbrDD5zpzZK58Rz2AH50q4H8dR X-Proofpoint-ORIG-GUID: _v7pUdtbrDD5zpzZK58Rz2AH50q4H8dR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfXzOwiAIurFmFZ TuNjo2GWUEWrvyo3dhk8aU81wph2TF8uMrnh6cFUewmojbc3tX4dy++CldgkIxsAHlk+UQsu+JR 43LrxvBaEZSkhYu2VyQDpS1Myl1NGx5vigcz8zZ35e/r7R0y7tP4eGSVmwg3lzWktB0ugB39nXR C+vzH0MlQvP/1gSQpHrXmKT3s3vK5LDBMF2hg3WL0k1GZJkMWdlUE73H7dWALurjv/D/ynt8NaO YvVdhC5stPbjMmRW/4fFbmQaVzCipNXpdjIYUJHA4JHvXvy/uUat1Rr/4uDZzgLKyAmJgXVaZ+o QnWykFgziUmmVsXmYA9vlXPw3ML5I/8GdKNm4M8NLsFLvkEQdwYvqvFa4oCNBVWE+0hLGzh3k5n K8cETJYWFOIuWqqpIhSOvq0/COnXwQ6Hm2NXh7sRU3ZEpLIY9HmgQceTOO+q4pcpIoS1XF01Iqr efJ5ej0zOntGAc0632SBD6Il/adU/Co7VEE/VN78= 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 nvme_ns structure for NVME, scsi_mpath_device holds the mpath_device structure to device management and path selection. A module param are introduced to enable multipath - the following modes are available: - on - off - 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 mode and unique ID available in VPD page 83 The scsi_device structure contains a pointer to scsi_mpath_device; having this pointer set or unset indicates 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 | 146 ++++++++++++++++++++++++++++++++++ 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, 227 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..2375971db2052 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 (EXPERIMENTAL)" + 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 76cdad063f7bc..70aa1dbeacebf 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..ff37cfdf2f9d1 --- /dev/null +++ b/drivers/scsi/scsi_multipath.c @@ -0,0 +1,146 @@ +// SPDX-License-Indentifier: GPL-2.0 +/* + * Copyright (c) 2026 Oracle Corp + * + */ + +#include +#include +#include +#include +#include +#include + +#include "scsi_priv.h" + +enum { + SCSI_MULTIPATH_OFF, + SCSI_MULTIPATH_ON, + SCSI_MULTIPATH_ALWAYS, +}; + +static const char *scsi_multipath_modes[] =3D { + [SCSI_MULTIPATH_OFF] =3D "off", + [SCSI_MULTIPATH_ON] =3D "on", + [SCSI_MULTIPATH_ALWAYS] =3D "always", +}; + +static int scsi_multipath =3D SCSI_MULTIPATH_OFF; + +static int scsi_multipath_param_set(const char *val, const struct kernel_p= aram *kp) +{ + if (!val) + return -EINVAL; + if (!strncmp(val, "on", 2)) + scsi_multipath =3D SCSI_MULTIPATH_ON; + else if (!strncmp(val, "always", 6)) + scsi_multipath =3D SCSI_MULTIPATH_ALWAYS; + else if (!strncmp(val, "off", 3)) + scsi_multipath =3D SCSI_MULTIPATH_OFF; + else + return -EINVAL; + + return 0; +} + +static int scsi_multipath_param_get(char *buf, const struct kernel_param *= kp) +{ + return sprintf(buf, "%s\n", scsi_multipath_modes[scsi_multipath]); +} + +static const struct kernel_param_ops multipath_param_ops =3D { + .set =3D scsi_multipath_param_set, + .get =3D scsi_multipath_param_get, +}; + +module_param_cb(multipath, &multipath_param_ops, &scsi_multipath, 0444); +MODULE_PARM_DESC(multipath, "turn on native multipath support, options: on= , off, always"); + +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); + mpath_device->access_state =3D MPATH_STATE_OPTIMIZED; + + 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 =3D=3D SCSI_MULTIPATH_OFF) + return 0; + + if (!scsi_device_tpgs(sdev) && (scsi_multipath !=3D SCSI_MULTIPATH_ALWAYS= )) { + sdev_printk(KERN_DEBUG, sdev, "IMPLICIT 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 2cfcf1f5d6a46..842dad8cc6a2f 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" @@ -1123,6 +1124,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 6b8c5c05f2944..47534d9f2cf9b 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..d3d410dafd17a --- /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 256 + +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 Thu Jun 11 06:59:43 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 2D14F401481; Tue, 28 Apr 2026 11:15:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374933; cv=fail; b=O1aeYoJp1e3EgBduWO/DvYtrLdbDmtdBiQomNWQQWwrbZmIxgDleBf7NcQpd8KtiGn75UexKyVJl69NGwFO+0pzzO2AR+8aeBBCsbb1/cc4UULM7so3gr8LVZJ0NDVDIK89AGBc5snGbitkQB7lxz4SXreJKZOKWn3era1mmteE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374933; c=relaxed/simple; bh=OaU0qQTJjVWkzI5Xnq25JMC3LL4ZwoH6BDLH6WaQl9I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=mwzsc8IwsrtT4Gpw+eH6tW9A06qQsjzmwf/FOCI0xXfSeUfwoMoc5h7vl/o/U/R8z0sfbQk7d762v7x9MKO/VaI9mk8OdcpfGfHm506wKWRHCPllGQ+stManZwpx4W8DMA93roHsGPZCtHg5yMz1llXrYjTXy2cESABv345VPrE= 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=lesJnE2N; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=dKWnorS6; 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="lesJnE2N"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="dKWnorS6" 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 63S9f6vi1905304; Tue, 28 Apr 2026 11:15: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=QhcqHLLrh4BxPRYi6OQ5hvi9aBoSaqmjqqYd0+cfPCE=; b= lesJnE2N7qW4LFqI9yqbhZb9o0FVJ+Ci02c5NY87uDnH+5peHkxXZmG+bNa4I9ff NbjXSKj9Bz2ti7ljozk8ZXQHEWUXZBviBjLIkPwZN3Tv0kQC4ZtqW4NSMX4bjafs 93jlu0wEFlBARzUP4Pv0UMLJk8FStVGgQjvh0fnTdJs/ixq3EDOE4WM6aeNT+qkJ 3gDImFaOpuhtgn3lQGmJrIAMCsqHAbLh0ekivN0NRreKMghdoUvUCA06JYCAcJVe uT2gqPEbtZxtOObIYRYB4Znw/k5oBqXC0NST+iBtRk9fun3gZ61q3HWdqSfJOCfg bQ1upvDWbWyux/zHskSdTw== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drng8fct1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:10 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCkkj030448; Tue, 28 Apr 2026 11:15:09 GMT Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazon11012060.outbound.protection.outlook.com [52.101.43.60]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2bvj67-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:09 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gAlKiaWnrxjXUeV4gAwOeHf1tbOlubKXPR1nBxfZmqzV+rGpFkjHSnfZyz6xrS5kG5P/gbotDtFe0bvlAek149gVnFkQ0wxmrmPlaUgyIQmHv2M02bfvTZ49B7bNtMZ4Y0fWYIDtbg85GQ0F6EU29t8l2UGMPdk5jEA2y6mR1Uj1jlE7xPzJD6fjQaS6Xr1F6FxBkvP4KgYRjh9X0mx6IDS1S1vcIW3VRSgXR2MCpkC2v2p7VmmulmuFBO7HVWYLoGqITFH4cJbHc5hKCVw0dq1e2ij9YC0QfBQKc1IBxSlE/ipOAyiCD6cLd7hZOBaqfVYWZCVLgrS48WNlMG3+mQ== 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=QhcqHLLrh4BxPRYi6OQ5hvi9aBoSaqmjqqYd0+cfPCE=; b=rT+SZvUzc1uia3fpes0O/XPOfPQKK1ZCsTk2pn6JknCB833BhPEsXcG6na/LT6pHGIGS5PE5wpSH2EKPDR0fpPG1e1yOvJARsD//JctBuL1hR0+UJ3UViI060GAGOWTK57TL3PmR8kFNfgjTtQ1PgG4WQkHguvuJInd2Y4cmvAqWJCM0qZsgNGDVVnhvh2dv7WyDoejZDrZk1xIOODX8KJv2cYi+pPD6vXNXF0makcQ49x/gOCMB9FnrEa35FO6nBTMqAcXQt/hKtN36f/OKubS7Y3rD5vBEbkHb753U8QEQwnnIYKKHx5wnTjZfTFiOXDWarVA/+JLXko3YnjW4qQ== 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=QhcqHLLrh4BxPRYi6OQ5hvi9aBoSaqmjqqYd0+cfPCE=; b=dKWnorS6jAzE2KS0FSxnsA+aP2HoRvJW014jf/aXUgL47IU1pBMlErIBJheaOGEZT6JDKrCsdbUIU8xJu3JevKiMdK69X8hb3cZw2mEL1mCi75rrTg/nRjCmTILxRoG93Lfzh2ALKinE7BODLod3UX2q88FSZj5qKk5xsoEwcvI= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by CH3PR10MB7458.namprd10.prod.outlook.com (2603:10b6:610:15a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:05 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 02/18] scsi-multipath: introduce scsi_device head structure Date: Tue, 28 Apr 2026 11:14:31 +0000 Message-ID: <20260428111447.1779062-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR03CA0310.namprd03.prod.outlook.com (2603:10b6:610:118::33) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|CH3PR10MB7458:EE_ X-MS-Office365-Filtering-Correlation-Id: 8686392a-42e6-4b1d-6c8d-08dea5176653 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: zBdhz2SbIjpHp5SVmf6vAZnqufqloOhczedcaDqHCcGaJN9w56Hb94iqrvZw8R0vf9mr6B4EViOpPXAwV9a8PoQeOmJO79fVZnDMk2BBpbnLdr61dUL3awiSTc96z1qQXj7zemIRA2dvDJQAuI/EDixGO3XHrHN3/L/ruSudkG79SczxFAu+to9T2PWMwiq7+AF/VpKY4J248HskWC8gBj/lWRFc//t9hPq2QjXcs5bxwpTiRRrDlXDGldX+TMs5aQ9zfatFw+3NsTh3u4lmQSgjtQvpa/b8wcTFgD58whqF6Fwf6TAnRri38gm0mK11LiYGLrFdpy3d+JmELGyfJtOKO5Kr9Kn/i1hKoYnV+yChzfQmTozHlBN+IGGbjW+YCQ5tx+yAB3PCjj0OyQtoAGJWeFrllaYKigRSU063yhmfv4k95pIs+TisLoAWMZuXLpr8gxjZsjeKcFYBnz9rjHCg8LVSQB7KMjlkRMfAI9RwpcDj4+azaqftIpHGAgaBD43G+aW8hl/4Cng4JKnXv0s13J/Ul3rRmCCQChxWMs/UudrQuGhvM0s635H7yZ63JK8nd1Rpw7OoVRlXmRXalzbIdjZMMwGmx0B07kxsCyW7Qhq0Y3wGFvzO2HoB4wF5dLaBdzk/N2EH4Dag6ZRadeNekMkvGgQ00boDErNfcaxn937DZMcJg2KqnkSdfo+WnXiLQWTchnK2Ut61ym0BUInJSpPeST93ERFTsnH7y3w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?M7eDSRYA2hNFsaq9rKt7xKdgyoLcUwg4WBzDzOwJClge/vNdOLRM/e/HRXOI?= =?us-ascii?Q?DRsYNG4+eaTT71f09bmaHTsHnIqA+fzHSyfC3vp2oAw7lufHR4lea3+xYtmb?= =?us-ascii?Q?KwKfdWz4nsGKgKgFjKm97EfO11wx87IdX2ATVLByhijF+nH8jjk1tJjGH8xJ?= =?us-ascii?Q?e9BgdGEq12ytuKiLO+i0sIx2+deEVNEqVIyiVGm8mcbT22CVFrJruXyeUz+7?= =?us-ascii?Q?XBR+e959dAWOCet2F28tHL1I+UDnYURbnVvxYo0qccG8wgmJqPBu9l7Lde4X?= =?us-ascii?Q?jzi7B8N3maP7kOW1VbRh9nkoR6sqU6/fjh5M2sImExSIpx+ZCD919uEm+wCj?= =?us-ascii?Q?/YDFObzOnBtXogu5/O3oIdLX5wfGxyjuaaE4wJY2v4SvXl4138hPxOQHU1IY?= =?us-ascii?Q?sVAhEUJMkEIbjGt21vIXm6gaGbo/in3DE6YpciI01GNw6Y7plrAiTNTp1BsT?= =?us-ascii?Q?paBhkfV3+LZxuRX+7Vj2EtppXasTnoSLGPyHmpS7Vqv+Hd+W7v0g91knjPSq?= =?us-ascii?Q?znAXVEhMPLydkGEGMIY/tEUiW/8WO8OYrfA/l2rKioyCzizN4T4aeJs/4xe9?= =?us-ascii?Q?zuervk7x6vsx7KxQeouykH4y5zvLEetU/pRLf8RxFr96b38l5/ZKeujNhrhi?= =?us-ascii?Q?Fyc4aRSA5va/tcvH3v2DVXiCbBLOBoHfPI8JWXmwD2PKcDifz9Wl1kPuUdhE?= =?us-ascii?Q?qjEM0PcBA6UkSLouDaSnR/j1nrEwhhLd7cl+B4M5K3NVfa7SeK38ihmK03zh?= =?us-ascii?Q?UGYdXPwhWZtPtql44kscWNTb9vsmeTtsRqPtP9kM+Nd694TwcmUlnIaQk4SZ?= =?us-ascii?Q?agNjatVptOAxKkheBX3fpunHgN/QKHtwsJeG63+mnJ7msWVvS6L4gAEojztE?= =?us-ascii?Q?yACmPwTZKn+VeytFHCcXUjLQiBajBeYHLx4cRFIEopaR27AWv6GHupbUOmxS?= =?us-ascii?Q?b0lGT4whBddqtb+rve5V/7yx7e3yPDV/2FYLHM6vwWhqzwiKfmgkjLiqTVB1?= =?us-ascii?Q?mQZ5VskQE4/npovBsZPiFHq1JFBorsrAJNpRutXg81LgIeaC1eQu898uKEby?= =?us-ascii?Q?KEfBGSbYlu+KrM+Rdcu4+PvJU2v/Gobrs+wT2Is2E5z5Mio0hZbXjLs3oGow?= =?us-ascii?Q?2V59YOiptZoBdbN7szCSk/cPSOWAZ6IidgZsREY/Duwz02XhxY2HuPetcB9N?= =?us-ascii?Q?zlLeEOllMEDgNvjsmYvuosNnVM9bydkMoICBB1XXdZXpArUlTpGOJ2lIoGtI?= =?us-ascii?Q?lrF4UJilwkc5SC/2cz2XTU5481ZCaWWm4ehs3qBHVMEUGNh4Pq8Apt4IWL3M?= =?us-ascii?Q?yLG5tGJOdzsP+ZZCqLgaES8Je4hroAedrlVVfASRoKZB6VPpDgJ6AkuGiT6f?= =?us-ascii?Q?+Hd5S5092pR2GdZxdpqdFLqb+8X2wlnmeZig2CrcC13+piLr8mnRmQo4O/Hr?= =?us-ascii?Q?DVmbpk6tppCiFK9/aylHknIwSxcCKqaiIaL25wHSFHFv8kAdiwIB3IAyFtAm?= =?us-ascii?Q?Q2tWAFN6GPoDyAmDafZXXWLw/wEGPP1zhmyh9awabIo/CzbcXh9GwQqHjwkt?= =?us-ascii?Q?ZPgEoG7AUEFCzZGd7eqp5s5jGwB79sdnBbVTdFxVUHWSoM16N9Hs6Uxl4woc?= =?us-ascii?Q?nsPqQm0xR+FfBJpFPUcTVJuQkqgjGDiaMGrBR+l10l8In/mCpLwkd4uXjQ5i?= =?us-ascii?Q?2ktvju5DwJC0gQ3wBMXL2vQFmmQMWU/YlSqn9eTDDITbaFK0uYEFrQDAluJb?= =?us-ascii?Q?iXbiLaIGDdBfobLX6wYEQn14V5On+vg=3D?= X-Exchange-RoutingPolicyChecked: IwsvPd3CApjNSPk8vJ3FMZ+YGsVlswBN8ZLMWnObcxQf0XS7ELbn63jrsEwwRJ7HrmOYdKCdL6X+Xes+IYqi2sCbTBiKws4o4JbZXN9zRFOuUfLb14qwNaz7Ix6iqoN533nqQycbxweDGX4oWbOvZ2GJbNGQVCEBH1xKx7tGQIwry7jyy/RppU+kjKQMcE+qX62YqPHWdgAnHErU8WtIhYMQ817gL81SX0hqMxDx5fVVObmg+E28zBubcKYNgJn4EDcWcJGsgr6G6xOAnwy6H8nUirE9qCehjKjYZjEqwSeKs/0JUJq0WaReql/dKVYe7w2958GwkZ/TXffEkbEFvA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: P9Gewzy12gSscfZSV+9lTer06Ms4ONRGFrAlsFRQ3OHf06ykSlUyYDAj30RQ/3WTL8D3z/GrQJWeO5JJjHa8iKft90hHUJbJmTZc/n6T7MauZBENgGo/ni5OXeHeGh/03g8d47OSrJW7vT7UIytGk00vh7KvAV6cTiB976s8p0aLC9Hf4XzGdvRD/iLPijrBOs2IHD5t96di+zXm0bi6ILDZfMk45XrrHv+f/CEXhOBcol1MxHFP6fjout5oW0p5ozBGfdWt0YUL+HkpTZAGZHy1NNu65so5EdcXeny9usdVaRo6wL7ho04j6Ddmyh5NiSElvE/N4NnC35MjdVjHxwFS7t2K/F9rt+r8bLH5yb1Gze/stHKy6zD2CG/xj3B60/vR9Oz/by971fagJDTmp+ZwGUAALggSCnsvs5ChVvgg0fKm+n5X9e71F4OF3iqst1uThEmETp+t2ULmmaNqUdE2fyz+lAcVqMlBbUMEmhLGOdnPh/UppdiapVnbmqURP2eOXXxnw4jodI6d6xZFiJE4gmhvF2yZhc5wBBmLT4gII9tCYLS4PSaGs7X2s+6LjQwiWn8SHiE7VxJD8Namrw7tNdQKr7klkE5zvUSjCks= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8686392a-42e6-4b1d-6c8d-08dea5176653 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:05.5522 (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: fV8G3hV0YuAAKAGhR7QCrnQh7OVmSJyj3B+DA4fZ5uqUmgsZymrvRCUhfKS3hbFH9MtF2Jz2+iWU+5Mte3e2fQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7458 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Authority-Analysis: v=2.4 cv=U7uiy+ru c=1 sm=1 tr=0 ts=69f096be 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=EIcjfB9IiI4px24ztqRk:22 a=yPCof4ZbAAAA:8 a=rslDvqJ3sq2LG7fXSO4A:9 cc=ntf awl=host:12310 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfXx4Jdn03i6RxX gK7SyamRvuPsWpmViKGRJw8tmJ/sryX5Ekllent1iuXOu12IBSZ1DvYBJQn52iXWKeDUpIFoFA+ lARCeCMBFH9LpzdOtjN0eJBcU4qPd2nBD5kqYnsX7PNF/clBPjRWAqHa0LON4GAwPV09fSlQRDc tCe+MDPFQrwy1+1slZB6p6yuJbzkNz9vq7zEkazH37s4j4Tkp8mpUVgdmM4TjKQX6Ryxnq+M83F ioli9b92N5PF/RZ5I1MoHj10GnKUo8lsTwX0eAIV7Mt3gTzeHXOTsJAba6yRdg6hYyCLlh0MDG/ k2uvJ6ZcP1Gt9j7oDb2uhgt+xEaKu0bQTSAzkxBBEBPMt9AhSQNxG2Y0srMs89oEQdeLdpgnONj Pa6yYQ/To5maIN06XytI97IPi+/tRGr8AiMQckpmapE61wQLNFAuR9S7I2TiRTbbCjcl1RW35cc AJxK9cg11eNWz5CQk7UGdEy0HH2X/uvHhlcvmROU= X-Proofpoint-GUID: 2c2JlFIk0GOflr_t5v7VfPINkPewd6hz X-Proofpoint-ORIG-GUID: 2c2JlFIk0GOflr_t5v7VfPINkPewd6hz 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. 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. A new class for multipathed devices is added, 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/scsi_mpath_device0/ total 0 drwxr-xr-x 2 root root 0 Apr 13 15:48 power lrwxrwxrwx 1 root root 0 Apr 13 15:48 subsystem -> ../..= /../../class/scsi_mpath_device -rw-r--r-- 1 root root 4096 Apr 13 15:48 uevent -r--r--r-- 1 root root 4096 Apr 13 15:48 vpd_id Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 209 +++++++++++++++++++++++++++++++++- drivers/scsi/scsi_sysfs.c | 3 + include/scsi/scsi_multipath.h | 29 +++++ 3 files changed, 239 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index ff37cfdf2f9d1..18d50d051b3ba 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -27,6 +27,10 @@ static const char *scsi_multipath_modes[] =3D { =20 static int scsi_multipath =3D SCSI_MULTIPATH_OFF; =20 +static LIST_HEAD(scsi_mpath_heads_list); +static DEFINE_MUTEX(scsi_mpath_heads_lock); +static DEFINE_IDA(scsi_multipath_dev_ida); + static int scsi_multipath_param_set(const char *val, const struct kernel_p= aram *kp) { if (!val) @@ -69,6 +73,60 @@ static int scsi_mpath_unique_lun_id(struct scsi_device *= sdev) return 0; } =20 +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; + + 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_vpd_id_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->vpd_id); +} +static DEVICE_ATTR(vpd_id, S_IRUGO, scsi_mpath_device_vpd_id_show, NULL); + +static struct attribute *scsi_mpath_device_attrs[] =3D { + &dev_attr_vpd_id.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; @@ -88,6 +146,73 @@ static int scsi_multipath_sdev_init(struct scsi_device = *sdev) return 0; } =20 +struct mpath_head_template smpdt =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); + + 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; + 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; + kref_init(&scsi_mpath_head->ref); + + 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, "scsi_mpath_device%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; + + 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->vpd_id, + scsi_mpath_dev->device_id_str, + SCSI_MPATH_DEVICE_ID_LEN) =3D=3D 0) { + + 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); @@ -96,6 +221,7 @@ static void scsi_multipath_sdev_uninit(struct scsi_devic= e *sdev) =20 int scsi_mpath_dev_alloc(struct scsi_device *sdev) { + struct scsi_mpath_head *scsi_mpath_head; int ret; =20 if (scsi_multipath =3D=3D SCSI_MULTIPATH_OFF) @@ -116,13 +242,58 @@ int scsi_mpath_dev_alloc(struct scsi_device *sdev) goto out_uninit; } =20 - return 0; + mutex_lock(&scsi_mpath_heads_lock); + scsi_mpath_head =3D scsi_mpath_find_head(sdev->scsi_mpath_dev); + if (scsi_mpath_head) + goto found; + scsi_mpath_head =3D scsi_mpath_alloc_head(); + if (!scsi_mpath_head) { + sdev_printk(KERN_NOTICE, sdev, "could not allocate multipath head, devic= e multipathing disabled\n"); + mutex_unlock(&scsi_mpath_heads_lock); + goto out_uninit; + } =20 + strscpy(scsi_mpath_head->vpd_id, sdev->scsi_mpath_dev->device_id_str, + SCSI_MPATH_DEVICE_ID_LEN); + + ret =3D device_add(&scsi_mpath_head->dev); + if (ret) { + mutex_unlock(&scsi_mpath_heads_lock); + goto out_put_head; + } + + list_add_tail(&scsi_mpath_head->entry, &scsi_mpath_heads_list); +found: + mutex_unlock(&scsi_mpath_heads_lock); + ret =3D ida_alloc(&scsi_mpath_head->ida, GFP_KERNEL); + if (ret < 0) + goto out_put_head; + sdev->scsi_mpath_dev->index =3D ret; + + sdev->scsi_mpath_dev->scsi_mpath_head =3D scsi_mpath_head; + return 0; +out_put_head: + scsi_mpath_put_head(scsi_mpath_head); out_uninit: scsi_multipath_sdev_uninit(sdev); return ret; } =20 +static void scsi_mpath_remove_head(struct scsi_mpath_device *scsi_mpath_de= v) +{ + scsi_mpath_put_head(scsi_mpath_dev->scsi_mpath_head); + scsi_mpath_dev->scsi_mpath_head =3D NULL; +} + +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; @@ -133,13 +304,47 @@ void scsi_mpath_dev_release(struct scsi_device *sdev) scsi_multipath_sdev_uninit(sdev); } =20 -int __init scsi_multipath_init(void) +int scsi_mpath_get_head(struct scsi_mpath_head *scsi_mpath_head) { + if (!kref_get_unless_zero(&scsi_mpath_head->ref)) + return -ENXIO; return 0; } +EXPORT_SYMBOL_GPL(scsi_mpath_get_head); + +static void scsi_mpath_free_head(struct kref *ref) +{ + struct scsi_mpath_head *scsi_mpath_head =3D + container_of(ref, struct scsi_mpath_head, ref); + + /* + * If we race with scsi_mpath_find_head(), then that function may + * find this scsi_mpath_head in the heads list; however we would fail + * to take a reference to this scsi_mpath_head and continue the search. + * As such, it is safe to call device_unregister (and free + * scsi_mpath_head) after we delete this head from the list. + */ + mutex_lock(&scsi_mpath_heads_lock); + list_del_init(&scsi_mpath_head->entry); + mutex_unlock(&scsi_mpath_heads_lock); + + device_unregister(&scsi_mpath_head->dev); +} + +void scsi_mpath_put_head(struct scsi_mpath_head *scsi_mpath_head) +{ + kref_put(&scsi_mpath_head->ref, scsi_mpath_free_head); +} +EXPORT_SYMBOL_GPL(scsi_mpath_put_head); + +int __init scsi_multipath_init(void) +{ + return class_register(&scsi_mpath_device_class); +} =20 void __exit scsi_multipath_exit(void) { + class_unregister(&scsi_mpath_device_class); } =20 MODULE_LICENSE("GPL"); diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 47534d9f2cf9b..043fd2d9cc417 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1485,6 +1485,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 d3d410dafd17a..b3e0b98f39c56 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -19,12 +19,25 @@ #ifdef CONFIG_SCSI_MULTIPATH #define SCSI_MPATH_DEVICE_ID_LEN 256 =20 +struct scsi_mpath_head { + char vpd_id[SCSI_MPATH_DEVICE_ID_LEN]; + struct list_head entry; + struct ida ida; + struct kref ref; + 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]; }; + #define to_scsi_mpath_device(d) \ container_of(d, struct scsi_mpath_device, mpath_device) =20 @@ -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 Thu Jun 11 06:59:43 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 CB48C401485; Tue, 28 Apr 2026 11:15:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374934; cv=fail; b=Dz5tdWNV9Xf9pbIx+yvx2h2EcZdhRROYtMNaE3eXxsfQykkJXcuKLLRvYj+NuTnaBDRiOyL+3PVXDCxMUvV050QfsT47DprxYJKCDoF4ahBAn4RqWgGafBaOxI1UrPFOCVo+IgtHlbMMcVDLfBmy6c7a2Kl3NPMnxUvgo8pwPs8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374934; c=relaxed/simple; bh=Ob+91tjPluyYDVEW2Udy8/gaGp1MuXi5za5L5hVyaO8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rM7HglfC6zfv6yP1Gi0rjXwNF7IJPocd10uSq6+VYrppXD480YN9ja3qEwx8cKTTjvcSkp+S7s8sjX4Wcuoy3qP9dR473IPJESlKnDhr8GrlJ8U8lzF33Dn8J7SGJNs2oUDEMTWL8vRoBn1SA/n5U1JdfxNQ5NK9gr6siiA68Go= 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=d/kIQjN9; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=ePN7beXY; 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="d/kIQjN9"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="ePN7beXY" 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 63SASLfI3055306; Tue, 28 Apr 2026 11:15:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=yeKE6GJAxi0WVuO959TbT8gJfIMlJuVkECZp4kjjYH0=; b= d/kIQjN9WIamDr3X/cSBSw0t9o/ytQ3LQMxYRVhLXuiRx0doIyW6XN4KD2KFdMGW o9E1RWzRa9slHuFegZfqJcQL/zaCYM8CrelnCCZb+np9xKdM+NIHaL322c04wATp e/65ccoNI6SzGAO0UHdIe1jGkp/vrRLJnfWL6Sq0zjaRljwvzsLOQUSl6DzHDg+d 8FT4920pADyRO1cNJDBkvvyaDNW7Wb8w+p8TaVmsabb1xX4uggVlkCbVX9FADjj8 km+gbaKDQ+ZpM+IWLsPsufJ8xJeno7ufcgpsBIcLu3bz75sgMZzHuLChW3/m01fG E2nElqbooj3ZpLrEo0PjwA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drmd5yccr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:12 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCK6f033208; Tue, 28 Apr 2026 11:15:11 GMT Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazon11012057.outbound.protection.outlook.com [52.101.43.57]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2cuj79-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:11 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nEQ4nE7bl4rwvnDtblLAGUuAcmf27ZMvARsyEA/tQs2gnDrLbkSjRLQ8tbWa9CxM7aiuDwJl3JuJrEHQSLQUTATAXWrf1W07XwJJId8gCe3nV2T0bNWKoHJ3f/dpsTzJIvye+WPbsVpj182pGlLqhW3eZVRxLiz7BYXjvKQS0x/nZuStZQigA9UbKejr/XlIYtAf9ugUvmFoHrBQHig1FgDzEPymPLT06Nf8jdgZgrUVdvwSfrV5yVR2fYQNnnLHeicDYRB/ZcmYdpoUjRRYa8pw6Z76qIrPTl/NR+3cdWo0gelgWVUprEPjkRrPdWwyQBirZYgvb3Nc1HVyiLOoag== 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=yeKE6GJAxi0WVuO959TbT8gJfIMlJuVkECZp4kjjYH0=; b=PVFt54WtslskhGNWDag/mThXO4pGXDut8CPpcM2y4CPz3oV1l7E1P1biQDqDDG8CHX9W9LNszU2vfSGeuVfGasn/e3UF5RXWNfu3aCtdxO8meiAHjtGwH41hgnpZKAQ1Ve4aZDERDxKU+GMXB7gmcsuLV528hmhyZTSfTmahwN0MCr2linbqQohsmeCw4iOqwwhViI0MYtGe6f1FMOAFhhVBP8Qln1WtTDam2iL5lr052iLigmOWpILbj0zGt3WPKtVVqvrwwTZ738ZJXiAGK0jW404yRRo1iAcr2X0Uvo9/X+7GY7L2/FTTTFTFJ1HSldhtRhxFM6/YZEl7bU/XWA== 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=yeKE6GJAxi0WVuO959TbT8gJfIMlJuVkECZp4kjjYH0=; b=ePN7beXY2SkBygqvt8JqXupSxbKlHAKICc6BeOkdnWrnjpoRdZaUVlrx2xexj8CSMgErER6VtAaWkoDffBhmdTQuC8wsm74WZDuqWURQ4uLH8E7AZVu8bSA/Gj3nOx6MuROXvnJDBk11kQJArXtVHaJxUAhJmYbdys/hB642Ywo= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by CH3PR10MB7458.namprd10.prod.outlook.com (2603:10b6:610:15a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:08 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:08 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry , Hannes Reinecke Subject: [PATCH v2 03/18] scsi-multipath: provide sysfs link from to scsi_device Date: Tue, 28 Apr 2026 11:14:32 +0000 Message-ID: <20260428111447.1779062-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR04CA0092.namprd04.prod.outlook.com (2603:10b6:610:75::7) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|CH3PR10MB7458:EE_ X-MS-Office365-Filtering-Correlation-Id: fd61ef4e-a293-45ab-489c-08dea51767d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: fWII9JDIphR6TROYTlKcq7tGOGxhEqwe4A3+rsgG+arQh3bmk/eB8lBjCb+jpFgWW8w/aWSRU9I9mjzh/ZOtRZ+rLLxAJXeulKGmCt0OqoQGzS7/xX8kKmiwb65wyj+5dqLZJdS83e/0RjqlWX0U0NPl06vityUzPH/aVmCdXGajzIxg5ed3XpFoK/9w1I065sEHup6z7RKzdxoYz/9wSqVPt1oDk6WvPyFFr9vEkYk/QJZcCMdcnRIriUDt2ho3S+IE9j1o2ydaIi3ED1VK8B8b/L9BRRLrndrmQYxexuT9AEmtB+Tvyi06hFXcT5g/ya8ZaeqHSE/CilHx5naj2ZtYUO1ecGw/36WG3V2PNIEJTFzoh0C8BCWgtes6CQMeByp2IeUdQJS48SR2y8TZaL9KPiZryMhpvv2c6pNSBFx93/jm/YnGemH/gO59y6wmoLcC/SJwXA3nKZ6KITyb6QOl1YBXhlkd3J6nomaQR9FGKNtcAqW7JFUdivl6PVGDvOiYIonNw6e3Gp8jlriSmvrgHTRW7WFEiy4sKZF2HC0kvg1K9G5vcaUa3rmdJMC/VOYdiuxDYuSouFEPtU0EW5XuT++mchf4EQfXeHBsCIqllOzqHGUmQs07NvEdedfftKdCDEvY/iQZa3NjjGSWLdex2aJ4LNrJXgbzPW+FIyxlNWpZt5vVjr3PnGmnEXGW2ymmoCzOPHrLNhmQmk5tGyCA3u6ShyWyLIo2kF3z+BE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?nmwgX/XDX32vpDDRwssdL+EQh4Gqi22LbnvHSKoY/inC/yxbnkxCnm1X9CZx?= =?us-ascii?Q?h5QwZ3n/AiXFCJ1hV2olYnUVcZG4WqYtNbshN4EmPIJu9oHwS6QBW8lnygwh?= =?us-ascii?Q?+6wYYDwk666xs0qhOR9oFupMqfaGkGrXtDc6dYlN6rW2rZw0s0xctMZ7A7Jo?= =?us-ascii?Q?koIKE3FeM+Tk6hs6j+yXMhguf3OW/fbRrhjnXXDIKfMEXldkwa6hUwT+oq6Q?= =?us-ascii?Q?I2gAVuHMBGIiktRkY3pxAdvws7InoudnCW8Rqek/MdZvWGxc1Fm1Jw58kGwI?= =?us-ascii?Q?ai968+Hu7tgIXIxBaj/wrspr+32hzciT8EzSi2syg0hVkNHziuoQF+bKDpQ9?= =?us-ascii?Q?CxVv4kYvaVjsWie+u8p3kLlECRHZ1BBwMvQfCT1qBGt7LgSgSU85a/+EDarB?= =?us-ascii?Q?koPmoWik1dx1Ae/puAMC6KusvWZ2ypsRd091iZ+dLyqZ1kjVGkrm1EjHzDPi?= =?us-ascii?Q?qGS/eddkdJH+HveMwVNrsV2ZtdFvK1aQDuRV2xKYmiEWBMMY2zq5LtdZbTc/?= =?us-ascii?Q?A4AppJSx/HenHvyBiMy33NfHXYRYvLnkJia7vg7qOK9HdYgee3cN2SxNgttu?= =?us-ascii?Q?0QpNsbIaGdWZ08kyf1JKEMaIwRbweV+Af4pSvse2RLSpEU2cqwebZWllVKEK?= =?us-ascii?Q?rBht7r35QiTPy7s8UQ/6txQb3L9+se2syf8aMzzHOwyKKOIno5ILfZgqsYQL?= =?us-ascii?Q?E5knZGpmedwXQamJMg4ZLQHMBakTJ2AFsemQ2dV+AHR8tvG0nTlw3zMRKT18?= =?us-ascii?Q?+9ubIeSfNX7JOt8sKMcRbDtqVBqPnnhd4NSnS9zZa8SQcQIQ0U+baVFsmpVR?= =?us-ascii?Q?6KpXTDCx52qYe1fIDMxR/7N00t2cnDs7XUzIlbMLQzwCgAOTEcR6xmqzEtwg?= =?us-ascii?Q?SDV84HAfUGjg7+VTJ9JT3JawEe8sSK06DaQcaYFgkoJZFq3qKefmC1IFCy1B?= =?us-ascii?Q?q+dgFLaqY3IObsVynFg3UgmRVuscSha+ZZJwLvK26zx7X5KbGH7c2zK+VPox?= =?us-ascii?Q?8JEQPnUJxsZEnrBuMqA4rGlm3rmjK1w9lzcMyOZYCez9SOw0mxMCqkrX1oNk?= =?us-ascii?Q?ozH79ImuNxYRts/Q5tguN2evPChCsIDl7fSP2S6+weqAximws7Bq+b7iJrj0?= =?us-ascii?Q?vLjBw5IZciBONpZlyMCOi8Xyl8gZguUSxScJxWD/okDoi4EPI7mkGmYIl9EX?= =?us-ascii?Q?/yKzXFBz3l4i9EkeB/NiD1fdDdVbu9YVUjuMX+x8Wwkr9Qy/Gfa4vu6ei9zd?= =?us-ascii?Q?VL7ECcGy82DJDLP9IhCLdyT+BM8sIoIrOJ3gZaUq6dAtEjyne1oxz/6sOFx8?= =?us-ascii?Q?gvSedVw+Sq0ciS2YhwOZX/9E7xTAy2Qj0vHfLVRAtPqiKrHPx2TIPXj/5sih?= =?us-ascii?Q?16VwFBmLW1nQ8zk09etVaT/EmpRZzkJrYPNRjet/EJYaqFzhE+F3AYjQkqW/?= =?us-ascii?Q?ujdZlaRuGzo7/O2bKcq4SyVlHQRpZMjF224tRnTYO9iqiAU5a9wShOFdB42c?= =?us-ascii?Q?ViRc8mVEiExVQ9ogr1N7gN8pCFiFONV+jIg3msVv2ACGp8sd1rdq1lleVyFn?= =?us-ascii?Q?sI8Fa4iHzJzA6FlfF+oUkUXdwCRT4ag3DG+x2Uo+VJIn7U01xYkY7o9KSW+J?= =?us-ascii?Q?DGZBQ5kqD7sgUaDRERIBwoJe3rxOaHTi1ZFuxR55OIUkHEmZwRWx+oB78WRm?= =?us-ascii?Q?EUOo+0M8g6C+xH/DiOGiDbAFvLVHyc66Ube36Fv2/zahaD8XZGPARW35rBHz?= =?us-ascii?Q?zqThYPJNmTovyiO8ER8kfbZXV45098I=3D?= X-Exchange-RoutingPolicyChecked: NmD6AC/X0Vo3M+7HUplzHHFGx9YLCUTkD8bHEwGHm0CJ5/+rYfydjnQbp8FYet159H68DVeQokNFVMebeHrFGzY6eOajZTl0HKQGHkg/9i9B9f5f2VlGEYm17R8JQ5RONoKhHRMTxU+vMWUdBV8Xzf0ZVzxZCcRSjc25MGROsKKkU99t5tn7yNK76Ibkox0O46r9Ett5Pm5/5XRouBxX690XCKantAUK9kyQNtPbjKP1KWatr56YPs3gBE2v6uyHDyHngQ3sdlSH+FOny1ZQoFxYtBsIn8XSDNQy/2ebH4dLukPlpMiKKwuqUGKLc/apuV1+oUWHxPrHlwVYCDescg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: K4Qrp3hZa0qsh2wioaKwfbvhH9gccLnxRWYYxOiltt+grymevxR4makiMlfZ0gbZvRqou8Y8JIxAV4EWQXEPY03XdSnfVFIpdm33F2yO4t9PQTVneQjf4R+QHHEeG1TwPKJCo8XWFUnu5zg2GkOw000GZrbd1F/4rS1zFWvGodhIudj8yncN09c2pYjELugYHXhribxlLy71MG8UW0QpgOY3v6FLxToG++ZRQLL83quv46cBAHldHTWG0Ls9fJF+WPRDoRtHXKhEbAvnXYfSVbpQb4Z68YGBeM4jV3hvT8kkfDGyLA9nsI7j0EL3D6Vq1/rQPkTYXxCDGzR3G8aV1cDRIxqGgbJeWPdQJQrlaREQLjU23+9Powv5HxJTIe98ra4Ixw9XMOfXvX0CgSb4wmuRuM5O2A/CjW3G9W32QtxxqCQ55v4Pf+BkPmikajVrnIV40N8pVt3oUoC/Umk8OhbQQB/T1EAygRu9PmPz3uzl/9qJyc2M7Si07t7ImgsQRxfECUaozvz/TGHIMBxKcp7yTZO0OJF96RVGoxuTzJxFYoZ/jN98+eBQhBBP9xwKiXGIu14WckRQH51il7CjK4t2DlpUEfuD/kTQPOsPOdw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd61ef4e-a293-45ab-489c-08dea51767d8 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:08.1368 (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: +Id9k6gKz6FZlhiWYPcVGNmIK/8c+pntNwSxvhGavXiAvC1zTmgmIkdvwoOLPAkFP5fwOy17K5xBs4g/4ipoHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7458 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 malwarescore=0 adultscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Authority-Analysis: v=2.4 cv=V/VNF+ni c=1 sm=1 tr=0 ts=69f096c0 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=o5oIOnhZENCTenyL_yNV:22 a=yPCof4ZbAAAA:8 a=ZbQ-JUxe3OK3M8wTWUQA:9 X-Proofpoint-GUID: qTzXGKWUyS2d2pFW9Zjsod4dnE0i514I X-Proofpoint-ORIG-GUID: qTzXGKWUyS2d2pFW9Zjsod4dnE0i514I X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfX3Bi3Dcjrfusg LMJAC/MiAYuriyikvJtoLVJzWqtJU3qbOt14j8sX07/FLkHJ80BQ0jRlWsTuzDDB0TfsXDzSxBe WK9+ATm1CyZL7odGs2JGtWbvK26IYktM7gFAQX7QZhpYWTouEZemz5XVbT1iJ6RQh2UMc+9u4Jx xHGbLtKa0EhfQMtf9NIrKuuQ8CtpwzBoLRhTzfg8FL8XBVMOt3TngSt+6OG7hkhnaUa8taqAsPx g3VW3GBRlNVQCwk2IhISjUMkzlChS1V3FuplmuT3hnRJDiTuCyjeCW6etEc2DIC5KUR6K1/gsI5 mLJVqc+wAfQjtzXDOJWWgdR1xQalT08nNPmihEtfx9wxil0GgKtSt74QgX0ptVJ1uYYlUJZ0rjw T3rOxmf3jLUXHfZv5O5afch5XyVfQ60jS6gUToIJB4L8Sr1GL/r6gUqWCGcJnXngBmK1aw6wzGe 6TRJlY+snHEw6pCZWXA== 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/scsi_mpath_device0/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 Reviewed-by: Hannes Reinecke Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 51 ++++++++++++++++++++++++++++++----- drivers/scsi/scsi_sysfs.c | 5 ++++ include/scsi/scsi_multipath.h | 8 ++++++ 3 files changed, 58 insertions(+), 6 deletions(-) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 18d50d051b3ba..31ab1d477c686 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -104,23 +104,62 @@ 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; } +DEFINE_SIMPLE_SYSFS_GROUP_VISIBLE(scsi_multipath_sysfs) =20 -static bool scsi_multipath_sysfs_attr_visible(struct kobject *kobj, - struct attribute *attr, int n) -{ - return false; -} -DEFINE_SYSFS_GROUP_VISIBLE(scsi_multipath_sysfs) +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), +}; =20 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, error= =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 043fd2d9cc417..bb4fcd03d8777 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1427,6 +1427,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)) { @@ -1479,6 +1482,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 b3e0b98f39c56..9e92d949392d4 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,11 @@ 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 Thu Jun 11 06:59:43 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 A2CD7402B82; Tue, 28 Apr 2026 11:16:04 +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=1777374966; cv=fail; b=d3ls4nMyZcjMUxlovo97512z3WSQudVYKb5VJdRPtX0PahGfIc88thgLo9pO0wx/k7LjMB/KVOohxJvCcQMqbBoCWMQvqlEQIDPbMr2kT7iVQB/oas4UCNon4tLoSTwecSs7wzAVcnfnmw0Bs2mQmoYi6iB4XBGAFd9t/lT7zx8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374966; c=relaxed/simple; bh=QROtpd9r+St8A0LDqL5GvRLHisvZaYTEGW0IIBMJJ8A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FNEsm1fw0fI6Brv4aT5tYG0zq8xtNbqf4AxA6FY3CSfT543OKIlxvC0on5jGPJl4wmN31MRvqXTjG1MPlNUKrhypc9DYLY1J6tFpmvd6MKF1R3GjlsQrXhSKb8O3RoXsisGyu7L+Uh7eLiJqYB03n3pJQvXCQTYNJVOYUNOCHI8= 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=m0VY/rET; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=H6sAdWJ5; 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="m0VY/rET"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="H6sAdWJ5" 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 63SAYxUm1015449; Tue, 28 Apr 2026 11:15: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=2MEbDpmQjjSbhQLsOm1wqnGTorydIDjgCYKf/upxO2g=; b= m0VY/rETXGMQpcUHUy0gKojnF+kmkM6Pui/jGPtwbJe6T1f1yTaLPRjvajeA41ut 2p0y1QBSIZ/eDRg0+2wSge5pSNNpeFC0Bg7/j+vg/tQvd+K4W0GEvCekB85+LuRS jsV1CbTAgdrcaZ92GB6bPM4lIq2tYVeI395YondzR5Nh1uM+1t1p3Doqi8heuVf5 fgvbcKWk1VyWVmRjuPo9jYTjso0Bd3LgbGGR21eRqUO5ODCUbtrccCXcjzK9yGTc uUjN6emFjNYDyPwGOGv2ZAUKjry9yPNEsOIcvgfKSi4Qje5xUUCtJfN9d2iRRvo3 wctje72pmyU1xZQ9dH1DMA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drm6yykbn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:15 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCjNc004725; Tue, 28 Apr 2026 11:15:14 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013037.outbound.protection.outlook.com [40.93.201.37]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2jm5ne-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:14 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C+Ilg19Dj9RrcheKUDAzs6qz07J2JIZo9++/Rl0WUHbXvnNOfwsNXGSTE8qlVF5jZ76wSg36nT7cRMhpQb9wTCiWxIiy1G04nwtbXlKNwU0bGkgY4NDLHgwTYPJVVjrX6677bMi2v6bmVIJO1+2lRP+d2DWscQXMhYlj7KI1UQQr1lXDPnV+WxXU3j1GZvlsA7NZisp5JIgFBdrdkVT2mltelSEw1VQjkiqk/2XndZJRQVKGnRbhnipUEZRVLNuNIWxc89qdWypuRw59EXQ+v04Gyoji2O1sXjhdrnMpDbdLSmzhqHPX0rOH2O6VAsTs2Cf6qRkP5Jil8Rsc5rlNFA== 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=2MEbDpmQjjSbhQLsOm1wqnGTorydIDjgCYKf/upxO2g=; b=DyJ/TLNYaT4N+G6+vVcAojb+G0CW1y2JtLL7hXf8Aa5nts2KM9QDF/WHg5eGZpFPpD+IObfWpdpbOjneXSxH+jRIgC7Qow26H5y0Llj8m/4gn88CDj4Aub3/K0GOt7w2Dpmzxd5042mMFlPNg2dQp3oEaEf/XaKj7WK6WBjk3yOgOzKcbwjpfpY6lUWCBUUmGIdAHs188aXWDyyM5e38pfW3vmz1G6IYQr6o+Iu+0hYgVGi4j5ct0G7T6NZby59+OPBbEbqiA9lEiVWMxxxAmQu/MjgGxgeeS8W4KAREgzyp9Kw3SHhGZY3Z+gZCS/9REvmdnOHDvUYd+aMOH8reFQ== 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=2MEbDpmQjjSbhQLsOm1wqnGTorydIDjgCYKf/upxO2g=; b=H6sAdWJ5c/kx8MgX+J6qIyBOTfvuQfd6JcsU+p8QsVctEy5VH89CUDRVhVk+1MYLy56pv8XcUEyW4Bk8Er+q9YB36bnvUdaEuM/zv0XGRc1WGfjgXr2b8KkPePDB8EnU+oFXp6iHW4nErsNHaNbqGhvGCGWoWWotOb8S6p8ipdg= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by CH3PR10MB7458.namprd10.prod.outlook.com (2603:10b6:610:15a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:10 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:10 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 04/18] scsi-multipath: support iopolicy Date: Tue, 28 Apr 2026 11:14:33 +0000 Message-ID: <20260428111447.1779062-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR03CA0253.namprd03.prod.outlook.com (2603:10b6:610:e5::18) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|CH3PR10MB7458:EE_ X-MS-Office365-Filtering-Correlation-Id: 54136f1a-d4a0-4f76-6652-08dea5176915 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: q3d76ipx3+W0a8AcfHOsroSfdV6Ufsonr3kV6trMVYwBF3bGCKHf6qP6i1CdfspCe0mLZTwAlbITJJ455XuJdqOaII/TaGMQqRTZR1O4iRfeVDeDnovvVVuZNQ0BkrRwFQKhakWuQa3JkEu797d7hpC1RkpO4JNxMD4ezW/6etsfFsQlHJM89MBxczBC3FFYVUqHhcZBS6jd+ABc/BByl847Idlpb52/tPd8DMnqtZ3ZdAeTwCbenw4MoTx1fll7v+k14JndjzH7bFWyawo9XlhMiECkKOBbUMJWs23nS3SKtVwo2++2aEDNHqqNmIeoITljG+zzcSWk4TN1FGDdusSYXMwnj6wef041YlYUZhQsNOCg/C0tYpJeWkUbt4WGZd3FqMuKBrtbHS0gJvqEfKGEASJA7guAveNvB4A6o0UsVbujegf5eXTzRKVPHuRZU6qweR3g/qjrHk0wR+o27FVbnW3ljul/yuXzPgyRKbMluHFMi/+YAtAQPek72FaLa4DNSSIotPOFu0kQ3mENSvMpn4+ljcF3ydJBCyTgDjW89EPxTZ+l2kt+RsCSJTJHpvmVukGYwFynVLh5S2+F/OgEOtrJwuayFKoj831dGoeQheDSYNtEdKfOvxzhAvWYlB6vUj/a4YQPiPokJS16zC+3nJ7HU/ZOW99H/LAejszdtNgVDtIdzg1GnpD1CwUioapvEnK5ERlod+loxDd1OgxKTbuz4OWb853FL3a3s8s= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0c8cQxgexPiSXuzbWGnHfGmmHhcb56Z/Wk2kJV5XiDBkcP9LHNmakSOaAsJ6?= =?us-ascii?Q?AIwtgHEpO5eALZ/Vv0DoypUM+zajQxTeVrZAK2cAEQtnu0bdToLI4jSPaLfh?= =?us-ascii?Q?wllwxDcYCQ6jPkGvUtL+kLcZseToqikI32Q/nzcZvVsbxaDZpADVHVLyUkK6?= =?us-ascii?Q?nQRM+9FXeRnYaz/AWhLWhTyO1sAL+FzuPacGi4u9QR9BqF3p7rg8rUa/3WR0?= =?us-ascii?Q?i0P7Si6a+Ntu9YdzRWj5ixO9vUx45L+2N9MVV7CkEnn+6FInuJ7zTxolrzPN?= =?us-ascii?Q?9BrA17lN+DbQmr0FV2buUBuipgdUsxbV69yzUIHIEIDBoFSmZLguWTzfu1D2?= =?us-ascii?Q?kX1O8d+oW7n0kV7rz3HffKSIWh1hpfvv59jZQNs20k4+eOmVhnhwaDWBkXgj?= =?us-ascii?Q?8QVSzpDANqx06LxMxdJoF06p67dIHde0aE7KxzyCe6evovEC2ML3AwLbEjsQ?= =?us-ascii?Q?gwqYpxT9TlIJL8E64MITFDRMvVuVoT1eQQPgspFCI4izXjcXJE3HuYK9B7Q6?= =?us-ascii?Q?s2ShXWb15JUHWQJagLgV3syPno0wYs+kmiH5W9pMoVsvGOiDvIDlYqCYYxWr?= =?us-ascii?Q?4kWv8+fW7PAzgcLX0T+Bgb/vr1fj3synaUfYAvA5512IUvmwh8AsLoS31PQW?= =?us-ascii?Q?Dy/QF40bwyTg/DTGe0zbW2KfVP53uHIH7NU0G4HukVsd0QdIT8bNcIUnjwwb?= =?us-ascii?Q?FTycg2a7RET+32SQKQX06Kapj5YTWyWS6fqp/hvWew7ez9S3DQkvC1KBxVPj?= =?us-ascii?Q?HewQ53RtrOth09r49CO0NivfYBvczue/5XrfxeaNDp26JTSSniCX0zv5XNKI?= =?us-ascii?Q?dDbEr/pa9DDHj8X9vJakxeMeQdbjzQJuY9Ya7huSM35ve8VQVV6ijZtAfn8a?= =?us-ascii?Q?ubQI874xANZWWFOuiBHq/6BJjQuyTA1Y0EjCinnKgc+BnZRVFJ8GEj69UsPW?= =?us-ascii?Q?Te0aRNcqDa6iUW/02XnjiNCxIhJS7KNZ4M0AogqMa1q24MjbCheuytpxehIl?= =?us-ascii?Q?gYklSICwRtoqPwOgGKY8CTYeROaOfWlcbolvNKcsad0BdWhHfvWvsMo7a3tf?= =?us-ascii?Q?TFMMIGec1Ogr0Cedrzkip2zMY9HvH1z/f+J/bXoITM+9AslVcVXq27le4XJa?= =?us-ascii?Q?ZWdkY+hK2a2gps8KfHhz2rmu5flhIIFvZlcGIWdpJkDUl4PfW8KWZPCEEB+t?= =?us-ascii?Q?7wOrwgUAMVyNrj3azTRd411bp2ctcbE87NGTpj0ykaLU8G0aRSIpRpBmziWz?= =?us-ascii?Q?dA/bSpGDVu6ShU7hV3rRKRp+cMZ/lOooSA6JKCtvUJVTWCCv9S/C47WXhaey?= =?us-ascii?Q?pnSjfPI1PGHjGt9BdKhs00wK9U/Uaw62e9BHwXkYzGyvwhqnXS+yRPtUBUkJ?= =?us-ascii?Q?xNDaM5ehSuChmWRUJ+GXATy91CR94rikxvsFj++XBEnm+lTXYHa4fq4tXT6n?= =?us-ascii?Q?+fuufUPEFxgvY0TxxaJdlSoP2rVrRKyLErP+HgKKjhLZUfgNammIO/1gwScD?= =?us-ascii?Q?PflQVLAgKaElGSqtf6BFT012uCTrsU+JykMSCPJrHzfYOapRdmkyay837b3V?= =?us-ascii?Q?xsPbsWZOOsy9ptkYYtubdnO0ctI+Y7hn7Z0MLynY2McHwW/nfT0fw8fbCiOc?= =?us-ascii?Q?3TFnF7QklU9Ym5cPMsPUnZLDdQ8cUQQM0TyBHwvbryvwpU/WuuDQMuDLAtlr?= =?us-ascii?Q?oDK8cmisM2a2raG+M6vQoFF2T2OFHU/++zlxSj2eoWdnvP5rjtGQ3gn2mryy?= =?us-ascii?Q?4pPVtdtVSi6/GvEtLkd4BoHqlTHvpaE=3D?= X-Exchange-RoutingPolicyChecked: rodKFH5hLB8CtlMQ8mvMGwme5/YhHr5A3z8ruvMRKcTXx0SU1/k3haeWT9Sh+6vXkqO62E7cFxX93UkrCvsgWAu1TOVar4vcElJQ81zlBIBYcgjM8IL7tcIyZnKgiRjlszx++Rq4iODzohvslNjLmxmegIFHGPY5V4+GrdSypzDVXtQBXu+WjnSSkSL7avONOCd/optQx8/km9pFwfRGn+YpEeojDmntcpBMIFCz6zTFUvenBJyu3RKMSCgImcOqOWovHn2IhVXmVgRAtdEuaRbf3Iq2SJan4SBgyNTZT2w3dWcZ5wW50AGb9JIDgukmPQ5+H9WLZhsbWLV7BRIZHw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: BbEu1OMmsctE9KMdStluE4l8a2pCYObBBE36AaxK7xCHC+yMlZV0Hl9D9S+SZNzfbhcBmE3CyuF6MokPPS23VuA9ht+ZRDZ7jTpC5dI8ERXL0Y7Hn+gDNIon0O6euWcmiXTrPHWOb3obs6UxEtUGoOBdqt7m48XrC+Tst02APH/6UR5G+7WX2Y14bDmcWV4ybBOlzqrsxM5bkUdv7kW3BylDgdabJiHGilAFBsGpczcjE3e6tBOc7x+DCCu0LGKGpdtkZC9kg+WB0jwZmRPHQvMBUfqPKyQFcGtGpLtT7RWM3tLqjKp9KYGG2SWCPog9qcY6Q2lbum8x6FFgVprwDioju1u2EJUg6pD/K5R6cGEuyR1KMDFVg+AodCrtoWpN4jMDBOx3xioe0ybHjJzdd/wHw4W40f8ZPvcV/I/okz9P05y8EgFQzLwxAF8f2vmfLSk0ZkPFku4YjuIhJQ7PCJF0GzXiBTIyWGdh91O6npcbKH2RyOIx78HAKDyY21fNeHxbqzrGUmqjq2Q4aJPcwr0sBLkNqKarqRb05yH/9520k7i1CMyOdmEmS3vqOuCIFf5Tue3i0rPFv3ZNfmPevQ2NCrO3wKfsfsaCqQqWmko= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54136f1a-d4a0-4f76-6652-08dea5176915 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:10.0939 (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: zQX29JikY/pFTk5dkfWTb3RGtk1zeW3FWk3zv/BHtLLTIa1OdfNxZCX1vGZ9NfMRx0+X/zxwcGEUKR7GxuKhOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7458 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: VvHTbTyictZnFd48_yMxBiXi8u4_TZfu X-Proofpoint-ORIG-GUID: VvHTbTyictZnFd48_yMxBiXi8u4_TZfu X-Authority-Analysis: v=2.4 cv=BePoFLt2 c=1 sm=1 tr=0 ts=69f096c3 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=RD47p0oAkeU5bO7t-o6f:22 a=yPCof4ZbAAAA:8 a=8fwEAWchWUUFBy44-ZgA:9 cc=ntf awl=host:12309 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfXzwvZacPUg+Wz fl6WNkDU89sOr5KNUsfEmvewxm2XCeOFWqqVu+tWmGBHOlj5Cx9/KYQqNz12qWEpxiGgA4qIsxM WotwbDsQokzH2HchVyWKpaLnIbqqGTgz2EQOmFt2CDwS3zjy2m6AvbdP7beGYtL0ybFCBVz4BJQ ZzAO/OnNAUuZ7sTI6D4YGLX91PckO0SutvQMqFHhrDcm+M4OY42AQrJ+NP8EEKy9FMZWCpBfYeJ 8ZuH0RMTS5Fy+WQQy89Ya0fxmh8atBWWKuYsN0+gFFuUlVadU3ttFQ9+aduurbHEHM0EyfV8lWn aTdHCs6voM/z8OhYAzqHh9kBrllofpjMgINRrWrezaa8wCqkpJsNyfCuGY6vNstdEMjvIUFcElg F4o+4FlEmwxaRJP64MPbGCDNmoujO1i+MeOjG+xaB4Z9bkzLT/A8IrtDrtpIFDsVJRez7som70z dJAkmsvSPp0ltA44JGNCQzf7rpiH168DY8hkV32A= 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 | 54 +++++++++++++++++++++++++++++++++++ include/scsi/scsi_multipath.h | 1 + 2 files changed, 55 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 31ab1d477c686..c6ae02644fdf4 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -60,6 +60,23 @@ static const struct kernel_param_ops multipath_param_ops= =3D { module_param_cb(multipath, &multipath_param_ops, &scsi_multipath, 0444); MODULE_PARM_DESC(multipath, "turn on native multipath support, options: on= , off, always"); =20 +static int iopolicy =3D MPATH_IOPOLICY_NUMA; + +static int scsi_mpath_set_iopolicy_param(const char *val, const struct ker= nel_param *kp) +{ + return mpath_set_iopolicy(val, &iopolicy); +} + +static int scsi_mpath_get_iopolicy_param(char *buf, const struct kernel_pa= ram *kp) +{ + return mpath_get_iopolicy(buf, iopolicy); +} + +module_param_call(multipath_iopolicy, scsi_mpath_set_iopolicy_param, + scsi_mpath_get_iopolicy_param, &iopolicy, 0644); +MODULE_PARM_DESC(multipath_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; @@ -95,8 +112,36 @@ static ssize_t scsi_mpath_device_vpd_id_show(struct dev= ice *dev, } static DEVICE_ATTR(vpd_id, S_IRUGO, scsi_mpath_device_vpd_id_show, NULL); =20 +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); + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + + if (!mpath_iopolicy_store(&scsi_mpath_head->iopolicy, buf, count)) + return -EINVAL; + + mpath_clear_paths(mpath_head); + mpath_schedule_requeue_work(mpath_head); + return count; +} + +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_vpd_id.attr, + &dev_attr_iopolicy.attr, NULL }; =20 @@ -185,7 +230,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 =3D { + .get_iopolicy =3D scsi_mpath_get_iopolicy, }; =20 static struct scsi_mpath_head *scsi_mpath_alloc_head(void) @@ -204,6 +257,7 @@ static struct scsi_mpath_head *scsi_mpath_alloc_head(vo= id) goto out_free; scsi_mpath_head->mpath_head->mpdt =3D &smpdt; scsi_mpath_head->mpath_head->drvdata =3D scsi_mpath_head; + scsi_mpath_head->iopolicy.iopolicy =3D iopolicy; =20 scsi_mpath_head->index =3D ida_alloc(&scsi_multipath_dev_ida, GFP_KERNEL); if (scsi_mpath_head->index < 0) diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index 9e92d949392d4..de6339989d2a2 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -24,6 +24,7 @@ struct scsi_mpath_head { struct list_head entry; struct ida ida; struct kref ref; + struct mpath_iopolicy iopolicy; struct mpath_head *mpath_head; struct device dev; int index; --=20 2.43.5 From nobody Thu Jun 11 06:59:43 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 E0649401487; Tue, 28 Apr 2026 11:15:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374934; cv=fail; b=iGoJZKOmL6IAEbcgG/geEPFSZeEPGkn1hqEhFvhZNTj7WpjE/908YpPMw9FfPZazZolQANuOXKBr9PiPm8bvmyY+h/rvBxIN94tls4BG/bSh6LvRwSyHU2Ie3mzfAb+tjVke2Rh+3UZ2sWOw92RFiJqNC4e/Cr7epQ6/xOfMyS4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374934; c=relaxed/simple; bh=Xzh1P14DoBX5r8wihsaRuQn+zcIlLOkrF/eMiz6AP6g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=fb2LgAbGhbgmT8bxyUq+W6DASyJBnvIwRpmgFTH6EfCOGxLautAaVGSJQ2HM1SMrpXzbZZVsLk0EAbyo+ySdE9le69E6FJwWPJ4fsW0U79zFxRr1iSXAtmYiIYdhT8A2tXLFL2HaQM7TgafyV4P1DvWx3rAg40K9TVVTIJlMLmM= 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=Y3BxUwB3; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=LbUvqYQy; 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="Y3BxUwB3"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="LbUvqYQy" 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 63S8KHkn2722020; Tue, 28 Apr 2026 11:15: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=uMUn6TlJiAypyVrB8tAaRf3SCfVxHCNGRDY47wSzQi4=; b= Y3BxUwB3TY6Hyt7gXd2Mdk5U1Uk/obiMMY6v6IkEmKVcmJ2eXv6h0M2imRxT1n2S buK3qiCFUACSVeKjGH8BKYoU8CU6M+Tk86Q0gzCVm/lVHt8baPJmhInDSl0DJMLK GP1eDOw9S8kOfUaEwoSf0v5tjjcPLGbrX3hPN0VgjfIFAuKmc53f7LSeGqE28SQQ oahaDJxIVRxHzn/8WcaSwsd8x2LLpUOxWeKe04jXeGSQtcdl3qtSFn/LdWisnW0G XDxLgScFfrHQy8zL+b1nPgUnVSoOYp7rA/2yfyPso+gcOgcjPKbuOP8b3HzMet0/ E/ZI71p+hvf7veOAJy4E+Q== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drn7t78hm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCSxK025967; Tue, 28 Apr 2026 11:15:17 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013005.outbound.protection.outlook.com [40.93.201.5]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ckm6p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:17 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vtpxGek54t2A6KmQSYQLV88JsGazWpzR75SHbeSfpXMI15b7vNIUfpr66KpAKqJeUapm7rq6e7JMef+bo7iKavtGQrrUKdmxcJswiDooDynynn5yj48GbUjKekK8JVosXWYg3BegSkdjQUGkyR/dUuJZG7tNZ2WXmMDJQQS62spHbFCVLjAsd6G/Qpia9BrslqYdJrklROfaVsdHlWUGrVFipKHVjvLCpYR6T/80P/qtf6WbtMcb5L5ABGyvChAlZHUzZ6haTuaTaNDgPH2ey6gSxw02cBq97vYGJagaKZ8W0dfYJF9jtdOu5OLBdn6la/lwyOZHEFET473k6wHL+w== 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=uMUn6TlJiAypyVrB8tAaRf3SCfVxHCNGRDY47wSzQi4=; b=WpcmNjp6NPji+qJtVtjKRSsGXXpusjCEtkr3F0yQOjs1vg1TYkTf2QVa+Yl4VmcQyEUBnmB5C85yigqUfJoheOpv8sMzbc2v5NqDkJFqjrksRPPSChQMslTvoxXsZ/buXRjl9+XKh6Zqp0+VMM1Ql1ck4BSFJqsIiVEugusZahAZLxMjV2Ai6wC2O0IGRksbmbZxPHVH4UKQfGYA3R21PZ9sYFMTF/FY7rgLCLa9uErH4Js9jiFeMQFyR/ErO3FCFqvVZ3sPr1Lb+DFSxbWqCgy/XM46zu1lJgV11TMtQ6WI+rWj2Pr6ZMfzUO4WtWwFtVbZNOvaGaIvSuAYyIOcBQ== 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=uMUn6TlJiAypyVrB8tAaRf3SCfVxHCNGRDY47wSzQi4=; b=LbUvqYQygnwY+pJZO7Z0/R7X2ZQbqKBfh7tGxjfMBcjmXGVgkSSfWlwjvuB70CI+4DEWSIFKtEwOWcmDa96RY9bhjEklxp8/1CFigthL2D0INYi5Nuyr29hqVPNJU75pkHLIYhGUGCZdC2X+xjpLpoxf0Qd9ASsRf9c5s67zIsk= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by CH3PR10MB7458.namprd10.prod.outlook.com (2603:10b6:610:15a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:12 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 05/18] scsi-multipath: clone each bio Date: Tue, 28 Apr 2026 11:14:34 +0000 Message-ID: <20260428111447.1779062-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR03CA0241.namprd03.prod.outlook.com (2603:10b6:610:e5::6) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|CH3PR10MB7458:EE_ X-MS-Office365-Filtering-Correlation-Id: b4841d24-3ce3-41e9-21ae-08dea5176a2a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: DR0QfAep62XVWR616cHu6Kip/pt4/N3tr1lZa1ey5H4M1vwcvO0DItioymygMcT7rsljLFHHVznfGi4dILWA7TtfnoWx6nreIDBgaODXZUsqqnuQxxoAWvKt/yd5oWkoqKlLUukMvWUi2edcxODnFa6bEM1sI11Q6p6gQfNFkzEsUg+c4H2i9S6CmWEdXd9LosfWAJiRtX3XTd+NII2GlMmU2wnjuhOyBXa8zPw2mS/sEk5p2dB+qAAxsZsYplCARRQfSra+Hxct7J3rFyx5uB9dd9PyuiRvZOnc4SsQda+c+Cl7BJw9YYHdML8xVVNLr0ipHC89lBedTM5nQ48woio6dYgK/I8zAbvYaRnkofIK9DAh9zIlAhfUFwIKz8FQeh4pTcoIh6epf0VE/Bz8uc+Dlp3j4tF4sk8yqaCGYTFwwX3aaPgQ2ioZ5K9N1SKPFrw/q1cL3xpSEvveHkq0qvwGK9GBK8kUjAzVTf+WkupRft0mTFTEkYgSnbcyMc3V1XfOSX3Eaj7EssCDWSZ6Pqmdu9G4SulagMH273TmD3RpBuA1gT2NK0EIWh/yC7BAu13L30jNhpJMAs1S2vhY8EPHrGnROOXOTI86QcpCnoT/wLVnbLGUiXNKlMJAmSbfsexZjjq/uoeiCbAMspIDdJPLF9D6bQ8hP2flaLPkwZHdr8fbpwkS5vcvUnnaZr0XCE1BmoZkhM/pBaW7wvSwDXTVu1rE6lMG9UgFb7iPEjQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HcdZbaSFu8P//M4IiHS3kTASmljiXqvGXbVs+FNtjW1YVnzt4X3Uu9P5/PN0?= =?us-ascii?Q?AXd7/GzdRHlrDRU83PgxRWMe9oL7Gtk+0Pdgw549sw5hhp3cG99zSE9jsGlt?= =?us-ascii?Q?GImcIkxj35nRDSSs14V21j5rb0uvvuw913ecmxFrzdVYEaXvN/BpM43lL6BA?= =?us-ascii?Q?kjys69S2wS8kKKHRqvw9FDAPjz2iyBJQ1c4wjrMLXqx0AaiAAtHbBRNjgUML?= =?us-ascii?Q?t9n59wNm0bTum11LiZW4ffNy3NQk2k+IF+2az+N2cuyN49EH3/S60NUdNTVj?= =?us-ascii?Q?feJcGwcUkGf6j4eeeHQfqYxSqH4Bj7rOEpDB6wsMvtMotUBQfKlSnoPFR50d?= =?us-ascii?Q?nEtQkqjE6MjL75SnjgkWoE2pOqWFO2gTBzutz/H45BiUqFrS8SLDe4Wbr2J6?= =?us-ascii?Q?4Uq7oHGXUhVMMPX750lX4jYYvMcqyJRIcx4aso1EQOL4Gl7msec+FFnQCVpT?= =?us-ascii?Q?26jXUlsfgrkG1U3UrzeKb5v51dbsq8plrwhA7uvawrK2hWMDgP9y4NPIZsqf?= =?us-ascii?Q?unCxEQyqBTcpshgNw4LNdmWITfjjzapRCxNz7tD2K/cXVUvCi0r5limKZyF+?= =?us-ascii?Q?brebQBAgAJSRJbH7cvol7vzxOFx1lGm1UFMZSHdnc4cOsZ212Ge3VZDMEwt+?= =?us-ascii?Q?MWu8WePi2B9216MfFvlZQLZ/DX7o7pg+Z7XZP3TX5/JwIUVnrneb0fy7PFEp?= =?us-ascii?Q?TSwhZPKioKdMiL3vHacnixsRFHc/uYadwyDDY+qE2gmUHkHew9hisA7gQJX9?= =?us-ascii?Q?/iuBR5AX0UB45hRhwEirBfT1MhEJw7TEHOv4vd2RTcxwV5OATFiSsZA62xG8?= =?us-ascii?Q?ScNmAZSTJPbaeQrHnbIrOCqCt9uSzBvsFMIyKn+4WFCjMflCM4fPRSKm00ri?= =?us-ascii?Q?O90t/kJGUeixrWJsyMH5oQ2J0QNC1IgUqO15OxKhhgT98uKjCQ6q2ubYv6v4?= =?us-ascii?Q?AHoz47aCUBVnALSRekoe7x5hs7ke5+L3rNkRwe5/dbEkHcH5jh7PSiqQILpy?= =?us-ascii?Q?ykVQL3TZXmbfayQ8iL2/YAlIY7/O+0pvUISLOOGd97NMnQMu38do9qL9o72m?= =?us-ascii?Q?ITYgab0w7sOTpOUifKT4fSrF+p5AQC1xze9XTy1JtzaUHnddEUJIPeEqwn4G?= =?us-ascii?Q?KpRjUpvgdvZp2B0US0EFCCIEFta/uk5JPibhSzwcOieRm7n+0VCB5GK0VTe7?= =?us-ascii?Q?PZczGJdNrCA7Bz7sgNtWGCpQ5mBQ8nhaMrRY/p362h2DAUHXCJi0X9PcpePi?= =?us-ascii?Q?l2ER7RCK/ypV4gaxIyi9TQLFp3nKjSerwUJsl0gKwYNBqztRHT7X8rhiEfWJ?= =?us-ascii?Q?uRPdbgYGvXBgjaqxij3FD78hKpLwaRHNyFv89VS88is9MoQ4rLrDXfxeqdpd?= =?us-ascii?Q?PUrYtJZYukc62OAfPUgXiMqxbbyptn9TDnjJXxq9FcriSRHgmD9tjQG0xMGh?= =?us-ascii?Q?TxldY9CdqM5pVlO/jsgouA8M971M6FP3mj+axnasUufmdAniDn8xuYH7Z0/U?= =?us-ascii?Q?z0ZpbANmkhMamsBXzF87f6+DpTRChxh52YuH5jh9gvvSm2an1TFSohOyUvur?= =?us-ascii?Q?WRDgH4gKqDzQATeul5Q3N7a97QrDCpJDH0clWSY8xnaBTx8rS+555yk/4rhJ?= =?us-ascii?Q?2qckkjvQH6HpRYQA3SsXvqEQ0mqgx3HtPmXGXw8OGR6Z8wayYxoBsdTo6Bbz?= =?us-ascii?Q?V5oxYEdaAldEByArqx+CmPzQP70/7wtgwm+jZJOD6nxl6vx8GKywj+RTGrYh?= =?us-ascii?Q?B2xSoJ2vx667ssdC0wCm6WcHTCACcHc=3D?= X-Exchange-RoutingPolicyChecked: ByLE6HTxMaURkarinDlXAh3+kdI7QuQRrFLacX/TWZNRWh9GmAtv1yyFapIIFO5oMIEC21X+VfOmmdDHjstm6s2x/yLxQGnFc95jCpOeGcQA7SzUVsw14U26MdejrvH6U/a6JAc65RtSaZ8i2DWM970WwpP4UsBfVL4DfTK/yjTdiRR6i/YGsqJQWwW9+12D74kyLuufdnDXsVwVZa4VWbZPQED7Wq+N5WbP4AlPr/VqcCn4X9Ek8OOui60g8UPImy+zyRhcNEfAKh8OgjJ+v7/CflWQKn9ml1gQXBMSjQp5Nl2srN2d+O2QWT9azMVPuuUItgsNSO/6OrWWgH8+Tg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GJpQQE3Jz1/lM6fFSvpG+1YuSWq8+hEUq8M1ysDM4bESAinY2MJUT+p8krziNVsbzRC6xxwbRzkDuaxAQeq3XnPKSi/QUiWzJx+6znqQbbERezytyNaZaUjmRo7wNMoCbkdq6lkoIEt2W3K9WeEMR6ZwW94D+2tNk8WO+saqLDJJ1cwNXyKYKjndUQf1VtN5flV12wp3d3p9sc0NM7FlzoiXoiHZSCaftaJobIdE05qOQmJgPVcvtJtSKK/aUUlRs8Io5OxcJB9Rwj1HEAiArR0eA9FNZqWumDCYKAYthaNoCq81N/OqS7tncv0aj7HaL/VxGJVVsB0IEZBA1l/CUx+YmcPoFVyDbc4n53oEWpmBdSPJTEb1rLUosyWCkPgoNU5mWe0TUsEKQ35uGd/NgPfLfvLTCDXlBOScgoTksjLjcoozMPcBAnTVUOQUJnIt4gGZEuzmu56ZVH1VzRwQsWTjZKjKYMPUfjSIyiqJSCbWVCwzf3PBTS8dDLfxptEMCIqTCPSjlwSSgmKukictKbx3eqndcatKjEZGVu8VON73XE8SeIoG7VwVmo5jjtn2V7OUA0Z3wiwRc1tPyhNSaeFOhXGxOuTgFJy8XLuwGQU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b4841d24-3ce3-41e9-21ae-08dea5176a2a X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:11.9522 (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: U8SZ425REKQAZO0SO/tBoiCJRKsdrYZJDeFkVnXhqCM5Uj7deme9Ha6DPfeEtQkgMKnatA1QZY6YVUEEla/LOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7458 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 lowpriorityscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfX/ENaAW/yTEhs lX8WPFW1cigjysIu5W1hiAI5q0uVraY+79twUQpQm9w2lX6CdaED8HMa6Q2CNpcOfry28xlzPkz 7GgpzgVGp4SvPadKusAgFTAoMrsZgqu0eOw0YfKaeLbc4vetCjfreyA1sscoNx9iQ9TqPo/T8yr XgJMDVQbt38vjh0UbBMV4DSm7vcAVdxoOAJbOugf+HJrqKJX8+f4VBQWsIpdmOxOOTJZOHyuDte kPBPNgw85t3Nxa74MULUET32OsEma1C5nBUabA3qwCRPwZJI55fIVXyggdIKG90Ur3dNjfXnxFU hUO6IxTw1kRIosh2UxtS/2MBY3iKB2c4Hjl4DCrwKNPZUA5+8cSrFtakiis8uOt1WXBp2EYLIOO TsBWwd44PyE94bbBFyeWVN/r8PfPoWuxMBQlMzlcOuM7QAfVpfgXba5Ls62sXXbUCIISgQ80Mcr noA/wq7fCadAqMHS4YQ== X-Authority-Analysis: v=2.4 cv=QO5YgALL c=1 sm=1 tr=0 ts=69f096c6 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=3I1J8UUJPc9JN9BFgKH3:22 a=yPCof4ZbAAAA:8 a=PbwEKb89bYuBhGpDIggA:9 X-Proofpoint-GUID: 1jzMLtGPipnZQ2rT71LIcVCBN3xQ-2Ad X-Proofpoint-ORIG-GUID: 1jzMLtGPipnZQ2rT71LIcVCBN3xQ-2Ad Content-Type: text/plain; charset="utf-8" For failover handling, we will take the approach to 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 | 35 ++++++++++++++++++++++++++++++++++- include/scsi/scsi_multipath.h | 1 + 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index c6ae02644fdf4..068c5e93ade1e 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -96,6 +96,7 @@ static void scsi_mpath_head_release(struct device *dev) container_of(dev, struct scsi_mpath_head, dev); struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; =20 + 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); @@ -230,6 +231,32 @@ static int scsi_multipath_sdev_init(struct scsi_device= *sdev) return 0; } =20 +static void scsi_mpath_clone_end_io(struct bio *clone) +{ + struct bio *master_bio =3D clone->bi_private; + + 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_head *mpath_head =3D bio->bi_bdev->bd_disk->private_data; + struct scsi_mpath_head *scsi_mpath_head =3D mpath_head->drvdata; + struct bio *clone; + + clone =3D bio_alloc_clone(bio->bi_bdev, bio, GFP_NOIO, + &scsi_mpath_head->bio_pool); + if (!clone) + return NULL; + + clone->bi_end_io =3D scsi_mpath_clone_end_io; + clone->bi_private =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; @@ -239,6 +266,7 @@ static enum mpath_iopolicy_e scsi_mpath_get_iopolicy(st= ruct mpath_head *mpath_he =20 struct mpath_head_template smpdt =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) @@ -252,9 +280,12 @@ static struct scsi_mpath_head *scsi_mpath_alloc_head(v= oid) =20 ida_init(&scsi_mpath_head->ida); =20 + if (bioset_init(&scsi_mpath_head->bio_pool, BIO_POOL_SIZE, + 0, 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; scsi_mpath_head->mpath_head->drvdata =3D scsi_mpath_head; scsi_mpath_head->iopolicy.iopolicy =3D iopolicy; @@ -279,6 +310,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 de6339989d2a2..c2eeccea52d3b 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -25,6 +25,7 @@ struct scsi_mpath_head { struct ida ida; struct kref ref; 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 Thu Jun 11 06:59:43 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 4F35C3F23B7; Tue, 28 Apr 2026 11:16:36 +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=1777374997; cv=fail; b=a3w4gNIHsQ4SiYij+WZ+uukLlWsq39dda4wzz/gg+zfCdphRDw8pTMaOScx/IRZeP85xXLi6OASaFJ6hwi9Ms0q5dEXvNpZHc8eSPzl2AywRnyxCCjlmpzhuqSWIZhZUQkZ5TBe9A7nfKcP2E75Ey6tu72PFz4LhKNg7O8vd3oE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374997; c=relaxed/simple; bh=/kaLurNxG+K1casIoHWy9BsGR4AH1I7aDOXRTELoqLo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=aVcKhycWyvHKjFdeVRliaDDN2sGRJSfG/IGoFF2UAP/QISNqYGTGI3MFSy9GeuEhkvOMK+/aHM1eSrV1VvtGbaeTFUs0bVFHUecrdhzuALagm9I1wCar0A73DidCz9IfeNLgjL3Qgxoalbn8N7e1STq0v5BiucBnBmzqdfbLKZY= 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=Sv6PXaeN; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=uuYuc0+E; 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="Sv6PXaeN"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="uuYuc0+E" 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 63SAoDMd752791; Tue, 28 Apr 2026 11:15: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=74zizRt0sCl20vPZ1DMjEyHFAgONreOBlwQPBo/x3ks=; b= Sv6PXaeNyVrLTtvblkRW0kKU3dCjw0MS8PVeSJ7F5uFEJX94GaVYF62Porh40vNq CXf8FzrpQxEB9kF+mInXUqDUOaMRU8Har3XvX6sPDNzsdvOMycqi1l3rIcrMhMq2 S7Tdt2D7Pv8zKhoDFGYrXhbs8nVPusO3ZA/d6AJP2jApAEUDz9uyHk7F+DQWQt4/ zUgNLV85eU17LRQdIco3cv2zKXmqx//m0yd/ruNCt9hRFFmwgssoP+DL9dm/qTq/ QqojVC41GGpRfpKJh7tP5VaH4pO5c/8EjZFh8D2k2xwpMfhsLRG464qwa3vT0EM9 qKUEwj8XMuoqs/VEl6ew5A== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drnnefexe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:18 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCSxM025967; Tue, 28 Apr 2026 11:15:18 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013005.outbound.protection.outlook.com [40.93.201.5]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ckm6p-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:18 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Op8vOVME6QofMq7guAYL4V43A9y7gy6BpCQYb9xwLft5Ak/J6LcA37LvLGfVyZYYoqu9F+i4envH6AeGNvUahqEk37M9VBtiQ8eBiODbbT50qkIAzXMsVUEFSp0YDcm5kw1/s1ZeI2nschdKLNB0S/AWEPbfEZIsgyrQQJO6Ehr2JwZN4uX0wa3oyv+Y86SJSkatR2Llrsqu6dnVcLl8TP6OrvORFQY5rXYNR6iShvoYxv1vLOTgBbW6ntKOryVT/k7aWkkZ8Hlw2EaRyrxf7Tc0KN66NBK1UNmXJgLT+nyz1WfqITyZRF7NXXFX3JOxe3FFJy+At82KlkLeIIvFuA== 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=74zizRt0sCl20vPZ1DMjEyHFAgONreOBlwQPBo/x3ks=; b=cg8goxYBJe/qPTmMatqSpO1nrvYWkJlMsz4B51Do8On5uORWm/gjtTJjUD4WqBFarK82k7MkHoGARssADvwQJeEXqefJy97Q1NW81PicBFE9SpXzQMG1sjU4OuP3O5EzrR1c8JO7cV/cIp9Xz9y3tRC94L/jCnHSMsxBcpga9n7WMSxGzEiiJPZCRv6oJxJJkShrFWDssFmr2ggom4sx+MwjJ+GkXrAdPwJJgY8wF+5cWtwBwi0IEmE4KlZVsG/lrnFgs/8hQS1p1yWBsJ24pMEoAuKNrxkWV8dBn+u13yMwbpGgXYcQuBDHcDxRUPIzKjEIAwFTkM8QQwtvyeJU7Q== 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=74zizRt0sCl20vPZ1DMjEyHFAgONreOBlwQPBo/x3ks=; b=uuYuc0+ERCHsOUcYpKjZaJ71DThMJSDwUgXBsXl5Sdr0fioMk5P+oBXU1kzGjm3UXlPMMgsC43Br/5gVhBoJAq+1X5+rrVrn2tq3l7i2oUif8d7I3bv6pLdmZjqJpnJ0LCqR4cGPq/CIVDOdyhNV5psomYkohX5J2ANDGS9UxCk= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by CH3PR10MB7458.namprd10.prod.outlook.com (2603:10b6:610:15a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:14 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 06/18] scsi-multipath: clear path when decide is blocked Date: Tue, 28 Apr 2026 11:14:35 +0000 Message-ID: <20260428111447.1779062-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR08CA0011.namprd08.prod.outlook.com (2603:10b6:610:33::16) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|CH3PR10MB7458:EE_ X-MS-Office365-Filtering-Correlation-Id: 77297012-3a76-4e9b-3a34-08dea5176b5c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: hyd6QFAb3xSwB+Or6wg6Fc/caBjaqMHR7iSDMpDTIjwB1blUgdMXLJ71boQqGvbr3o4qcXkjSEbkWd+KTeJPyhdEuWJ28MbDkw6GEVXpuPgSroFYAU8IT+eh84xST3GrB8Zk1pHgISY8r8ugtxV+HTrcRZPHGdy3uVlSrz7oHcGPF+M0OjN51gC+k0pw9OBTFCTZ7eSi0GlXbSYcargGGFPVxILzmvKWWKLtIcJoNKlhDoPDaB2L5GSjl1yo/R61QbkTz8c5l8vSm/x08nP4JIr17FQoSVRnIyOmyMRkV2o8+HKhsiDsYS3q7oVDn8VM21qAxV0AoUA+tNJe0KzOIKgaSMXuiJvH0u5IrsKO1+3lsMt6i1s+WEewXZT0Fo/CgsWgeO9FLJ1isUusDDvkmvK/c4f+CjALD2zSwlXILQMoU/2/9XSphNB6N5oWQnFCq7hBHOBK7OfGIIfoCU3ZV0KxieuLejb7EG1FrWSS6i2KV8UhEar/1UvFMnHWxLgIwQ1dipg0AAOphIqeCzvqiy/lB7gCbcjoSAM29DwvHAqfC0StWtVj2IqLzLn+yJGywvZLJ/jDZYmYFvHwzJIVioIAB/BNmqfCOUaSefnw2AopRIjVCSRyaFFMNwcBQMSLi/VXED1mXkJ8y44WW6Tl6uCUiHDBxrmeCW+C7A/IPBnCYl+F3ddGJaHi65ZMwr2pUEVmvJu5HhznHOGUP4Yg/9yRuLouBHTt0zaiNbmynNU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JYyGrqGT3GdJCSQLsEYtyzwD93XX8lG86TgOIlpz5yPFyWKJPvmzObdYOl92?= =?us-ascii?Q?ABAWto/L9XHwHFoNi75IEy06/WPFg2a/YbN31hGfuwl520weGRWU6RJc2TEt?= =?us-ascii?Q?Yf/iuspJpz7pyt2+rpGQ7j2ELr//rzzYC28cXGJS2XNLz4vbvGYWuegka+Ia?= =?us-ascii?Q?imJ8V++X9rLiq4UKJNzYqTRpKvysTT2Hkz40WZ11Mix8bWAS9lw6kxhet43R?= =?us-ascii?Q?NEBJi+P6+3VRIZaXDy22DZlzIPv4/BEVXOMsVRvDheadQuAVw/jWRbhzDkbh?= =?us-ascii?Q?LCbZkjg+vsNNGrx5Ke2Xz7tgbGRIwXgg5MG2oi+RRRxuzHVq1JhcB5hsnssd?= =?us-ascii?Q?3xl0SiLhmLojFr14TQqyz/owGMfwm33hHIPShlibANnnhyirdYi0a1H67jfL?= =?us-ascii?Q?AebzAs6KGdoNa9vXf5WLX09kCkZkizggiuVtX4Hx1ILmyDBVLM0f8O4goRe/?= =?us-ascii?Q?yYtBbGNhY+EURd+HFLiR4iYFu3BoN5NO+EeEY7D5syzI31Vx+sJYW5iFIGj9?= =?us-ascii?Q?MW3z1TIYtE/3gdRkUc5UBEkf1AeUPRgfeNE4RYHY2Lq+z5yHVmyzkm629X2K?= =?us-ascii?Q?zzpDxjcJtzq7CIAD1xQAYESZd1LvlKkrv5p52rAEJCnpRx+dqUgcNh8WEgxI?= =?us-ascii?Q?9u/wz7XP54G6ql97zOk2m69MJ/jQwQIVofrO515lPd8qVdAaBJuUYIax73+I?= =?us-ascii?Q?DZzYzeonCM8jqmSFAA7AkR8VCEDLhnoSkjE+X/xVVlVtwEcBWRrLxO/vLOQy?= =?us-ascii?Q?lVLuQmuoNjiY1es0qWtwn/jvt01cIT4FdxAaHHn5NMXtbFwj8E7+QAXNKzi/?= =?us-ascii?Q?GlrXJBoKeRswMQfto6cFkCgn/mZVjcFlH0AiKtBqbLKhLizrZb8+SE2n+V9u?= =?us-ascii?Q?kGsQLUr3WzHHhJa2GLiEuvv/ReQbuR51A0JwfCs+buhEaUFrVjzUdYmwffsz?= =?us-ascii?Q?T09OOahpxJxZKg+QNpIhkVqtJvHXtT6HecgH2Zpgw4+jEPmOgxpLmNpsHP+B?= =?us-ascii?Q?eLrLy9bZWuspxDuo7kJvMghtL3TfLH/3D7eyjzL2P6FmGd3Sos3jHZkwZA0V?= =?us-ascii?Q?AG9MFV1/7IlIP8SFax8NDl7fCnEDIjGZW3xVOXNtaBOwABYW9Fp81cpurnEV?= =?us-ascii?Q?6Tux5G7SPkySlG4jYp/B33hVq9Y+fQFZCv+D1g9nl4on7RhQb2vC0kmHeDhR?= =?us-ascii?Q?n6SaQHUknHiE0AX4ZelLIQrjBg3fdlJXRynI0wmijeM0HcG8kUQjLcQfy+PH?= =?us-ascii?Q?vS3lKTvIr2aeVFJzVYYMiCHbxjc2kkFf5tup9zXtuVsOwOgOE2bLWEbE1Dm9?= =?us-ascii?Q?oeASAHkubKo30UMsCrrFxB2W1tLm2DGQVQ/2s8roGc9OJo8F9Xm8WJe9Ok74?= =?us-ascii?Q?CMwOQJ3ed6NKAguZ74VV/QTSLDxmzM1ttipp3cvvsklUxhL8cWsNETo46RXX?= =?us-ascii?Q?kiDzMJIOHkXnjrOiiOYvyBeNTu9n6CWTa6jHwytTGarVrfzmfc1QEa9ktKTd?= =?us-ascii?Q?YDamY3Ymajyh4q6G0FMYjz75+H540UPniRT1kDawxKTjQiSH1PHzZYtec5Vr?= =?us-ascii?Q?obaRv02CuYsF+wjdFgYT43mS4jHDav+uGnR2h8t92nm+BQxmlHHB3tuZTr6a?= =?us-ascii?Q?c4iFsBPvmju/bklJGOowwSh5nvILfX1sE3BKb6dRAtA0B/vsGKsYTTGs46vu?= =?us-ascii?Q?L+RISo9QyyETx7bNaT2HiR/EKK66hSqEACuiKQddmDtNzRUZl8No7QWM2BcB?= =?us-ascii?Q?S8A0IU8Kv0PTn+Vp7Jq3j7vVvRdJeXU=3D?= X-Exchange-RoutingPolicyChecked: Y8ZiS6NzHfvdKuqWbfHog2PuXjYADl8GbPODFePyHYjqTz/rfUieZMk4N/XWWWo0VBSFMAAlpCjHKnUZjHSalI3xtQkmwDM+VWPjqlkBY1JfW3wRVNFRF66e3aiye3jol6/smUPcX+vFGGtOe84ehvvyPqF9jQW+etuKFg+ZBqzgX8uAcI0uBk37bl+I3lFBaRvnlhalGpnOvlD2Nm3RYzzle1HrliUiSfUmaoGqgfArpm0vXJ6gyTm2Hrf/UQVVlQNBxhYx8zurCS26+JaiUmB3oz/yhEB9xxOyyYBHV1MUPHJo1fuo0LCAIY0C965pt9exsE50PjUuPnkRhi5cGQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: MySXVplz/MVl3/daKwgDDgUHKh3Y7FvVXIjwAihSE9BSR8jDsMxlamyKpEylG9z3MrAb2KTxJO3Rf6wuSQ9U8InLjQkABEC6NZvu1g9uXT12HV062xwNv3l0BO/h3Mxd00SGbr3bJfQ7tA+qmZDTYG4wR8UqYXMtcJ8gUetkMm2tYUFS/w3ms1XTXRwV33QWzaPEKxMs3dcq9D50URBcRzsOIMzHTXa8p0bSOiV1iIcqNQyuSIpaHzCzUOBcDvIhTcKXreMhWnrsRGuuEdr+xUs8LrrlDrE38VnkHl348jgG5KJX1kY7qaX6prT55s1n2xVAUELFm0p2o34z2lQXKIbe/k9VJjzWjzAaCPOyRt86XVNROirbFArpwz4KlvOVs2/XmZkyXaZn1YECWqgbOOgq6SPdRrIUKhBBkqNhGft8ce7ULdfYMDe7ryn3ycREQA5qw9XFYNLFNUyUUdNKIfjsrTCNMGJ64R9C2F7eN5bfE2TWP/SVlpwwR9t/e4X3XGrcNup6X5IK6aiDVl4v87TO8egl8mTT+4U0sNs0F/2NzEB7+8doCKmNShTb7xoLytinGS0OVEW0vzECWeHN0tNoNniOf6IMfPZ/ekhOtME= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77297012-3a76-4e9b-3a34-08dea5176b5c X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:13.9797 (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: dzsl4ZJ7fW7OM/F4R+K+Ey5YyraktgWk+M/KR9YgrQtUEOB1z2U0Nkz8E8lzqFh0tfmQXvywJ1WrnpnL6IaOvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7458 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=999 spamscore=0 lowpriorityscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: 39ULlSampWNYkVLNUl-6aBne3Ez1qr8_ X-Authority-Analysis: v=2.4 cv=Y6XIdBeN c=1 sm=1 tr=0 ts=69f096c7 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=yPCof4ZbAAAA:8 a=kQY_DWcjttSAKOrtr3gA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfX2Kvh0L2/FWSc kP12kOzuh2IZI85fNxti4gWfZhPTfBeg9itvypDRE1H2cqTUcL/xhii4ASJUomV2BjcltqCQvsS fP+aaxyfEoBlLd6iNNZwp50D8mOZ6Hk3EGZrOw8gMScLWRGHIcUqzjOYyrVjx8cMUtKNZ6AO4bH BHBcZwOuwkwgOUAJN/v0ohRfpbIpur5rVWjsmUWw/nyqa+rO9q6gDSBH6CAdUaq2+kav9bJSxGC /SS2EfKVhbwN8vU4VyD/GvuSHewmQlS8pcvCf4k3BHWHaHp678ycAGTnZRyML4cBCdK3wuf7ntb ruNjCsELuTPXPvur6bFpCuOMqD8jBpP8TlENm2J9cNJmLX+lT/rnT5dX1KcjqZ/R04H2BBAWyPw ixSacAL1wDCtzve1B8eudyjHMS4KHhkfYNd+An+S8yd57VPWMmTroLBSywWnMUwOJz/ZM3OB3XQ /q2xryG/zKY5TYaTesA== X-Proofpoint-ORIG-GUID: 39ULlSampWNYkVLNUl-6aBne3Ez1qr8_ 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 d3a8cd4166f92..43154f521198a 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 @@ -2907,6 +2908,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 068c5e93ade1e..a4636a53ffbf4 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -113,6 +113,17 @@ static ssize_t scsi_mpath_device_vpd_id_show(struct de= vice *dev, } static DEVICE_ATTR(vpd_id, S_IRUGO, scsi_mpath_device_vpd_id_show, NULL); =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_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 c2eeccea52d3b..d0e1cda836865 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 Thu Jun 11 06:59:43 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 EF6CC402435; Tue, 28 Apr 2026 11:15:58 +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=1777374960; cv=fail; b=p6q4gNuxKUA2hr3MMoYtUM9Fl3NMmPau7pLjo8JLXbB0BW+lu1P00C7dDgUV8IY5D0N1rjU+CIOtalisP4JlBcjz6UPVmXJDv4qcYM7M/C4oduU27YK1sPJktumd0cdmGelI3A5oO0lv3I6v2+BUHae+2aopND8aEi25+R6qjIo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374960; c=relaxed/simple; bh=n8Rr0XJtMG0kFiBShcSGwvsSHAv3AL0ttuKnoKMzCtw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QsKt9AyDXz4zWJ8avkLGZy+QtttZRtJOsO2fejSPig9BHo+HPGF4rW0y8fGvzcgQlAMd/o5U2xaNVB2E9WbRvHdNzfry89AEu9taFA8vpzzcNFF2+kK+7M1HOmszirbhFFaKarwC9o5FX1ipl6/mFRdisWV3/bpehUEb9WB/qnM= 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=Ab4Eb4E6; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Y8r7Fa/6; 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="Ab4Eb4E6"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Y8r7Fa/6" 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 63SA5DLS2603484; Tue, 28 Apr 2026 11:15: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=wYva7sJ8OJqR8xscOMaAfGclfnVqGLJTcSO8fvOGhzo=; b= Ab4Eb4E6FRW6+8lpjWKa/JmHwmYi+BTEdFjdqR6V3qkbco0N+O+x/Lq7N4dl2U3L AKh0ug5Vz1elme5MDvWnfRrXNzWI6xd6btM5dNrhmdp+xF26Dy11J+qbDN1PNVgx j5+zKEE8tc/Dn+ABsh92d3LSN2xEPJsKZCuFITjBFntrWjGgBXXpZQK5LYDfeV3p 4dZK9d6H5Ft92x9C0rH0CIS3Hv1OgdaLMQX/iBfYC908+zpbnx2Ao91aVo6nCfnj OUfke+FuFDSzyBvgOh7YlO0/V7c2Aj3QbVqsa+cXoqf5lYEe6wNYJZzCQh0aCr0A Cfmvu+Up+8yO505+An2U/g== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drm1cy8xu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:20 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCJKI033129; Tue, 28 Apr 2026 11:15:20 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013011.outbound.protection.outlook.com [40.93.201.11]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2cujcn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:19 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lY3cMNXPHlCmD+bUoiZY0x7/s1RH4NMQtLsx2eA/RnbpTbnVBdE99HfAmQxPVpilfryg/2fmBKDdoIG5nl+fXkWpeZg7xt6PsyySuzslOthfxRSciv4Jmr30iR2VlYo7KwBxeGvSs+M51jzw5Wij90e/LwsV6u+eJH7m8RxCMvx/nttfGhSBKA5qB6ttBxD0E8HCEbI8gDcXB2FQQjc+0OYXqT2LCJLhTksJTwo59T5frA72hFTbHv5kpqPXvLzE90k56mcwNsCyTFztO5VblYcFLrrUfAEYZNJzDl3jliapNNZoFLK5SaqscjEpp6756vky8qi65ohqRCjPSB8kVA== 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=wYva7sJ8OJqR8xscOMaAfGclfnVqGLJTcSO8fvOGhzo=; b=PIyFzTwrPg8+3WWwfd1PTjg7i2UHY/ocWjz/qyqQ7b3Zrp/dJYgAJ6UrDClEbhySIVOokozl5VOmN2IuktgAIKb+XXFCirNkFNUQ4bnLUSnbr1Fhma1O76Fvb4w1ZZWVKnszHM7R+aKgUeAAQqpc59IpFXOXD1JKoiaffAxGvvvijpJs+cIAsJdTmVL3ExyFhaQ2PM5eYUr2m/64EYSRooCBRiZtgqQcHGbCxvJyEBmlCOz0ry7X4CEv94liIJbXc6N0O4D5Gm9UPXxD3z/I0Lk2xMEJ2p77EaRlXBzWKOxVnpXn1L2CIGJmJvyormNjAjNHwMMizp+BXgsdKh39kQ== 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=wYva7sJ8OJqR8xscOMaAfGclfnVqGLJTcSO8fvOGhzo=; b=Y8r7Fa/6+OE++Fo/89spWqgwDtr+0N3VNC1r47rgmjJc5UhjThh9boiW8jA/9so/ksRitSaLa1OgTEWCNlJWB+ob8UbSa+UA9ohrhYeYOv42YehVhslXzZaRW+IUj/q0/1mmQfqzZyu+D4x28HUb5kmEBKOBYgyAV4IbeP8TbOA= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by CH3PR10MB7458.namprd10.prod.outlook.com (2603:10b6:610:15a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:16 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:15 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 07/18] scsi-multipath: failover handling Date: Tue, 28 Apr 2026 11:14:36 +0000 Message-ID: <20260428111447.1779062-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR04CA0074.namprd04.prod.outlook.com (2603:10b6:610:74::19) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|CH3PR10MB7458:EE_ X-MS-Office365-Filtering-Correlation-Id: 34b12708-f83f-4aff-e96d-08dea5176c88 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024|18002099003|56012099003|22082099003; X-Microsoft-Antispam-Message-Info: nqmMD/CRRuZ1WqhhfxIVpa6P9sisVQjdrhktrNeDsy9tWlq9JVhHv/TMvLjlkk5xponItTjICFthcQAB+klszibPfxybzSing+yfYhX7W5OSLJfPodr1GM0QWeu6CuAqnesj9meWUOO8FyjIA8ZGbg0vKqs6jizTdn1oa7tncnjZtqWac4eLkqIW6kDM4shhLjNADU2YJPQsOLt0prtHl2rt5gn1lX4j6qzPeKsq5ABTvpB+kl30cQS9xnIv1wLrlovQBIk5kQsThGQ8qqQyBcCgQonhlY+2UP4jqp+CiLc3RWBzqxLAYuzZVU1t92JN3uBv/ARTY79Q0rR5QzMFUxa3S11Iq2IH4+rADx+nqmHP89QHJtwDV442SwCTgmu4jk0rzoELzhfULxOPBi38HFyDgMphbUtYcfJm5lHAjaxmZszHvVqxoMZS//p40of/ZaPiHf6arzxi58hjotn0J5o9dK0MXtPehlWRyV4isPI5FrMqI2avw8BAOWymwWBSPcRwNZOc4gPZaS+atI+6wxiV6KTNa6peu3o9CvJKR6OZDBxfR3spfiqGIZGdItq4LrG07lp0TowIxjAOSSz2fu+1zRB/KlZ4YsHBkrvvkMTU777NlpWFGZaSHrbd9mYcqFyDN7C82tRBLInO+5NuQaOZV2QP/77LAHV9LAgUJNyjetEfYXm8mjNPfxUymsjFit+8437d844QQyDX/LHGRdfwo8V2/N+Ws2YLqjB83Uw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(366016)(1800799024)(18002099003)(56012099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SE08iU5q5gtpK375Dx5eeb3G4lbBY/1QJPZPdYbdp8sB39zjm822LqEfGVDN?= =?us-ascii?Q?4S3cm4HfGJUDP+TmLmhAVH1XrK2PT5Y0a5P0Cmq0FMj1MdRhG/pttr03yRMr?= =?us-ascii?Q?blPcN5hsjnidJi4obPs/B8z8PIOTxUd1uH52yFgibTR5VABy4Swp0oiHUrii?= =?us-ascii?Q?VRkn0zoRUuYuuAW6lkSzILdnuiVDQlwxO17kMRFeRC0OS8THl/P9vL8wra04?= =?us-ascii?Q?gRc69S4nMg8xynrvUgxeJsSIMKQOzCZvzcjrWqGzVHyfioSBgSEob7gSI1ta?= =?us-ascii?Q?FLvr3XsU8a+i5P7vrwX0cewklYp9XEplk/y8xCZmumya1rqFx4Tj+zrWCg9P?= =?us-ascii?Q?oXeWXkuA/L6HFPB2dq1IJ/rrXwxtdaZv7f690jGUcuKzIdCC25GxKr9q80z7?= =?us-ascii?Q?QDLX7gyuY0AXF3+klDOdJbAYh8QtdmHuiKpzhdXVyNw+WuIYE/WJGaFKNvf3?= =?us-ascii?Q?taLptXaUEnXaS0SK6rSxPSwmnkcfTiRKymJCH+1MlVn61UT2CvYoCXR7W+jw?= =?us-ascii?Q?ZKqpFSo+XqvoWZKcA/5XfAGjTcwnKjizgzHzbQkiYCCWZJ0gIcUjatZpcG3N?= =?us-ascii?Q?uSwiLvWCoSMgyD74TLzzObgXXHdndnNb66uDJ1TYe0oHbIn9rcPabz5XHAUl?= =?us-ascii?Q?pNsx+GwRZJs4NF1La0t/ZAUXAk/0EZ0hdA5Z1j9z6bIqObIXRxvlhDuZIa8J?= =?us-ascii?Q?hyR6QK4vs0Pbvyp9D+dX2RrcTDXfDNdqpYjFi7vXSgTyLXcIJPOQd2QZk5Pu?= =?us-ascii?Q?QJz0a6kyHeeTgI735QlBd/oXAQQPc132Go6MPV2N44f9uQzt1x7SJJ/huahN?= =?us-ascii?Q?0gJ9NqKQZGJUeXUkK9TWC/MZL3gmcgAX7M2nL0hATHUwX3HtS2jkLOMiyEH/?= =?us-ascii?Q?QQB78A5kgYe4c5cEPvy7gmf5m5mzqDkRwAVfAkdVQ3+n/p87TqkZNZ0iDcsq?= =?us-ascii?Q?fVpwe6xWVVoM0FSWqJ/vQi+NM9JnTDYXQGYxQY7NJVL5DuOpjOvQYkn2lkWO?= =?us-ascii?Q?Tu2oJLpunFJlz77TbgQLAAY8BZjwY+KK+60p4lW9pB+n4OTxKQwOXxOEBnRU?= =?us-ascii?Q?NlSqk2thgxvgkFaGhKRIkE2GHaAFv1+7p8/n9DvgXZCJiP46bpbV0xHz+YXJ?= =?us-ascii?Q?kRWEfBcn7Cte7XOHkVGTrvB5LzAlqervrCycTH3rKYy05QR8IYHOLmEsQvLi?= =?us-ascii?Q?ttzOOCZzOni364oBbAxLaOc7ulV8oKpe5JMx2pkcuhC5B1fW7GQ3h4it5PXd?= =?us-ascii?Q?e3v4nfXyZDP3LajKaghjI93ur6Oi+5ABW0Bh2eGIuye0Kd01TS68o9pBNFWP?= =?us-ascii?Q?n3ehYU7iPqyEYj4U3nhcnjkqQ7A8rVklGj5mTIn+DTR0jrxsQLl5h7npMtTr?= =?us-ascii?Q?uGzKAZWWAs9HJZWMNnNm4p8yfvbH4UAq90SJ6NGgWU0lTF8XFIqqtlDJ7e4+?= =?us-ascii?Q?zm9rLwpSHcYNiattX5Hko6PD2GJ0SWKncvaoXCQ4sPIO9oq/by/mB11ilj1Q?= =?us-ascii?Q?nni0Xo8CCF+cz9c9ll44O1HQZKKo3GDVQczv3rv7RtMn5ajc5e/xiU0lAvAY?= =?us-ascii?Q?Bo3YxfizbvDNA/9G8edplD+WMCl1/78NpHDFw3WyCUoycq+qAVx6kl+/f9Wh?= =?us-ascii?Q?o2euu/3IgtxvpU7wlYZ8ZZAEeKoYwt9/lTzEYlC5UGld0K6v856EKriklgPW?= =?us-ascii?Q?Phx9tfxdx7t81yRrgbxDVXxzQyGUQK52d8PmegwwFF38xJSJ3DqYXkaDcwfS?= =?us-ascii?Q?YiASpUGTas5tz1ji/sEW/BAz6ulpvwM=3D?= X-Exchange-RoutingPolicyChecked: MMCjXX2J5yquQ3+OP4StZrwVNCvLcZ8iwb7iZ9rG+tvGxbH/iN+7qyER0lRGUBc0nqpwrodr7JYWKFcMIjtIHi06njCugw3pM3ElN7Cdf/4Qj+KIv7CEMGx1Ze/1x5IGH/sy2daBWywk6jMKwRapUdUIyd5quAs4LkB4AxUX7rrD7z5b2Yfb90wWqySsfm07wC4O4Vkf7PVunRFlaUDenDhdTf7qhzrJhTtAVB+S/SR5rMb/X2wNKJxt9fh+PILIFjBh4+3GmsW2iQmFVSq5I8X+R7ZFjx3vlHN4NJdEk6xmJVXjaC+55ahRmiZBZwqaXRyp2NWONnhlkswr92jxkQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: SHC3Y7BbS1M4L3xRocZDApEOZmyY/rHLz3kIcahhIXnDb7db0213vAqXWFtXSzisHumA/lKN8Um6yq91gmsEDyNaUp+l/mjXlNk8PU0VR542SP+q/j/ACBD3/koMr7krOBKeelAj5oxHyc8x9hDNyN2q156/ZWYsJEks3DJ9Dba8bMLsjarghWcyZxLBPLhVQNkL8S54DSD5yicxg1VYpV5VlIBYGsHpGqtg6akRI5nIKuPkDuzsVUv2wqC8vnN0guggbrTDFx2SkK7brIft4UMKRSdIkfKOdnKACe9gNZAjGl8YPIcRFJRTzX5j8g+6i3Q0vuOJQQ2ISwX5Vyr8zyN406fu03opJg5ZRrgdwv/LcKoNMOcqynNu85Qfk9nD+pxLkp84Up1pTCPiFrKUmK0Kd3bfpjcRKlOZ9S0vM4ojgeY4Br4w5Hm4yIKDw3pKc5n0O3yumDRuwq+el/IIqTwujX1V4wEatD9eFHW3FL8UtG+V/JmBF+at4QU2EYuFJ5R0k5/xLeTip3rd40GpxI7K3zvnXL6KtRG8fCpixSci5vj2+mtbazb+k8drUuGfKvcTQhQCRbBx57Qlnp2qoThX/p/VKWmmvdpjniHc+Vg= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34b12708-f83f-4aff-e96d-08dea5176c88 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:15.9108 (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: 1Z0CkygQK0d2njqAp2N2KZTGlJ1rzwSne1mnUKS9Iv4ccKXp5s8U3zulbfagQEJwXG9VhVRbLU2Sn2Ac1JwrhQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7458 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 malwarescore=0 adultscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: JIK6DhIg_ygGzbN1zWlfqy1IEuEC2TC9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfXwkiabb8q/rhc AMGPUCIFLPLqoCAYrTOgIO8vH6+WFmCDU+LeXdkStsHrZsPw1OCQGmHkcYk4N8aVGgPc8xTM88t MJ487QPj9GyEWysfC2OIze5ukbqbFsU04BAUxj9/xCpevr8aL85957MozTG/fATxsZnihBqPmGS gijy1Nj++sDvU7zt78Z19r01Ub7KKQz3MINGbuwU6jAfqKIN2SxyUlMwQ+PkroUp3QKANxKt+Sb NbB7UPt7vbWrsnctAN0m7NPObdmaJtQtHsQ+LvhzbFEDqO1miWzdwFWKnjPgTsqQ+PFI4jHrMSZ HK3TaC1jsezrPuGjNVZYpBAhBBO/kL2U4uAftm+ICQc7ONcc748OrA0MfjIs5tz/ZvqtMB0NsKz dPMmE9rccNg5nL4ILmm0mXBlmyfN0EZKsYXlfvbYA7FtRVuCSLom+tXXpqgtt4kADkFNS8MFdDb 9olkMXzx+A4CfgCtFsQ== X-Authority-Analysis: v=2.4 cv=I89Vgtgg c=1 sm=1 tr=0 ts=69f096c8 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=x4eqshVgHu-cdnggieHk:22 a=yPCof4ZbAAAA:8 a=5mQu9_vmmXT8XsUthawA:9 X-Proofpoint-ORIG-GUID: JIK6DhIg_ygGzbN1zWlfqy1IEuEC2TC9 Content-Type: text/plain; charset="utf-8" Failover occurs when the scsi_cmnd has failed and it is discovered that the target scsi_device has transport down. For a scsi command which suffers failover, requeue the master bio of each bio attached to its request. A bio which for which failover occurs is handled in scsi_mpath_clone_end_io(). Failover is detected for blk_path_error() occurring, same as how dm-mpath detects this. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index a4636a53ffbf4..0dcbf12217165 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -242,11 +242,44 @@ static int scsi_multipath_sdev_init(struct scsi_devic= e *sdev) return 0; } =20 +static inline void bio_list_add_clone(struct bio_list *bl, + struct bio *clone) +{ + struct bio *master_bio =3D clone->bi_private; + + if (bl->tail) + bl->tail->bi_next =3D master_bio; + else + bl->head =3D master_bio; + bl->tail =3D master_bio; + bio_put(clone); +} + static void scsi_mpath_clone_end_io(struct bio *clone) { struct bio *master_bio =3D clone->bi_private; =20 master_bio->bi_status =3D clone->bi_status; + + if (clone->bi_status && blk_path_error(clone->bi_status)) { + struct block_device *bi_bdev =3D clone->bi_bdev; + struct request_queue *q =3D bi_bdev->bd_queue; + struct scsi_device *sdev =3D scsi_device_from_queue(q); + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + struct mpath_device *mpath_device =3D &scsi_mpath_dev->mpath_device; + struct mpath_head *mpath_head =3D mpath_device->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(&mpath_head->requeue_list, clone); + spin_unlock_irqrestore(&mpath_head->requeue_lock, flags); + + mpath_schedule_requeue_work(mpath_head); + return; + } + bio_put(clone); bio_endio(master_bio); } --=20 2.43.5 From nobody Thu Jun 11 06:59:43 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 397BA402BAE; Tue, 28 Apr 2026 11:16:41 +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=1777375002; cv=fail; b=nwAIMWyEKhzb/qWmo9QO/aRBqOcW70LR8sCY7JJCfdt9b/Sk3TwYOeAM7O/9eu58y1sdEOw6JsAMAzkAbUhxV6hyORm7E4o5sRYLU6+nnko1WTIGs09VcFlUyKuApvro0U0WN2uMjWNcQMQZx90d7S4miAMnLlxOeHu1JnPljgM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777375002; c=relaxed/simple; bh=nOlcAM6ySBw/hz/tBO8BL53mJLs35G9Cl5vFzlzFJgs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=SV2GCYGkSS107Ji21VokSwn1GN9U1m6mQzShEWYzpKaqbYfjGlGlZFBXnITYIsO0+C+4b+bydGRRQfC4aYZZgzovNsuULqCH7fNuhHPcke3DM0TjcG2ZQr3mGG+TZ06p4OddBDM8Lfv3h/WxuxxLoBUo3BWowQ2yUfUp/QaMlZk= 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=JhjNKxzN; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=EeVBye7z; 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="JhjNKxzN"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="EeVBye7z" 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 63SB29aQ1015471; Tue, 28 Apr 2026 11:15:24 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=mD1qmOqm4knm8wCA1FONMYgre911vMpP/h9S0RGoY/4=; b= JhjNKxzN64B/AsoLdQEW3UjoxetW5zLzqBDyd5sa7ToVZIWFu2blw57teZAGhY4V zL7SDzIQXFZ4wgdlEVHP58xAwfBu3zkgXHvD0Fuk3i3WdJxl/iJ2FvQriDp1RXvm FAjj0O6KhaALSbu/0/zqOHibkflyNrGg/LC8FPv4txsHOMkmYryLqCktWffgLVOq Mb0O06EsovYQUpqMaqSch5AFNaTuYOUIRep3QZptb6k807snrWGLCleQlAw9CtZM yZFRxRhedk1uxITPL7ijK9p4YqkaoOSLXtNZQf4kVoZ8cmDNMYqzxhR+pETqmrR9 1N1FeE82MwFBp6+M8F0siA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drm6yykbs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:23 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCjFU004724; Tue, 28 Apr 2026 11:15:22 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012053.outbound.protection.outlook.com [40.107.200.53]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2jm5tm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:22 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RC9xsJlqG2dI209VEfmdQhYnGzQzPinCj5UF65W5rWQrN+YBSS/fJ8mzn04xDlfgYw3icXFm6gpeliN2kogAun9kgUMVi9lc4iWvLgrCNt8WH9RKivklmaiCZaF42OAH7O7vEajrw0wGqDmMQCieE5nmKRIzU+oR1gNggTNv1hXjccGCv4+lrXEZlx11+pB3EIYN4bMSxCcho8emyOS2q4tOhtGWJ+sszYf4JvNa27XL9ipGViBGJ9sdpGtPEbQGfzqFGr25aLJlCF8zosqNmVXluHLm8TclZZMz3POR3AJWBCnkFQdxR11DQSwVITOVJDPBg2s45VoiUNreHP1XNw== 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=mD1qmOqm4knm8wCA1FONMYgre911vMpP/h9S0RGoY/4=; b=hiwqLAQdIngaYCA5xz/1KgY0wDoDQ9W7svhn7e54X+hyME2asZ3cIirLU+QDzO6ulVi984fJqp1wgY9lKLyU0YNjaTQA5TQ5LF2drb6Xj2LZbWR+F8q10QtJWbkTSXcymYAPBOO/XpXqhq2UEKtauZro0RfH3CWj8yLeJKH5lQmguA53UYyLYkMhbbq7dOq0yPrIMQ5oxE0X2G6SOJBF/WUtPudo4u08z9Wcfb4MqOZPjK5LJXgChKpPbdJTmCmtjYJrMuCz8IsNe2M5EySQB2W7Lu1GmemYYBsNEFfEik5YcpLDrrtNZdQcl9FHPQOAqZjuvYJ076wjv9i6RpXQIA== 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=mD1qmOqm4knm8wCA1FONMYgre911vMpP/h9S0RGoY/4=; b=EeVBye7zDNK2XrubF8LXUPuiyBJ7QXbXzkD0yEwF5j1Z/xmhd744xbYbuAVHYBo1hLAjVP0E+paQkXQABI7/nEauwSTmAsZCeRnWjv5+xiXHE+bZiMP4PvFggY0pXls4byj/YaBrWg9o9i0yo4mEmsAkpDcQCb7mqtQj3Mj/hI0= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:18 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 08/18] scsi-multipath: provide callbacks for path state Date: Tue, 28 Apr 2026 11:14:37 +0000 Message-ID: <20260428111447.1779062-9-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR03CA0009.namprd03.prod.outlook.com (2603:10b6:610:b0::14) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b0b9ca6-0020-4c54-8215-08dea5176dc3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: pFpWBlwJQIi1ML0oqlOOonoKVnZwl1wZG4Mql/VQ4J6Blnu8ZuXXCY3zIV2bupzQ/uWGWmMwpQogyn4YajeUBDXH91oLe9XgYmPMaWeCEC5FyH66VvSVRtnNHlvN/4i7qLl0kuSBnISeYkxpBa6tzcGVhF4xnV5w6eTWGwF9FM6ICUSWHgq9QfJD9lx+CuGEA7crr/pSGcb0ETBlzR+D3/4RFP1sCaRUoujslOKS0fXUYKfASc5fNh0iP+xC2QYgYOsv4p6OefaxWBVL+ql3rLrw22hthvAf9L64FWUEVWxEpThRQBpLpQcYl91FJHhTl0FPlyhV01gNNgBGlWJ7TueZuYcHCTLrJL4CPsvePoJq0+U7TalARlUZel2mddwfaStihlZaHogfEnxhmojL3I9YxY/fHRXYHuvuhBAdLzoOFj1PUbkAkpbXThFJ4GMihmZeCSRXo2Ra3Hw92TkqK6SqrHy/PRYVCDATcQIviXf6g+fRqoO834tYxB1tKYmwvbf2aaxSlegz36fXj83in1Pj0GyDRrzj3Y/1DyUMJNJcKDM/c3qIyeTWiyHsiNUeXks6zdFxTZAa+vieA4FttmYEd+Nd2v0WXsOO6LCmlfHVbtwnFl+1a7NeQakfuNtb34DuOWCXKpNfUUSRdigzaYX0qYuoxAO9x8ZzLXcwtL4XAJrrWI35aKcy5+CWGFZhI4Ooe4dBPT2FWEBF58q9+hAnfAqJuq9LO2RnEv05tpw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NgrfvQbDB3PsY1o0iVV6yAyniSp3u505BQWuLkR84RNkQUWhI4GPR0TC5rz5?= =?us-ascii?Q?g6hQ3u1IW2q25xADDPtzIsVXonP95yrs8u8Oe5I/Ako2ZSTaP5jJeGQFVKuF?= =?us-ascii?Q?cXFegF2YZaS6gyAqZ/pIXRGUOkI2auIzq6Ss2n+mmjhE4eEMP6IeRqiM1LV9?= =?us-ascii?Q?632S5cp85M5M1z+QMyjqBdP2PcMt/n4LVaXVUY5HVjShCRnShnanPCH4r4pP?= =?us-ascii?Q?MfTRvOSQPccctU8pZ7rhhWXETdiHCZPschRS3d9Yf7+BpzBPOfQwCy+HpVxM?= =?us-ascii?Q?wflDKYRAzAvX/s0ajZmVsZA8/LOVtzXSoq+gpfIBJktdQ6xpDQrmMDtxJgrv?= =?us-ascii?Q?pZCHU8OFB5+j3kw5Oyj7ufbn6260jaKBGc46o/s381NoTBUD9OptfIEP+wom?= =?us-ascii?Q?fFEB6DhyKDOH+D2iBv5R4b1XgZv+bJdIaQ4ftvkB9edia2Ixf/gYwyrC1ssS?= =?us-ascii?Q?Xw3E/k90xQotSvm6ymJa4tcaz0dYL+zg0Zzq1yQfRDMZT1F+hrA1EI0DRBFT?= =?us-ascii?Q?9I/9yEoa0zCPkoUK9wx6by8ntHgL+3E7tUvKUiuUavzhl93VZSPTnBo1u2Jx?= =?us-ascii?Q?VPzMocncsn7FA7iLomCg9lvowP8aVm2Amd8txpsI8RIxcYrWo501WmN6rXN6?= =?us-ascii?Q?TwrhWoqIOWUbLXKlbxHo7Fo9+AdIWLVVOLTGUzRW44xbpheaFsxneD1gvN1O?= =?us-ascii?Q?Osh3RxStYXNZAMCtt9b5QSFXzqt5z3/IS+S9dwRiyrpBAvki9zBcGqgFIDFT?= =?us-ascii?Q?B5cpgAGl4N4FKLdzAy7loa+dl1OpwyneYQZcMpP2s8r2Z5UfTUVJapUtkqL1?= =?us-ascii?Q?ckIY0oBHV0iHuWF/LDiWX5SpT21MTeBQLPy5MCDdsTQDrDU7qc+lzWgJbnzO?= =?us-ascii?Q?EXqxVUanBd86XoGyRM2ct5/HoGOMqWBL6QuyeC4pXlhtSL23P0lE6zJ+UXvk?= =?us-ascii?Q?c03u+2+3ZO8PNehUnNVCl5cGmyVNGBO5RnCeIjG59eyb9W9PCNAoEqPS6ZYT?= =?us-ascii?Q?isbiPkpWbvxsA679na4liXrhL/vlYGlYSNxXfilUoTgZ/Gr/wPBvousSgo9p?= =?us-ascii?Q?Af8Lm4dSq3snFiSDPt5XW9s0voH5Pv3NT9G91ViAhkMN3pVinwGqFhk6zybq?= =?us-ascii?Q?xxLZcILse+5EeiQxHiGf/TggKlZymJtVNZKBZaTn/QtNbXfDJb0KtGmYpsCt?= =?us-ascii?Q?SuG9fObIUyhgETgw86qgAJ76y/8CEQ9c9ISKU8L8XR+aQbiXykylf7ahgvDj?= =?us-ascii?Q?1NGYVEHGL+XVptzYX2Ic+6IoPU9kA0j+Yltn9DpZrEosNdN/qs8k+krtSMcC?= =?us-ascii?Q?oEepQun/Wi+eOEwHS9YSpfB+oiwyp0hMIq23z9duj7OFDQC9Gpb8ZsmNh+5n?= =?us-ascii?Q?X+JBpN1jYsg1pcabF/OOZEvz58iIwE90WyK4el0tL4IRjIBx+B5kun3NUqJe?= =?us-ascii?Q?QjkZEw8HiBdKrEqQDZziJavN5+Evb/K228vARTZFA/oxlnJplGcBqibx9TBp?= =?us-ascii?Q?vScX9Zy5jxxA+2eRDXP9d1fc6qC7M7qJqv/uz8j+BT75f/62x7ubBdcK+PNa?= =?us-ascii?Q?JJQwc0c1cilAh8xVTMuQbyiUl3O6Bh0NkaNUbIPeg1efvubp2G+XZhhG43E5?= =?us-ascii?Q?Ki3M4O1clat8Daa0CtpjGybtzrywjpK7ZOJlcC8u/AxJSFeGYIpSYd2Vq4vo?= =?us-ascii?Q?LU4BnxihLtIyzoBy6uyGuzZXz4sb576Clc8UCv5jcuiVXgKdR+JGOVrVvR8w?= =?us-ascii?Q?IMkWiYKczKGM/KHVMnrNjYBgcPLYc0M=3D?= X-Exchange-RoutingPolicyChecked: FaXRHQqXl947gRFhatf5gomaYKkBmBJ2lwV/6oaKm/hvJqDP6F39WyQyqMweLD6gCtCuiTnufZsSPnBz/PmN+esqv7oUPdXh1G2F0AlgvuiHe4n2b/JW6L1LlFrnjyhZFYQUlVnacZJJIwyAoMO9x1LCGXeOVTI2BUNwSBnQKEAeRbaa+0Z2BQw4AZpVLYDsLcSmPA2/kHTCRBJOQQNLGZbHNL0LqT2+3Gr4oWKkwoAgMmKSQzhEi3FFVZXbEqrWpaMKPjwXfejWcqbPJAeCKL5noyz8nKk8gSvR6v8iNGv2RhxQkxYRmWcrlHsQh1ju1Txqy5ekFKj2t/rCL8I2mw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KEH1nyIXbST1j/87z2qV6IYg1Bphdry7b8/fr62NQs9+Tr2fEqYdRD9GiSr5TNHWPF+1qWN9rM8jG51xTOjJhF7MTqU/Goh+FX48TPujAGM/1lwlCFr54cY3pXBAueHMqAfcRL4Sk+287E2SycI2g+/RSXDpvNod6jGJcpGSlz+FWa+cH47pYMn4EQyEsXOiwl1QC2JiUuMO7o8+3nPYK4WY1bCma66JZ8hiHAO+VdfEIwlWfULXRpcBCWU3UPm9HBxOK/MXwaBRZGOyfOrGaaBqT/Gcyu9sM9X+3468DXpaNIJkC5YycaZObsVj9duQ7hT2sOgkoR4znsT7ClqLLRRe5BhbiJjUVrE0nly3bVP7FWhlnoPnE9M6j+yLwb5WjI7gH5LV1cxCPzUzs70nsKjr1d95mK7cGGYnUxspT65aLY4rLhZyNuyzgIwBNobj06B28mDtSAdVjHcPlHyAsb/EbHWNkl4PM9IsdyG02lVxvssj/VcRb/B43Ecpe4AjfTviuRfRtd9ZVj+kkh012eb9qzrx32RmWLhcg5yAAWgAy5dIbQ1YTmHO4u7Ayp7IrmvrpNlyZglqV85FwPmKmewHg0eGjECcpSZbuxkG2ug= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b0b9ca6-0020-4c54-8215-08dea5176dc3 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:17.9481 (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: 8fv4NNFH7IwetpPJOYEELmYeMNeCTLQu79VkweFSlT2I4JCeDRcesgyik0zN/X61a6lGksk7OeBnIPJvVmzbHA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: qg-b0mfwojjBJ2BZjgRTZl1hvZAQEdud X-Proofpoint-ORIG-GUID: qg-b0mfwojjBJ2BZjgRTZl1hvZAQEdud X-Authority-Analysis: v=2.4 cv=BePoFLt2 c=1 sm=1 tr=0 ts=69f096cb 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=RD47p0oAkeU5bO7t-o6f:22 a=yPCof4ZbAAAA:8 a=DHJJM_rHgSnfI6yttmIA:9 cc=ntf awl=host:12309 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfX7WFFhWh2Xtvs 2mgpIU+lfaVQEymV1lJc1asNTQm0DgVFwIR5Q/nWQxR5EGKkyg35//CVUOeChScpKQPQEt+HRew y2NsETZ2uoIetAswJtwyMbRk3we77nVTfdzJp+iJuv1zaRShaREDX7y6UPUL8OC8k2n31A+V93m wD+/c2/ic3fxyTeiHkuRSg5kuUBujzHoNuPz9e1Hbvkfy2N58e0e1YH7hE0vW4JpfArYFz928rm KPR6P90LIxQbIqROGbfD507XOmjpbaa+vk3jclZ7KLFc9o+GjLzw4VZ2QAHXJu5TcAhr5B6I7lj atVOn+ClQ09HE/HL54FicPhGklrT20HkHTTvDNrty6pxgCjolE8R5Upee174aZzwaprhpI3omOm QRqClUuwxRkO3mzknitbXQJZcvTWZjf5RuILvl9UfokIfLSxndf3qrfHCRMg9DHGyZ2JiEecQ9k OqkAOBZeoMwoFI1mYTC6GMrfFzzYJypbfysQ+lRo= Content-Type: text/plain; charset="utf-8" Provide callbacks for .is_disabled, .is_optimized, and .available_path. These all use scsi_device.sdev_state and scsi_device.access_state. Member scsi_device.access_state will be driven by ALUA. Currently only device handlers support this, and in future we will have core SCSI support for implicit ALUA (not relying on device handlers). Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 0dcbf12217165..a3bf95e2a18eb 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -308,7 +308,53 @@ 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 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; + unsigned char access_state =3D READ_ONCE(sdev->access_state); + + if (sdev->sdev_state !=3D SDEV_RUNNING) + return true; + + if (access_state =3D=3D SCSI_ACCESS_STATE_OPTIMAL || + access_state =3D=3D SCSI_ACCESS_STATE_ACTIVE) + return false; + + return true; +} + +static bool scsi_mpath_is_optimized(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; + + if (sdev->sdev_state !=3D SDEV_RUNNING) + return false; + + return READ_ONCE(sdev->access_state) =3D=3D SCSI_ACCESS_STATE_OPTIMAL; +} + +static bool scsi_mpath_available_path(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_QUIESCE || + sdev_state =3D=3D SDEV_BLOCK || sdev_state =3D=3D SDEV_CREATED_BLOCK) + return true; + + return false; +} + struct mpath_head_template smpdt =3D { + .is_disabled =3D scsi_mpath_is_disabled, + .is_optimized =3D scsi_mpath_is_optimized, + .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 Thu Jun 11 06:59:43 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 91F8B3AE18C; Tue, 28 Apr 2026 11:15:42 +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=1777374943; cv=fail; b=O9TOOs9lSXe1/pfQWR49IlY22agSkHnoqmMHiYinN2NdrA1TSg1xSrbeUa0h5YE7IWg+Wu38pDNAeQ5zQjev+PETqYwYanZ+Su6T6Hr9Seqh+oDLTmvznFDREp6qyvZ/r3smvUF0D8ERy2FOWlbC/F4IaQeRv0fTspkAtfW7KeE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374943; c=relaxed/simple; bh=B29YPJD1f2me7zKlzMB9RhgklRZirRstdmI2njNdhHY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Oj3QVoZiQIM/ncJQ4/YipgOrakHP77GaNUZTG25HmfNOUKFrCfJedBkRbNr4QfV724D5BdTYYIrTsGYFVJwSEiavmdDB6yKDFjO9+rFrrao21oaabjsdN9MD91hA6pP0bcpfLJxRyL+HwxBB8KerCVRz0wxe6eF8o05I4YZEALs= 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=R44NQ/CE; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=gQQDBrJT; 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="R44NQ/CE"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="gQQDBrJT" 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 63SA7lhB752809; Tue, 28 Apr 2026 11:15:25 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=uhS6p9pjqarIntQnvNGKwoOnKZOPpxAneDXDVdFiink=; b= R44NQ/CEO5Gb7ZhdvnDl5SOX1kuWqf8Fg96wiZRwELSWB3y8F6g+N8R44JcbjR6g qJYCmCu3GY/1ZBzFKmfLCMVZEKCpu49djnADWID0K9XxLkSuhGlGnKX2n6B8N+1d d1BXOkm2ViIMl+yvbNQ2rT/iB+DUvY4x2JsLrFXM3EiUxS0rAdx+Umy5GBknHRKV JW8oczaH7RLqFjJdBh17JNXm3SYZZYsbsY9J/E3CMKtb8/7pRgj5W80TG44vc2xF UcN0D333T17/+PutSMLhPUp+ryBykgLhKvF2v/FRQbUAit+1hZgfj83/oS3R+ZCG jS0u8+345ITcJj6KXojpfA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drnnefexh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:25 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCjVY030416; Tue, 28 Apr 2026 11:15:25 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012020.outbound.protection.outlook.com [40.107.200.20]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2bvjgs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:25 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TKvixhEgv6XIU3QSeokqVnTXAgqD8IO1gCcwqwGDmxmv/LJde5DpzBkDz7LtFNR3+Q+8jpBt1hczNKLvbU97Ea6sBYsMf23FzWewrsPd0lvlqDGBesez3QSMaaZHp52TXy4tcXs85jwJBQZa2jCSX91jUxzAF0jlMOFySKDqwAIHQ8yssJb+gizJEaS/f4mut8kvWGF9Es9dawxzN5PtjAyvmyJ1WBng22ZXSrs3iawzlKlEosjdb8e7IctzILEafnuaRanMOYAn0PAx8/ch8iLpY7jWqpbktVGt1jNcXrOAbuC/Q6qWAYIu87kT3ohhj59CZslosL7Slp8KRckZcg== 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=uhS6p9pjqarIntQnvNGKwoOnKZOPpxAneDXDVdFiink=; b=aXazussosPHPM+UT5+cQDwleyMCPY8qsqRfPLA4V5SsBoGZqjuYZKVCN+dAhBMtnLRsUXiTOed/Mjm35itr9pa3rpbmmFS0OWYl7T5X67QJqvT+QgXlYKm2Eua0c/V8VCWgmMP1HCyEuEP3A0TRH/dh6tjWFng0mRvVMFvQmEO6dx5EodebNxJF/xQQyE19GcYkl3+F5ezk4066oJujdCdrsJ55aKtiUmt7wmxUgYV+dE1RbSCQ5Ism66kFaux/aXorzO1eJ3Idg5OPrpR9VmmeNjNnxT3l1+8aPOD0B4R2Tehk9RWQV5k0cocgfNSDv+Soa04cunQ7ypA87rN9U4g== 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=uhS6p9pjqarIntQnvNGKwoOnKZOPpxAneDXDVdFiink=; b=gQQDBrJT631OkJNgTQ3rs36UWVyxQoubsX0eNi2+haQtzjFefvfATWzh5cQ/2WGVoo1nHxMOpQDWsa/4QgkCD5bJg9VVYZIOTxZm1ZmUkQhFF8Q2cbt3+up+JC9G4vM2vEtaBDQLq4j9k3hqyCSCU5NUQ34TlMqatXmAREhRbLI= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:20 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 09/18] scsi-multipath: add scsi_mpath_get_nr_active() Date: Tue, 28 Apr 2026 11:14:38 +0000 Message-ID: <20260428111447.1779062-10-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR04CA0051.namprd04.prod.outlook.com (2603:10b6:610:77::26) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e1d39de-1e6d-4c84-d842-08dea5176edb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Kz3vnWEXNpkxiFfrkFd7QM55cYyfliMZhRuaKA+/29TpNnujJ5aPWPbjjRevEkK/ThcPbftxIGRsxGDKUt3iOaqjyxG+6bj38J7SHy5qMtfvFH0NQQIZEEfvexpc6qjs7GTURJfbIwDhCe7Hansk7mu76Ipj62ymYYad8xr2aNomNoMjTwA/mWNA/jyb6xMf90fo5QthAx6MWPm9BX6XHrYn1iJwiZry6Pt+FSmWC2tamEkp0sngWOfcaOL7zOnCwDTbMIOSvBfArYYF/JIteVwo66dQ7WCj4lfOL2Rj7P/CsgwbFyQmr8LcP0+FcqaA5hHtNg1ZnthXF+9783GY/hFDWYmIm3Lo0mIYodHQBrxtalvWQSqTTpTE3LtdJuHEQObYnPeODrciGvgrtB/HgzuPoMieLVYpvadLfY23z1zkbv7UMDevs7qf8ldFEKBJovWjt56L8gVKi94VtwzcB0wFlH8KI1QUXXAJU/U6UiMIHbPkFsMMmXgWD9PXcyHo6McyXHiFXvoD4+7XlWRzmqlSYqpcm5ajqXACew0GVYkifRWkBQRbfuX2KzZ2m2pHDi5nyrLnBpB+2Jjb1ONJgvCKmkHj8TFFybmEZNYsCOsTeKN90e9kuP+UGWd3eVzku2XvHRhlvNwpNtMMnNl4S7dBnWdbNk8aVNq79104moioZxxmJtAMQd0vJG3A35KDRt+muww4cnfJci3GtRcMMW8FeKhp5nHNqtn7cp8Wm7g= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Wj7B2o1YB9g9Bsutvq4Fl3jYkYYI+2WSAeOhToDliwhzYhCp/zpSZJHzyvdo?= =?us-ascii?Q?pSMv5LNzWXcfP4kc5BQ74Qi55WBrQRpujFysvvqjDKiXsTo+MK9rZOLtOCab?= =?us-ascii?Q?rqt4DF7OqLJTny9Vh2gulmM9JG2DoYUZbeJ9ctQj53GzgbMmng+dbyZq0NPV?= =?us-ascii?Q?E0C5t/4P417z+IDQ8KkziHwBTWuh6gmHPFqJ5BusawdmpB6XVaowh0PlUeqU?= =?us-ascii?Q?mXHvKu61zJ7gqmxd4vY91WYNTjtoy2Vd+wdGV24d+Vt6/B3kUQNjBu5rPXPl?= =?us-ascii?Q?kLET6leChT39xQSOKpkoKqYcRPYhr/+2a9wwfvXPb5THul0puZydi5/6bhaA?= =?us-ascii?Q?BghY1Ttk2qum7JRj3oY0sdiW3LLp0f8XdoDehPpwMVePtsGwQ2f9zkw3pWxv?= =?us-ascii?Q?QVZ3cT5qdEJXtp5vMHeolflH/b4hswdZIrPmTwwtil1qp4lOrGDfOb1NRc5T?= =?us-ascii?Q?yH/4KIES131oH5ikIx6BzRsgae+IxrVlypRc9yVpYygxvNbMYmGVwlDiooVQ?= =?us-ascii?Q?H5BxbL0t79FanhDLaDEsL3LWLmkHijseeNvdAcfkrsxMlg+7HOH4O0RfUyk9?= =?us-ascii?Q?COvR7qfn14K3kGjV8aV7xFYOr+pa4SlRHFIF7dIa+WtwmPZFpG5MJaKqIT1W?= =?us-ascii?Q?bKm1e8efk0pC77Ev27QuWlGeMLn/s9YmeIqAdYwd2uJhePmoSco93nx6W0xo?= =?us-ascii?Q?Q2iaLCa8SD3oZdZ1lQWE+iYsq+vcWVL2XY/h2vyy0teqkrhHZ4AoTOhRJ9cP?= =?us-ascii?Q?jGEXIkLouq/mU1V+XgCfBx5exF/YWhiCnFqQ+IMvnGFAAvh0HaXYh1HyD5vJ?= =?us-ascii?Q?cOLY+A+wE1IwQyYtCZdaP6iFhk749Ct33f2UPNBnjHIYmQTXuDOuJ32dMdNB?= =?us-ascii?Q?JfQN7Ql+CzE606wHw3wcjPIZ8RNXzdqdECVpycEv1nrXoTXy0WMlcM9ODPxk?= =?us-ascii?Q?p5UvNmeak49MIGVy9wUTVvKN4aywoNZkYqH3o30b+gZRUDGRSQ21i7/jHVID?= =?us-ascii?Q?AJ2K6bWA5VlUmyOt5ir9Yv++76kXn/Gk8Q+i/J35OyQVNlC32W89i7kEUjay?= =?us-ascii?Q?F9UImSeM3+lr2UQilvwZyllOdCUoyW57fdXyo7g3Le2eUYntLB5oO0WyjIHQ?= =?us-ascii?Q?veNGtfbIBN7vRMyFAuMYXWQLkI1dfh5bKRlCTc2/WvjxhCy8PgBG3EiOqfig?= =?us-ascii?Q?smFl8dpE+Z9nctwJdku5IyFmL0+FsQspDld7727J0hYm0Zjh6cIVTtmJTFAr?= =?us-ascii?Q?bYKiISkgfZFTvXbrCtniyg34SWDB/M9Vc4IDCoCUJeLiAaRhFGQfW5VHJJfz?= =?us-ascii?Q?brBMUHpMZ8MYT7v/tI9y0uxqWVKlCSbDZHAlt0UpqHapTtfOlDpPORl7Sstb?= =?us-ascii?Q?ybY1ZiZcVsbTsFKudQejGgVcNWZWuyc9MDm1EwT9ziJZ/hiVuknhS1Xz4o3F?= =?us-ascii?Q?JMZzeYgRj53Vrtx25EtNLzZpi71xQ8SLSB58+gmR+u7rQeYDDnDx7L8Q/XT9?= =?us-ascii?Q?n9emNmv0+1UqS6rZxD68V2AMBb4CFwatxFwYvlZ56U5UnDOV0tujpDxXnQCr?= =?us-ascii?Q?bY0dQC+3QYcUv4pP+Nvn751L8VREW+B2s0zMzkQzu6+mnRBTWTqzjxQwBR2A?= =?us-ascii?Q?sX4iOKiAih3+v1eEGam7b6+VYoeiXNrqa9641cIXKJAmYyMCsomVDaX4XG7B?= =?us-ascii?Q?KrGRPkf7PxHG0oRb3flvNfljLeBgkfE+nGkqI0TJyqLMPL9/JJH/LoIRrAOO?= =?us-ascii?Q?i8nA2prFMzXw2khdmpuI5g76AmILAkc=3D?= X-Exchange-RoutingPolicyChecked: S+Vsh/CTubVJLsUuRNNJlVzbIJRJ0H8pgrvXRcTjh1SBQzmLl7z0UXb5aznLT78LfXxQm3ieMF9RAuLgWI6TppmlVSCqkHk3/MhyOIcsr7rqjDHOa7phCP7QQqse9ac2NHWF2UGjZ6MssZVXS7iHE/rUHYjpPOjS1Srea/1hP0e5VMgRCghyxFtZin4zMlMrb/6LLjdrsRxIgzLH9XUIiZrAB9tg6dNHQOBl5ovOIJ3EkmVFWQr3QRLTOsX2ppVJoGQXicKgvsVa9yn6FTT9Qv9FL/n3XG/sDzbJltL4RAShRK1f5Vt/K4ilJXDlNQio9GQU70AEEpRDNvgoz0+c1Q== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: T/wJQfaE4wbjARM/N0bWeRS8g9rZux4y3i37GTYzscAmgM+JRpjz2++QQeHEsmGJvguMviuoeZo4BRtd2+RDNtpUX+7HRFnpYA9IDZsTpQSom1lI9CT5U8kEQzPnrwLmTiGnxedjLUaAvfAQ7V32DVtTIhnSR36yK/C6BQZrer7mtwyUc4pfU8Z+iIc41mzOi84Vkk9piVplbKgjMUpMdUWghyfP+cxof9vY0uvdPUi/5oeCWdw7i9l/6hwPAbmYA51vA0312TCYPfJJ48Cbehcw/gKWmOHYd3KDjZUuPhNMYLQMezAVj4qdmz2lFi61Z+1pmdqWvOlS62wHch8pGTE5dYWzUKI2iFds8OjxVfgcDGgXGu5BQ9UTNiz8U3XZybGf9+SmHdwoJZ2pqCGlEBaGX+T6auRst9av3/eT7mGLDMpB/mECruUq6lB0awrZSRu1h38XomsoP8PnwlrDV6C1Ckj6T9fyCpiYYKuB4C9f3RQqI6dewcShyxg7yfiiRfoV/DU9JXbGlu6+WAWGoUYIryrbErtoD4wDVfslwvgslVOuexWOrFbynkZQQFUn56dEK3X0RQs1JhOi8/2fUkYkj6ewQRJkWahEhdwZjFE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e1d39de-1e6d-4c84-d842-08dea5176edb X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:20.0068 (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: Zbbvv8yaiOku/23RMaBehh37jXBod9sF0sqqWNQB+9kKVS01Ohz9dopZvwQ1hANZmgaTh1mLFstDpTzrcpHDTA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: UwVhst1VDRMapl1GEFHqvqPDAtlWHfLE X-Authority-Analysis: v=2.4 cv=Y6XIdBeN c=1 sm=1 tr=0 ts=69f096cd 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=yPCof4ZbAAAA:8 a=S0-NFRiyq58gb8qD-mcA:9 cc=ntf awl=host:12310 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfXxkppfXdM3PLp KJSsJPPZ1aVyZTff8lC8WX7TP2yHEgPcPrUyakkypSNF8t0GVDyarVNz+UrvTmQkFD3lsiFRr78 /Sq11hbRy+UP10DJh1Tm0aOlQJn22sFx+K+fl6A73gC/ztfoMIIFdjC5bo+5fb4P5oDR8vLMQXc r0gjiyhipqmArBi0UVO+HZB4Q/OwalCGCNJjH0h8dlsYNiTKibrAByfYBgx7CjlcdWy1Nj0hzZx rXR/oCo6Rb6V88qGgRSIlYXSCGSrOz0GgWmFIyme4jesVlsG76Z4wlzReCtQbHxNA8Ss3V8g5Mq 6g46vlGeUTxRz054t95NZ09TtBcanWPOdBJ2Vx7NxEJVBvuotRrzUeHlnKr0DyuulVgXPZu9HRd bv/xyPHvmvZFgsgEakaMrxLpqtX0TNJo4M5sBkQ8wc9R2pix5vec0aDd0yEPRCsq64XtHTR8INg PixEqnbRWN4j8MDfadQNpM1zXLV/szuFv70NVUeA= X-Proofpoint-ORIG-GUID: UwVhst1VDRMapl1GEFHqvqPDAtlWHfLE Content-Type: text/plain; charset="utf-8" Add scsi_mpath_get_nr_active() for calculating the number of active requests associated with an mpath_device. This is required for queue depth multipath iopolicy. For NVMe, this count is per controller. The reason is that many NSes may be connected to a controller, so congestion should be judged at controller level. SCSI has no definition of a controller, but SCSI host is a comparable concept. Indeed, many SCSI disks may be connected to the same SCSI host, so it makes sense to count number of active requests at this point. However, for a transport like iSCSI Initiator over TCP/IP, we have a separate SCSI host per SCSI device (so there the count would be same at SCSI device level). Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 11 +++++++++++ include/scsi/scsi_host.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index a3bf95e2a18eb..80f32b940339f 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -351,12 +351,23 @@ static bool scsi_mpath_available_path(struct mpath_de= vice *mpath_device) return false; } =20 +static int scsi_mpath_get_nr_active(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; + struct Scsi_Host *shost =3D sdev->host; + + return atomic_read(&shost->mpath_nr_active); +} + struct mpath_head_template smpdt =3D { .is_disabled =3D scsi_mpath_is_disabled, .is_optimized =3D scsi_mpath_is_optimized, .available_path =3D scsi_mpath_available_path, .get_iopolicy =3D scsi_mpath_get_iopolicy, .clone_bio =3D scsi_mpath_clone_bio, + .get_nr_active =3D scsi_mpath_get_nr_active, }; =20 static struct scsi_mpath_head *scsi_mpath_alloc_head(void) diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index f6e12565a81de..979d1e89f0f13 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h @@ -752,6 +752,10 @@ struct Scsi_Host { /* Delay for runtime autosuspend */ int rpm_autosuspend_delay; =20 + #ifdef CONFIG_SCSI_MULTIPATH + atomic_t mpath_nr_active; + #endif + /* * We should ensure that this is aligned, both for better performance * and also because some compilers (m68k) don't automatically force --=20 2.43.5 From nobody Thu Jun 11 06:59:43 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 A06FB402426; Tue, 28 Apr 2026 11:15: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=1777374947; cv=fail; b=j2ygUo1lMwsrtWd/vMcFwrLiLLRTp51LEV+ITzmREU/T62Zao2Rlk9tOmcNDpgeFeGkmDA9iiEBLkT0cnN1Xm5QTctCbyEo/u5BpJfMqIsjfjy3t8yXNrAcMgZJSS2q2hY5di0YonZ6rgqG7oGgLl7rP0OvmA4vFoGTFisXUwAI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374947; c=relaxed/simple; bh=AC3I0Zy9IjLwt0lG+18cVSXcAy3XMN3Pyku+LsBIEZQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=U6LO8kdWDantOa/Af7zXC7MukwKDzPkIzGEKN9F3IVEFOyLmR49ksz/5939bTyQtDaHmOwoCwnTvcfMvIX+GeRFLuuDcOB8hOzQ4/KrBogRDwQSv7TRTETektgQxTnkkzdFM9hQfAE/gYs2rYixa5yilKCv/2QuF2UEsWZUzOug= 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=qlfmCKhC; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=u7K6OYWn; 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="qlfmCKhC"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="u7K6OYWn" 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 63S8KHkp2722020; Tue, 28 Apr 2026 11:15: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=y+hk0Y4Y6oM6rF7SESH9WUbMyyAMj9t79S2nlzJRPRU=; b= qlfmCKhC+FJQidsZUvQVuyu2KN8zJft83uLre6JTjvAAE/bQ7kyrqG6vkEa8B7E1 CGeM+wGnKRZjfNRSxEtoBKa3y8Jrt1t31hHuhRoU5HHUxbc7/3InzMxXNSj9Dty7 PBHF4rIl2YYLxvVjNbWCYElG2WCQLTXHFyruphklptWiH/L2a0kC97Md04n68Ley 0W5ZI7U+rTIBXa8MgzJU6sCIKf4bkmk7WI+34oWxyaZgoWwRQdbuSmizGDMKpjyy w6oTzByEvDjN1NDD38l0z0XxZYqWSM4Hmx0ySpZiWh0fq83tzD8YBJFgwZPg4YnJ 9bZAWFNp73PYF1V2K0xoMQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drn7t78hv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:26 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCjVZ030416; Tue, 28 Apr 2026 11:15:25 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012020.outbound.protection.outlook.com [40.107.200.20]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2bvjgs-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:25 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p0kmcHcuHqsbzKoGQRMYFDgVYky6IgK1fKE5IKuEEiXpTw/w4CMrU6W/bKvAvmFc21lv4u1aZeqF7ZqZIri8205BxP+TOzC9oQO0+fyy+EDJ33H/FkNkh1lSh4/H8t3qhABZbBoAyfoIabsevNhb4fIwrda+KUxB58hCskyDLwKFcP/wnOtmwiSgaukbnha7lHfNtpkHJWh4GLxciBo6kWtHgRI5KtbLkAecIDx/u/SZSUBERt3rCwDVYt49Jj/8N5uHTzDrLrNStVXzL1335hpA19zYXXjDuB4EOEzcVpcVkShj94tbhIkS/nzwJbEAu+JbYUCB73T9Lbk9Rok+Jg== 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=y+hk0Y4Y6oM6rF7SESH9WUbMyyAMj9t79S2nlzJRPRU=; b=hWhdhq3x/phKVdkfjodB/cfxysM4PIup0699e4Q51LyEU7FlRXLQ2KWAwpEd3qJvxVJ6IGN9cP7sfnRj/h3YRchgAT/mxOFcvERVSYLGfe1b0zPOEXSnSxxSZFC2nf2bvZVz3LMXry/DYOPTklte2f9Kbh43Glw+eOk9bhZFuOzkYXSUPiuwODk+cLA4cAwqHBALefa68OS05BKyOS7C2MqZggsrcRqg8qBfMSHy7XwIdq3A89DHe8QvDqNiJCKQjUgRDbJOk8readv1WqS8IrTfHGuZstLTCPU9+SiMQfzq91cy2f4bJoGBdcy5m2yB9Xdw3Nn790LQacCDDmQHWA== 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=y+hk0Y4Y6oM6rF7SESH9WUbMyyAMj9t79S2nlzJRPRU=; b=u7K6OYWnFtIjQxC+MSLwKQ+rQR7BHidZthnTwMsoMEaiAoYpVb29KZxdu2V3Ewt+buIgbwwR8arK6OSM+8T924hBPYfE/gjKDm0nI0Lqbbk2/KFQE2dRL9SC/R7teTPSZoXZdpf8590ZV5GtopSsHTymYMiyn8YMgMyCpgUTCL0= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:22 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 10/18] scsi-multipath: add scsi_mpath_{start,end}_request() Date: Tue, 28 Apr 2026 11:14:39 +0000 Message-ID: <20260428111447.1779062-11-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR03CA0449.namprd03.prod.outlook.com (2603:10b6:610:10e::25) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: a16a752f-d75c-472b-16f7-08dea5177022 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: N2Yu2tgxnapE1wZHh3bZ/gvn06sFh52hu2uY/wRzbSWiaGjQXPUceldnx8om+TzfEdroq/Ivxz2bddt/jDXvJL47+zE0NSL2IatrcYf2kHk1+4NYgQGe2UoM3cEH2injT/Sv64DflXQ/vWrt5n+hUCydLAIaYulbNahTOI8e4ANylJdXK693d/fGedCetVKrjffjRrmKc6+JzTlNf1ikkTHCvFH4FbKsM/QV0jsXKEjCaUqlMJG0naOBf5WfdNmybqHBQERIUHBBoLqgQ4t9182w+4QJrjIPoo4VWPOeII+mLVqh/VOxK7ruezWETQVX180mPzhKXIDnPHq1EoG7Wg6P+FRGo7ADD6e3F4m1efdtnBqp8AQfLoAP5scpyGfhfbduqBWCgMItQB8MWh+meYTzQ7+eUL4YExBfUZaVrJExyLdtfhYichW/xQceYRe2Bc1UDoGhqtB8I01XTByIdtneNNndMwD3O/Rt5Y/H8F2kSXo0+x0ifu6FxUnMri3fPLOyAnVO3kIyXjCnL42u6DFTlwjp6hMSOtcRAsVKhdEbghrkSYv+teqSmUr0C+aMK3KFq5R0TOKzqBa67aWZUorT96vEhpeT1QVfZojKT7vtAesPB5iHbG13f1uF9Pzus8Z/g0ay2fnUOrffamOSFYN09ZF0O9a+7lFhtS+P0E0+OEhQrjAGvbOrnr/0TbrNYiwNRRBA6WNg3YULjUc8bmcQeix8T0ay2vioNV8Zxzs= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7Qe3VbdOzAPInW+dGsUagyTgwWChzyiNIrnq8RZSbtiy63gq9FR5k1ZxGEpf?= =?us-ascii?Q?cPCFrHpphQvWXvRrDn9NhlKlEoMfmixHsjz5p5WtaGMQqDkG+XTbkbD4mT4U?= =?us-ascii?Q?i/UdRW9WMBqVT38SxdXfDUImwQMj41pT354PZHJ4k5K8JdD1rfH417jSIMIB?= =?us-ascii?Q?I0tqqyRrNZwPjXavW657yOW9Aia9kGk7wXvknkE1hNXM7FGhsrQ5w0zZ46TA?= =?us-ascii?Q?LSzqZeKXCZEFnkJeUgkREVdjTn9QAV4OEG3KGeYcHqm5s919CghyUqRBpXat?= =?us-ascii?Q?k/RAa8+LugLB+KuImxV5f3mpv3ssr8YTwv9GN/exz3Wu/9WzxqG7FtLIgZEz?= =?us-ascii?Q?0mpNK91BmpPYoM1QzvK+vwz9zpRHD/5omrV/fPgm8Ifafvr+7UzS5VEsTAdU?= =?us-ascii?Q?ri1cltiYYBm70cPPoJiCYAzqh+GZrcvNJ5IF5Ql0mRTl/zMKKqyyKmffK/8x?= =?us-ascii?Q?M8hr2PCXAmGznJzd0fOfj2UnebRzJhkDQV7K8Rm5zDR6CXretN9BZNb7hWC3?= =?us-ascii?Q?jO+Hxb1gZQCHGuBwgLAbxMo7pBWiSvLs1PQ/Y3WDTyzeukKfPU3Mv3d0eXyB?= =?us-ascii?Q?psoIkqy7r6jPNEhPH81W8cH+rSno5QVm2VW3lbl0QWTzF9N0NpHGUuJvIe1+?= =?us-ascii?Q?znFPTi+eUG33E3DHOPbkg5R/sH/ySTMfuVFWxOaGq0CVtlbPHMCCnH4VbFpi?= =?us-ascii?Q?kBuayClOoHCtf7qrvvajSC4U97Irl6xGhdxhWAMrTkPmxpTFPqCB8e0QxWSK?= =?us-ascii?Q?LUsBdmD5s7HSus6dMXuBn6qNSOR7LjIIzr71fB28MjxYTa1pBy/Ho+ejGJCY?= =?us-ascii?Q?12aQMW1mJ0gOVrJwm/NUyytAxJWOSPG+HPldECNWw0zKU6zasa98eyg3Kv/I?= =?us-ascii?Q?AUE5mmfEAaP1hCILWW1OU1vX9sbSZ2D8TzhdUrVIrd56zK5y6OmTClr1TFrl?= =?us-ascii?Q?yU+zysAZa8zgbw8Gz1JJOq4YpSz0Ahet6vMywtWDtKO2hyLDCmEfOGgy5GQF?= =?us-ascii?Q?lKBZLdMi/aPLInJCuOLuQNsW+RJmK/qaEnGtZiffwZwpKo0Y+EON/6Ln+UXM?= =?us-ascii?Q?7k07aZZN/A8EkSHcpjTarHpZsIzCH/DUMvMum3IxZ/4wz6pkElQ/n6Edtgnt?= =?us-ascii?Q?r9t+V4F3ljX865jfMwX6Fdbda5ChXjtYkhA/HqVXerxnn/57zYKkiEo5jGsC?= =?us-ascii?Q?epkQEFB3yUsgpAos6xQw4ZwtCiEh8a+h9KKXJ0fNgPX0Gcxx4ReNfEVbnpJj?= =?us-ascii?Q?OPING7+h9Di+c5a6fc/dbQZ6AIPCFhC/4tTNDfziZjRCO0avIo22k2TQwnip?= =?us-ascii?Q?bCRHFHMVOKoBhnwedR2O1ubArZ1mHD/vUSbrLDIjC5zLRU/zvEIzUfpfxHmG?= =?us-ascii?Q?BZ2X89W3CZIBsBLHwijd0BjnsRfU8axP66IFZb3NVTjZAJgMOiEQwcJArPMy?= =?us-ascii?Q?FMd1iXr6p7YTx/aNEMHSurAXR6wds3BepaP0ug67++1jatHR+oI67ORR250l?= =?us-ascii?Q?xPwz0YgajIu77w1ctApBpsI/hDz5KADs9WMbJr5XPKK2l+fbkCcXl9FIZNx6?= =?us-ascii?Q?MZiFoIguTXE5RKOrhWgYVs/9x/MrexgRb40MDmwzvwwDThGgENcaYvR/9iu4?= =?us-ascii?Q?olOYGGrOTztEcE8E90z7A8g5OVEU19cLRD0oDKpPWUMwlUS2xBsPDqqMfQzo?= =?us-ascii?Q?vuVURqq/AIW5/G1c3+4HGPyECq7wsAkgea6g1Shf0/hinE78HOCCAEtX/qPe?= =?us-ascii?Q?huxJ1l2pzlvfLXcqc/kR/eauckqtAh4=3D?= X-Exchange-RoutingPolicyChecked: oGFW7wayPHqJww5ThFmYMIEwrnVsA3I7n11Fyj14t+in6G8H2Yt0Ns/0cPsvr4rVwO1X5NbDeJUIUC6QsyRLp4JQgEHf17ni3k53PEMhiViKU73IggIk07hpGkIHDb/R5kZAAppDuEzkciVL59XfQzPhRUeh9cqSkEsEe8P8hdQRGDnyoCf2fqiuFHmxg7m6jth21AkqMTa4UbBRTcW6/mA2hCNRYD4oFLar11rF8+pqWf09pk1o/qYH8ZL1ae0tLmz1kZvh8B3Lo2EDZFrzt0J/Pd5dOHghFymB5HoopS4fWda04Hi2WyM/APZPB9HAH+bVCxL+pkzJqG+nAbXrFQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: HTsVxknaAi86foWPl5BcX985DsbANXmCj2bwgZE0uyC1GAlqHbQUndLncFi7G7vPVOdQmT0F46+FuncWmhqDrM2WoR3vYcHFIeTL09o6M8E1ezePvt4nkTfDQIF9JAPx3n77R6cO5EE95VNvxBZ5QqkEzCRtG/gt1R5x83E44kjBwdbJTdicP5GJTq8a2nYucn9AEJjeTieq7WkVDWkc+um+Knb40pUz8M2wxUc7vPN6Mc3Xmiwgjp22JEOyilxVGobWjwmdna7X80tJf/UuYrgN2gt1/8UBEsfdDM3FyLmV3EreqiVzdPk/TWE7hTOtjm67NjcG85IM1XLw5X756FLj+47Vsj0pvPGaaQJzhcLKOpxLdaP8BvCHozurZpWZEz03P1OY1l8rkCp8Ev5LlSzof9o3KTvay02KFxsHLXXt4wmtKDYqHSj86leYo6/cl/W2Lv1QuiWs4F0IYZ15mj1CgRkWkJMlmhl1r/vxlRIOkPgG4SWAIEXc2Zjc5P99qiN5tQPDz0Jm2R7mqvEonmXuLXSCF+jjIS0oUM9InHFxIF7tmFkrXBjNIxc8ze6GywMiCXIWpzhrY+0PBmaw54axXlFqHtT6WnpR9cUGltY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a16a752f-d75c-472b-16f7-08dea5177022 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:21.9631 (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: es5nxlxm7QQ2g5ZFLxYXbOQiqsJrLGETFFanw6HW01VMIE2sgWN0zBvntfTKwEWzrF5PRwdTKW5AJA7ZdPjlNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfXwUBvyBQU/V4Q U3gk0SIpL/w/Dc9TkvMqkNayamFxTT4OTtZfTtGnIOdbrU4BK6yyBsaYCtbcJp9OoT8Eu26foJN oXZNEQ6JOjNM3IxRz+TJMDugzQ9911u8K1Y5CRJERWpUHuQiZpRbzIAXy0lqYMgJNkiMcFph2MN FzSiJrjFkL3zmPzThJ9FNoqeCHQiWJGOpOELGsSScNxAI7Y8yjsMdlu5M6m8tqBajGgtf50pUWa XRsQRp2bssnMkcrQrMG67h2eY6t6IzSOZfTD4nRxaworQCt6XZuZCFag54FbfelprctfLT1qWPS Fi2962/l6u0fENEBZBBUiCPVVKCY1bOLAaVCF9hlcGD8p7NsrMHfdZ3cumq0c8hgw0LgH+v/tVq 3y+fR8v00b8aW9qCm3XK4t0vUzuBgV95+bTmXRr+FAHOpp1vzXqiiqNfnL3NRvCK9F89tZ3g06a eQIetuVp7rJaIbqeW7WtPk8cfgN+neEXsDM2kRH4= X-Authority-Analysis: v=2.4 cv=QO5YgALL c=1 sm=1 tr=0 ts=69f096ce 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=3I1J8UUJPc9JN9BFgKH3:22 a=yPCof4ZbAAAA:8 a=BcKsWnYKv64lrvakBtkA:9 cc=ntf awl=host:12310 X-Proofpoint-GUID: f3nL4tI_V_tC8XJf01IrPcjwm10csSHo X-Proofpoint-ORIG-GUID: f3nL4tI_V_tC8XJf01IrPcjwm10csSHo 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(). Signed-off-by: John Garry --- drivers/scsi/scsi_lib.c | 6 +++++ drivers/scsi/scsi_multipath.c | 51 +++++++++++++++++++++++++++++++++++ include/scsi/scsi_cmnd.h | 5 ++++ include/scsi/scsi_multipath.h | 9 +++++++ 4 files changed, 71 insertions(+) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 43154f521198a..46ed669c41dc9 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -645,6 +645,9 @@ static bool scsi_end_request(struct request *req, blk_s= tatus_t error, struct scsi_device *sdev =3D cmd->device; struct request_queue *q =3D sdev->request_queue; =20 + if (is_mpath_request(req)) + scsi_mpath_end_request(req); + if (blk_update_request(req, error, bytes)) return true; =20 @@ -1893,6 +1896,9 @@ 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 + if (is_mpath_request(req)) + 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/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index 80f32b940339f..a2a21793db895 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -564,6 +564,57 @@ void scsi_mpath_put_head(struct scsi_mpath_head *scsi_= mpath_head) } EXPORT_SYMBOL_GPL(scsi_mpath_put_head); =20 +void scsi_mpath_start_request(struct request *req) +{ + struct scsi_cmnd *scmd =3D blk_mq_rq_to_pdu(req); + struct scsi_device *sdev =3D scmd->device; + struct scsi_mpath_device *scsi_mpath_dev =3D sdev->scsi_mpath_dev; + struct scsi_mpath_head *scsi_mpath_head =3D + scsi_mpath_dev->scsi_mpath_head; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + struct gendisk *disk =3D mpath_head->disk; + + if (mpath_qd_iopolicy(&scsi_mpath_head->iopolicy) && + !(scmd->flags & SCMD_MPATH_CNT_ACTIVE)) { + struct Scsi_Host *shost =3D sdev->host; + + atomic_inc(&shost->mpath_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); +} + +void scsi_mpath_end_request(struct request *req) +{ + struct scsi_cmnd *scmd =3D blk_mq_rq_to_pdu(req); + struct scsi_device *sdev =3D scmd->device; + struct scsi_mpath_device *scsi_mpath_dev =3D + sdev->scsi_mpath_dev; + struct scsi_mpath_head *scsi_mpath_head =3D + scsi_mpath_dev->scsi_mpath_head; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + struct gendisk *disk =3D mpath_head->disk; + + if (scmd->flags & SCMD_MPATH_CNT_ACTIVE) { + struct Scsi_Host *shost =3D sdev->host; + + atomic_dec_if_positive(&shost->mpath_nr_active); + } + + if (!(scmd->flags & SCMD_MPATH_IO_STATS)) + return; + bdev_end_io_acct(disk->part0, req_op(req), + blk_rq_bytes(req) >> SECTOR_SHIFT, + scmd->start_time); +} + int __init scsi_multipath_init(void) { return class_register(&scsi_mpath_device_class); 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 d0e1cda836865..fdbdb0e5d02e0 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -53,6 +53,9 @@ 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 *); +void scsi_mpath_start_request(struct request *req); +void scsi_mpath_end_request(struct request *req); + #else /* CONFIG_SCSI_MULTIPATH */ =20 struct scsi_mpath_head { @@ -89,6 +92,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_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 Thu Jun 11 06:59:43 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 5B1173F23C0; Tue, 28 Apr 2026 11:16:52 +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=1777375013; cv=fail; b=ixf1lwpDAR86pE89DJFOYvOI1IamBxpLGmgW4/9jY6iT+OinF2J7EAwekSKXPbZt8tqjWc4lDnGy84d+S9HOF1iMPvfMDzcz3GIMFJb+wLCbRo/SsJGgIHfDBoHalOLJdzqgXnUR5FEujs8w72XivV32NyuBt7EtKTgpZOgnW8w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777375013; c=relaxed/simple; bh=+0yS0om69iPYCM/zZ5IOd1DU6Vk107kF66epr7NQZDs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=pXEHzWu02eLLISXdxE4l62hdob3wNmVG8vlFiSu0HkzsD9e2Sdjl6n2ABGbRVnuWOXm79+1UFkDGA18BAVebh67xJevS14SHjCJLVtAxHNTBde4R9xcNeQwKdMiuHWgceFrv8FXVnZ8bAyq7ALTX3BpiiROFjkArDQ5VhCRPGfA= 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=ByVsAKEu; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=WCNZMwmk; 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="ByVsAKEu"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="WCNZMwmk" 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 63SB6gov752744; Tue, 28 Apr 2026 11:16:30 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=Y+KnxtgbmVFVDbLEV1y2A0G5D1Y2jg+NEFuu11zZ8ZQ=; b= ByVsAKEuzN7hPzkBN43/gPjsxu0hHX9NNKG0MrLpuBa9qRlUctbhQ5FfOOvmpzc1 qeqsprGba7+Y0Q0gE31CvDQGGtV/V3ZfBQ0RkgdNEgcZfQcBcIlNl/wE1kHXsHX0 zx47TFJ4Y87xwA4ccgLGfuyd779dU2Vac0Ch69Lra/aabFbq+0HgUlVO4Xx8DD48 fEySiKxwFE+79BS5ranS6zcRj/Expo0ulp8l7pQatMQUXnvX4RthwZhk2D4i/5UH uk0uAznBYMjVB16YFYa7rRTMu3o0iZcOHsxf4GfFjDEB7jHv/hcE9jhSqLQC13Kd 8qqYHbWMQ1hFHQcg7lX9EA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drnnefeyj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:16:29 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBGIft037848; Tue, 28 Apr 2026 11:16:29 GMT Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11012014.outbound.protection.outlook.com [40.107.200.14]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2cu77h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:16:28 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=px0XAlQGJdJ1zjwrNQaNtQpA9seVODT/0n/dMeVElVlpDQckLH78Tdj+SKzxDm2JnEfX/AheN6ycMUWgaMM13flLfAZHD1/5HExXZ+d9+xIELtTfCdLHNvPRx1Z1mowTtK71hwRKWfTojPogWzKxKRtsWUhhXzHW3bTPVFMdERNyQgt9bOIwPg3x3g79tKwQAdhZfwm3y6tn1ALqFHSrQzt60DSublHmrtFYGAKAz67y9ursc/gF2gkfYnzy75FaY4wKGTUk4a/Z5WeqFhPaLNozhD22uGaTO1J2y0EXKTNNHCi8Yt6si94fcbBU2PaS5isoR/6uxfpo+VjruVtovQ== 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=Y+KnxtgbmVFVDbLEV1y2A0G5D1Y2jg+NEFuu11zZ8ZQ=; b=R6hOFBK10Moa7W3w9efNzWD/H97B0ZZfPLV/DNblhz/wNWdQyXnhe/wjqvpzUUshTOGeaigukgbX6nF6ReZvxrZoNhkVwL1/bN/pTzu35pXwK/1CxggMmfu1xVxs97C1MG+husZrCjmRYDaLwRGPF/C11TtKQuhYt+i2kbI93c5ACOGUI/xH++jkGCGvta+csM8Xnxl5NlA2D4f1BwR4AgYh8Hmqhz5NAQPsxVgZ3ktvBxE4AcpUC2+8e9QjPKavje1g4AZSfzY15ugPBQ/pERcpXFQLj/qfw34aLanp0lZjlh7+8hrEuWdum3wPQmkdstIBlQ6yrNzKaJfY2hDPKA== 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=Y+KnxtgbmVFVDbLEV1y2A0G5D1Y2jg+NEFuu11zZ8ZQ=; b=WCNZMwmkDoRC1wbMd6ymURQYC7y9mhj0luy8yPuYIvjKLzpPur/QdF6XB246jUV+z6V0GVY2JKcyuQUNKyRcBf8ODk/8Jc7TM8mPO0qTCn7o0BaXExHSjLBlDhXFHuexv1B2PvX+UWBNHEM/vCMGaMNolk/8Bp5T1EXkN/4a0ms= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:24 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 11/18] scsi-multipath: block PR commands Date: Tue, 28 Apr 2026 11:14:40 +0000 Message-ID: <20260428111447.1779062-12-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH0PR03CA0383.namprd03.prod.outlook.com (2603:10b6:610:119::18) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f4fc86c-eee1-47ba-7643-08dea5177155 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: aX3/qRqPa0b/3fLa5UpwX5rU/Wf1oZbnBq1snAP75sUx1Z4cqSQnDW7IQks3n9kuG2eQMxKbK2oGiFSGvB2D6X8QHJKxcu6uMTR29HXDojXzGPY+XOIQpi33sjLC7RqkBgZYiBSgBX6+MRxSPr1egsF4kdSD69Fcynj76s7ZspSOnbu4tZY9ZGeytLrw/HEqMe0BLdrmlQUg7Ub1ABMAizGO13pRmS5v7S3sjBNNXKKvmHihqvhKWgB3x0xZMeUV6uaDCJkq7gMoz6hpXXFA1dvmPjcwSG2a3JODDgBySrNRIhZ5joexlewCmVlWxUo9Svvb9kgj/dbsa7uB8gCjwjWUcEXvblRp1CU93kE3o6BFmCcT9BEnOo7AXYU7AKI9JWHw9dy6qjlDn2fAXKtzE8sqM3JpDM4C/WxZ9Zgu6Iy+wvzcjLWZSsrBf8L4e+1wY7wICOijCc9PHeJkepfUl65uWUNXpSuZE5HYd78Tfk+jwBgeM5P3Z28T0AtSetVvuhEJgIJ3u7iI1R4Yc/AUtz5Ogp3Q3yaB1ZGHXf90Tl5CnSgWvtN99SYVk7aNZmxAv+fEsLbyLftCVE66z0RExG0W9GsNbqnrVdULA/Esin66XwCu5YpCFm/V/Vpip+pSTz84woNtzKk29WeU9SvCYT8dyTM/72AxANp31wfmdbuDbxjkOack13zVKQajWYPA1/NgqFh/HxO9XsaPFSB1JBa8OpvPuiv5zIjmqhz2HnJNJOc5UWa0p6AhTxdF949u X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Nj3mRd7hZDC4scXuxiDNzcteYRBVP8T92Kb+xcGUmGB0188230V6M0JQ4D/5?= =?us-ascii?Q?nh1oi1A14d5W4ghp5LUWAo31ktY7E721eOv8yPqLJFLpshRB4s/gwEGOWacd?= =?us-ascii?Q?fGDMvRsamPo9T+emwWvrBhlo5TjDBvsM5ZQpjR2o+XKbzVUItFHj2VUGGYpx?= =?us-ascii?Q?sR/kJaZEOLJDoyVo51hvM4fREICYSgAMtXlDrwx1vbxpbu1q6egIgU4TROcT?= =?us-ascii?Q?iSdzLmlqogKaJoGykYRHoul7Cnu1tsiAYHpKOZ18V9DzO0AQYWGQVd3DzGq9?= =?us-ascii?Q?gK2/fPnfLVhhZZmOCrUfbzqMyDQdETp0y5X3Pb/IW/GWT61SBNb8E9Rt/F6b?= =?us-ascii?Q?OoANaa4NEyQBWPiROo1/9J0dSbzB30BIhEzzXyPahcB91KrBULZMGUnEtR6M?= =?us-ascii?Q?Bf9HqDIX7r0pWdFYU46VQ/n1E18rYaLBLetDxsE3JXO8/Pwyer5VNpMoAhYi?= =?us-ascii?Q?jN9HTXrzzENoaXXQAlE0KkYtkMAZReFqZTURiVWqQVA6tajQBVuj3xAeBJH4?= =?us-ascii?Q?2P1d2g9B7BG81bFxUczK0aFsjd6GuZaZQMrkOfl2I6N/sii811pxvUYwrrrx?= =?us-ascii?Q?sFdp63m9st9BO5AgB6++tiXO9CNNRK2bFgFSjywyqEuki/oY1dW51PwQGDq+?= =?us-ascii?Q?U3P4RIs7jspZawkQLvdWADLjaAveiAmeMry7+ZY6skkVD5OfsYyVXt3sKiOu?= =?us-ascii?Q?yW63Q5ufjkW4Hl3T8kUMEuBUB43lVPM7wqzLcVJIc06kAcmCr9NzoI5wIXGj?= =?us-ascii?Q?hlYpPHjmhcCqXYA9+DLWMJ9oXVjZ7sr3oImu5UqKytnQ0gaH1iMZBhA/QKV2?= =?us-ascii?Q?oyt/TnBtNhbGlbHbCNYrC5wW7eyf5HWobj0q5aybualkvEGgcVxzL8Mv8ay0?= =?us-ascii?Q?Js0XMbEF4gaai2yDgEPKDOBFzyYuJ2SOTKep6B8x/8fN0X489kr85EYkJs+3?= =?us-ascii?Q?p+7SyfHbFNI+Kb6200DpCbm8VumLTSfxX9oU1qqfhbJpI4PRtXnkFiKa46j1?= =?us-ascii?Q?3tyjMCP7GwJIq9Ohnt5jNHmJ9ZBB7E7Bw2trY9LJmj/vgReQu6OxUNUxg5/m?= =?us-ascii?Q?2AA9V0QA9jzyQcJvT0j+XXmTazi8izNERD8ptLUm1KCMH2oEVJbJ9MJxfdld?= =?us-ascii?Q?URK9ZV3F9uX7Kq/AaighlJvR0UR475FslDcwDA4bTh3IOGAItTRerRU6MMlU?= =?us-ascii?Q?SCRYcfkilhZq3SPW7rzhlffaIFobCerJTh8Bur6plLqA8DHkdlMzg00bOs80?= =?us-ascii?Q?IOTlffAnnwi7sgAt5gQfkJOt25/NZ78Cf0npaCZi+w/FjApgJJ5xG6rqBWsc?= =?us-ascii?Q?PS3vYXss8i2MHREn4zdyCenNYKFXqUgSmjWyrdvhzZgnYn5mK5aDY2+50mJH?= =?us-ascii?Q?F6uLKakFsfHi14DUwlMy2kaygNNxCPk8sYFlf5MsLKpAI1DEi7NBwalNVrQi?= =?us-ascii?Q?J+icVvu4dzfUyK847dN0JTenuJiMHrHkuIhF/daF3j8Hah3Ph4XuN2pCC7yG?= =?us-ascii?Q?G6M1WCltXnSKeVazJpaPno+W/GrSdIVdVZMsgzjvaiCm5RdxOqAYlHkEpmSA?= =?us-ascii?Q?Ik7H46+lXr9hsBg51G2ZfzDwKfHvwP4xGr33LahVvrg6/0lp/PV1qux63RRQ?= =?us-ascii?Q?X7dMSkgs7WOvdYY4MCZ0L/iTbtAoU5xaIemW1CX6p84fJ+qVDPwPXkiskWqO?= =?us-ascii?Q?HWZWdhH4VeUDR5p7x7oH8F2QgbdYuSsNbt/CMt8W+MQFmEPt320eEfv8bEid?= =?us-ascii?Q?t6anwlq5HMXwlJyOZUkSnG8cCXS3Duw=3D?= X-Exchange-RoutingPolicyChecked: nT05K20UZi6QNQQTYeHbRL1wW1mNlmPOTf5kyt1Gb0Be+K7zfGtJEjnkgc+XXk798CUS2uAbc1L2/GDSX+IF7LwPG4B7Fuh1OE+ouMrNI9tlg5c6b0Z31al2pMV8h0HVFeqhZq2gjHDV9E3QkMhIf3dcsPMqQxwvDV2DEh5WaQQ36Licyhav6OqSAzFi6Tu9ejrxAtHnwf66CRbYj/2SDF0D6rv20NaXdli7k6Z8EsJDKC+unHD44VWHxlsGlZx51yIL3FySKYhBQWj2kNF25sbIXFpPf4H8m7QyLBzq8r3LglFn9p1CR/15UtOvRaVm37WkXBc9dKc2AnuF0Ul8nA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 54/s0HDO6WjlfUPFYNa8JyARj+RO+o2a+TjVIRqFzygv+bsaIeOiuhaNMld2Rye49vuR0QUnuLOL8m0zNH5iNpELemRkBhvmkTIuaNsM1p+nQluBvpRJYn4TZ2dx2rJdLCie/1rdE7AkRZfa+Jrrrq5ve7sBQrz0GhKL1t6bZ9ZFbUvKIq9xh84HhxhQHZQ1J4FAng3b++KwW9yMBgGyz2h63ujQgtmC+T2Zg0ZxWALOjBG4wut6KWAKKXbOOqzsbtPQnjlF9lRZklyDsaH16Ssg/1ExHvEZ/9wZ1NtFj7LbAPcCogB3rqucsQC01g1MR4t+Nb7g/1i9JJUa/HqrdwKSLd+jGl+W59pnFbt7YdtVi0b1bQpArBg97EyJOu7eR+hkFOf1jFWwhfFFo4nU+KBdg9oUp2xWjpcL/430AzFWrGNen39EeeqTSZ2WweYI2Sz/IFIUcKL1w2S+Eu2H1END1TIms1KuXizWXiyip75JfOmeJpKl1FHi5Qx9AUZLisL8Et+hmLmRyoXpWQ89Ug5O4dFD1xTAAcYbwMPav7zLXZU4Qa40uZ+QXnvTaiFuR1nmTq3GTlMiavOA03QJEeW7B7fqaysc+jETfVUq8yc= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f4fc86c-eee1-47ba-7643-08dea5177155 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:23.9562 (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: aKlg5cV1QEdvKe4t7frDig5sO2XmpcNethqYnhXomXzUnnYTq0An4pMdqZ/jME2xokiZW31ZpdZa1H9Ur7ZUKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxscore=0 malwarescore=0 adultscore=0 spamscore=0 suspectscore=0 mlxlogscore=999 lowpriorityscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280103 X-Proofpoint-GUID: RWUF5bPn4zjiphX4hDdYimyZ3CBPrcs6 X-Authority-Analysis: v=2.4 cv=Y6XIdBeN c=1 sm=1 tr=0 ts=69f0970e 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=VwQbUJbxAAAA:8 a=20KFwNOVAAAA:8 a=yPCof4ZbAAAA:8 a=ly_y6h6M0B6UD37WiEMA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMyBTYWx0ZWRfX+P6+/T0N2dAd LFGMXzI47gr2uL5OdKBCZQYPUaL2uP4yB6nZ5LyadFSaEQC0HsyLN/sgZ8xq8KhoIaS5/gZU9XM 3fKABTNGqdib2J16MfZ19U6RRZKcdCanSMmQT/YrxL7qgD3TnaeUkbSlKN0DTblTLn5TM5/xLlh aKq4bwvg79JC0iQGLCR8C8juXGXeu34+Ef9T2u2b0cCU7X0BrknW9ABtokskWJyVhstjZap0IuE b2zoCqniAgHp6KF6L1M+tmLd1gmS//z3S2H/G9dflufyVJK99/qnev9Kju5eHU+NVYjP3GJwxwt VdE0pRQtVv7ZoQ6LdPipXu1uwEImK9rzkoG8tWf3FcaeWh0l4zMqu19O03C7nMOYwVrGvx4XJgq SB8NtKBxK9VGfC/BL6ffBzVKMmvv1vUFMA0Cq6UDKVAP/OEg50EQLitvjK6eG9AN2g78JfPW8Qu m9kC9FG5WrtYYIALbLA== X-Proofpoint-ORIG-GUID: RWUF5bPn4zjiphX4hDdYimyZ3CBPrcs6 Content-Type: text/plain; charset="utf-8" As described by Benjamin in the following link, PR support for SCSI is quite complicated: https://lore.kernel.org/linux-scsi/aaHecneNg9Q8EtiS@redhat.com/ For initial scsi-multipath support, just don't support PRs. This means that we need to intercept PR SCSI commands for passthrough and reject them. Signed-off-by: John Garry --- drivers/scsi/scsi_lib.c | 6 ++++++ drivers/scsi/scsi_multipath.c | 11 +++++++++++ include/scsi/scsi_multipath.h | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 46ed669c41dc9..c3c6831af97dc 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1296,6 +1296,12 @@ static blk_status_t scsi_setup_scsi_cmnd(struct scsi= _device *sdev, { struct scsi_cmnd *cmd =3D blk_mq_rq_to_pdu(req); =20 + if (sdev->scsi_mpath_dev) { + blk_status_t ret =3D scsi_mpath_setup_scsi_cmnd(cmd); + if (ret) + return ret; + } + /* * Passthrough requests may transfer data, in which case they must * a bio attached to them. Or they might contain a SCSI command diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index a2a21793db895..e0670d353e59f 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -242,6 +242,17 @@ static int scsi_multipath_sdev_init(struct scsi_device= *sdev) return 0; } =20 +blk_status_t scsi_mpath_setup_scsi_cmnd(struct scsi_cmnd *scmd) +{ + switch (scmd->cmnd[0]) { + /* Special handling required which is not yet supported */ + case PERSISTENT_RESERVE_IN: + case PERSISTENT_RESERVE_OUT: + return BLK_STS_NOTSUPP; + } + return BLK_STS_OK; +} + static inline void bio_list_add_clone(struct bio_list *bl, struct bio *clone) { diff --git a/include/scsi/scsi_multipath.h b/include/scsi/scsi_multipath.h index fdbdb0e5d02e0..52c80b0658d61 100644 --- a/include/scsi/scsi_multipath.h +++ b/include/scsi/scsi_multipath.h @@ -43,6 +43,7 @@ struct scsi_mpath_device { #define to_scsi_mpath_device(d) \ container_of(d, struct scsi_mpath_device, mpath_device) =20 +blk_status_t scsi_mpath_setup_scsi_cmnd(struct scsi_cmnd *); int scsi_mpath_dev_alloc(struct scsi_device *sdev); void scsi_mpath_dev_release(struct scsi_device *sdev); int scsi_multipath_init(void); @@ -63,6 +64,10 @@ struct scsi_mpath_head { struct scsi_mpath_device { }; =20 +static inline blk_status_t scsi_mpath_setup_scsi_cmnd(struct scsi_cmnd *) +{ + return BLK_STS_OK; +} static inline int scsi_mpath_dev_alloc(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Thu Jun 11 06:59:43 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 A9C95423160; Tue, 28 Apr 2026 11:16:08 +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=1777374970; cv=fail; b=FY7+6o8cVemS8Bap9cQ6TZLEx58qBgJQqiokyZ1KxRSrs/R4at8Tk/yT7wy4pj4HwWW4xjBttAMJZnvToqpw+NlETwY6EGCwhgoOZhrlEYG+GZcZNGezzDrM+C7bG1YwG5KgQjPjmc4fFKrcL8BAgU7hTzuWuWkM4SFsmWprQc8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374970; c=relaxed/simple; bh=oBQetq8qav/tqp3W2sMMjT7oVv3LTVTrCD1Tt3oXIBQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=r5froMKSkamUcAu5C9GWHeMcJirHxk0N1xFqzu8MxdvkzIrZB6Q+FNcpQhHCCoMzrkJFJYEkkaU8m7Aj38y60iibouKi6QRAvVF0v1uZsHz0/qEbMwpNPBz6S0Udn8eyeRoI/B2T7WVBCVFE1ige36ZFI7zO9+R0L7Tr5gucj7k= 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=oQ4B2D91; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=xLZECMwe; 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="oQ4B2D91"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="xLZECMwe" 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 63SAKCXX1015453; Tue, 28 Apr 2026 11:15:41 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=OG2+Hy+rj2lCA/dLjaQv1cRC3hbROwNPhYBHvmlnAcs=; b= oQ4B2D91P+uX0HFw+u0ApaR1NeeRlnCqUB7sljBAmjf76lUNIwUPZ7ejGhidarbn yINp+TatxaACfIC2EvlrZzITnBZWR37LP8floPdV6O6rxsJPANBAF6YUv0YtaGpa lZ/C+kb8vAPv/X3Df0xiBADr/TjZknvzVOqFNxL3SemlQyHzs0yh3koLKO/G0RUi IlhdUV52veG7xwJ+vSJkgC65iKtiiQYb+QJN4zo7tErs9r/MSaB8DlJsg8CxZ6uR 69A1R+qhhKQ7GwMGnCBOVb+5kmIeUJoGJUoQE/MMCdDhdGDl0R70/vjmqcXHuOsA TzTKfbz05G1/r3iYYXBurA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drm6yykc0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:41 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCmVb038802; Tue, 28 Apr 2026 11:15:40 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012054.outbound.protection.outlook.com [40.107.209.54]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccner-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:39 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pmNeHGTheWf7UUTR5smHNwMPVSpIuxojTEhokdOmSYQuNDjNoI2cMVU7dDI33kx/1s+0pQL2hU1qYWnnfLU/bcxulOQk8BhUALgwp7PWrngK28bAVLEI79wYoy/MRnh+rJFBZZD8r0nGwf7TB2mS9+GWPtRfLF7WXyXBNL4Py+W39KYYe6BfbGuBk4HvspLpFZ6Bk5X3sRtzNslALOXKPHa4dBMKjrae7i0FFPYn7KsI2CHBNmurQ1f+UhYb3RSJIORzATgiMBhNhljgG1PegEg+AyWPes7BJRYYaxJKJb/840t5HkPivFSaT37bKt6mKSJuW2tFmNhqQJc+eCiT6A== 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=OG2+Hy+rj2lCA/dLjaQv1cRC3hbROwNPhYBHvmlnAcs=; b=hLc8JZnji1ZcmwdomsA7zNlHPrYKpxrsGtGchcwNEm+6QobWYgxtTPRTuvJ7cFKWty8sK9UrFRECN5xS0WyoimAAkrwYUEWf9AwaK4QYqM42gGMZag4hrVDTmfrfkCo9mX+Kkt8Q/P+kym1fgTYARF5Iw4O3BIyftnfK2zMwj+uobPjvEXMN6/v6mUe1lT42yq1wBTR33P/InBhnGTkjpgx9g8KMJcHBZ7JgyucqoIiQ7fpbwaiibfWeP1xk6CfWTkGxeFqsLg3p2vGU2Hhw3wLzOnbKrZqFRcUYQ7DLs58oCqj1A0zARt3BnhZzRlFektfSq4f0YlH58JBQPnfdjQ== 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=OG2+Hy+rj2lCA/dLjaQv1cRC3hbROwNPhYBHvmlnAcs=; b=xLZECMweo20sx380GDcAv6TerT9j8Ksa3XC+OTBB4+0CSt5lP7qclx7FIgUZbfrYjZZzrur2Ej9yeyIJAz+wPyK3B3N+IERBsGB0v8nXLGmayxaGml23lY973itBlA5vIpH35nCWNolIMaMCakfSedp+jrF201/y1Y6YrIs5LxQ= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:26 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 12/18] scsi-multipath: add delayed disk removal support Date: Tue, 28 Apr 2026 11:14:41 +0000 Message-ID: <20260428111447.1779062-13-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH2PR05CA0055.namprd05.prod.outlook.com (2603:10b6:610:38::32) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: acc50c7d-3e43-479d-7388-08dea5177283 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 6nFHL8pry/yjDkv3Fju/mYO1nSJ0KhLGjQQnGtIG3kioEIZULopdW5Uex5ATX/mCBl55exx9hqfY0FVL5GRG+1WLxTsoId8eXSdaNfSZsxQchHO8C1iokBoG1k6R5PariMN3KZ679lDVRxkGl6n7KO0dbu0FlANeQMklI6tZMvGv/5WltIDRad/2fif6AcAeyW4H0yYtwAATSVUPpSpWTuDOb5gyjFAcTvTUjLJu14NjS0A7Fl6S/Yh8/JoKQoTq/AIrbMjzDJ272JoEK8d6+qDh8o8ggkLLgN8cK+MepGrvEE8Q62c0DCIKwK3wR0Q+HRh6aMr2JoLTRpBWn9m4La4SC8tepr2hFzsR7oXU7htQJpVhMtvLtiBQNPalsB8iomRNc0U/RHjPkJPdx9UrQJpePdWX1Uw5PYKOpvUsAVeKvWX4Lz3h406NxnA42fyord0EHmSI/gqJt3cET8pMedzjKP+0oOK5kIYBKPRY3NIw+OrHBLHzWn0nAnAabxCKIxYd3GZC7+Gja3NLFNbtsH4tTYg44vjqzP4PKHbgSharILF5pjS9u3byoWHFQJhw2oUoG5uBrnJU+AUr2G4n/+Zdu5Np/LxEitNZyl4eeaXugHpLyJVaL9SSrqbLMVCDHvaqdE38x9PIKDK2Ff27FvrXFXCmb4J0FqYF9+abQMDp73/QsFC+e/HbfvLITRzAVE8s6hhyKnT/khBsVrgAvV70K/WWnmPvXkfqp1vAqz4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hACVCPv9oYey0nJNmQ+JLuuhMn0OzJgG3W+r1/9KQnPKZ4yiqs+5O8T/J17S?= =?us-ascii?Q?a1zXkfw82iJ4FJAGzNZcyi9GkFsKYGa3cBJbiT94MEy7OSxKIsBcuTxqBzXh?= =?us-ascii?Q?BRT8b2Nh3UBMuMSJtZAFFWsxXUYjrCKfy2CN4ADi5QXWMNzCbDKRWzRb8iJW?= =?us-ascii?Q?BAH75kRcC147/N9tLnvkIhfPGMh3iLBy6v8lHS9zlsPM4zJzEBgvCRpWYX6/?= =?us-ascii?Q?JxPWBjMPv8MyywG6xNQA+kW/emoVLvj2R2WGYZ/Y5T3EAC4/Up8U3JARofmg?= =?us-ascii?Q?EnOHLb64ZMc1W8N9EeR9+44cH6wqdDhyoXeggaSorwBXAdPOrKods5Cq4cZD?= =?us-ascii?Q?IeFwMEeookU9Crz2lMoD6wJ0+d+ulQY3C5RFsJh3Ip8xDRK33W2t2MbRRJ+q?= =?us-ascii?Q?+SfsIbVGDem5ASG4tsreqgCSF0xTfCy+FX+hnMsTb2ERXoX9gUuPOcv+Su4J?= =?us-ascii?Q?xb1/2rnz7iR5kuD83090CwqC9sRBvs2pm6VdwfXGyBndhQq4rW2Xxibd0+aP?= =?us-ascii?Q?U8xrdp5/CYEQUsgzlqwka1nsrpajUP3dHCC/qNha2yWINBkX4Y6ZIIfgRCRW?= =?us-ascii?Q?LRKwrmzgfWkkvXNBLyDt1bzHRK04GK4kCUfFtJ+fXBbn5EvZBG1Syp8+Qelz?= =?us-ascii?Q?sUPP8jQBcDATQZ+ahKKJiLTPcc43burAIerWqp1QA/KkwqLL3TCnA/t9F1+U?= =?us-ascii?Q?S5Btuvmk3qewJsly5KgfBUIhk4UBRHk7Jxg4/hUqBaZpZ99G3nTbC+CtG9rR?= =?us-ascii?Q?FyA3g18QtibqL3blCtQa33KQXEuH2se3iepBMumARyYpJh5de3z1DBaMjJTL?= =?us-ascii?Q?rgC7hyHcHGey3sqTY4gjDzpV8381ghk+ql2iXdPN0JdsA7qyXTYvUI0WXkUu?= =?us-ascii?Q?C9pML6ayr35BXsQIzLntI5TTqB+ozQb/R0mGHhjqOAkADuEiQCLm1zN7qIys?= =?us-ascii?Q?VI8OnG5iQFf+8K34y+tTC+59hIBJapnHYrHuYe3+54pirInQtIQdWNFOFjo9?= =?us-ascii?Q?ULARkO9cDc7r63Jwm6iwv2iUN/yiVSfYW8v/vgS5Q2Yr9veMkXshxoHQnlKX?= =?us-ascii?Q?XQW31OkUFm/gkUdY2zlfBirTQTG+NcByl550+heksF9LaY6hjmhlcGjvhvr/?= =?us-ascii?Q?VEifgeACvYKMlxl/8g36UojYmS+IQ9UrZioJK9Ppzm4QMOr4jzhoFdxF7zdB?= =?us-ascii?Q?xvHYh1uGN6SGUlCgKwk/Jr2grkcBC1R8w4u5RJtKsZ+Fy1e8QQ9PHIujohe5?= =?us-ascii?Q?fl2XCOU0fmF+iEvnFBKbTZWglvYLtGquOjYISRVakprHSxmJNCvjTGBH/K99?= =?us-ascii?Q?/4yhRpaDIVnSceWya3SIkOH6n+HJHjmagHAVNXnb98Q+5lYVATcdp4MW1kvr?= =?us-ascii?Q?JWkLgQXMCj4szCSUKp8XVz1EsW6iVoWU/MYpPcrVpm1Pq6HgB34fiPcZWxAK?= =?us-ascii?Q?89SK4U7iNLdei7vfWJaVqDej3F2x+JusEENf/VfkEBR4sydmV0oSVhtTJZJ1?= =?us-ascii?Q?vraLAp4zEfxOoSc2MXCV/INNlmJaKS9RFVUwgOzrZCXfZvTPawxc0QQWnzPN?= =?us-ascii?Q?LkI64c+Chp4JeVBlBHltQke7/wmHYrYXGFmEXkEFcwCk4PjkSF5WtvvM7Y99?= =?us-ascii?Q?3QKub0PrKJncq7wQKyvzSmCpq8frVzLzpe+VLg345iQ0muCJu+2w5AmPuqrf?= =?us-ascii?Q?mfbQ+SilOMBCFUTde3x16N25E2X6wJoPeYJFp2bvSt981g4idfihL1NXBU1B?= =?us-ascii?Q?eLstMjViIuQpe64NkmGAgngk4PoHOOg=3D?= X-Exchange-RoutingPolicyChecked: l6JN+utBv4OdY1VJjIZBanxgGsA7LB0m2UBpyaxChXl9ZCaRWtKD2nHpnA177vTiz5UNolaIYe1MNMnGUhEro+hf/HhVFvBKKAYdkc49l6UM8oOuchm0w8NOjrdM28x43auR2cjjOU8b0uGzgKPGyEqN2TJW1y09oQMD7JFCrc+qdBvFmKy7K7H3IMsy5Rv5COhcL19j+IWuEl/I8DXLJ7Q1NHRoGhW0MIMx1HTnLeUMNe+RRLKaeKhBMM+p3K5e71GrtW4O+Z3f0noTqc2CVoSKYj4cnISUpTzpVCyE5am42qN1VzXKN/yqK+9xj9zpMYFYAjv6xurPA6Y8goojug== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: lZ9zfaWB9zVA+AhLDZYykulWaeC3Cm5k+WljS9ZFNeFUV2XI/iGHHJklXALjg0X9Gyd+EdNiaEGMeEMBQsjMisHerlwkIm2rtEXIy1f+RS9zgEmwChiUlFjSAt1et7640BXs+A0g+VOY49bqUs5+BeCWUMMDaWboe8G6fes/B+0700ytthn20WxiJgS5nUQQ7fnKjZ+uokdDlwrjk/zPFm8SPQA/7/xBooH1Q6uMKyyaB4cjW6g+xBjaw4S/TshynTiPQ3hFIzSbFxH3PLEJt1ln3H1YiQORsyg3GDpO8+WLl2Hu2/7C8Q9ze4N76GvbWmftqtKO+KbUoKR+gVeuXPvI49FkZ9GNGPpSSuhwcxliCKZJ2pUi0jL4YerYEM+3j2nO9UvEYxajsu1L3nhE8pGBELoEEEae1LRMGairCNtWOsQWHsfSO4yEBWAa5dZXFKozkAUQ7meox4R6npLGvL5geo1k5vjMerqbBq/Vz1IbQ/brc/Emdeogw9jO6JpG65hVMgDBgpWBhGlkll1QGRjYS15HPgR7+dRtytXSFFm0278YFWTqX2EtgaVhXiFAlVxUZBR9oxfxQ7iiorO0RdhTK7cBzWZIkMid9+zA3x4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: acc50c7d-3e43-479d-7388-08dea5177283 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:25.9043 (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: QOjHG+Bn5EgN6igYkSt3R4giPpcRQxMhR2BO7/ZnGH2YdMsi6mGbdJUCYxC7GY/+9mQFcUa7l8HV1+IIiBLiaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: WOf_IMvtvw-SAhdsZu98KGgW2rWLY4mT X-Proofpoint-ORIG-GUID: WOf_IMvtvw-SAhdsZu98KGgW2rWLY4mT X-Authority-Analysis: v=2.4 cv=BePoFLt2 c=1 sm=1 tr=0 ts=69f096dd 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=RD47p0oAkeU5bO7t-o6f:22 a=yPCof4ZbAAAA:8 a=S0-NFRiyq58gb8qD-mcA:9 cc=ntf awl=host:13844 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMyBTYWx0ZWRfX8CDlpYra+VQ9 //wDvAfVtOCU+h51okL+aRIbm+jejplSjNa8N5o0Nb+p37ok1Lh0uXWrm/Ewd5zPELgSQr1O5yv 7X9oeL5qgN4Fqu7g5uIdOColisQ2rCk9/ucSGFbROPE65gBy7Pt2q3w3yTw1ctBdVJCKVnlasDX dD26L2DOm/KukYBZHhC+xRrFaPVIctC/Fvp/KSLPZcds6dlFG0ZKndXH7aDA9XE3Dp9MBWavgTf bZyY/5/iEEOyfeaW4DEeLImsd6SdKC16IT1MN5LsTG4IaDAXeSNbrvyBQ/8egTjE9DK4Utdtt/C xNwiNXtiK6F6aSkozilsZafUmpSuFHnElG9Y+Glyq+R6gXQoZTbFbKeAFK2E3cFKSZXeqo8RgQa cH4Vjoh0+j8o6vHI1p/hkMj8Y7/yCMODQ2QWolQowdhCUugAMBTYz7iOvVTwGz6OQ7fNaXzuEXs Bz2P6k+4ON97WtE9AuYHGGHwWgflfR1mTam1VIVU= Content-Type: text/plain; charset="utf-8" Add support in core code for delayed disk removal support. In this, the callback calls into the scsi_driver to do the necessary removal work. The scsi_disk driver (sd) must ensure that the scsi_mpath_device does not go away while the delayed removal work is active, i.e. it must keep a reference. No reference to the scsi_disk multipath structures are kept outside that driver, so that driver needs to provide a scsi_driver.mpath_remove_head callback to do the necessary work. Signed-off-by: John Garry --- drivers/scsi/scsi_multipath.c | 18 ++++++++++++++++++ include/scsi/scsi_driver.h | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/drivers/scsi/scsi_multipath.c b/drivers/scsi/scsi_multipath.c index e0670d353e59f..2806477e1137b 100644 --- a/drivers/scsi/scsi_multipath.c +++ b/drivers/scsi/scsi_multipath.c @@ -372,7 +372,25 @@ static int scsi_mpath_get_nr_active(struct mpath_devic= e *mpath_device) return atomic_read(&shost->mpath_nr_active); } =20 +static int scsi_mpath_remove_head_drv(struct device_driver *drv, void *dat= a) +{ + struct scsi_mpath_head *scsi_mpath_head =3D data; + struct scsi_driver *scsi_driver =3D to_scsi_driver(drv); + + if (scsi_driver->mpath_remove_head) + scsi_driver->mpath_remove_head(scsi_mpath_head); + + return 0; +} + +static void scsi_mpath_remove_head_work(struct mpath_head *mpath_head) +{ + bus_for_each_drv(&scsi_bus_type, NULL, mpath_head->drvdata, + scsi_mpath_remove_head_drv); +} + struct mpath_head_template smpdt =3D { + .remove_head =3D scsi_mpath_remove_head_work, .is_disabled =3D scsi_mpath_is_disabled, .is_optimized =3D scsi_mpath_is_optimized, .available_path =3D scsi_mpath_available_path, diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index 249cea724abd1..d92b63d357f2a 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h @@ -8,6 +8,7 @@ =20 struct module; struct request; +struct scsi_mpath_head; =20 struct scsi_driver { struct device_driver gendrv; @@ -22,6 +23,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 + void (*mpath_remove_head)(struct scsi_mpath_head *); + #endif }; #define to_scsi_driver(drv) \ container_of((drv), struct scsi_driver, gendrv) --=20 2.43.5 From nobody Thu Jun 11 06:59:43 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 94D3442316F; Tue, 28 Apr 2026 11:16:09 +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=1777374971; cv=fail; b=pZtlAkPFtpZ21O7wRJdN5m3GrAY5P95uel3l7DS1RpocSGWUo2JJmxq61+XN53U5qRvmtPce8ANfYwax9HWpk6eMthIQVk5Pk6ox+TJXBcFslE72qP9uRUzayvqKQoU7tI4P/TsE4xA0X4/vJCc4+Nj84WjQpUYwUNka0rXGchM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374971; c=relaxed/simple; bh=vDDurl6T+kvAe7q/+utx1w78kjBjoQDO5uBgNrxwr/g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=TLD9Vk6C7RKqnEXtrvm0KLyk9t37WujVweflF87UE8LyK4HLusrNpVSW6Lx/jAD6CrcwTryFPIRyjfUBoTxlcnDIDmbKQRb2jlTZGVXooG5eTFpamZeggs4UTPzxu8SFD9KFvBOfAbj7XPqrASCC2MgnglFTSXOdVBp3GvtCulQ= 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=K7RrTgSE; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=fQ18h4xP; 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="K7RrTgSE"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="fQ18h4xP" 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 63SAOwfL721101; Tue, 28 Apr 2026 11:15:42 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=rS91hQnNHTH11S4ULuutR46ARKeCcQt/kbtYJhGBqn4=; b= K7RrTgSEcCCnz5bIjPPTeDHklQWhFUf0qi7CV68ZsKuWzfsArOGRvanwbzLjq1Fi YI22Gi/dqCMmVj4nAdpzu+cGhljnmpU2S3p34L75MPVapRWnA8iwZB82elDWplXJ BhAo1hpUY9jgGc1Dv2HhaBJv7YRNo4obNXd1+43AgedguN6c8m4gkkZ/vteYdl3V AOjcb9jjhjuEoBwdfLqoN/cbDByOt/ZWvyQVJwbVJuh3/b4j7nBwry7pDasUMxC7 ixI+h75Q4zFpHbWRy/KeBOLWuOf9Fj2Ote3QbHaBEUM94R0JBvJzdy1qQuzvdYd3 bXw9oia3jlE8pbXF65VStA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drp5syfq2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:41 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCmVc038802; Tue, 28 Apr 2026 11:15:40 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012054.outbound.protection.outlook.com [40.107.209.54]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccner-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:40 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=s7VR2/yZaGM6HbD/mFl3+DLoTQ3t5iSAjKHz70nq4tY+BIt3mhHg1fkb+SGn7vI1NJ/yBgDa50/eySHw0V05QqFaAK/QIRywE1muuY8mOiPzbCNwcToMCPATk1YT2Sizl/npqAC+WO16x218pH1MG9NE0fGVUajyTzOYZtqwRI80GcXbLHEjhpoOYC1cQ81IDGnvmKnT2pfb4RQGnaFAio+pklgZ3AoFtecjBoPVpLuJRVi+ZfOuf4a8SDZAY/4zE+i4xd19W8KFRQ5BMdr8q+ooEp2q7tOtjD2/LZTfaQzRgcNno75NKkxWNNp6O70lZDJQuL+Mnw1Qets/mPUlpQ== 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=rS91hQnNHTH11S4ULuutR46ARKeCcQt/kbtYJhGBqn4=; b=WPoPw1mLdTy2bFRSMc1+GT//H1Ms/RInUWAinrVu076R9yPuscCOB96OLBL4eZ0NJVU8uIjKJ7xhGu9CMQaYUpjTFXpIKPNEaRK38z7+z42Vzd9Am0uIxnn+zYHAtsjGdH0aIxoLo6bhMZuq88HTLPaiyHjSaxJp4fm4gJVgaAAEqhJelLMOvVlNNxyOAZGnSBnb0KKXhzHV/CpU+spZ0o5+nqkXL3ir1FbbpNxEHQYlXKxFnm5BhzUkNZWhyjP+2LDwENhI4Pn9HN9wqOCFUt53xNHlaKBZAHkOZWsaq1j1VmI6ABakDbiDJvAsEyvWEp7/3zzGmvw+rCweTGklWA== 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=rS91hQnNHTH11S4ULuutR46ARKeCcQt/kbtYJhGBqn4=; b=fQ18h4xP9WOLA3N4UBgYTaXAPD0y+BLBWnyIYtCOget0L0OTTUh+1RslwgQYiQGaz0YSmvfWQKLSnkH7t20OTz+ZZh9Pln+54J/MvWpEUygW7ZMkqGNCZB308PCFPcclXqaZirpLoZ07ksrBlhCRKcAZvWSiDhFt0RT7R51myg4= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:27 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:27 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 13/18] scsi: sd: add multipath disk class Date: Tue, 28 Apr 2026 11:14:42 +0000 Message-ID: <20260428111447.1779062-14-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH2PR20CA0030.namprd20.prod.outlook.com (2603:10b6:610:58::40) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: ba238620-51b3-45a5-711e-08dea51773a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Jt3MMQ1nDntRIq5ETdVCgMctzqk7alt24+ttnv2HEPFJC47opLiiQRJR3xGSmaY8Tp00az7Y3jpLhuFDnMARD8B3Cmeh/HuZk3BnfvDS9EXacYF+zpy1oELmO+D5xmw8G0E6MPax0PhDH1iwFAScH9aCDJ0IgRWuc6m0TNu7spxfGOBVzsIeaivWx8+bSW+oozpeVPJ6tM3qbyDLJJI3F6tXHVV5olH9YzPQPbQ3ReGbedML6g25Xw+u4PJGw3+BiUxRXE7YpLx/VV4yuMg949HyEqibemN0aUTXGBB02ADpp3SaShmXosyR3jBRescZAYzd5XHiUiq6sQAhfNjVQIpo6rA/SjpJZsi4YXVxSQHVO0E41lU6pcqsGz4HbVxBEo6yrpDLJyDUNTDWaaz4CRWRQNBzI4filClHKSpm/hrYIj0OHJnm/VfKtd3wCroTeu+NI6c9wwcWShkjsRr1TIJIJLQ3caZELkSPeS8mnkIzsjDOAuMh1mxhRfMjeNRQVQXiwRHz8xa/P7CyOKrkxnXngYLbiaYYqRtpxgBu2lQ8Ss28CoTp0Qkj5DFCaE86NyE1D5GhW3NwPt3XDYvn3DcwxAQndS8Dc2msvYOKIPvRAhFTfRjbZnIiRYe67grv4tk4HUh4/rVEhICViiQ6dZiHE0X4JFi1qJF+Ak0w3yiDzsbj0DvKN+S3K/P0xLWYfFonLcjemMvDi/y7v5N9Al2O5NG4h+fXe7cXyYuyB/w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lZr3Qo9sas+t+O0Zb2VHu6s6p5KthsGZm578zUVisDRu1FIAYjfJIISF/WVi?= =?us-ascii?Q?nXGrDC9OlwQXHYWnP3L8a0rj+Pc7fMuETdWYVN6UnUJnmkOuR8WyH9w+mEZZ?= =?us-ascii?Q?JGSdz+j4cUdiCxZx9DvAZa+sV3/DbvXRqVnbn0kbLXS64TPrQeJyCvDOqM8I?= =?us-ascii?Q?O5H+gsa39ZyMpQfEcBRKi8FH1vjJP4fA5Of0N1UIwrbxO6ppLzw9+LZRjCvD?= =?us-ascii?Q?Sr2ul7qo8rjz4edOMzeFgUbeg1TFYkCUQnkQ5b62ZO9BJlAvNlLHFbj1Mm9W?= =?us-ascii?Q?7DKTRGxaJ7yJJGLhrdJaR6/gzTxWS95AfKqPUx9d/n+VOeGYKn3+JvOaih6P?= =?us-ascii?Q?s80GsYXjqjii3NJvhu6cgs7wBXg9hYQiCeiQ4HS0V1T39G/UDuVQayvRGLBI?= =?us-ascii?Q?cR7cR+thEeY5Z403gBgZKRBLpDffzZlcaOWo4ugp3TMxar1iOZSAAKKD9H54?= =?us-ascii?Q?Rd/gESBHGK2jJ+gsf0jKit6rSEVUQUW/x60wJmHrS0DFnZ3j6UJc6gdvt0ts?= =?us-ascii?Q?egLsbGyVYml7KWanTMajTM4QSPcGOdBGud5h6dtaJvRr7K+lRi3SoZXoAGjz?= =?us-ascii?Q?dfrU74o3Zwog8R3mm7+4nXEufGyzo9lLyEbNiuhRlTZpYQ4sChFMO8F56LoC?= =?us-ascii?Q?Z2DC6dIMmg5IlFZXRJ95VMWDb/LWnN+yCPsUoFQSUtDp8er09jv5m6XP+5my?= =?us-ascii?Q?3Frit6SWz/7KrietoVTpSPHx/RIFGofkwzCc822GoFKs6VePeZ9i30RbxAGl?= =?us-ascii?Q?IgkPfEVal7HP5Mna2TxghCUrc2h8QiH4ih+EfuyfXIRVCEiue5+JD/U7W6ZR?= =?us-ascii?Q?b1Jh1k23pTSb9qXmsmhV+TQde99nyx3zj8SY6kt09jBXeaeRcphxaLVKgtZ/?= =?us-ascii?Q?9cgB4+hehedCuZA+PMybPEq2dBX75QiDEe0lf0F3Kv1c5CdrF9L2D9VvJlTP?= =?us-ascii?Q?q+tcdarhvGR+y33b08oux+iODlqCL7jtfBSH0kxUHaV6me7Y3rMNJhN+GwCI?= =?us-ascii?Q?rgHjhZe6zD5gf4ENDe8kjJ8dZOsjp8pqdTYqHQS6NP3XtmPuGMFYOopzeXJu?= =?us-ascii?Q?YrOhA3rI/WWK6OMMFNbMrsQlqqHyrc62AIz253LT0doLKX8fxcdX+SLl+ZSn?= =?us-ascii?Q?dt0XTLT1IgdAAfqv9VJL1n9o2lLxC6Hv9zsCTYCdgasqfta8P8PeObt7B8kC?= =?us-ascii?Q?YfUwGG4cFEI0uBPyHzMTQJY7KxMNiTv1k2JERw6+75C3XozON4bdYmXf2O1U?= =?us-ascii?Q?lINLCLvfA6rewXeZyPy4tACDgvxN58E31G0hBQB1Q+ekypXs2lGj0bmBauHb?= =?us-ascii?Q?i2EQUQ5rBOpnWBY0M59YnEGLDa5om4loL6OwJnHyXvq2dIrcM7xclhMqcGja?= =?us-ascii?Q?AgmvwfiO2telrgmwNaYe8cBfc/tWdraa36sB4jFiIni+ez1ArnPmRuSlANYF?= =?us-ascii?Q?ICLuIzIFKd8qa/GZBRHKVp0crTnEWt8N9XeG/zJ0jS+ymAa5DV2wOgHgTY7j?= =?us-ascii?Q?fsaAjwTa3QQ9AefB7z3O/Rnaq93YS8eeGk9Ovg21Nd0B1D7gMb5/vKGF23tx?= =?us-ascii?Q?tSJ1RbU2vDowyJq9vlKnZhpugPy4SLYcXl5g/AjjxzotDR6z/RZeyfFWRI0c?= =?us-ascii?Q?3u8uGBQbia9jCrvd1nUNa7pxsTJjiZquDXnWD4bX7q9sqYDFLwm3981a+v8U?= =?us-ascii?Q?zaz6mwqBVTM61QdE0G3znnEzSxD7nzkkNCVec626kRhZphus49TuNCbYOvXS?= =?us-ascii?Q?M4d8xhQWw7JAjq3aRibjno/GD0q6SHM=3D?= X-Exchange-RoutingPolicyChecked: uS/nh2fI1vWm972KIITc8CIZA/khzA2cREL34ccBumYzP9aKfhzG7LG26f9nXXuJ7ihDPVHWJ+/YIY1rZZ4R8TPSnRnMzAlqCjHP7cfERuR0h6To1he8L+IQf7HwGTp5yQEuIdkjeek+uvOk/4KE1hPwrCmp0T4lhRZoJase7q14eUMvfGXIkinAcC8xgecpyAuVaShQ1W0GD8F8pM1nAKniS5BhF3sBprRYJ3HlOA59BWg3i94ZRAiuRzgKpYoo0zGC4dfDf/qZrYap0XZZjystyNVATgI/AOTcqYzMVrQiwjQoebfAvxgfsB068eX30KC7g6QeoonBUbAqeMdxvQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: KJSYbR2NVHrHsCMdfmVxKdPkY5XoBOmMJnl6/4HaXCtjUb7WwuQQcjSnMjCJarxFKIIUUato1DtnT3jrm15g1edBGMy2vxigL+Z/C0QLVeg7g8OHCUap7tQSTP+OiB+VAS8hjO1eHNrVPyL1V01bL1x4eNt15UDCFEmEXIeO9yHgiKxVFJu7YkTIyaT+NepeP3SVgjlbpp2HBg0RvTVFGkmpd7gd6c2IR1zlPrtvfAUuJ7xcntDWJ60Yg95ndEhUAeGsvRnTJk1pWIEaX0yJ1/gmt/ftcRealBhUaFb3pZDoxOosbe+F3zr7orO76gW98cHFvY+sgmFwlrHw8qM3e6tQfFE/A4kcUAV0Cdf6LtW/ZdgjG4FPbqItEcKvwzxAEUnX7LTbzOEO88CxQZjFfFKKgJrwmsHtp4bYfJwLjgSrZDYRfFQM21uVHmQIkgKlcz2t8FmsvqRvLBKqLNTuBObiHOegIFY/txCzvzLUHyymd51efW0gTqS2i2faYrY5sllAPpTCKgJtsvNDNYaj4Yk2oVxb3lfN8fzKK6UoFaxox+YSuWxOwD+dAf2Q2JnU6l74EFZknYPMB5Bgn6tzNAaQAvb4u/za0iyWSYpwXg8= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba238620-51b3-45a5-711e-08dea51773a7 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:27.8106 (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: I5bJTuWH4vtDheSzdGyBElMf8xXDbTpi9f/HN9hfwRSu9B6VPVuCFOQc/mm0439Ixrwqg3WZsAgJPHDJE6pNcg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMyBTYWx0ZWRfXxZ5RtmivphZu qB7lwvoSpmWzPF2nGR1KlqNUraz3oPK9ztABtoHbId5shAPMd+4InSZf9CobI9QLonbFC8/zsL9 4KCPb25eZUR49tkedQBvY+7FKMj0HnaUy9EnTIsL/bxIkAF/dQw52+9F+pjS6Lg9spUH0JFM6iI QXxmdTNhhyHe2mXjmRsu4YK0imOIqdQx+mV7bOuY67GTJ/q6F9oAZiXDJNMmt8B2gPu6203g201 X7FGWWpZ+fQn/SEgimLXPp3oXbKyDAiPinETh+5L1/dni6DMEHKS8I6ap2xgHeKe6WROSXNSKtT Hs/IJxMGRUmVgd5BvsLXMfHgxGyTFdf/T0GawiKv3LV6Jl3w1v++3rEoUEPKtrUghGyEg2dA7Zv V0GxfTU/oturfWtXtFHdBtyhSBCGUxITlOdf/ySPMyNKcJn2lfDMAxdD+uGvsLNu/8Y36avWqdP P7F7cxV8TxjOjUJAb2OUCloix/msmCHTNEckYGfY= X-Proofpoint-ORIG-GUID: Ee1yprVMjCnVrG6-EmJ4cBVcp89QV3Vt X-Proofpoint-GUID: Ee1yprVMjCnVrG6-EmJ4cBVcp89QV3Vt X-Authority-Analysis: v=2.4 cv=E7v9Y6dl c=1 sm=1 tr=0 ts=69f096dd 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=7Gl3-_t3PgB9XO-mQDs3:22 a=yPCof4ZbAAAA:8 a=ecQ7zCoEdOpy3JLqRw8A:9 cc=ntf awl=host:13844 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 multipath gendisk. 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 628a1d0a74bac..c74f336f8cba9 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" @@ -110,6 +111,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 scsi_mpath_head *scsi_mpath_head; +}; + +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", @@ -4399,11 +4433,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); @@ -4414,6 +4452,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: @@ -4437,6 +4477,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 Thu Jun 11 06:59:43 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 BEF55421EF6; Tue, 28 Apr 2026 11:16:02 +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=1777374964; cv=fail; b=HPtfmIO0/ueQ4e/LYdLStoqkqThmnllVL1Wm2+lQSSaGekwUFyqj5JcCEakzOP1SN07TgMjp++LAr8UcMJIWPDl0RWefoooqt4/MesXgE9rm0qywS7tXk5t4crMvguzLyk5GKSfBkOFGMhGgRBm28F+TIu+2v3WvbZDARK9G0dk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374964; c=relaxed/simple; bh=My2fYdZsmOkvZC8oZvvfrlACXzUfBLCDwNx2l3FgrUE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=dod/T9BztzDMHk17Pk6B2X+iuSb9SOj69QtILwJQG6bc5fCgABpQyQ+EXj3R4nq+FIu981sB3hCX34o+oOVcUnVe2xh5rK3Klv8ETl4k2KmaQLd+cfaBajJB5EtS/8U5Kvq4qbxziFMWxrRvw+/cQtvI8NDWXixFSUiUqgStryk= 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=NsYoB1jl; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=tX5/zOAA; 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="NsYoB1jl"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="tX5/zOAA" 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 63S9pvla1905709; Tue, 28 Apr 2026 11:15:42 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=HH1lsDmGARiNwvrFyrjikRpDdEGY5WQgzBAYUadmrio=; b= NsYoB1jlOzPKS3uCxahvITaYs7mk9whkrChU/CBe2lb8iThqhORHF7NQb5OMmU24 OMb236rXKRR9kPo6ipEMfxXd9A/MUkdgo+fRWYiwJUPyQ/h4+LXymTtXzKP8h7Kz YcVMFsIxxXkp0YRZhnz/KHxtf/4nH55rFp8l0hzAT6Szy44bTolgeDzCsWb/hSUy 4KGop9mxPFokjcwrjNEPWwl054rB2z925iqkRJQ/f7H+qf8j6DvotRuXd24ACp41 nw413++yX1gtM0Qv/ce2WXH1gQO7IvsbCzHSnXyKHr+m6F5r4jYAy2VLKOCGRODu RC4NgRrDKnZ4MQKi3TEwoQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drng8fctf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:42 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCmVd038802; Tue, 28 Apr 2026 11:15:41 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012054.outbound.protection.outlook.com [40.107.209.54]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccner-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:41 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=spVULhIJ9o5+bX/AEp56gYbRMIm9PbM/PqS5nNV+TPuUs9AuuiJ/b1luOmKHCTTkhXg8H3Z6SqHJ2/prg2ZXLdavuDXBc2rot2u1atLlZZx7AEUZns1t2R5U6dNok0iBMVu5ckDXuVT+DRcARRtYiyZiWY/DjeSg6XWe2+pZglbQYe3gVVVhXlN7d/jp8soD8H+mt245X+VMgDqKqkCLwzrwYhOYckslJmq34dOBpu+Nt9mYanXhYfybFKZVu2zXlHhDpvVNOcMIEoVFbQIh96yUZU7qYHeE4XJByiVI5eF/bZsQgmJFIEdZQvPpmotAABWSySRgxduiwbOXAMmpaA== 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=HH1lsDmGARiNwvrFyrjikRpDdEGY5WQgzBAYUadmrio=; b=pzJmLGpHSQKm/0J2ts6//vD5OCJEd8HORM19JGdYe1kBQe/hwQAfKnF9RMUGFLw9zn48bM94oGgIJYTmtMK/qTQlA/eTLHYvxzoL076xf2rr4qJcOQ4Dt2MY2IaEzX5ZJl3C7I5seKOhPxHynVEFOvBPXszP+PZ/o7DWg9U6orBgXteYLbseFL1MSCPW5xiJX3Ik/n7Pzd4nXTcgZQDbxF7aBiQrj+68u4zOGeVVxIjLLN65FlBpapQq93N0hzRyV7klSkJCqBRvrdGLShjWZKn47EZpwEfTawHy0JC4/bzpo2Y0T5AeO1mNFDZta6u6jcaAXjnughWD7dRLD0xHXQ== 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=HH1lsDmGARiNwvrFyrjikRpDdEGY5WQgzBAYUadmrio=; b=tX5/zOAAByoHMT04DjUgs8Ju2rUNykroRXcFIImpufkydTnHMogeg5vQgU4KKIdf9k7wndM1HOKMssRGy3F/c8b+6Dsb4OrE7RCeXLXwP9+/P8YNCyRAYbpQKurqTlDxW6xfcoClBCr17k9FvmQ06SYJlaPQUFuAaXPGO9FeyAU= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:29 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:29 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 14/18] scsi: sd: support multipath disk Date: Tue, 28 Apr 2026 11:14:43 +0000 Message-ID: <20260428111447.1779062-15-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH5P223CA0008.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:1f3::29) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: d1faa71b-6153-4e7b-de5b-08dea51774da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003|20046099003; X-Microsoft-Antispam-Message-Info: Y1VHIkzrnI06/aClQWjmy69i6YraI17G90/2g5mIW0oJLzte1e84Z8UQJFjwuTAL096TVwbfKDoRn9cn5kX3kn/8UHS+OgNlxLkXlHovfKNwSOzgosmELVaec9ChUo/Vn02jYWBTIJitxgW2SyC1DRs7UzIxT4mRQxkjeKWG19xfCazbu7J1N0nxvc1wzQD5ZWvwbyBdLiSTJxuO0XZD3orsp1CRqTPhmqt4z2RK/BJewUWwQ4frvl0QL5OjdbsPDccT1M3aSz184eFRK+4bdltAPeIZ4prv0ecc3TdxfOLqxT81ymxIl6CHXXeLNGgV0a+HgfF+HDRxaujp3i7fUBdeYPju+olUWc5no4vN3jkXwA1skApnVPg+n33vD8+B7H2FqMzv+muNVVNZg2K9ybcVpTFrqmBtXYRzdnwMA5cUXDqRk6JIjtNXOG/+4WQOyinqnrrMAlglVHALe8+kcyR57h3EH2HFPH1xVIzEuYto6+cV2wGHbPFP9pwsXOyohnyA2PRXiuvpXMq4sbzJy91tKUCH2WDYXuB+nZc2e0qhOdo4SgrVmYThFdgcFRfrg575HlGqWSS2kWVR50nc3yF8XlxDl825Z2Op2FQ0MbFxKCCBfcyR0U45Gw7owaXy0vIMIZDBy/xhjgL2regBZpP/dXZY/N5tdDuApPXIiUEuJG2HXtm7PEhkSfGlSvyxxJyl/mVODmgp4WXvRyjaDKojqHZ9Dcu6nwva3oSvuBI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003)(20046099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0PIEgiw2Iht6+dzUdNAyLYUZuZnNkNGSHxSof4kPnnxW1FH6b8wDSFp8wPSA?= =?us-ascii?Q?vjf0QmvgLBqMTxNdOB6IszQ2y52lHIHvcLXRHQx7NR7ih3/ddkl5yFgpQKgU?= =?us-ascii?Q?KbU6X3JmbWiH2O41Um0qk5PAT/VdFQDCMJROz2QhsyOJl/9R91S3ZmFBzy2i?= =?us-ascii?Q?rIKxPZ+B2WqL0rRYhklChkUfKW5OWSv9KTg7by6ihRXYC1dSLmWxmD/+Ov1S?= =?us-ascii?Q?ENhl2JdVkNSUHQ3paPEBeMjRQFEl98mixXm0Eoveje19ifThqNXsoPperwLL?= =?us-ascii?Q?Q5S23wRtkh/+DaytBlxFJvIdTAX0aD87+I1+dOhqpup4eRcit5bn2/6G0SBO?= =?us-ascii?Q?iOL2VgMLtPM+6o1GpBXMMJOCzUtAcUOxcytjL9y4qWC8KrLGB9E61THz7ZKy?= =?us-ascii?Q?MINdy63mSU6JoBbQipkgx+kLLJp+PDUg55Jz7ZkiJDyFQF9JCEzxQgFqlaKJ?= =?us-ascii?Q?ydyjTBQzH60oG65AG95yQMIE7Ik+vAY7BZIzX8IwU2vvnViQOSxA5+ZjpnP2?= =?us-ascii?Q?EsPNhfdpg6fSrFowrQ/BG8a7MM7YAoOU1fhteirhn5oRgthAUbipgfdEKuJx?= =?us-ascii?Q?Lsylj8V7gqRORVB2pqSRiHtvt0YJzKDw2eG9fEziYWMCEhRoxomIkSQ6k3Sg?= =?us-ascii?Q?pMx2xAJWB3mMMq2MzTaa/Gjzo0PIwrp/CXamUFZ7xu8YnrQs1p0jOHn0swMP?= =?us-ascii?Q?jeGOpiUU3rpfwupolhUVWhsLXNK9lwDsu/iE1/yrzGEfLu/+VHzQdSAbCCRB?= =?us-ascii?Q?/ksNEUikeUKrmeKo8zHzaeg/zPnFLrpA1MRs5IJVapFyKYjxyeJTP9nQZ/rA?= =?us-ascii?Q?iuBAcHg/gIvRgFQxQ1NzcVyt9IT/T3c2yOulzAsXf4ocX+9t6mWnZI0J5sbg?= =?us-ascii?Q?vf7MtNiEzjjNCLHNsU/vYh7cq26ApjTS13JfURWHUjMWdi7xlIoDqOTeJhcy?= =?us-ascii?Q?XWZAalg02RJbVcyNid3+bmOCj90TY553wYi09TJRlRCM2eJy3H8tWM01uyL/?= =?us-ascii?Q?dynfssRBzsNe5m7mdLPPSCIs9l9akkUV/QIdsGhO0nHaWxSc7AbH+EoA0Sgz?= =?us-ascii?Q?jZDG1OUDG6FnbQvs11e7V2bs+D0f8sjqTCauxLFiN1sn15Qi2WkNIBH3KAME?= =?us-ascii?Q?vK/RKIvsjMp2uFJ/iCFiuB4wRj7VMIvapvKNw2qU8eN1o1rbRgOpLo4WMWLL?= =?us-ascii?Q?SqIGBFDSCkUUV5HZjX8fGNRXREF+3rBQ4bJfonGip5wHK3DgxVEziwOaxBQQ?= =?us-ascii?Q?xH87pK0nlPU/WstKapISOwhfDjKGnt7Bii8FcoVF6H88IOvTXCpMccQNyC7s?= =?us-ascii?Q?YbBUztU+yUyAzwgro/qBGAdn/lbiGyZzA61lgshemUJDmBrL4nTLWpR0GWnv?= =?us-ascii?Q?Hqu5D9G+W5zyjN7QhGUAyJ694CPu1vOARmXk9klvPhPsaDJlpllvrMHQXNmT?= =?us-ascii?Q?UzqNEry14Q9TGWg7NDlFP9QtSHL8KG8wy8Z2/6G+nMl641PW88q5djADYuD2?= =?us-ascii?Q?KGZKzt1/QBm3NGVdK95X1UpMAkbp6dlRdlb/ZPTtH7Or6O04Lb12cw/C3Nh4?= =?us-ascii?Q?oisoi50d7hau1UvbFAD76GYxkDdJ6ApWd7uGbAMSKJ9s+CDikZzHwmNFiPX9?= =?us-ascii?Q?p5HRT8WMw01jXHnENWE+t8JUNT3AWMdw4kLgm/brmWDhgZt2sV/JYSo0Nr2s?= =?us-ascii?Q?Ps9HOt2ho2CA525TLNMkyHfk09rt+FsH0GNak4KZ9/0bCvq2T/3fqYLUwOzf?= =?us-ascii?Q?3Uhsq1ElKsK6zq96XlePwFu4aKCbamA=3D?= X-Exchange-RoutingPolicyChecked: otTD57vFzmdNoKLWkkOpTZ3dQ0HGTEF8atoPk5o8eq9wzyyGqvARPrERpAb7UJBn3095SW2JRe/k+oZC1NbNKVfd1FkycLQKsQTzodRjcff9O/9djCIM3cZA6MTXz6UsnGu3SRLRzrA5qrRIA7m+0dhaS1H0wv9hW8X5oW/mcVvsldYwFpXXkhIoFXVq5aA/vGGmcvKtTPtSGj8xBIL7QqT4IL5Vwc/n4U4gnqYagTKiT/GW64baFxlgO/wQvX4xYgcFJY5YjxhQh1nPapPQ3arLz8pcwFr9NU/Xa4ShQK7AA3G7DB2jf4UShpvpRW+U5V+ZjyXVXK6wVH4o86FCXg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: qNbEyqFGHR9P03J60KEUSpE4WXAFkCpptYEIMppRGLGxHAIu+b1C6Czouxdm+1BATczKrwAxpHUEj6WtXRorF4J+yOiExGxLDA6bbivhm/92PtbA6gwMtdmfWQJEgpKJDgx11Y0skAooqnGsTR0ZftCEbaWEl5/EbjjZ9euGE+r8ZNYBc+m347DEe5NIz+J4IUWU3XUx3nyQVXhADsr1Gxzp2pxUl6egpYVDJcANTAbwFQun+LMS+P2ZcmR1cV7sUhAlaBBQGrWUXf46hhcwjcUscAIsyxUtlGvEE2XFi5cyCeuEkOxBDT46HpWj6ZACJItfeFU2jnAbQii1SbUjAHxEuQCgh/CS586mj82WNmLBeXZSlGxb+0bdREwQOFMO+h0j+WIzEbosjmcXqOFTRB5N4Hp4sq2cMSlrqOGu9P/7pQVyE+srEr9aUZo1lW5Y9DrpmMRJa9OtTe61wSIqNIyob9ks068X9rAxD+DUYceuupLY3Io2rLX0qiiZ8PdPgz1kT8m1Z8ScnAnvBq8YylkM+OhCJ44lVU7vdzx5Sfz0Z34WIp5IZg23QQuKtXYQJ6JHVpNHdLqF/DtUzDKt5ulFBHJ9eK4MKDGtbKXoYXU= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1faa71b-6153-4e7b-de5b-08dea51774da X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:29.8008 (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: BFe2oBA3KxFK0EQ7s6i2TgQkQfoVLlqcgD8WVru28VhuO1cidYMqMsvAU7pC6P3tSGxUeeMtmFr6bQ71DiJ1kA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Authority-Analysis: v=2.4 cv=U7uiy+ru c=1 sm=1 tr=0 ts=69f096de 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=EIcjfB9IiI4px24ztqRk:22 a=yPCof4ZbAAAA:8 a=fl1--RqHDNO2UjKtE9IA:9 cc=ntf awl=host:13844 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMSBTYWx0ZWRfXyhFJOSVpkBQQ uD0djqesf/CYbPto5sL16FxM78ifscR/aU71XKO9hOH/EiEjq8AE2sGYWcudibRd9QGvHstMZq5 C6vieMq7YWmm52Kqowd5PlwouOyBf0rM72rGmutQzkzbObHE+rRdtZb+XpXH8/wCQigHxrW3B3C e4ElecvZDRBhisihuAhFqSkPSgjcEFmTVyFwKVjY47F/w/mwCdgynB2aGqp+7RWx4xIuJ8Vd7D3 o8jXJeW3amdS4o1wPkQalTwr14ZAVxrkxC12dc9849P7XGWKYXKZTpCpFd9EfjTVwELnDXD3v9C FdYEjSYK/5ypKL8ocqGNtVBjimzHDq77T/a0oFeKMBNjF8CVM/YSks+5SeIwJNjmyEl+L0JlcU3 8kS7CyYHr4njtIZNH1oT2u/ylHL4l8hYPqv1JaOzNbd0JOMXKUhnxWCzQkoR8ZVPjvJGSlx1AIs PwXfpN8V6syGWqgnE8fo3aX2oxRhQw9vKRJUgmGU= X-Proofpoint-GUID: M9q4zslz6XajoBlgEXKbt4BI6nBHPNOl X-Proofpoint-ORIG-GUID: M9q4zslz6XajoBlgEXKbt4BI6nBHPNOl 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/scsi_mpath_disk0/ 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/scsi_mpath_disk0/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 | 396 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 378 insertions(+), 18 deletions(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index c74f336f8cba9..ca20f9430b4ac 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -112,12 +112,30 @@ 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 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_head *mpath_head =3D scsi_mpath_head->mpath_head; + + mpath_put_disk(mpath_head); + 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 { @@ -787,7 +805,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 @@ -3964,6 +3983,322 @@ static int sd_format_disk_name(char *prefix, int in= dex, char *buf, int buflen) return 0; } =20 +#ifdef CONFIG_SCSI_MULTIPATH +static int sd_mpath_revalidate_head(struct scsi_disk *sdkp) +{ + struct sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct scsi_mpath_head *scsi_mpath_head =3D sd_mpath_disk->scsi_mpath_hea= d; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + struct gendisk *disk =3D mpath_head->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_mpath_head *scsi_mpath_head) +{ + struct sd_mpath_disk *sd_mpath_disk; + int ret; + + list_for_each_entry(sd_mpath_disk, &sd_mpath_disks_list, entry) { + ret =3D sd_mpath_get_disk(sd_mpath_disk); + if (ret) + continue; + + if (sd_mpath_disk->scsi_mpath_head =3D=3D scsi_mpath_head) + 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 scsi_mpath_head *scsi_mpath_head =3D sd_mpath_disk->scsi_mpath_hea= d; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + + mpath_device->disk =3D sdkp->disk; + mpath_device->numa_node =3D dev_to_node(sdp->host->dma_dev); + mpath_add_device(mpath_head, mpath_device); + mpath_device_set_live(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; + char disk_name[DISK_NAME_LEN - 2]; + 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. + */ + mutex_lock(&sd_mpath_disks_lock); + sd_mpath_disk =3D sd_mpath_find_disk(scsi_mpath_head); + if (sd_mpath_disk) { + error =3D sized_strscpy(disk_name, mpath_head->disk->disk_name, + sizeof(disk_name)); + if (error < 0) { + /* + * Should not happen as would fail for the same when + * allocating the sd_mpath_disk + */ + sd_mpath_put_disk(sd_mpath_disk); + mutex_unlock(&sd_mpath_disks_lock); + return error; + } + sd_mpath_disk->disk_count++; + mutex_unlock(&sd_mpath_disks_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); + 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; + + error =3D mpath_alloc_head_disk(mpath_head, &lim, + dev_to_node(dma_dev)); + if (error) + goto out_free_disk; + disk =3D mpath_head->disk; + + mpath_head->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 sized_strscpy(disk_name, mpath_head->disk->disk_name, + sizeof(disk_name)); + if (error < 0) + goto out_free_index; + + error =3D dev_set_name(&sd_mpath_disk->dev, "scsi_mpath_disk%d", + scsi_mpath_head->index); + if (error) + goto out_free_index; + + /* undone in sd_mpath_disk_release() */ + scsi_mpath_get_head(scsi_mpath_head); + scsi_mpath_head->mpath_head->drv_module =3D THIS_MODULE; + + 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", + 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(mpath_head); +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 scsi_mpath_head *scsi_mpath_head =3D sd_mpath_disk->scsi_mpath_hea= d; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + bool remove =3D false; + + mpath_synchronize(mpath_head); + + if (mpath_clear_current_path(mpath_device)) + mpath_synchronize(mpath_head); + + mpath_delete_device(mpath_device); + + mutex_lock(&sd_mpath_disks_lock); + sd_mpath_disk->disk_count--; + if (!sd_mpath_disk->disk_count && mpath_can_remove_head(mpath_head)) { + list_del_init(&sd_mpath_disk->entry); + remove =3D true; + } + mutex_unlock(&sd_mpath_disks_lock); + mpath_remove_sysfs_link(mpath_device); + mpath_device->disk =3D NULL; + + if (remove) { + device_del(&sd_mpath_disk->dev); + mpath_remove_disk(mpath_head); + } + sd_mpath_put_disk(sd_mpath_disk); +} + +static void sd_mpath_remove_head(struct scsi_mpath_head *scsi_mpath_head) +{ + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + struct sd_mpath_disk *sd_mpath_disk; + struct device *dev =3D &scsi_mpath_head->dev; + + mutex_lock(&sd_mpath_disks_lock); + sd_mpath_disk =3D sd_mpath_find_disk(scsi_mpath_head); + if (!sd_mpath_disk) { + dev_warn(dev, "could not find mpath disk\n"); + mutex_unlock(&sd_mpath_disks_lock); + return; + } + + list_del_init(&sd_mpath_disk->entry); + mutex_unlock(&sd_mpath_disks_lock); + + device_del(&sd_mpath_disk->dev); + mpath_remove_disk(mpath_head); + 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 scsi_mpath_head *scsi_mpath_head; + struct mpath_head *mpath_head; + bool remove =3D false; + + if (!sd_mpath_disk) + return; + + scsi_mpath_dev =3D sdp->scsi_mpath_dev; + mpath_device =3D &scsi_mpath_dev->mpath_device; + scsi_mpath_head =3D sd_mpath_disk->scsi_mpath_head; + mpath_head =3D scsi_mpath_head->mpath_head; + + mutex_lock(&sd_mpath_disks_lock); + sd_mpath_disk->disk_count--; + if (!sd_mpath_disk->disk_count) { + list_del_init(&sd_mpath_disk->entry); + remove =3D true; + } + mutex_unlock(&sd_mpath_disks_lock); + mpath_device->disk =3D NULL; + + if (remove) { + device_del(&sd_mpath_disk->dev); + mpath_remove_disk(mpath_head); + } + 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 * new scsi device is attached to the system. It is called once @@ -4016,22 +4351,33 @@ static int sd_probe(struct scsi_device *sdp) &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); @@ -4051,16 +4397,13 @@ static int sd_probe(struct scsi_device *sdp) =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 @@ -4078,6 +4421,12 @@ static int sd_probe(struct scsi_device *sdp) =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; @@ -4092,11 +4441,15 @@ static int sd_probe(struct scsi_device *sdp) =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) @@ -4110,7 +4463,8 @@ static int sd_probe(struct scsi_device *sdp) 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: @@ -4238,6 +4592,9 @@ static void sd_remove(struct scsi_device *sdp) struct device *dev =3D &sdp->sdev_gendev; struct scsi_disk *sdkp =3D dev_get_drvdata(dev); =20 + if (sdp->scsi_mpath_dev) + sd_mpath_remove(sdkp); + scsi_autopm_get_device(sdkp->device); =20 device_del(&sdkp->disk_dev); @@ -4403,6 +4760,9 @@ 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_remove_head =3D sd_mpath_remove_head, + #endif .done =3D sd_done, .eh_action =3D sd_eh_action, .eh_reset =3D sd_eh_reset, --=20 2.43.5 From nobody Thu Jun 11 06:59:43 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 019DA423165; Tue, 28 Apr 2026 11:16:08 +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=1777374970; cv=fail; b=fzqRu/58o89P+dgbxWN0QLVXFPV1ZSrU7NYmGrBwVAwxCEh7M/LD8jRgBJD1OeJ0A6SrfDfLCyo+zjDE2z2TosvjdOgDi/DSvYy4+CMmnrwbMIfjZL8ycZVJYi80m4TXgmhY+CyOefgG/WfCdFct4CYPklaWbf+s4q6fc3SyNAE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374970; c=relaxed/simple; bh=wDo+odMeOrmtg5PijdZkKT4n73ft8SxQ2rByxzxqJJE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=GrnuJwtJ/TCUir9ZpwWbHQtGpvTqbVUvD2qi55TYQXfptDXhN/6LFqKtIQdxIcOmSQp9NXunA6BxB62Cy1IRglRqWDrTYfkhY0KFTVdjjoKoNeh9+r3NmTVE59Xlr+VgMRdfAD/q6Iw3qenlfTAh3/QL67jcdHt5twqkEVdT68g= 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=cLH5LGcd; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=dL2PhSRK; 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="cLH5LGcd"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="dL2PhSRK" 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 63SAYxUo1015449; Tue, 28 Apr 2026 11:15:43 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=PRaonAqOSk2AI2qRAZFAXBctVKv95nr7rlRQ4wTIoj4=; b= cLH5LGcdM8j5Oxo+hjy4IZspxd1DS/146rpd50kZ/KGXwPXKxbIZirNjJnjXC5BL Zf70GQvTfgsCy+ADFClXQGCvhCTwL2QcRiL7+82rPL6+AwxUrp6foapahcVvzkly HIqOOR5Vyh7XkGeO/0PjH1hZvZsMDhxp5hnFT/lQUuefY7wSelXfRacuYgU0Efq4 KvfBMUQcNUG8QaesI8+g9Tm9Q2HHXBE1iB9te7unVdkpe7IERq4W+yQP9hvXGi2b Pl4tn+gsIzVHEuXCqZpdiN/sNzKc7GgQC0M/ZvdRcsTOhdWmZhgbGr4cgoZR5R8Q 6GL718JEsYR+UERsuAtlLA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drm6yykc1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:43 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCmVe038802; Tue, 28 Apr 2026 11:15:42 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012054.outbound.protection.outlook.com [40.107.209.54]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccner-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:42 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iPHfewxekUKxy3ojGAdA4h3q+u9PIoL5snPApx7CvMzHKjMgiZ8hUSy9BM16MkFs6M9fZ7YLcKt+FbL+J5DGxlJZhhCNdo0pjNXQy7XqE9X5S2YJziUqh9N/SCUdLn8vvs+CsJmnEFaGP56lPFv4gnBxgsruvbPidopiOa2GxbMJxw2i79Jt6BqHIW76237tKjpir7YmGQ/BkLigfJlmIUqZRGNMukytqCtow0qTxwL2jxrzc1meV3kjAcUS0u84xlMXuGmCpYiF2oBBo/03De+ur9fTcsImpOMXmO+/PVAp3L1b9oucxyGgx6zD0Wr3PuPpJc5xD0PxraTzIZLD4Q== 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=PRaonAqOSk2AI2qRAZFAXBctVKv95nr7rlRQ4wTIoj4=; b=JNhcYKJ2IeSODBz8XhBFGlsDNDRigJfYfnEDn4alamzTKv0wNMsvYa1++kwgTGSOX85rLNWUJYG48Ws50EodFeKSTcSh0PBkO0yhoVajLW51V0wZlxDW1gPNXGXdZZcTBtef/eTBG/T1NcTjZ1C8EIlNjiS2pxsllsPumiUaNrWssdOdl2kcLzZpdIDLsE5vjIF39+6wcH1a27kqE+eA7msgQjXNFXCHO4ZRqXZPZnJYtGq5eQcZgiKcBe1ocBLHgrWMGTGF/7aIcb9MOS5qIEsF/f/AdUIlGdX+6cmJ5xhqpXCBLA+E5u1kPthr+i4Wg7xUn//v/8QH08ZmihwdLA== 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=PRaonAqOSk2AI2qRAZFAXBctVKv95nr7rlRQ4wTIoj4=; b=dL2PhSRKzTC4wKR+IqaMdy1d/rdEp4vLMhHzOJz8g++ML/grhA4pWfoq4ZGucO7wOv8x4/8viHLyef9lXlEceJ2SGthrYO8/K8WcoCo9Sz2KsCWayKXEzLPETwx7ugYejdK/kBM3lecapn/qJ4GGTGhcC4hgd/8W/wcWPgqhXjg= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:32 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15: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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 15/18] scsi: sd: add multipath disk attr groups Date: Tue, 28 Apr 2026 11:14:44 +0000 Message-ID: <20260428111447.1779062-16-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH2PR05CA0068.namprd05.prod.outlook.com (2603:10b6:610:38::45) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: 2869a189-d117-4d0b-2a6b-08dea5177606 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|18096099003|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: xyoNN9SwngIXmpKL3SDMSFo8LGg6U2aCCAmNmMERQ5hFmUPP4XmSdh4jvOykutntOqyQlPlvIZLkY2imnmzj+uJm1e2JqzDW2QL2nblB3DxBD88XO3GNIb7mUMhI9NVtXl6cg0sUk2lqgzUTBPY+1AJAfNZPgOoINTJ6m2vQjIaM7faYRQKybMkQMlB9XfsWqzLW9Njwk1SyJhOtMBgObZ/A/ZYEMkMbm3ii5ecFMXw7uHVHAzrRAZuWA2PeVRh24BCOoxs7XDUaJuJuH7gxRByYqsrl7Z74V4zBhSsT2vypfYeWMiKk9Pmom7mOMi9klWx53PlYoigaPiwc4mc5bRf9sAfLPDdqLQnT3rj6ofTDZPC9/49jnIgo7DDzcI4jq6/8ZtwqTgJE5Wo7C9H6wioDny25lKJ7gtA3DaDytDDjTc3AKZYIA4jvGSrdC++MtzZtr7ncBbHmeVvljSb4lMvhQrHOUkPNo4sqw/Bqp4SJ71ZO1uTTG2gHX3rElQozC8bFNmeAbDcKjJbRy0jZANKWeHSuNj/4oiqlQ2/VGolOK5mnD5Ab8HOiXgvtNSnJdvDGXO1aMUqEWyq0GBWcdP8qUp71L9yhD8DOt4IrIBD0m3mXKxfDpMocwcKzeOfbm2wflIuM3X0p+7UxpDe8RIGwGobG7eTtdlTCAY6di8xuYPaLACOq4FUCyhitmtvG5hGfnS0LHscR2F0FdHXBitB4gQwdRX8ru3u0fkQPrIU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(18096099003)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HmyNpRLg+sp/yBS15qcbU3SJvAmHlW7lbJtRjabXy7OAl1EjbvbnaA2dzgUX?= =?us-ascii?Q?g8hij6z1CLBanjaJ2RhLeuj8NwKCYWifGwu1GYPAF4qHp6Mhar/RuMAvQrvo?= =?us-ascii?Q?J+sqwQoxB45H7cMfHvkpJVWamrPCmZBR9TsSAymLVLUY+D1XdlSauRhVdvmF?= =?us-ascii?Q?DpkwMkPsVKuUOTZ4IHhIXVTI7sTFV8oz1FB31GkSU0zm8c51VHggy35mzuJ6?= =?us-ascii?Q?vPKyNxQGMsDCYpkkEvakYpl4hzNifkRtBB0EqqG9lm4Eo3h6lEa5EHtVgRnK?= =?us-ascii?Q?CvJAOrBKXn1cOEitPngWHqo3WGd4x8lZFhvL9qB5Gjip6+GME8kGxGXXX/Bm?= =?us-ascii?Q?3t4+dlP43+vvLIqRIbjJahHItRQABuyTjD2bW3qpIYQ1yjZLZO6V0tCh29mp?= =?us-ascii?Q?IFSFrQqva5o79/GeD31/5IxqQ0AE6woT8v9LAaGioygIR+VnJx67q6BZy2vo?= =?us-ascii?Q?qywXuliIU14VIYwXAasCeobm5zWDJ+kQPCqoi9G3pVSXWUPZdpG22qsm2quK?= =?us-ascii?Q?bHfXc8dZ6zvpfypl4OI8eFxefkeXsp7FSJx+bx1l3RmfpLcXHBkq6du59bT6?= =?us-ascii?Q?k7zO313CgojC9dTQyiM3gCHPmVFZraEzuM1sEvw33RSRV8OZKfeUHrMsFQpy?= =?us-ascii?Q?BOWWIh27xxXRAcS2uPiBV39BhdZXAdNQNYQS9jeKYOWNJyQ6X5fEkA7Bb8gH?= =?us-ascii?Q?JYq8wJjwsCbqq2J+CzJkYZ94/IMQ7DjHZIyuEYaFIrIeyO0UvmssAeH4HfEd?= =?us-ascii?Q?MYVq+ul1EyK0GK3Iaw7jVjGFaDQQZgkZwD7EyrogYLYJrbrj83D52Dr1pWrE?= =?us-ascii?Q?3Ib5Nsm99WzPOk+2vtKgoYMUFnbZTEklqCC9b86e8j+EEpveLBG0C4mubnXq?= =?us-ascii?Q?9THVdQYjfL9/sxs6owIhdm0POyurNxci38ysiwwt6qmKeCvzlFoWeo6DZiRk?= =?us-ascii?Q?z/5+gVmZ0NWggNfSbkDWW0JZCNYd+nJT6BT6JwtrSbky+mRm4E60lyaQnUZ6?= =?us-ascii?Q?tP142NQEo7FF+e2VBX5BHQSZ57o3RMg3Iy5FgYGm6kkmvGRD6JFtoiDctTMA?= =?us-ascii?Q?Gg+J2Yy5wlqWqHEhWo4DZh1Nz+3KnujOcFhVRGxWvqi5s5Ll2br1WaqgQL/r?= =?us-ascii?Q?hULFD8pkfnbQwhRUzvmcLHOEWhdtgIMh11VgWPVoSuS3AWkjRxyqyWjeXZqk?= =?us-ascii?Q?0ZI0EIrhGX1fRG21Phi1+EKrkSbn5hPl8W+2lmjZt1YK6c2f4XVMe0M/ABAX?= =?us-ascii?Q?hd7WBwGIprWSLQsPx2uAyEcIOhx0FknkNERyfL44RFOedf0ho+e2KKd3t6ro?= =?us-ascii?Q?bjM9h+OoRvZ/ks9AsvJPdLHw/2vZi70kCueS6kVY56ZKZ3GrSFznprMISPKn?= =?us-ascii?Q?7oUEmIh9Kx4JT4NXfgDc/c5W6bpp6S5H0ylCT9peeB05wasqh+snovWdrTTu?= =?us-ascii?Q?9ek+CpZ2tiw5Ffkx/ud9IBrCPo25WjOdHXdwzFLLSIwIDSPTi1EQS6ryw/lu?= =?us-ascii?Q?vP3iapzcl88MujmNYixY3ULPmvxx7CF/SY3EaUluQLQlIkvmir+338bpNnpy?= =?us-ascii?Q?NF9YuvBBDdGfNYhQo6Bl3Ky71uCNT/7v+ix6uGTQTH9Wl/Y+jwSJwQ61H9CW?= =?us-ascii?Q?xgsZsBHVwgOx/iyaBg08N6MDYI9TocmFFSDoyXiX4iMcm35AZOBp+zvWwSBr?= =?us-ascii?Q?21nQ/8O2lNBsiY5afpEixLha7BOUjYi9dgv4mDB3e4bOwu0ZEYcc7qAws+j4?= =?us-ascii?Q?a0LY56rgvdiFX5kfOnFT8tZPNOx1JDM=3D?= X-Exchange-RoutingPolicyChecked: r5z3xuM8+VEItOf8yhMdbrinvWglDh3vp+DgiNfpQDz9kqablsJgM3+jr7ZStlnc6ffx2ut4cvz7K3UQw5virJRcsFjFCVvT0cMp5sNGuZI7MuzQ9tEU2C84LoIBUN6KZtlyPwKpzU9iBFaQNhy4iy3PGvcXHS0yuPhlTa+W8hlnIP0a5MozpI0IGpg0IvrllyTaroMm9i1noaeym3uP8/rE4Y/DulWxPaMNXgbC5tsdadqhFHkwneZqyacHnkXz/SV0LU0/0+rTN0t7L1CCordNevHX44Z52iFUvE381k+MXA+yyL5MeQkPNUMDjgIBNFl6+4FyEhcxXpCyTC9wCA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: j/uTNqQr67TlEJTCNxf9fHavSLi6ru1sjzuQ6fpGHx1Sxbmp5Q+PpTNTwqPPooIZt21gDuJd9m+TqibKIjNV9vjZtcNKs+5A5HYkvomjA+kC2SJSHfog+M2BuenF8/qT9eEL0SubVoNmoDmqv0vkdE+cYSWWnqF08wumx0it38Nzn1fvTrlFMILOnjXn6JAggx97XIqLOXUZimB87VnbTeeBjFqeb2f0DHonAUEJ8Ac8KhH0QWxf7Z1MmUMZ+5fCe/DtBFnIWrrsbqiY13znJMy9uUCmBoABQ989Jeyj7AShXtEHVi168+dsT/UYLnPtofcAwf6IWqWuQ34FKr2CUBclg7VdDlCVFA5Wfmz+GosM7cRvRKRZfGtvCzT9Q9X9PL9HwTYaXJl4x01kOWwETCdK5ZNEVjfJiM2CMOHcdCQj8TiPc8FI7yTgBkmf2erNYwJr4Qx6X/S9u828x8vyouY8z4UKT8jLRiZ3WC/1G7oWdNqiryNHoYJAmsMqTq21fqD6yajCHLpXFUuc2fkiJ2ETYP7EDNLQ2I4fFiXajX8lPaDbRYLgPMfpyd7zbFL6GpHRH8Nqdtp5IJjIwql2eCkyAMRzmQ/HY8IYPDshZDs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2869a189-d117-4d0b-2a6b-08dea5177606 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:31.8609 (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: zTJiMOdc9dYRJPFCMPAY0BbMnIs/QR40Or06t/GZKzDbmD0CwEW2zS0yCHkr83p85qjUpwcdE/i0ybOUapqiqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: 1sX7mVIFNesvP1xJn-p11DJWLttQrj_H X-Proofpoint-ORIG-GUID: 1sX7mVIFNesvP1xJn-p11DJWLttQrj_H X-Authority-Analysis: v=2.4 cv=BePoFLt2 c=1 sm=1 tr=0 ts=69f096df 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=RD47p0oAkeU5bO7t-o6f:22 a=yPCof4ZbAAAA:8 a=4WwWyauO2_0H2zdGQVkA:9 cc=ntf awl=host:13844 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMyBTYWx0ZWRfX/xkIT+6MAJfs DTANS8zSSmve1RRsKZ5lbNndSLd/r4DRrukPlpLg7WwZT/271lzCObh9oxg0YfVFVYropJu/GfD d4y1qUsRj6ByccyLGyJ6QQ0lEqAPd03NLjwpT1DvfDvkvZr0LA8+yXS+rImvYVfNQMmuxKQa1on l+ByDXfLRyV/FrDbk/3RopmaVGKq5ev4usuWjn4kdsOeapWzYfiuHAGWdiJMRD4mxGMDmjEQXTP hhFMIuFqR78FYqYdqi5uIHEqdGOPkD77c+7H4HTfoKF8cONv+WyZmtu8UFwxYCcZjpccseF9nc0 GcDHe66s9kuzfKRndd/r0wJe9SeiS92gGiA7OhwK6xRDXAmntBw7gXQeWctzju2YXM2MrEdHHo7 9GUyLY4pUf3RR78OY449vvO/kAnUFcHqMJLzsQdhyO5HhOnJN/QkcSMOe8LK2D3h+If9H/oXVom 2zHoZaiwgFXODgjNSAbdC/5nnVLHPBqROBhYERIU= Content-Type: text/plain; charset="utf-8" Set multipath disk attr groups, which includes delayed disk removal and everything from mpath_attr_group. Signed-off-by: John Garry --- drivers/scsi/sd.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index ca20f9430b4ac..b1cf35194895e 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4064,6 +4064,41 @@ static void sd_mpath_add_disk(struct scsi_disk *sdkp) mpath_device_set_live(mpath_device); } =20 +static ssize_t sd_mpath_device_delayed_removal_store(struct device *dev, + struct device_attribute *attr, const char *buf, size_t count) +{ + struct mpath_head *mpath_head =3D mpath_bd_device_to_head(dev); + + return mpath_delayed_removal_secs_store(mpath_head, buf, count); +} + +static ssize_t sd_mpath_device_delayed_removal_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct mpath_head *mpath_head =3D mpath_bd_device_to_head(dev); + + return mpath_delayed_removal_secs_show(mpath_head, buf); +} + +static DEVICE_ATTR(delayed_removal_secs, S_IRUGO | S_IWUSR, + sd_mpath_device_delayed_removal_show, + sd_mpath_device_delayed_removal_store); + +static struct attribute *sd_mpath_disk_attrs[] =3D { + &dev_attr_delayed_removal_secs.attr, + NULL +}; + +static const struct attribute_group sd_mpath_disk_attr_group =3D { + .attrs =3D sd_mpath_disk_attrs, +}; + +const struct attribute_group *sd_mpath_disk_attr_groups[] =3D { + &sd_mpath_disk_attr_group, + &mpath_attr_group, + NULL +}; + static int sd_mpath_probe(struct scsi_disk *sdkp) { struct scsi_device *sdp =3D sdkp->device; @@ -4149,6 +4184,7 @@ static int sd_mpath_probe(struct scsi_disk *sdkp) /* undone in sd_mpath_disk_release() */ scsi_mpath_get_head(scsi_mpath_head); scsi_mpath_head->mpath_head->drv_module =3D THIS_MODULE; + scsi_mpath_head->mpath_head->disk_groups =3D sd_mpath_disk_attr_groups; =20 error =3D device_add(&sd_mpath_disk->dev); if (error) { --=20 2.43.5 From nobody Thu Jun 11 06:59:43 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 CD3B638A701; Tue, 28 Apr 2026 11:17:05 +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=1777375027; cv=fail; b=s8TCPvxO0tnmov+TO0t9IdlDb/gQ0SgvMhnMHyWTBUDb7TvhNvvY5utRkSKjRuJ5GnRJOgYtHnmsc+g7SVqWgtXgJ3teMai2+RaD01d0PQYe2hdUwedN4rfBctWyME72P9dNblOd/6usfdHLLxxSrUxm96izYx2D/871tsrXqTE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777375027; c=relaxed/simple; bh=MN/z6L5TM2LiIND2e1rGVGLJrlUGf/NWfw+di4pva3E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FJegi90yvmYLuBjQsliXkXxzglSMgB+f0XInZcKn/NWwtQzvQgaY/vSYB6XiDHCRoYv2juqh8K/KjpzE0x4QjqdQaRNt12ZAFD2ET4Rx6PwjLgXz82wzmQpnacbTCb+/vFZyUnSk3vzHULKRfhl63HDQksp9yhCAglx4yx2FY74= 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=XjxOt1uo; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=xca83fJ1; 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="XjxOt1uo"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="xca83fJ1" 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 63SAGp9G3055332; Tue, 28 Apr 2026 11:15:43 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=9uGcMUq4sj7OA6ceb8y8GwESsG3XPNBbaheMeGXvsrE=; b= XjxOt1uo6hYB8F8LfnWVDV/XLr6Twf+xSlImZHGpURfxU0zdF4f0juMeRH7p+P2s zaHCsUqNFRUsq1XAePd3nkWn7BmjJTj22ToiBqTNVscf069+4PW5bORnKS2nTA1H SenT8y65Ecd2U3AS3jhbheAxpuifO7EmwM4Wzztc/fcJl/IO+CYvOlLkavtk9b9R tvdZO55WZbiP6NXtdnAyFm564Q2pXoUTAdaefMzP/4MHzivx/IxLDs1lVv84Wqc9 0aCdfhEIFs6JOIG1O9tKG0/j8fox0v4QTFeZHnhiIbq4s718SPh8igvKm2Mu9u4T JRzZNQKJhsFaqjBlOlIO3A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drmd5ycgu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:43 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCmVf038802; Tue, 28 Apr 2026 11:15:42 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012054.outbound.protection.outlook.com [40.107.209.54]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccner-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:42 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uBj5UqiFrRgiYvXo/i+zXDWm7zqzOSLxTvcqYTqDg24Pgu3187y0NR8A2KT8XGOojzHFsNRvEHLggEAW5VQkiKnn5PYkyiZJdy3DNsmO0r+88ZpCQHWeQ+HOhNfz8vbZw0F8d30Sg0q0KlPcypqeijnA5MZKulJKf/sswK0/ZzMjXSs2D4BjfE55QAJktIg+gJN08RQeJgNRMlIhfVXuJtP9m33MybJhlgN8/01TxC6Jr1qfgC42G86Ez/GFwv71YSK4WNnhE3m1ezTfaIiZgNJ0MaG+gRnoIcXMMZqB1eTJCHPPMwYhRJwLb1Rt+6Pdqh3WNS7jfdj7HPNk0NEZTw== 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=9uGcMUq4sj7OA6ceb8y8GwESsG3XPNBbaheMeGXvsrE=; b=qy6ZVfsWgmdXt+Pj0zak0Vr+pxca/TMKHy1IEJzQlCqlDur08vw/SHMDjTgGcehPmX5chS9m1yajCMc8UywJnP7nXFEhXC6fh3WxfXLESrv0bW4xHFOBfXSpqNogWR7ft2Fh6yRDjfzqhB8+mSoXmYFYZVlXFlmrxDKaPPmx/X9F49Z/zWY17WXH2dWwZrLNxtXiC4+1cC/vw8sp7HiKctrATp8CW6U/ViVUKx1AT4VOvsFlxja5GJqbTjoDrXytduRou5HYX65NA/eudbRgtn2CvBuy23tnJW/rOkJOS32W20a+TgLH7Ad2UZc7c4UOTKPduPXFko4fdHAPmr8QZA== 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=9uGcMUq4sj7OA6ceb8y8GwESsG3XPNBbaheMeGXvsrE=; b=xca83fJ1fyF+mCoAuXMGdUYy3EFYxYx7fBJNIZo7ip3hB5LMPAJL2TZmTM3o4aMNu1Akb22KSNA3w7syT31igizvhzqk1g4BLME9bL973mJdJgvdZNMGArwq6IcfLccYdl+0UyYgRcxpESp1Z4CasUmRV0Sqn5xnIWlJ1/7EJhs= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:34 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:34 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 16/18] scsi: sd: add mpath_dev file Date: Tue, 28 Apr 2026 11:14:45 +0000 Message-ID: <20260428111447.1779062-17-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH2PR03CA0020.namprd03.prod.outlook.com (2603:10b6:610:59::30) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: b33b0245-70ec-453b-ef22-08dea5177745 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 31NoCOgv6yRIIaluNQjaf2fA6SgxV4fEC/6N9uHhS04T7GP3+z3cFzBsX9ZSEgX1HkrTLU/X6rzq6L4XmF1VUKVZJUS57TuK1IgYBgTmkxLJALpRmqvtz4RPUw7SDAFBgMorayyfzMIXT/vxpVZmhq6jz787MmUnseKwCEgcNmgjDalHdxT93fNiYiyMiSy5MgmD9k915AA8Dw6B3bIlL+68O3xtKSlmwt0jTgO047IDNxobYLuAPEtMMZakw5HcF6jFaWWAj3XeD05w2AWACjBimn70QsnYiM4UXhuYddBHqya+It7AMNh4g1GrqvgO+CFyhb4Q2h5GspWegVg8rxA0CkXJxONno7ZQPDQT8rU616PyLrV+ebVmtPtxUgPnq6UkFXYdw1nXHp/p0UFYuLsloxihX8d7ObVLAkYKCcmazom0U5ti/MONN51ZcHbi6/P+SkkCUkrzU8Idi/SHcoTeTvT1Sy8qOksoUgI9jT/9IWVjmqrknj273P3MAeM7sJo6vLUK4GI4A3kw4BSoy4TurkGIBrfxPg8La/WDiHeGSQLY2mmg3ZndUBEZPY2nFyieYliT6iDFMLDpkk/+wD/JuM7dz/BJT1u+E+AAYiB2Gu+oFnT84xOlUV86sE12i1HGRY/f1IND3XYrm0OJ8+6sdHlHk6koE11yiEjR0S5lQPC2hf05RWn16ecWypEHvVBOwNYofFDxcQbvILfbtm3jRoEkK//PwOe9DLi4WnE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/aCZqf77PseNMT3zKEM1W8UHie17ZipkEPY4wITNdyWUhuIySXfT8TKxq++C?= =?us-ascii?Q?48oyuWMOBUT5xnolqYtJfXZ9XsFea0ijF3Atb2llVYTHWnZoT05EUhDcIUg4?= =?us-ascii?Q?mzeLmdtlz9vZPocXtC1T2v6k1oTYDYBCgtxSWntuVqwbrPnaz3QbhKuBldJ/?= =?us-ascii?Q?nKTYyyRE4WQk5mW1kfR//MvlWmHcTLLWVqnA6kc+FRSSBFcuwjAUMi4mFmUa?= =?us-ascii?Q?gntPcKa1NGMpqUR3/Ix3A3DWFYCGiLYtNBiRM83fhuof6u3vR/RBT6QZ17bl?= =?us-ascii?Q?ty2N7l4pnH3B6ndA6ESP/B9/POIS0ErilMqYpU36b65J0Sr1Z07HnOJ1OF9C?= =?us-ascii?Q?erDXLkDuq7kcULPiUYcAFt2ASEmlWz8dmQjU4KWOtKSXCF9vYLv9e41TfyLS?= =?us-ascii?Q?vB8Sbgq4fJKSValcD/DA2ZrotOEVF8C124JACXkb6rZVtH/HPlDH8B1duQMQ?= =?us-ascii?Q?6YsuK4KqZArFD2eKT2V8BnLUN8nhI61HT7L78e9ahUYqP5/5VQl4hjZLNOXy?= =?us-ascii?Q?cT5XPIpXoxfJmyIZ0bFwt+Ayw+t9alhU311OI2iZxzO8mVtnbl3ZtixI7EWG?= =?us-ascii?Q?2IdrO15IXBTgJKF5+UvwBSBKrEmi57U3MAdjkkDYWh0THBPuaaFqw3eUgW/7?= =?us-ascii?Q?V7F5oWBdmfyd01FviqFSETWURQlxWVwwKY1kusvgYwAgRQIcPPLTKxa02o2o?= =?us-ascii?Q?PKHwW3GQUPr2ZsOW5Gd0g7yTi/H5Rn8rI7j58gd44mR5fsjwwNfq6zs62POK?= =?us-ascii?Q?Ol3D1DvQQtREnbnhKqbWPsLtSRovujZ5aGjfefmAdPOp6zd5HyjrEmQeyVTx?= =?us-ascii?Q?ERth1CNPiORs6PwcaxkgmDb2pkgpdgWXh0NujTo/C77JMhvbgkUbzNDaD0Hp?= =?us-ascii?Q?njK/b3W9dws/iS7smGtKvjbzUN1RZ8scnPeAtnMNxB7wGczgAC+KlaOEqMtl?= =?us-ascii?Q?+vfhvX31LVO3bq4luJI67Um/3ZWqnYRedzyQkyyTy6p1WVEOFlN0DF226X2j?= =?us-ascii?Q?FhC12A0SOwtQtc5SghY1NLetAotJM3is1DFKPQaqbw1mKvPAyG1z/805JonL?= =?us-ascii?Q?JVKdrFFXY2Q78iBHiTTusW3brvrgpbBr+gK+PIAROss6wDUWMojBT5B9x+9K?= =?us-ascii?Q?kpw8hn3dkUHUdHNVfM5nlMhCkg97l2d/zcfzle96rqI1zPwH1R4Hl9F7pSML?= =?us-ascii?Q?h4NKVM+hAiJu/jnY8uzIGqDSbruJh4DFxxce4iwxmw445lKwwkFmjXpHeLJi?= =?us-ascii?Q?o8jf9VTCHzvFOfjxJYq/eD9VoHFZblyXVN0s2sS8tA9Sf7Q2VfVZnKD3FaMp?= =?us-ascii?Q?a1Lv8UXPYTQB2z5vYtT/qEA463wm/SdDrmGC3gcLfbKCucUi6UvDftNZwzYM?= =?us-ascii?Q?XDvTRrxxX7P24l1Jv8NUV2nmpNVxLBOBdMKuixOTTqZq77QoCpx0QOEA3Qmm?= =?us-ascii?Q?JcldRg7LEHUcEudMS9I56BksXitts++m1+Nh/oPb2Gd6V9FuoDS+1z7UXT0Q?= =?us-ascii?Q?QTFXkBDJ4xEI51Z8zOwJkrsUzjAKCeyU2F2bnYe7VVLYbBDy3mO448tMFwVC?= =?us-ascii?Q?/K9SSWxaQ8cYq2LVvbWzys+1r4Q/fGfAsvULcUvfqKjc68KShWS9Cl7Pk107?= =?us-ascii?Q?BmE6qQD85TnwBdHsG+5tCmNC+KUVlwwKcXulIQwS8mobIHyGUqy3lmW2kZdR?= =?us-ascii?Q?Qywd+9iahP4zL2cPDH0oTmDlrCQCIBhwB4yWpj/3DpDDHFKxjseLz0XMxSFH?= =?us-ascii?Q?uD3xjP3uGJKcUgBadr60p0tCW1Mceus=3D?= X-Exchange-RoutingPolicyChecked: EBW+Yi0RmHrQBtakej9p1A3/mXfClybF1Xc2WVstPk9xzpXD5xROdBLLcrXy1O1mVM28Lzi49oLoDUrySPdepBbxDdVvYpchqsAJXEv39rcIV5Uc2+WpT1JQ0X/KCSRnXPBuZ04LTwpFrSk1A0ELYy6vA+uVPuMou0mCqBH1rumksEOaCXARht90w5qZFhQ3PjZ96zImoD5lYzLhuTnrFVhCiQ/YY8Ggh7tdYB3DVSGs9rr0Ow7hnwcUqAED/iqTqnXC6PIoKNJbrETcr6BoVJicarz3XKG2XvLxDp/biXBr5MWJGRDKTMiqiDLMVH0YCac9wknzh8fmoM/zGg1Bbw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: XNm/Rh3q/6IFQ+k4RyTalO2yI/5nBIXgIcVTCipmvfWu9c9Rswo6tEasQfJ1/87XvaNdJ/e4D20jo2dPywnKuu5Wacs2f5fB8c7tHkn4uxxYsIHpSGG7gp0L6PnD53bOJ9AeUaiXujjvs4Ygtro4A91dPHcAC3ap0uTf7ib2jwEzNffdunmUPQ5SXdMxd/KJ9D09LQrYXv7TDJs2Rc3SvAUQhImpsr1MpfVQdheNYsQVE39AkVh2C3Mk8hikVHGttxwER6od/cic1eYBww+Pq9BWQdmZusALSLhshnuBoLOO/PVFOcORwLksKFrfF+iIoh3w5cma24BrY4Js+OwAbGmTOINP2zmLjGEblDxSje90PPCO3g1pR650rd18ILebaw8JhaLMlPLyA5ldD7bbJ6FjGZUtokPTeum0DXNG+nCcjkCcG5puWo7dh7WgG8i3XEE7+PHvuJzEjc2lB6QBTf9P2iT3Qa02RnfJwKwl4iOPukbladg1ckWRwAQg6DGUTHwRyLsR4qbMacsKbMAsasw1UfaLXW3xcebt69iUTNduNXDwz9cQDBvctCDpgYRa7R8zPh86s9D2kp7b+nZELuw/vtZiVcUifC1iTcypT9E= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b33b0245-70ec-453b-ef22-08dea5177745 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:33.9300 (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: 17eOnSU0jd2r2NL0ss301prY5MYDNKPGVMZDwV8x5q/TDEUCdhVNxbRVHkHkgSKAQlDG2sZl4hk99aPTWBXI1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Authority-Analysis: v=2.4 cv=V/VNF+ni c=1 sm=1 tr=0 ts=69f096df 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=o5oIOnhZENCTenyL_yNV:22 a=yPCof4ZbAAAA:8 a=A6hY3BpGxKl4tX3xGd0A:9 cc=ntf awl=host:13844 X-Proofpoint-GUID: Ql5RpRKJnZu1YHEQSdWB_-t0RU_vjySy X-Proofpoint-ORIG-GUID: Ql5RpRKJnZu1YHEQSdWB_-t0RU_vjySy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMyBTYWx0ZWRfX5526j14myyrB aN7NmCnTFvFOgNgRSQso/Xcv/fcUhGDPrDVTW3WkLbaAWnO0UAM0tBJq9X2rRPn/fGyQ1Kzz1Xt nFusjpM1XfZPjLCqPubUDd1WBS+sWGB4JlAJCA0ORx/VPUXZLFS5xlWc2xUaAwVzjuqwC/U9v59 cGhZJsgcjK3ZM4rm5wey+bG/68nFQchbmQhZ/u+9zD7LH+8ZtMUsZ5aZXDNR37hgvV/LlqFu73O IzSAhr5DLI3u+lLdY3YlnZQB6+Z9YHgMJcURJIkg5gSOS+/NrjKn+BftN/DSb4MnQ+6JMWQ+fUj l8d27TvBnF9VnYluLQK7dccU9ar6KCSOxHDkXOmFW1NYGPr71CTWePfhGkHEPphF1I+/uGSRTYq RntcHu7yrUNSo6XkRutkXlPAojGJawUcSfJQJ/DSQy4U9x9Ymk3x0WcBfO9b25lEWz7EJxLU7ef UgmxlBT0lCRcvkScaBVbpGLxc1MnoLcQF5BjV4WY= Content-Type: text/plain; charset="utf-8" Since per-path gendisk is hidden, we have no /dev/ file. 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/scsi_mpath_disk0/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 | 50 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index b1cf35194895e..380da0b0298bb 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4017,6 +4017,52 @@ 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 scsi_mpath_head *scsi_mpath_head =3D sd_mpath_disk->scsi_mpath_hea= d; + struct mpath_head *mpath_head =3D scsi_mpath_head->mpath_head; + struct gendisk *disk =3D mpath_head->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)) @@ -4334,6 +4380,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 @@ -4475,7 +4523,7 @@ static int sd_probe(struct scsi_device *sdp) 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 Thu Jun 11 06:59:43 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 3F4AD3F1674; Tue, 28 Apr 2026 11:17:27 +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=1777375048; cv=fail; b=bvioqdrytZUbJ8sAGyUJFthU1OBRUR87loD+Gzq+UDzKDXQ6GZbFXCqgBoSlYs7aQB6x8OlZRiY55BAEY641XNzF35uIDZb6oCSXXywIB455d9m2DaqQ5pws5A3Bngol17wYCCtT+zrISWojopcnIpCF5nAb2SikEU1IqIVa5vo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777375048; c=relaxed/simple; bh=vVcMtm6HJHZF1GQVOX5Cz+I7OnZPGeLLjMvptW05njg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=O2U+Wy1hRcS2xejCwuM99hclxP0ognjIUD+/cvocktWv0K+pLAfWdPWJtr3Rc9uDKBw3soNM5+F8N4WMO1n56tvJTMU5GhFS3UPa4KX34t4+q2JWg7xmImQRF9xJJzQnHjD1Ij4kzj1cB0+T0P/PJXAghyZlsm5QGe7tEXw25sg= 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=N8FAV+1n; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=jyPMwQ99; 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="N8FAV+1n"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="jyPMwQ99" 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 63SAOwfO721101; Tue, 28 Apr 2026 11:15:44 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=9MxCm7fGYcLQYUFmb9S/v+wr9WovBFRfIy8S0mHtH98=; b= N8FAV+1nyEzre1vJbjsISTu+myyHsSHBSdl5QzHrSe0Gd2/8/YnnmfxC0cc+ax+i IDG2G+B5gr/5PoKGgLm4TcBfWFNiZjnp259qWi8AueO0II4R4HyWxH+Ns1yjhNa8 fflo6bnF47TCdJnslVIARYq4mtsL3H0s7DcswOlbbRzcfkraXwekKuGFTL0KCcQH 6X7qUpOgTp5imbwuRSrIXwhuWxo5bjwJQBJEHiFbJ6bCmUwLjpY77Pd8kI1AfpAf piL6cRbj4+Z9glT45Fq/hSXeJd7+p6Xgxy7iQ6s/q+1iatKt85XoQ4vnCvM8fXg6 35/6MJlNhHkuLEZkE2xGNw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drp5syfqg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:44 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCmVg038802; Tue, 28 Apr 2026 11:15:43 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012054.outbound.protection.outlook.com [40.107.209.54]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccner-6 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:43 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QRcs6npnrAwpUq+Fp28GbieTFymBpE3L8vKTj2F2cmttNRkjXCd5Kh3bLIjEsEWkiMdqW36DxIK7PkEzuqvLdZhMvjrYUK7FBqdaA3eNv2O/vD0AkEjvoTKXANM5jXeolTByA2fErnQCRGVYhmNY32IdzdeizgFGaOTbHogR+Ik03XlD42WzNG7qxlYAhrnfV1XmrdIvUG2GiToEawZJzaQyy+hU24FS+9SnhEkajlukWWeANBgE9T4iojHmpoZCXEq/47gkX4zbsreIxl/sTrPL5H/0Mo6c6qVkEKBR6mZYzJJVMckvmqSVVS6K6Ilvh+QzYGq+Fry5GXU5BZ9Pyg== 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=9MxCm7fGYcLQYUFmb9S/v+wr9WovBFRfIy8S0mHtH98=; b=KZ8nLqmpkmfgBkTJ/RZsOv5fpnf5MMgwtGQ4Rq3mq/m7yKg5k9otL3mqIULboAJM1RmLaZPMc9hUaYi0Hk+j3IbtLJrQ2Xos8PNX53WXcYoVGvUJa8YH58DwOwS3WX6FYAWkHLuWepmZGM8vGzHIkTsTeZDVMamugp4VKVCfk4iBFgfvmwrTjcXJvBKs1SqTJmroObyvjP1wXRPi6jFSgt0PmwnJ74rKeuhW9Zul+biUkSD6ETOkKHd66D+1WNrYr8foQUDk8aE53XrvuPnXoAYpiuwgkH4xqCj7RHrAyM9NSYa1T3G3ZXO2zEKCXEXz7lw5QVW1UNpda1WoUXzR0Q== 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=9MxCm7fGYcLQYUFmb9S/v+wr9WovBFRfIy8S0mHtH98=; b=jyPMwQ99LRgbv1vrUbC7UQDU2ES7Mr1eosRgpn9qwhb+7HI/SP2RpVMG4J8dMKz9RftMOvIrh8fEvqRDmC5WqV7e23srVTvOUZI0m8CsAAVwxdYQfIKkj6PqnVRjQLM7oaQNaYHr+Bs6XxiYtSLQ29GrSf0r/MBXVuiimeICRHU= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:35 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:35 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 17/18] scsi: sd: add mpath_numa_nodes dev attribute Date: Tue, 28 Apr 2026 11:14:46 +0000 Message-ID: <20260428111447.1779062-18-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH5P223CA0021.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:1f3::22) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: 54cc4c49-47a1-4938-24ad-08dea517786e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: Xp8jjQ/I/KlQ5LRpMszT41jQIZq/wqkvsmOc+mz4traRhhV2SkeqdKoG9PuG1q3AaQk6rPZxzN58xParSJdGwQomVPl8vhHCh+y7RffQ3LdvrmEfZ8VcvgVZCy9e3yaeNQvXOnvWEova0GeLkLbvqLpJgBNs1nrBk8eGsOPQW52Z8mxuvUX1rB4dX3VYBma5yr4TYhWjxLf+TNsvexl4FUntf3pCZ8HlvIXpYTo3DjpJDkbrP/hXVRSgseiXLN5tdw0Rk0UWSVv5/otUo6IMK2iMGZfbv9GJW0Aa0IAoNGFhu47MVFetOe62TTLB2BlftYM3gQsKtE/I7f1eWRLKNlCykLiC50X5Pi64dVAIhkLjiQs8FFfq2TbFQQwnHQG+Bg8MdklIyrvMRk5muYJQ18EcuXvL8G6OY7p9Eexhv5RaOLnvB1iJlNe2eU7lY5m0iHiG5IhFrFakJV2ojnVm86PNA2T2OLXiEaw9DMOxs7+plXjAf4K1BHAa+Q34+JJclU8XffLS6i0m6zTteI2z+8UtE/tWJKACMLYMF3GsoY0jQKk4FmTUpXBcjzJx/VnrLjSUnFopAQs2JVocSsclQcbQF2VVweS+uxPdY7h10kcl62nQdbNtyvFDKggKI3lwKE/Yr/czq8KRC7arChDBMAgG3NM7Z3ceVBgPdW8pB3ecHSKoYmDC4X/z5edY/FR+CkvGZLLHLT9Nx44wOKvIG6eKyoYPjubDobTVC5j/8xQ= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4EJSuK8YZZb+o6k8NXgiH0hn4s1p1Or5PslUNSq2M3i8iud06y+Vp/Rs5aiW?= =?us-ascii?Q?+3Jr2VS1wftvXykaADsDqr4zwZT+4Iz7Y+vqtRY5c8d7H2fogP0+ZwV00ukB?= =?us-ascii?Q?FXmqHRePPv1HTxU2g7/oScMZK0yHPTB3n0NBPLOdx5IoF2Wzb97AzyFQzICe?= =?us-ascii?Q?herPB2aNL1DEM3+tHBjDEXS4sTV+7XAxUhPqh5L3q5jKmkGwC5eDOQm6P3Sf?= =?us-ascii?Q?/CRfy+Ssw1BVxJEclIhfsV3b9vgFe2g9IjbgRK01yNA5v7GkqnglQJET133y?= =?us-ascii?Q?WQHx/mf0mA2Hysx5U965W7o5ArAwjFaHvUsJWZor7FkXclaSKDhkmMtphQoA?= =?us-ascii?Q?uMSvCeep0FAd1PLwA1qGsJD77eT8ft4xnyYs80KULQUdyRXi6nF+TKZZdiEa?= =?us-ascii?Q?8js/kCeBzsqDB+hGZdoX9BF+u3gSG5miuAOOG9ENvmIckrbPweU4eV4AMPMY?= =?us-ascii?Q?maWY48Ord16QIjrAqoXAe+J7VT5LfCCPIYOJurMqFZaVAv98Rx+vjGhmooNr?= =?us-ascii?Q?YSOFDB/9F46+FRa1QPbWw1amjRN+vOw4gkWtP0pNgSTFv9s2ZRwbpRsHoXV/?= =?us-ascii?Q?KjYQA1fpfSm33SpKnw7mVc+fzJmDOIxiUQTwGBwcA/FWlzbDR753JhSnz91E?= =?us-ascii?Q?gbUKmZnrqdjnKl937Ui6mi3fA1RguUmafos1A1WgOo6nCz3y++Jm+9/76zxP?= =?us-ascii?Q?Jz3Se8mKVvNAwEMfrv6p5di9vpZ85KM9g4o1yGNWS3PqmLgi+hquw3G9O6s6?= =?us-ascii?Q?4f/tdoiXOsdpGp0sbe/xWn2nqXSY84o1wxBwWUs6tBKPvepmQSTpFbnSdv0u?= =?us-ascii?Q?wFaIGCKxpz4Nvqv0G1RyH1+0kaTrE2zIWSVJ1LRKKI+6gTtIAsrCFyobI3U+?= =?us-ascii?Q?MjtA5xydldezma55abHupSMQ3nZ4UA9R4vWuH1fO77NAZjNrvGYTHTnzhNqz?= =?us-ascii?Q?EOOIn8olBTm+fcrOdk84bGWJNcDc378lPYJOEUBRD9khA4iDQ/QgL4qqguqn?= =?us-ascii?Q?Nu4F1glg2qNnJOvMuDRjMOg9ahovG2lzOOlok3f5N9ucsACfiHXITIsLIJvg?= =?us-ascii?Q?D48Z6aalhgQ+w/DFwJCjQywc3ymeQV7RxEkAFQHBjrMbHcF4jLrE0xxqckG/?= =?us-ascii?Q?Q1CL4Tyxo66FKYlV2FwkeYdokoOL1PG7xUhtbDKcZy/wyyl3t0VVU6WAuI1n?= =?us-ascii?Q?kljYOiFNbeuaCuSdzMOo1uaZ5H04JnZNa36/RyxFXm6NaydrXLRXi0zxnlnd?= =?us-ascii?Q?6KF53+nQYcDAtPj+u/zuonk6+xoA79dMHSRDFlEmGUcVI6MM6W7lywBNHlLi?= =?us-ascii?Q?gxtwdJhV6Kud05pphJODRjsDTG27I+2+hM2qHL5nDIv7CEn5Y4ituEv1RfJN?= =?us-ascii?Q?7YO0m9IRqaMxrg6Z2KfufsdJYWyZwsfOfOSQV+b86U7gqZvt9e8wt0n+7S6a?= =?us-ascii?Q?TukVbBUpaB65SBSciX0rNLdWHOBhMy7NH0iL+5Hlfj4NykWS2XfMs0DEOi5a?= =?us-ascii?Q?8meUK62lXKEzo4aLmT+ayLXCqnfwReLAoFNrJTpVRoix/zAx7vgRRQwBMsqz?= =?us-ascii?Q?iGY1nAcgcLpRXimiEK+7Cwyi5qQnmYxf1O/13D7vIvfV6IaeSqjhM4SIrN7I?= =?us-ascii?Q?oF/JSYOwc7tLAWk1j0wVjmwY/VanSe8bgw0ZcbsBDKsenSUq8y/NIwUOcscN?= =?us-ascii?Q?G7v4pTzvnsd6zMyCzVGKbXP+Nl1eUKZXvtC6XNJzsqesFWOgmq5DsnZXzVpr?= =?us-ascii?Q?dTzODzMKasICEsVU9zVdSdMAGAC2jME=3D?= X-Exchange-RoutingPolicyChecked: AnbKq3cy/GZHk/20B0xDN6WR38+H8In8idiKVYqTRktSQBZepATJvdDwywKupZkTmrhs5iAIPBwW7VbX2onPx0HXhCahXoT8d6OLa72N8bpltb9+9IDXi+eAo1AKQ4kkv853ntKFlUty06x1utmxgxUjja828sKrHl04JLHgJLL1VUc9J7u+O7ZXnK3KFSi/BkDFMKvk0KknNRB25OjKi3ViSDj9dkZR6qXPeN5Plk+AXJzeaDBhOx8JipIFlnWlDSwqgtwm6c+oogaWjSnERwLDfx9dca5grV0gUchpvn5Rw5TvZvWCmwi6dRdQP4rzbsTh7VIyx46i/FKIo5pMWA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 56Es0pDEt139wKJ8IV4Tl0OxEGx85mE7GdygcnBBIR0JT5UeC9b3vBvdMOxkh66L8067xGf/l4YvFrfD8TrZClT1qoVsrBNO/SR80y3RO/koWPK7uqA5D9mnNm+VIS9pE593KpCfxANj/SnwiekVX0vrYknYXXgx+PXMaRtW5LO75mIpPToNsGTubS9YIvtDEBgthVskIhuh1pKqf8ZKAtQOexNlPDVpdFy9b0BbkUDbD9ydQKKodqzEtwHO7+KUut8tpDUABlqNn722+XrcLyRXtgUJ9dh3vNQ+fR0Qc+gJdI4b6Txd5T7gNus0sPZV0ox74NN0XVgZQPx/K0QnK0n7ptG9eY/c8wD8AhNZiRMiOuQqi+RIylcUWZQeswsxas39NoPy0W87rHaqhaQJENbr02su30XruUak6+lMLD6BxDlNHSUhGMiOYujncQCfs/q+0OJzXmGskflqkhoC7RcESk6exKwXnkkQoYHNyqdixgM1/bCEiGJgR2pV8+mXe/0OQdqp9cKuiz9xqFstbuFGMaX/k5mlFwHQp0iaAkbbu239cgxZqY4M+RKIGo4+mK5C5o0oijklWj2BUIv9zAD9E6l+EPtPd792Qcxjxjw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54cc4c49-47a1-4938-24ad-08dea517786e X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:35.8654 (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: EgvqacElYk7LL4Ozm8pkKHdtN/S8V42GzvLI64xdn6fZPX6udotPR7su0gTEOK/joNG5VXWBR9/RMvKQ/KnUIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMyBTYWx0ZWRfXy7XKTsdG4sRc eObb1KoxC7DBFCJTKATFRT2AxpHedoIBMg5H7tB+9KFtFOJFDU7GzhCuE/J7qY2qpjxOh2DVMem ox/cnaSyekXLK5LoEPG/t1oNqmtfQGpOu4FT5x5UgkFW7FVjLTsJ4WQN/Rs9sjAaHuKDnElp2Qm Ph0I3vC9wfIzYiS77GZTfm+JINauplbWVSNmWFTPF3BI6cvG4ayo4WNeu+RkXJacoC8U1RzHgg6 xoYlsSYdOSSctzCjwacUr3ohaiFJg1e2gsXlzhGGm7jINQVIZezCoVbOcok+ZeaUBdj4JiQWxYJ E/QJsfj3pzAvO2BpkK+NI5B7MaQ2pI8q5N6K9FCSE1sCl2zOvAKp6HKIcCjqwcHw9x0VvApRAkW oyS5xrZY1tDdojp4V/M65Y/NszOmh7aN5vhRLKFVWQB7voET1D9d3H2S/IxgSEL0CvW2mK1FBfE hFbHz/Fyo3hO5P5+be1XC9cMYfFdEh35UsB8HEpI= X-Proofpoint-ORIG-GUID: pL0JG87r8U8xt3vsbDouhUHOUv-WeV_O X-Proofpoint-GUID: pL0JG87r8U8xt3vsbDouhUHOUv-WeV_O X-Authority-Analysis: v=2.4 cv=E7v9Y6dl c=1 sm=1 tr=0 ts=69f096e0 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=7Gl3-_t3PgB9XO-mQDs3:22 a=yPCof4ZbAAAA:8 a=P2_R26dytZ8aPJic-48A:9 cc=ntf awl=host:13844 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 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 380da0b0298bb..ee604f9f8cd20 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4033,8 +4033,25 @@ 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 scsi_mpath_head *scsi_mpath_head =3D sd_mpath_disk->scsi_mpath_hea= d; + struct mpath_iopolicy *mpath_iopolicy =3D &scsi_mpath_head->iopolicy; + + return mpath_numa_nodes_show(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 Thu Jun 11 06:59:44 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 3C86042315B; Tue, 28 Apr 2026 11:16:07 +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=1777374968; cv=fail; b=nUG6DvmfOKsnZ5ZBIFfYihu4Ptksi7oAsgTUt7mus+8cBsfKaXTkLG+hQ/PdxK26v5NNxpeCG9yqum/MectvYEOrmoocYZG9a1qyeMPWhD8FUpKoyxyL8csDZet5umrRHbWKLeIIobs/GdVDRYsqUo8mZlmtNhmBQmGPYKGuowo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777374968; c=relaxed/simple; bh=tbZtTa2TO/XB7yYfh4NdCjNqEz3L3SKIn8/7qqA0uyo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FiydEi57/1M00JDQdG/4Yl6vwf7F5IdHmWpW7HEHvFMiTyiL+czR8Qh6Yhxegy8sc7TyqGyfxScQ+2ci6MGYZMJ/mr39yxOdexbkGw8N/zAkSk7dy8l5p7f74NhdvqleCoE6QbBOIj44PKFF+wA1Wbr8nYk963oxzuo71Z4MNjY= 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=EX9nxm0o; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=cxYPHeO3; 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="EX9nxm0o"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="cxYPHeO3" 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 63S9xqNT1015456; Tue, 28 Apr 2026 11:15:45 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=u0uygxMwEG1wI8LfYt+BoJHOelffjPC+vQeaFQwhvVQ=; b= EX9nxm0oHZH5qDqP9IK5Xo7dsvySjkP8y8keC+5EnawJUSXXTzdBmTc/HYk7xll7 jedKzk46n+6Dyf2JRg9nPRQGG0JyecDQSn6hYCbo+Wc0xpQUPkoMoTJLFSLUDS2p 8JOEwQNLbtm2woSU/soKv9yQ1yICsZPCELflWYkfVXxdbm0L6/ZurxQypKpfKcpl z97Y3rk3qK5DSj3qq9k3LAdk0C2OmpHbXeuAaUtS09iCBYWGfm6ZGem7G16dkJT+ CLFCkARzoHOewU+80/q1KQNPcMBlEmgyj7JOHfLTYjkG3vKRd7k5zhNSHWDNdT7o uR+z1J1/Pej5augKZgIqww== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4drm6yykc4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:45 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.7/8.18.1.7) with ESMTP id 63SBCmVh038802; Tue, 28 Apr 2026 11:15:44 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012054.outbound.protection.outlook.com [40.107.209.54]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4drm2ccner-7 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Apr 2026 11:15:43 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FVQshZGd9pw/RuRj4dQ53g3GC/KAy8KtXE+iw8EkAYOAqmYUjIfHGJy6zipQ+xUz41e0tONL+w0g8IdNJgSijqYgR3W1e5bTx9nJuimDZvNvQ43Wvk9Ol8JxO3sYxwuqn7c88ycjEkLy+b3v8s5FBt9KlQePn2pYQaBfapHijACoBCLfsEyJPZ8iMnddQmIYe9mXOZn7D9++ORje4HNMD406hJC1obdaysHwi6RUV+zTDecbkBPL810kelRUjlC2M1aaMgKDN/DN2Q5Z6117IB94VHP864xroGbsswGF7qggac3+4TNuUslQoKe20BS85JJ9N0oHbsPp7x9E0kbKzg== 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=u0uygxMwEG1wI8LfYt+BoJHOelffjPC+vQeaFQwhvVQ=; b=lQYIWsQ7GWmWvtYlhJz9QIsD8QL7stVwiiyHVR8xU9+fRWLHJDEB72DMDtCoJc5TX2/eikT7KUTrBsZ1oJCaQu5bwt+DFen5kWzm9ORJAQPEQZuuaXYb/jXzKzAfO35kWWtN0140Lp9aH4S/e6b+PW45R92AIiTU7bqGKMtoueytH2x33hlo1HLff+KJT/QRxZrKxJDs8SMJG10+sSlHjRQVns2QPzrE5G6/wW1KWS68KoTCwVfUaELq2Hxc7fMZoMGHzXygFMhz0W5skVEctGpA9WzpdaoVEN4QQteL/wy1zVvPDO0PP/xuqwbZT8DamVyV4xVWVm7/3K/H+FLhdQ== 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=u0uygxMwEG1wI8LfYt+BoJHOelffjPC+vQeaFQwhvVQ=; b=cxYPHeO3e3peIhTRIQbybNOrqb2cIMOYmBDO4XVJPF6zRsDratPYt7/LUyIpqctCWMEBd7KU/NS4fhWoobALqXgIOxOXWSzj6iAMrf3zEzoLKPaK5N5i1fdjL7eY9yqZIDumiN4cr0MN9POBzVSzyLXBCSZO4i1Bbkf7mooy2S0= Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) by SN4PR10MB5639.namprd10.prod.outlook.com (2603:10b6:806:20a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Tue, 28 Apr 2026 11:15:37 +0000 Received: from PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16]) by PH3PPFEDB06D67A.namprd10.prod.outlook.com ([fe80::234c:e047:21c1:6d16%8]) with mapi id 15.20.9846.025; Tue, 28 Apr 2026 11:15:37 +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, bmarzins@redhat.com, nilay@linux.ibm.com Cc: jmeneghi@redhat.com, linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org, michael.christie@oracle.com, snitzer@kernel.org, dm-devel@lists.linux.dev, linux-kernel@vger.kernel.org, John Garry Subject: [PATCH v2 18/18] scsi: sd: add mpath_queue_depth dev attribute Date: Tue, 28 Apr 2026 11:14:47 +0000 Message-ID: <20260428111447.1779062-19-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260428111447.1779062-1-john.g.garry@oracle.com> References: <20260428111447.1779062-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: DS7PR03CA0217.namprd03.prod.outlook.com (2603:10b6:5:3ba::12) To PH3PPFEDB06D67A.namprd10.prod.outlook.com (2603:10b6:518:1::7d6) 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: PH3PPFEDB06D67A:EE_|SN4PR10MB5639:EE_ X-MS-Office365-Filtering-Correlation-Id: 023dfde0-cde0-40e2-f4a8-08dea5177998 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|56012099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: x5R0y7507uBTmdiuWXbkrd/QtpMujRXsTFmVI2/IC+RCkyWTCxiywGNmpaj5Utm/OjbEsHDLIiJrLvWonzfRjPTGA9fQMnFA+TV+tvs2NZ+YXdgrRhjlTjC3vKfuuzlFC4ih/eyb1ZnyJeHPYCMZ2Z4cyX/USy+H3TERhMEOQypbwPjtgPNLQEXZyMsCip2IWMr3E25WjG1JhiDZ9+VN6KLNpF13kY9iSuNGnOY/hFZDfaHEFRaPo52Lrc/s3paKin+ueRKorUc5qwP0FO8HTFu8+KxjCHPG0+4yA65mg7r1WSYhLs1o4FAcTI8gcFwr6wr3iCF744eTcH2oU7NdEcriplwfu6MPv7ULCAXgO29jux66oi2tlZeMgSmkPUTD0FGkjFE3+ZX9/53UMfA5I14BX/vtgmyJywpZL9jL3LC72Sp7xpRNqSw9fbvMaykwDsPhpC2k5AvI1y0SrrWRMbOdl/Jq0N3kCGSRUYC2huegkAUhQJlsD2ZO7E+qA0xVLUUaeTDgXUJew/JoZxhkLW8Li+rtGs3/mPprP4N9DLa0Ju9+Iuvkt30G3XLKKtxUsdNwlD/G1JFV9A5KnpyiVfr+khF1TbZwNblVT5E25KpBfz16OpEjRwCQI6CK/l6ZkrMDAXCbX7plE58EjZgmPIijSVtGzjzsShyx6XIkIv5n4OhQoOzlC90pTG6NNJrj6tGgjFemMOMwWTPgZf3f10ogA78Ch1e2owU6+L3Ue/c= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPFEDB06D67A.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?a9F5cUdeAvlgQjgX9Rjr5q9n+C0dw1dkOPF9wSyJL4xt/cvMXCGx2GLY5me1?= =?us-ascii?Q?UcZKLpzuumaeoLqn1n5zD2uBeiebC0aGGZCG4acQJSiOb2F5+H/No7aK+P+G?= =?us-ascii?Q?JF2ibVvW5zC+CH1/jAyFEnitdc2dJmh0dwABLpVtz+5233JTF/qBgf5k1i2Z?= =?us-ascii?Q?43FuwqEZQDYXgmDO56S8SFhZQZl/Z9YOodBxTZ1/Y0kzm6lMF44tg2XBgXH/?= =?us-ascii?Q?ZsUa6/xaqKFMXS0LDPlyrk5zcaTnSGvTL9fJ8yvbngBagKOD/At+Icsktr34?= =?us-ascii?Q?dT6udmHZcdijSe9n32aLZOAAMbDDv5zjU+2Su5wmTdUABIfDxBRErhjeauaT?= =?us-ascii?Q?ad/LLO7OPNB9z8m35L61MjXye69+CBi9af7fbQooJ00GcEC8CE7XAc/Oii8W?= =?us-ascii?Q?c8Y9/KNQaZOMsNSRbpK10JBe11oTg6GxYJD6PYBseHh+6hLOSbXNnelTkROF?= =?us-ascii?Q?4Tzm+ZItEFPv7EwO0PNP12AdHuAw+2LqhLZ1xFWkDh+53gpP44+mvTJTy8c5?= =?us-ascii?Q?ODQPjF68aLPkgwJa/ZpjRjyfjnMXXJpB2jxE9EB88TdyPfusGAwslr0PQ9eL?= =?us-ascii?Q?n+3pc1/MC203cIO8zmsUKVPL4QHs7g9OiidGELxk0lFyNa/2mq+8/c5m5Zt1?= =?us-ascii?Q?XgP3f5rd1Cj3aHXNzRcIjyNEkFCNw9mlVPDm+6EHnW+Z5FygzcA99cpbk6Xy?= =?us-ascii?Q?GHYigFfwKibWmBlEQvy8vaJvgJ4VsCH8I61jC16OZSkuUp7zSv+t9V3iB8Cb?= =?us-ascii?Q?yYONGuIdN3sa1GjK7N9iDoKQFxRqe9Vr6JLoMzzfrhaUzVF1ihLwknrPjpWH?= =?us-ascii?Q?9yhC5ewXvooeLAeldWDdQOc98rSK13wEphPRqF8IbAmMpYAh6qvCPdSmxaks?= =?us-ascii?Q?OmLIZI5XvtqsoC5G/P2ITakpfxSms0m2DqdHxHEf4ypsvV3eY+1L88L3cxaZ?= =?us-ascii?Q?Hq9wy5NLU2PjG5DyTtP1pLGKfrzVY7Wu4m0EJnL34B5oEst1+GaXDnO9BIOF?= =?us-ascii?Q?iriB6iJu+z+fJ9mqT668+RSKmTLxQXl/zfwedb+D1OLg57Rjejrfq9M9ry10?= =?us-ascii?Q?k6VQmmKXxHaZTV1jLk2qwc4i6Ao8rdJFWYKQfVVLHKr5NJ5clZZ/jOALp1Vy?= =?us-ascii?Q?tS9Ag9sbnpYOaUBWip/iR1uI7LQMboN1TaBDpajDhb/U81UyKEPdcCUrsCGU?= =?us-ascii?Q?ObLRJar85iUOoCb1FWU7hRiUIhNs/9DaCEwQr21nCXzk8xs9lTZ2ytHtmBLU?= =?us-ascii?Q?YPFblJCai4viCulc6Muge7CjwycYkM79MbXeM2crfKZxi3yErHpa30DkLhrc?= =?us-ascii?Q?daDQF9cSz00JEDiv646usD7wRkrNnV/SWUmNDjzZ73j7CVQDJuQcYhbrQ6DR?= =?us-ascii?Q?mHvDir4Gn0UMemtYQ5/zxiXZr/cd6ZLwLVx3vNDP1CG8raXt4TbLIMcXENPe?= =?us-ascii?Q?7XMkh5+MYuwsRuE+xmXvUqp6O4qbPB5RAFfwIQdkOGlHDIFIXohC3yIZWeqt?= =?us-ascii?Q?Du9Et0MXbxOICwicoevgnTuEl7pEH8XXFRQkqKaThx86EPTze01EaHeURpfh?= =?us-ascii?Q?8M+Oi4ksBgoassoqPGAhXt0nUwqRJn1QF+ufRfH9m6jJKfRZXub5Hd3nqaQK?= =?us-ascii?Q?yyxURabDTEJAT6D9rFqxS5+to89gsr6akghgoK0OSmZEi+A11WR9SIQSLzRu?= =?us-ascii?Q?jbk2qG4x7YFSrWNLjLPT++oekwHwGgdrFF7fVhPECVloVgtE3xYDODc+kK3G?= =?us-ascii?Q?LOUmrTu95KnX/6FX2396BYURzhlB8Y8=3D?= X-Exchange-RoutingPolicyChecked: aal/O8lPe68LJcz//9GoaLQBlPPwUnCyohsu4ZRz3vZQscfIpBrvR9jT4/PP9EVSkbjPlliOLsWMl1B6aiqJO3PxK991tTuGCzZavGJWjO5QAzGvQv7hEr8qEYvYfpXTQgoPlROfvmtiKJBHEgAxVlPMEkcLxdlmLTarnPxIv/APeC3epJ726J8sA41hMGW7LfPsNXn9PyDf3wkM6AG+h6etoki+b2ZezqPFvlreYsXSmnd20sUrUsYNvgsfh/dX5JKF4Dl5PP8G9NHmmKhoW4QG34g1u6XzSsZnlU9vIX7UKLt9gNiPL+C+ZPEC31SZF90pHIvTdEBPQw+yZNXVVA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Esdpwv0ph5tMD2K2/tzyhF6bEXDAi+VAnjoN+kLiEJUgq5+LnXKtyHnvGCxxk2g2YyFQJ/JiBgD/imLw0rhPKc+vmjBGX6E+lzDrbI3s7IPYGONZRxoEcun8UBddJqA5GqZqL9MXPl/6pZT1LyhPtzbmJ1uiegyRCqZNZy2ARk1/7nxlSJAeJITmViFRDyw3VZYk4QKvVWefOuHwrPOzXxElqtpsaQREshHCSibdoA+zyG0dDyOo8lr6VjnQJPYSzqGtLhP3LhiLz0tf/tcyrc4iiY83yfKtQaDvIBidsNKJYt+/Y4xcxQiEYzOI6mnp98p5kThuqwW3xc9nCTz6dUKKdsyBUw5hD7N1jA7ICH+3Ipl7rCPo4njn90Lqbp7qlelyDEaMJVsDRBl0ZB4cthH86bGHba6NPwPdV8N6ur/LHTOguG4EIA+DgfDryXEZryJQ+pmCZ2uUW95XGVZ0FRCuQWJy4KCuLCAtWl1bEuHl4HT8Tr6LOXf8bCelS9hl0Y9rTjc6SfUOSSMcUowEyoU5uM6VOrRF2k1ZAufnSeNNXVGVMS3CpnT60fowkCC1DiNJgoTz7+24lItgQ42T6oDRGUFzFiUtSTLS1/fYIN0= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 023dfde0-cde0-40e2-f4a8-08dea5177998 X-MS-Exchange-CrossTenant-AuthSource: PH3PPFEDB06D67A.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2026 11:15:37.7844 (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: T4CAkNAgqSzAibCLIIw500Ji/NxpD1RQy+Hd5cs3ijW4oX8EP2G+ot1SEOPJZmIFIGUrEcyO+uFl/wNgTOG4HQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR10MB5639 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-28_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2604200000 definitions=main-2604280101 X-Proofpoint-GUID: BBqmisNFYIih43HF5u1-jMUxgvdSOizK X-Proofpoint-ORIG-GUID: BBqmisNFYIih43HF5u1-jMUxgvdSOizK X-Authority-Analysis: v=2.4 cv=BePoFLt2 c=1 sm=1 tr=0 ts=69f096e1 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=A5OVakUREuEA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=RD47p0oAkeU5bO7t-o6f:22 a=yPCof4ZbAAAA:8 a=bA5FzAUjrTEoIiOIIUIA:9 cc=ntf awl=host:13844 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI4MDEwMyBTYWx0ZWRfXwbGRVF1GbtWv MOvyhLFLFpX8NbMz2R9tIU+GxJ+XgWwyj+Pzy7zL2lY/L1QJ+he8h+hDhgkYhJq9c+gAfGIYckz BMMp/qQIRW1ct9esV8VkIzyBnEUjgpal4N7nowc4g3U/LXmINA+vvLSQ3eDtmybhM3IJGvh9Xlo nCE8ARGXrS1aMuCyUOELmQb59kVdU0RBGLolOs3zsrp5fEv3k7C0nUNU+jBfqi0hPifa5FH1Bvy 8UMMMngr+UELiv900jie/7O5f/tkk5nLnoSoISgPw82JOTEC05gSs8n6i4PPEzCZ/WHiX43aGfk X0cYptnmfMcvfjDQ4NYAC9jSz5/EnzAEQmLZuLRx/JBAMJTGRb+WYBmv7PG9B3qRXr8Co3gp7ac xo2PCPQxwYzpHvXbwyVC1GHZ5GRmpmjuGuL+zi8CHr2Zmw41RlfaHs6pSIJGIojDWvfJyZNYnP3 jIaR7HQ2S3WrbeWvrB93TzQ1pqw21lFtFzzawvOY= 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 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index ee604f9f8cd20..f416457b5a08f 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4049,9 +4049,27 @@ 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 sd_mpath_disk *sd_mpath_disk =3D sdkp->sd_mpath_disk; + struct scsi_mpath_head *scsi_mpath_head =3D sd_mpath_disk->scsi_mpath_hea= d; + struct Scsi_Host *shost =3D sdev->host; + + if (!mpath_qd_iopolicy(&scsi_mpath_head->iopolicy)) + return 0; + + return sysfs_emit(buf, "%d\n", atomic_read(&shost->mpath_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