From nobody Mon Apr 6 23:17:58 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 AF9D93BA24C; Tue, 17 Mar 2026 12:07:38 +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=1773749261; cv=fail; b=OhjKjl1XOg8quJUdmR0KxVvbZCQuma9ynXBhc7PuKpoSJMdxbjeFGNTzVCvQT3ByFUM2RZhnkwHIWdeaeebivmBy2TEAifyv41r5FAhBGHGJ8HQSO313ksqXvyftQ8t71jv4LyIfCmdR9xIbfq3pRjYrjr88wRr9j1RQor9H090= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749261; c=relaxed/simple; bh=KcUKFF27bDz96L49JrqfABoSuHMh9y5N8TQbgkXHRck=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=u4AiboIk2TaDqsWHLqS6tvnxOdSiedSod53uw8vdmR8s+HeKL+RHvbV5Ei8KVZ9Tz6QPD99Y/GC+fYXJo1SsZVqqPFAFvng2IOmw4BQMYqdcG4r4P73ebpPejam9rgciRXJhM8Ff45DWUKMo6j9v3w5MjEKxRZgzxGBv7W/DM28= 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=VTGTRCXb; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=OIW/0rc6; 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="VTGTRCXb"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="OIW/0rc6" 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 62GKXaBW494946; Tue, 17 Mar 2026 12:07:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=6WzMBmrntTtNQPsbnW6lLydhiza0uZw/6Io+4kjVIDY=; b= VTGTRCXbvIbsOu4nafg2/9d9iBvefyqBIXoIGKe6svb3QjWfvOpY/12G1gPU+iTR ZfdO01/y8AqC7qOgNT1i71rzOxQg8si4iW39BqhC8MU9G2H+2m3iwceDU7Yx2VWO xToQvj8SxFG74Y8Vy8o8YChIBR9S8JW6P3+skEkYeRVM6K7+bwbU5S2dWKE6g8Hq xv0zhMUzN7RI59MCHuymhX5VcBKN8IhjxJnrAy/uNqQE+RgWNrLgwjA3pnWV7dEV yVO1+RzwylMc0j4wgLh/GcX9BuBkeBJT21Uk8R/pSXJkl9QpsIELUYOY8poG4VsJ ZlanZMltr4MXnxcmmvUKkg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvy9ruwyp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:22 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HC1H6A017868; Tue, 17 Mar 2026 12:07:22 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011035.outbound.protection.outlook.com [52.101.57.35]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4mh20g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ItH7ooONq6cQjjVoLVi2M+DAUOk7WVkMa4G4nCYhihF+0eeWFtIK2XtjdZ+o3z98gxJ/4J5BEbTttEtIJ3rlG6dRUmNFgppVxqush426D4Mo0C0tIlC06lk98u/Wtdmkm3LLqJKQQKXylWWHPrrRQUmNGqIrVLyKiotZW0VxlNmX5tnjYv2l/410P4sEAsfN83EGVlabxdt0kDLhUSiGUim+1hq/1Cy536NzqWZ6YZdhQvosOx4yhwdQX3matOHElkxdd8tjeUvtIhkF5Yf2VVzH3MQh0qrdzoWcbiw+TIVTxm5kfekL9xhB5QRGnQzc5wJe6eYlqeNtKETx7MAp+A== 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=6WzMBmrntTtNQPsbnW6lLydhiza0uZw/6Io+4kjVIDY=; b=ba2xsbhEeSCCvRJvYKhHyrSjRgTHYmF4E015daGhooVbkFvnZEKzhAYVRNZwLxysTLlNpgU1PMm24HQ1ZV+NHo59pA1vGpQOwm2ojb3H26PatqBeBGoBUMNZIRldg3rRkbY1DEvRpCqGEXOSA7A+/dIbkjeukgIhxbOFQxDKPkBw3OMABFoa28aQLo2g46/M0lA+Xya40R8Tpq6itvvFJtcIy9afLe2b7WHt+Nl3BSGA+7+Z4LipjVqYRO9wpSlwnktu+zWdoN+gsgIl5bOHT7bAEnQbeExO39O1LuGr3z8vT+/Ws+cqbfMu/4v2uimeafDFE2CAY9KTQs94Ko7zcQ== 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=6WzMBmrntTtNQPsbnW6lLydhiza0uZw/6Io+4kjVIDY=; b=OIW/0rc6kF9Gt0T4uDkcvQXM88QT3DDlTmbjVXqlEIijDqeHXL8hwikDYzKH4aCbxvCxkwdrvgz0MxDHpsB4CvyQxa3u9B/+iwOOxyr8cWSFxxLeqY/GM1etlsOg15RVoAhGsHfbEZbpn8X6BzUAw0iY3JkAwWhAdqlpgH3CzfU= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:17 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:17 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 01/13] scsi: scsi_dh_alua: Delete alua_port_group Date: Tue, 17 Mar 2026 12:06:51 +0000 Message-ID: <20260317120703.3702387-2-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P222CA0006.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:33a::26) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 789d00e1-ef2c-4d46-483a-08de841dbbb4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: TpcGQ2TLUW4GvFTsBCbOkvBFzHBjL3gbsgVkGABfRM1Wb+aHmlJq/vcoVIGoRoWwBW6Wly5rQkoy9ImldvfDbNGcVfxj43zBq+3zSSCe6ooMiImwzyU0wD6Eezl+bQCVcR7UMxJcUFBJXFw0tlCSCD2zLZHkRqSgwBSJ2L9skDkpIsYBWSv7qp+RzmV4k7uPhE8DGj1w6/gf6mpa1ODZhGlpQWuuKQdwLfSkXKW2j4qrBoHXMhc2rsV3qIFej/czO3EEhPG3LLmfash/gYP6XAR6MYMSmgbufbeR2gztZy4O+th1AZYOYAQNxmEDBX+yQZwOD9F2gGhkiFyVtQojS6fQm3KkpQ0HqTNeMPTGxQyAA6GyaMfGrUOb83lFTw5f5hBqosh5FO/PbrlXBdaUcoXz/+MWKYjRTMGe91we32TnAYtM4h98RnNXcR8nl8o4Jdh4wvXrwROcWZsH527jT/7KZmOscPK3PoOYFiJhcPSK1rOPYt3+S0cKlfh0ievnSRa2VqHFJwxERKllILlzuebJJZiHQHwWOn9Jpu7rYJ20ouGsBZCCLw9hYJKHHGKUxn75Z6TBDJWKh4mt9Yp3bJsVtgkDGA6qCPjjgq3OTx0GDPuqdBAc9QxNUVa/uCSTXSPv2pejk/ar+AM8A61vlziFhFUNIUQfuzMwJ7eT2DS7Q+OVSq3zm0kWeW2yKWAv X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dt2TPja/u4Re9FcEPbTCOvBDipto8lk4/n/eJhVpNrEyl0+pXnzIEpekQVhL?= =?us-ascii?Q?kU6FQ6830BxgV8/aosQOkq1NNj5764+inuqcFV9vcNqFrj9cZlaMkCjahuEO?= =?us-ascii?Q?Icy0iIkkxQG7gDqay7bhCHB3UPVAZS0ZO7SW9pPhgyEyRK8XJzCP6lXh0rAd?= =?us-ascii?Q?WrRgTST2h1N7c5UNZosUL0CUw0X/49A1exY5mUWd4mLzqWkfa1eXe9zzVY/N?= =?us-ascii?Q?uN6M5Dwb+rX0DYqlMQtFa/M4F0EjjDA7yjwanGOl0hHHZFSyowRrz0LQN0Az?= =?us-ascii?Q?K8g4jLWGz7xJF24fNlyX5EdW1edckhtfrhkkdQXClY+G8diTrQhB5Ng1DVKL?= =?us-ascii?Q?3Ndl4h/euAndughC2MWHFHFD9seId/0x+z1GYm1Wd+K6eTd0XnIbSsP2eqIG?= =?us-ascii?Q?cC0tFmNAKwyxI+KhOh2r8sJYJ0fZWJUDtQJNvOoHymdTR9+ARiHYgee/t2ri?= =?us-ascii?Q?JotTHt27Tvmi2/Jbx0fD4KlOLAA11fT70rgmNpc+iO9OCv9IpOjnsDNlvIRp?= =?us-ascii?Q?0yZbM3RsOZOLTsapVtpG0yjDsmBXm/dlUun2moie0GwU044rgfIjw6mORmuU?= =?us-ascii?Q?DH6SiKzvKCNUmIVK9AxyalYEpv9V4oc7KYN/Eh+wNQa161QQOgVM5fMt8gcy?= =?us-ascii?Q?4VMQEGN8DWn5wxceNrQXlzgNT3syNW9v0iMrzFe19aotX8Ub6OdbHf46/hOj?= =?us-ascii?Q?1uLiCRSWh4fFhDsQQ4iYekqhH3TyKMHdONCDolhE/hGZ+5mMYcOTORM0Y9M0?= =?us-ascii?Q?yBid2dcIfwXhgBY+R5HCXJf1X2HjXUQvWMndUVdmQaNpz2s/IuKiEklgwIIY?= =?us-ascii?Q?TeATPFUqxxAOl6vM9JAdgIFKs23Us6jaH81Tay8cCQvxPHnSacm54e46qJ7y?= =?us-ascii?Q?T9XaH4yZKbf2Q9lNFL3Srpo/Q0V/PEvyQ2Pna2mZMwWWISNAGmwuGmgARSUC?= =?us-ascii?Q?nB/QJZy+0wyKDhBdU+9NSj5r+Epj0oXsUNconfLjVktG73jtYIK5jRlJuSPi?= =?us-ascii?Q?epudCv7j9nKOia+Ds1SigNfKkbkRTdIOsE/XfzmM070HJQ3bw5MeZoWmgYgT?= =?us-ascii?Q?k7S/XSAZG5VY0daoAecZi0cwuKLPyfI1qOZLynmmHp+1Mgwlxu5H3LXetuEG?= =?us-ascii?Q?63rCScmJD+/Ck0tHmmS0OaszBvbqf1mK/visnxah3OhiUwmb0FCka4O9YPRZ?= =?us-ascii?Q?mobmwAqDsFOzeMMsnAZWetk5XNWgxDrLWE6olJgtXerFn18k8W+rAYciXtyf?= =?us-ascii?Q?N0w3NfhGISbqASDjE+RucLDR+dINkdvpxXK3axoUI4zmZFGXQ9DTYB9mUpII?= =?us-ascii?Q?+qy4BmiYIwScRBdQPr/LTKjLqQSsY2H2vnsHYhmtCO6Vm2zXoIVdZiZZXlwC?= =?us-ascii?Q?wR0TX5avMqs6x/SIIXAi2DHDVLDD33RiNG3+cWLHXWm0CP48Z+73IX1I7Mcm?= =?us-ascii?Q?EOi1WYcvTKPXnuF0Ac+pl8HMAalYVCR+rwrS7rrS6Ghy1RfMlMDt5vWzoJzk?= =?us-ascii?Q?bitUZNEZabO/VxX07dDYRzdKxBnK0bGVxHGGTSHRhLmK/9SSr1o3ffPV6KXa?= =?us-ascii?Q?g5tPTfRS+8qwBnTaM4EVoJiOks10NYh2i8FP8Gib3rOi4nc+iAHaXqpR+kpp?= =?us-ascii?Q?3DfuTCZ+efsS6mHFqoVsaqkGTH3+h2VCtITm48y+Jr63RFjc6+ez0mgG502N?= =?us-ascii?Q?56GBynVA/dQcXsossx2JCrNtuBWom0BjNiqXjt85nUgdlz1N0HlsF7qg0j5x?= =?us-ascii?Q?D5E4UzmeqcgLlMw+TV6uvtp/IRA6FoE=3D?= X-Exchange-RoutingPolicyChecked: N9FaIX+xqTCivT6HiS2TqY/C9s3ProtirkhdGZ+FQcoZ+VcLv4bbwtCCf2qcAQgA02hK3MNunmu63pH2yFporqJYKEBE5eV84DKUKfA0e4/umCA/e7rhj/wBDC2Z0FddraP1gLUCPSkc9L00aqx46vecezsfUf2noxMn36MOM1sl+yA93O3SQs6a34w/XBfJea+tLAnW6QbKKmD+Ap1OorAwCkzkYWYhfD0FxDQPJnP5dR7TGvHSLrwAnqJRYIr9g3weORFHDUzXk6AGK9ZWCZH2byJykoIx0iF5IIVJda527ePkXW0q/+Qwc0jc1rRpMcs2Zo25tmp6hLsgyY8HGA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: saiWbvswqn7NqDe08ldqr4YHfv8/y5UAqZaE+qP771ASGKlrDMemTzlQbnmoqB2r82B236GGYnWQBjc7A7f0sMFdyvJ2DhVs4ShiNRn7DWlEIlxXufmEejaSNFoDvuyEOevRhO7nDGW17pLIzlRV5hbsD/t8off9jdARe7VQ+r1+UdxLHnHwAbMMofGHDFMeZc1XZKRIGa83LsRDnrNqzwLHsEzxqtoy8M+GMGt3iY6rq6DeDbJOKRz4uAZYxLry/plkRk/BQmXH9NazI80D4aZb0cd+WBHCf8rlyf4GpbIhuFSLpv67BFAVwBu/xYqDHq5Nof8pO9nmBeDKYOjwKS291JzxKVsptrEYs0VupWsO/ikRdyuXmnvwniw4BL9xewosh/zNRDUQ2vzuiFY2i+6OWiFXsCIIlH1PtZw6x18MqlyHNqk+bRL4lBA427TtW6ijDlip8JWr+3SlPP84fWsGtxBCqIfBOsJ1In79b/gnPDHl5uIJgtfo+hlym98AKI17X3DIdgcjB2wOzR3FXl8gHnN5HkjOXO/IEJrQDZDpI04ae22DRDus0snkvanOg42t4gljypKxesT7yDUXe5BE4RbGcQZqnL/wws1uLV4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 789d00e1-ef2c-4d46-483a-08de841dbbb4 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:17.4371 (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: LsjbKX4/4ZnEbsr2Gts3CsPskizcK/jYoaCkhDVA+DDkHJFDbaEUCDMuQfBhzWWgvbAydbD6oQUduJYVnStq/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Authority-Analysis: v=2.4 cv=X5Vf6WTe c=1 sm=1 tr=0 ts=69b943fa 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=3I1J8UUJPc9JN9BFgKH3:22 a=VwQbUJbxAAAA:8 a=yPCof4ZbAAAA:8 a=0ft_R69dCeVPry1_igoA:9 cc=ntf awl=host:12273 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfXwLBGEPhSDK3S 8EmQNwuf37y4MAGaey8wIpYgornXrYprBElOOLnfW9e8polIlzHs5GkCM5yQLZewuurdCXxVZiA VblUlVUgoE31mFVHygCTpCywGIpCld95D+aQyx9XvklEOHW/GXUDh0AJWlZ9VAqSudXQPSr3S1L XTq/WALGjZB1d1Ds5k3n22pKG3GZUUPf4tIW/cZt8LCSiZAgCGS5ZJ6LTM9CfNHVaxjNjrQj4IL NBQ4p/sHyS2NwaLIGYDOo+3NTbaogFcVbOukdbBB3oj93vjaE+UH2zGpSg5YJGfJ+lLAuze/y6V /ojoQ+hR3/r6H4jTjVwPSY3V4KFCn5SGuhuXDxC3U+tEDeZOqvfiZ+YTR8YnlUXlzmZsSbr9L+5 4qj2v5DuLCFl6w3Vx+JrFrJD3Gd11egGwbY5IJPtL9OLG1/h0QtThaP50DDXBJ7uCuI/djeSQHD UnApV2HYea0DjyEoKzbMUfCFYVdU4ikVgoLIpVM8= X-Proofpoint-GUID: T_znUnJJn82SBzZYUXWRljk7gzT0Vt5n X-Proofpoint-ORIG-GUID: T_znUnJJn82SBzZYUXWRljk7gzT0Vt5n Content-Type: text/plain; charset="utf-8" Delete the alua_port_group usage, as it is more accurate to manage the port group info per-scsi device - see [0] [0] https://lore.kernel.org/linux-scsi/20260310114925.1222263-1-john.g.garr= y@oracle.com/T/#m4ffc0d07f169b70b8fd2407bae9632aa0f8c1f9a For now, the handler data will be used to hold the ALUA-related info. Signed-off-by: John Garry --- drivers/scsi/device_handler/scsi_dh_alua.c | 663 ++++++--------------- 1 file changed, 180 insertions(+), 483 deletions(-) diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/devi= ce_handler/scsi_dh_alua.c index efb08b9b145a1..067021fffc16f 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c @@ -54,41 +54,27 @@ static uint optimize_stpg; module_param(optimize_stpg, uint, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(optimize_stpg, "Allow use of a non-optimized path, rather= than sending a STPG, when implicit TPGS is supported (0=3DNo,1=3DYes). Def= ault is 0."); =20 -static LIST_HEAD(port_group_list); -static DEFINE_SPINLOCK(port_group_lock); static struct workqueue_struct *kaluad_wq; =20 -struct alua_port_group { - struct kref kref; - struct rcu_head rcu; - struct list_head node; - struct list_head dh_list; - unsigned char device_id_str[256]; - int device_id_len; +struct alua_dh_data { int group_id; - int tpgs; + struct scsi_device *sdev; + int init_error; + struct mutex init_mutex; + bool disabled; + unsigned flags; /* used for optimizing STPG */ + spinlock_t lock; + + /* alua stuff */ int state; int pref; int valid_states; - unsigned flags; /* used for optimizing STPG */ + int tpgs; unsigned char transition_tmo; unsigned long expiry; unsigned long interval; struct delayed_work rtpg_work; - spinlock_t lock; struct list_head rtpg_list; - struct scsi_device *rtpg_sdev; -}; - -struct alua_dh_data { - struct list_head node; - struct alua_port_group __rcu *pg; - int group_id; - spinlock_t pg_lock; - struct scsi_device *sdev; - int init_error; - struct mutex init_mutex; - bool disabled; }; =20 struct alua_queue_data { @@ -101,24 +87,10 @@ struct alua_queue_data { #define ALUA_POLICY_SWITCH_ALL 1 =20 static void alua_rtpg_work(struct work_struct *work); -static bool alua_rtpg_queue(struct alua_port_group *pg, - struct scsi_device *sdev, +static bool alua_rtpg_queue(struct scsi_device *sdev, struct alua_queue_data *qdata, bool force); static void alua_check(struct scsi_device *sdev, bool force); =20 -static void release_port_group(struct kref *kref) -{ - struct alua_port_group *pg; - - pg =3D container_of(kref, struct alua_port_group, kref); - if (pg->rtpg_sdev) - flush_delayed_work(&pg->rtpg_work); - spin_lock(&port_group_lock); - list_del(&pg->node); - spin_unlock(&port_group_lock); - kfree_rcu(pg, rcu); -} - /* * submit_rtpg - Issue a REPORT TARGET GROUP STATES command * @sdev: sdev the command should be sent to @@ -182,88 +154,6 @@ static int submit_stpg(struct scsi_device *sdev, int g= roup_id, ALUA_FAILOVER_RETRIES, &exec_args); } =20 -static struct alua_port_group *alua_find_get_pg(char *id_str, size_t id_si= ze, - int group_id) -{ - struct alua_port_group *pg; - - if (!id_str || !id_size || !strlen(id_str)) - return NULL; - - list_for_each_entry(pg, &port_group_list, node) { - if (pg->group_id !=3D group_id) - continue; - if (!pg->device_id_len || pg->device_id_len !=3D id_size) - continue; - if (strncmp(pg->device_id_str, id_str, id_size)) - continue; - if (!kref_get_unless_zero(&pg->kref)) - continue; - return pg; - } - - return NULL; -} - -/* - * alua_alloc_pg - Allocate a new port_group structure - * @sdev: scsi device - * @group_id: port group id - * @tpgs: target port group settings - * - * Allocate a new port_group structure for a given - * device. - */ -static struct alua_port_group *alua_alloc_pg(struct scsi_device *sdev, - int group_id, int tpgs) -{ - struct alua_port_group *pg, *tmp_pg; - - pg =3D kzalloc_obj(struct alua_port_group); - if (!pg) - return ERR_PTR(-ENOMEM); - - pg->device_id_len =3D scsi_vpd_lun_id(sdev, pg->device_id_str, - sizeof(pg->device_id_str)); - if (pg->device_id_len <=3D 0) { - /* - * TPGS supported but no device identification found. - * Generate private device identification. - */ - sdev_printk(KERN_INFO, sdev, - "%s: No device descriptors found\n", - ALUA_DH_NAME); - pg->device_id_str[0] =3D '\0'; - pg->device_id_len =3D 0; - } - pg->group_id =3D group_id; - pg->tpgs =3D tpgs; - pg->state =3D SCSI_ACCESS_STATE_OPTIMAL; - pg->valid_states =3D TPGS_SUPPORT_ALL; - if (optimize_stpg) - pg->flags |=3D ALUA_OPTIMIZE_STPG; - kref_init(&pg->kref); - INIT_DELAYED_WORK(&pg->rtpg_work, alua_rtpg_work); - INIT_LIST_HEAD(&pg->rtpg_list); - INIT_LIST_HEAD(&pg->node); - INIT_LIST_HEAD(&pg->dh_list); - spin_lock_init(&pg->lock); - - spin_lock(&port_group_lock); - tmp_pg =3D alua_find_get_pg(pg->device_id_str, pg->device_id_len, - group_id); - if (tmp_pg) { - spin_unlock(&port_group_lock); - kfree(pg); - return tmp_pg; - } - - list_add(&pg->node, &port_group_list); - spin_unlock(&port_group_lock); - - return pg; -} - /* * alua_check_tpgs - Evaluate TPGS setting * @sdev: device to be checked @@ -326,13 +216,10 @@ static int alua_check_tpgs(struct scsi_device *sdev) static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h, int tpgs) { - int rel_port =3D -1, group_id; - struct alua_port_group *pg, *old_pg =3D NULL; - bool pg_updated =3D false; - unsigned long flags; + int rel_port =3D -1; =20 - group_id =3D scsi_vpd_tpg_id(sdev, &rel_port); - if (group_id < 0) { + h->group_id =3D scsi_vpd_tpg_id(sdev, &rel_port); + if (h->group_id < 0) { /* * Internal error; TPGS supported but required * VPD identification descriptors not present. @@ -343,51 +230,9 @@ static int alua_check_vpd(struct scsi_device *sdev, st= ruct alua_dh_data *h, ALUA_DH_NAME); return SCSI_DH_DEV_UNSUPP; } + h->tpgs =3D tpgs; =20 - pg =3D alua_alloc_pg(sdev, group_id, tpgs); - if (IS_ERR(pg)) { - if (PTR_ERR(pg) =3D=3D -ENOMEM) - return SCSI_DH_NOMEM; - return SCSI_DH_DEV_UNSUPP; - } - if (pg->device_id_len) - sdev_printk(KERN_INFO, sdev, - "%s: device %s port group %x rel port %x\n", - ALUA_DH_NAME, pg->device_id_str, - group_id, rel_port); - else - sdev_printk(KERN_INFO, sdev, - "%s: port group %x rel port %x\n", - ALUA_DH_NAME, group_id, rel_port); - - kref_get(&pg->kref); - - /* Check for existing port group references */ - spin_lock(&h->pg_lock); - old_pg =3D rcu_dereference_protected(h->pg, lockdep_is_held(&h->pg_lock)); - if (old_pg !=3D pg) { - /* port group has changed. Update to new port group */ - if (h->pg) { - spin_lock_irqsave(&old_pg->lock, flags); - list_del_rcu(&h->node); - spin_unlock_irqrestore(&old_pg->lock, flags); - } - rcu_assign_pointer(h->pg, pg); - pg_updated =3D true; - } - - spin_lock_irqsave(&pg->lock, flags); - if (pg_updated) - list_add_rcu(&h->node, &pg->dh_list); - spin_unlock_irqrestore(&pg->lock, flags); - - spin_unlock(&h->pg_lock); - - alua_rtpg_queue(pg, sdev, NULL, true); - kref_put(&pg->kref, release_port_group); - - if (old_pg) - kref_put(&old_pg->kref, release_port_group); + alua_rtpg_queue(sdev, NULL, true); =20 return SCSI_DH_OK; } @@ -417,14 +262,8 @@ static char print_alua_state(unsigned char state) static void alua_handle_state_transition(struct scsi_device *sdev) { struct alua_dh_data *h =3D sdev->handler_data; - struct alua_port_group *pg; - - rcu_read_lock(); - pg =3D rcu_dereference(h->pg); - if (pg) - pg->state =3D SCSI_ACCESS_STATE_TRANSITIONING; - rcu_read_unlock(); - alua_check(sdev, false); + + h->state =3D SCSI_ACCESS_STATE_TRANSITIONING; } =20 static enum scsi_disposition alua_check_sense(struct scsi_device *sdev, @@ -532,10 +371,10 @@ static int alua_tur(struct scsi_device *sdev) * Returns SCSI_DH_DEV_OFFLINED if the path is * found to be unusable. */ -static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg) +static int alua_rtpg(struct scsi_device *sdev) { struct scsi_sense_hdr sense_hdr; - struct alua_port_group *tmp_pg; + struct alua_dh_data *h =3D sdev->handler_data; int len, k, off, bufflen =3D ALUA_RTPG_SIZE; int group_id_old, state_old, pref_old, valid_states_old; unsigned char *desc, *buff; @@ -545,19 +384,32 @@ static int alua_rtpg(struct scsi_device *sdev, struct= alua_port_group *pg) unsigned char orig_transition_tmo; unsigned long flags; bool transitioning_sense =3D false; + int rel_port, group_id =3D scsi_vpd_tpg_id(sdev, &rel_port); + + if (group_id < 0) { + /* + * Internal error; TPGS supported but required + * VPD identification descriptors not present. + * Disable ALUA support + */ + sdev_printk(KERN_INFO, sdev, + "%s: No target port descriptors found\n", + ALUA_DH_NAME); + return SCSI_DH_DEV_UNSUPP; + } =20 - group_id_old =3D pg->group_id; - state_old =3D pg->state; - pref_old =3D pg->pref; - valid_states_old =3D pg->valid_states; + group_id_old =3D h->group_id; + state_old =3D h->state; + pref_old =3D h->pref; + valid_states_old =3D h->valid_states; =20 - if (!pg->expiry) { + if (!h->expiry) { unsigned long transition_tmo =3D ALUA_FAILOVER_TIMEOUT * HZ; =20 - if (pg->transition_tmo) - transition_tmo =3D pg->transition_tmo * HZ; + if (h->transition_tmo) + transition_tmo =3D h->transition_tmo * HZ; =20 - pg->expiry =3D round_jiffies_up(jiffies + transition_tmo); + h->expiry =3D round_jiffies_up(jiffies + transition_tmo); } =20 buff =3D kzalloc(bufflen, GFP_KERNEL); @@ -566,7 +418,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct a= lua_port_group *pg) =20 retry: err =3D 0; - retval =3D submit_rtpg(sdev, buff, bufflen, &sense_hdr, pg->flags); + retval =3D submit_rtpg(sdev, buff, bufflen, &sense_hdr, h->flags); =20 if (retval) { /* @@ -578,7 +430,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct a= lua_port_group *pg) * So ignore any errors to avoid spurious failures during * path failover. */ - if ((pg->valid_states & ~TPGS_SUPPORT_OPTIMIZED) =3D=3D 0) { + if ((h->valid_states & ~TPGS_SUPPORT_OPTIMIZED) =3D=3D 0) { sdev_printk(KERN_INFO, sdev, "%s: ignoring rtpg result %d\n", ALUA_DH_NAME, retval); @@ -607,9 +459,9 @@ static int alua_rtpg(struct scsi_device *sdev, struct a= lua_port_group *pg) * Note: some arrays return a sense key of ILLEGAL_REQUEST * with ASC 00h if they don't support the extended header. */ - if (!(pg->flags & ALUA_RTPG_EXT_HDR_UNSUPP) && + if (!(h->flags & ALUA_RTPG_EXT_HDR_UNSUPP) && sense_hdr.sense_key =3D=3D ILLEGAL_REQUEST) { - pg->flags |=3D ALUA_RTPG_EXT_HDR_UNSUPP; + h->flags |=3D ALUA_RTPG_EXT_HDR_UNSUPP; goto retry; } /* @@ -628,7 +480,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct a= lua_port_group *pg) if (sense_hdr.sense_key =3D=3D UNIT_ATTENTION) err =3D SCSI_DH_RETRY; if (err =3D=3D SCSI_DH_RETRY && - pg->expiry !=3D 0 && time_before(jiffies, pg->expiry)) { + h->expiry !=3D 0 && time_before(jiffies, h->expiry)) { sdev_printk(KERN_ERR, sdev, "%s: rtpg retry\n", ALUA_DH_NAME); scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); @@ -639,7 +491,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct a= lua_port_group *pg) ALUA_DH_NAME); scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); kfree(buff); - pg->expiry =3D 0; + h->expiry =3D 0; return SCSI_DH_IO; } =20 @@ -654,23 +506,23 @@ static int alua_rtpg(struct scsi_device *sdev, struct= alua_port_group *pg) sdev_printk(KERN_WARNING, sdev, "%s: kmalloc buffer failed\n",__func__); /* Temporary failure, bypass */ - pg->expiry =3D 0; + h->expiry =3D 0; return SCSI_DH_DEV_TEMP_BUSY; } goto retry; } =20 - orig_transition_tmo =3D pg->transition_tmo; + orig_transition_tmo =3D h->transition_tmo; if ((buff[4] & RTPG_FMT_MASK) =3D=3D RTPG_FMT_EXT_HDR && buff[5] !=3D 0) - pg->transition_tmo =3D buff[5]; + h->transition_tmo =3D buff[5]; else - pg->transition_tmo =3D ALUA_FAILOVER_TIMEOUT; + h->transition_tmo =3D ALUA_FAILOVER_TIMEOUT; =20 - if (orig_transition_tmo !=3D pg->transition_tmo) { + if (orig_transition_tmo !=3D h->transition_tmo) { sdev_printk(KERN_INFO, sdev, "%s: transition timeout set to %d seconds\n", - ALUA_DH_NAME, pg->transition_tmo); - pg->expiry =3D jiffies + pg->transition_tmo * HZ; + ALUA_DH_NAME, h->transition_tmo); + h->expiry =3D jiffies + h->transition_tmo * HZ; } =20 if ((buff[4] & RTPG_FMT_MASK) =3D=3D RTPG_FMT_EXT_HDR) @@ -681,95 +533,71 @@ static int alua_rtpg(struct scsi_device *sdev, struct= alua_port_group *pg) for (k =3D tpg_desc_tbl_off, desc =3D buff + tpg_desc_tbl_off; k < len; k +=3D off, desc +=3D off) { - u16 group_id =3D get_unaligned_be16(&desc[2]); - - spin_lock_irqsave(&port_group_lock, flags); - tmp_pg =3D alua_find_get_pg(pg->device_id_str, pg->device_id_len, - group_id); - spin_unlock_irqrestore(&port_group_lock, flags); - if (tmp_pg) { - if (spin_trylock_irqsave(&tmp_pg->lock, flags)) { - if ((tmp_pg =3D=3D pg) || - !(tmp_pg->flags & ALUA_PG_RUNNING)) { - struct alua_dh_data *h; - - tmp_pg->state =3D desc[0] & 0x0f; - tmp_pg->pref =3D desc[0] >> 7; - rcu_read_lock(); - list_for_each_entry_rcu(h, - &tmp_pg->dh_list, node) { - if (!h->sdev) - continue; - h->sdev->access_state =3D desc[0]; - } - rcu_read_unlock(); - } - if (tmp_pg =3D=3D pg) - tmp_pg->valid_states =3D desc[1]; - spin_unlock_irqrestore(&tmp_pg->lock, flags); - } - kref_put(&tmp_pg->kref, release_port_group); + u16 group_id_desc =3D get_unaligned_be16(&desc[2]); + + spin_lock_irqsave(&h->lock, flags); + if (group_id_desc =3D=3D group_id) { + h->group_id =3D group_id; + WRITE_ONCE(h->state, desc[0] & 0x0f); + h->pref =3D desc[0] >> 7; + WRITE_ONCE(sdev->access_state, desc[0]); + h->valid_states =3D desc[1]; } + spin_unlock_irqrestore(&h->lock, flags); off =3D 8 + (desc[7] * 4); } =20 skip_rtpg: - spin_lock_irqsave(&pg->lock, flags); + spin_lock_irqsave(&h->lock, flags); if (transitioning_sense) - pg->state =3D SCSI_ACCESS_STATE_TRANSITIONING; + h->state =3D SCSI_ACCESS_STATE_TRANSITIONING; =20 - if (group_id_old !=3D pg->group_id || state_old !=3D pg->state || - pref_old !=3D pg->pref || valid_states_old !=3D pg->valid_states) + if (group_id_old !=3D h->group_id || state_old !=3D h->state || + pref_old !=3D h->pref || valid_states_old !=3D h->valid_states) sdev_printk(KERN_INFO, sdev, "%s: port group %02x state %c %s supports %c%c%c%c%c%c%c\n", - ALUA_DH_NAME, pg->group_id, print_alua_state(pg->state), - pg->pref ? "preferred" : "non-preferred", - pg->valid_states&TPGS_SUPPORT_TRANSITION?'T':'t', - pg->valid_states&TPGS_SUPPORT_OFFLINE?'O':'o', - pg->valid_states&TPGS_SUPPORT_LBA_DEPENDENT?'L':'l', - pg->valid_states&TPGS_SUPPORT_UNAVAILABLE?'U':'u', - pg->valid_states&TPGS_SUPPORT_STANDBY?'S':'s', - pg->valid_states&TPGS_SUPPORT_NONOPTIMIZED?'N':'n', - pg->valid_states&TPGS_SUPPORT_OPTIMIZED?'A':'a'); - - switch (pg->state) { + ALUA_DH_NAME, h->group_id, print_alua_state(h->state), + h->pref ? "preferred" : "non-preferred", + h->valid_states&TPGS_SUPPORT_TRANSITION?'T':'t', + h->valid_states&TPGS_SUPPORT_OFFLINE?'O':'o', + h->valid_states&TPGS_SUPPORT_LBA_DEPENDENT?'L':'l', + h->valid_states&TPGS_SUPPORT_UNAVAILABLE?'U':'u', + h->valid_states&TPGS_SUPPORT_STANDBY?'S':'s', + h->valid_states&TPGS_SUPPORT_NONOPTIMIZED?'N':'n', + h->valid_states&TPGS_SUPPORT_OPTIMIZED?'A':'a'); + + switch (h->state) { case SCSI_ACCESS_STATE_TRANSITIONING: - if (time_before(jiffies, pg->expiry)) { + if (time_before(jiffies, h->expiry)) { /* State transition, retry */ - pg->interval =3D ALUA_RTPG_RETRY_DELAY; + h->interval =3D ALUA_RTPG_RETRY_DELAY; err =3D SCSI_DH_RETRY; } else { struct alua_dh_data *h; + unsigned char access_state; =20 /* Transitioning time exceeded, set port to standby */ err =3D SCSI_DH_IO; - pg->state =3D SCSI_ACCESS_STATE_STANDBY; - pg->expiry =3D 0; - rcu_read_lock(); - list_for_each_entry_rcu(h, &pg->dh_list, node) { - if (!h->sdev) - continue; - h->sdev->access_state =3D - (pg->state & SCSI_ACCESS_STATE_MASK); - if (pg->pref) - h->sdev->access_state |=3D - SCSI_ACCESS_STATE_PREFERRED; - } - rcu_read_unlock(); + h->state =3D SCSI_ACCESS_STATE_STANDBY; + h->expiry =3D 0; + access_state =3D h->state & SCSI_ACCESS_STATE_MASK; + if (h->pref) + access_state |=3D SCSI_ACCESS_STATE_PREFERRED; + WRITE_ONCE(sdev->access_state, access_state); } break; case SCSI_ACCESS_STATE_OFFLINE: /* Path unusable */ err =3D SCSI_DH_DEV_OFFLINED; - pg->expiry =3D 0; + h->expiry =3D 0; break; default: /* Useable path if active */ err =3D SCSI_DH_OK; - pg->expiry =3D 0; + h->expiry =3D 0; break; } - spin_unlock_irqrestore(&pg->lock, flags); + spin_unlock_irqrestore(&h->lock, flags); kfree(buff); return err; } @@ -782,22 +610,23 @@ static int alua_rtpg(struct scsi_device *sdev, struct= alua_port_group *pg) * a re-evaluation of the target group state or SCSI_DH_OK * if no further action needs to be taken. */ -static unsigned alua_stpg(struct scsi_device *sdev, struct alua_port_group= *pg) +static unsigned alua_stpg(struct scsi_device *sdev) { int retval; struct scsi_sense_hdr sense_hdr; + struct alua_dh_data *h =3D sdev->handler_data; =20 - if (!(pg->tpgs & TPGS_MODE_EXPLICIT)) { + if (!(h->tpgs & TPGS_MODE_EXPLICIT)) { /* Only implicit ALUA supported, retry */ return SCSI_DH_RETRY; } - switch (pg->state) { + switch (h->state) { case SCSI_ACCESS_STATE_OPTIMAL: return SCSI_DH_OK; case SCSI_ACCESS_STATE_ACTIVE: - if ((pg->flags & ALUA_OPTIMIZE_STPG) && - !pg->pref && - (pg->tpgs & TPGS_MODE_IMPLICIT)) + if ((h->flags & ALUA_OPTIMIZE_STPG) && + !h->pref && + (h->tpgs & TPGS_MODE_IMPLICIT)) return SCSI_DH_OK; break; case SCSI_ACCESS_STATE_STANDBY: @@ -810,10 +639,10 @@ static unsigned alua_stpg(struct scsi_device *sdev, s= truct alua_port_group *pg) default: sdev_printk(KERN_INFO, sdev, "%s: stpg failed, unhandled TPGS state %d", - ALUA_DH_NAME, pg->state); + ALUA_DH_NAME, h->state); return SCSI_DH_NOSYS; } - retval =3D submit_stpg(sdev, pg->group_id, &sense_hdr); + retval =3D submit_stpg(sdev, h->group_id, &sense_hdr); =20 if (retval) { if (retval < 0 || !scsi_sense_valid(&sense_hdr)) { @@ -832,144 +661,75 @@ static unsigned alua_stpg(struct scsi_device *sdev, = struct alua_port_group *pg) return SCSI_DH_RETRY; } =20 -/* - * The caller must call scsi_device_put() on the returned pointer if it is= not - * NULL. - */ -static struct scsi_device * __must_check -alua_rtpg_select_sdev(struct alua_port_group *pg) -{ - struct alua_dh_data *h; - struct scsi_device *sdev =3D NULL, *prev_sdev; - - lockdep_assert_held(&pg->lock); - if (WARN_ON(!pg->rtpg_sdev)) - return NULL; - - /* - * RCU protection isn't necessary for dh_list here - * as we hold pg->lock, but for access to h->pg. - */ - rcu_read_lock(); - list_for_each_entry_rcu(h, &pg->dh_list, node) { - if (!h->sdev) - continue; - if (h->sdev =3D=3D pg->rtpg_sdev) { - h->disabled =3D true; - continue; - } - if (rcu_dereference(h->pg) =3D=3D pg && - !h->disabled && - !scsi_device_get(h->sdev)) { - sdev =3D h->sdev; - break; - } - } - rcu_read_unlock(); - - if (!sdev) { - pr_warn("%s: no device found for rtpg\n", - (pg->device_id_len ? - (char *)pg->device_id_str : "(nameless PG)")); - return NULL; - } - - sdev_printk(KERN_INFO, sdev, "rtpg retry on different device\n"); - - prev_sdev =3D pg->rtpg_sdev; - pg->rtpg_sdev =3D sdev; - - return prev_sdev; -} - static void alua_rtpg_work(struct work_struct *work) { - struct alua_port_group *pg =3D - container_of(work, struct alua_port_group, rtpg_work.work); - struct scsi_device *sdev, *prev_sdev =3D NULL; + struct alua_dh_data *h =3D + container_of(work, struct alua_dh_data, rtpg_work.work); + struct scsi_device *sdev =3D h->sdev; LIST_HEAD(qdata_list); int err =3D SCSI_DH_OK; struct alua_queue_data *qdata, *tmp; - struct alua_dh_data *h; unsigned long flags; =20 - spin_lock_irqsave(&pg->lock, flags); - sdev =3D pg->rtpg_sdev; - if (!sdev) { - WARN_ON(pg->flags & ALUA_PG_RUN_RTPG); - WARN_ON(pg->flags & ALUA_PG_RUN_STPG); - spin_unlock_irqrestore(&pg->lock, flags); - kref_put(&pg->kref, release_port_group); - return; - } - pg->flags |=3D ALUA_PG_RUNNING; - if (pg->flags & ALUA_PG_RUN_RTPG) { - int state =3D pg->state; + spin_lock_irqsave(&h->lock, flags); + h->flags |=3D ALUA_PG_RUNNING; + if (h->flags & ALUA_PG_RUN_RTPG) { + int state =3D h->state; =20 - pg->flags &=3D ~ALUA_PG_RUN_RTPG; - spin_unlock_irqrestore(&pg->lock, flags); + h->flags &=3D ~ALUA_PG_RUN_RTPG; + spin_unlock_irqrestore(&h->lock, flags); if (state =3D=3D SCSI_ACCESS_STATE_TRANSITIONING) { if (alua_tur(sdev) =3D=3D SCSI_DH_RETRY) { - spin_lock_irqsave(&pg->lock, flags); - pg->flags &=3D ~ALUA_PG_RUNNING; - pg->flags |=3D ALUA_PG_RUN_RTPG; - if (!pg->interval) - pg->interval =3D ALUA_RTPG_RETRY_DELAY; - spin_unlock_irqrestore(&pg->lock, flags); - queue_delayed_work(kaluad_wq, &pg->rtpg_work, - pg->interval * HZ); + spin_lock_irqsave(&h->lock, flags); + h->flags &=3D ~ALUA_PG_RUNNING; + h->flags |=3D ALUA_PG_RUN_RTPG; + if (!h->interval) + h->interval =3D ALUA_RTPG_RETRY_DELAY; + spin_unlock_irqrestore(&h->lock, flags); + queue_delayed_work(kaluad_wq, &h->rtpg_work, + h->interval * HZ); return; } /* Send RTPG on failure or if TUR indicates SUCCESS */ } - err =3D alua_rtpg(sdev, pg); - spin_lock_irqsave(&pg->lock, flags); + err =3D alua_rtpg(sdev); + spin_lock_irqsave(&h->lock, flags); =20 - /* If RTPG failed on the current device, try using another */ - if (err =3D=3D SCSI_DH_RES_TEMP_UNAVAIL && - (prev_sdev =3D alua_rtpg_select_sdev(pg))) - err =3D SCSI_DH_IMM_RETRY; - - if (err =3D=3D SCSI_DH_RETRY || err =3D=3D SCSI_DH_IMM_RETRY || - pg->flags & ALUA_PG_RUN_RTPG) { - pg->flags &=3D ~ALUA_PG_RUNNING; + if (err =3D=3D SCSI_DH_RETRY || h->flags & ALUA_PG_RUN_RTPG) { + h->flags &=3D ~ALUA_PG_RUNNING; if (err =3D=3D SCSI_DH_IMM_RETRY) - pg->interval =3D 0; - else if (!pg->interval && !(pg->flags & ALUA_PG_RUN_RTPG)) - pg->interval =3D ALUA_RTPG_RETRY_DELAY; - pg->flags |=3D ALUA_PG_RUN_RTPG; - spin_unlock_irqrestore(&pg->lock, flags); + h->interval =3D 0; + else if (!h->interval && !(h->flags & ALUA_PG_RUN_RTPG)) + h->interval =3D ALUA_RTPG_RETRY_DELAY; + h->flags |=3D ALUA_PG_RUN_RTPG; + spin_unlock_irqrestore(&h->lock, flags); goto queue_rtpg; } if (err !=3D SCSI_DH_OK) - pg->flags &=3D ~ALUA_PG_RUN_STPG; + h->flags &=3D ~ALUA_PG_RUN_STPG; } - if (pg->flags & ALUA_PG_RUN_STPG) { - pg->flags &=3D ~ALUA_PG_RUN_STPG; - spin_unlock_irqrestore(&pg->lock, flags); - err =3D alua_stpg(sdev, pg); - spin_lock_irqsave(&pg->lock, flags); - if (err =3D=3D SCSI_DH_RETRY || pg->flags & ALUA_PG_RUN_RTPG) { - pg->flags |=3D ALUA_PG_RUN_RTPG; - pg->interval =3D 0; - pg->flags &=3D ~ALUA_PG_RUNNING; - spin_unlock_irqrestore(&pg->lock, flags); + if (h->flags & ALUA_PG_RUN_STPG) { + h->flags &=3D ~ALUA_PG_RUN_STPG; + spin_unlock_irqrestore(&h->lock, flags); + err =3D alua_stpg(sdev); + spin_lock_irqsave(&h->lock, flags); + if (err =3D=3D SCSI_DH_RETRY || h->flags & ALUA_PG_RUN_RTPG) { + h->flags |=3D ALUA_PG_RUN_RTPG; + h->interval =3D 0; + h->flags &=3D ~ALUA_PG_RUNNING; + spin_unlock_irqrestore(&h->lock, flags); goto queue_rtpg; } } =20 - list_splice_init(&pg->rtpg_list, &qdata_list); + list_splice_init(&h->rtpg_list, &qdata_list); /* * We went through an RTPG, for good or bad. - * Re-enable all devices for the next attempt. + * Re-enable the device for the next attempt. */ - list_for_each_entry(h, &pg->dh_list, node) - h->disabled =3D false; - pg->rtpg_sdev =3D NULL; - spin_unlock_irqrestore(&pg->lock, flags); + h->disabled =3D false; + spin_unlock_irqrestore(&h->lock, flags); =20 - if (prev_sdev) - scsi_device_put(prev_sdev); =20 list_for_each_entry_safe(qdata, tmp, &qdata_list, entry) { list_del(&qdata->entry); @@ -977,22 +737,19 @@ static void alua_rtpg_work(struct work_struct *work) qdata->callback_fn(qdata->callback_data, err); kfree(qdata); } - spin_lock_irqsave(&pg->lock, flags); - pg->flags &=3D ~ALUA_PG_RUNNING; - spin_unlock_irqrestore(&pg->lock, flags); + spin_lock_irqsave(&h->lock, flags); + h->flags &=3D ~ALUA_PG_RUNNING; + spin_unlock_irqrestore(&h->lock, flags); scsi_device_put(sdev); - kref_put(&pg->kref, release_port_group); + return; =20 queue_rtpg: - if (prev_sdev) - scsi_device_put(prev_sdev); - queue_delayed_work(kaluad_wq, &pg->rtpg_work, pg->interval * HZ); + queue_delayed_work(kaluad_wq, &h->rtpg_work, h->interval * HZ); } =20 /** * alua_rtpg_queue() - cause RTPG to be submitted asynchronously - * @pg: ALUA port group associated with @sdev. * @sdev: SCSI device for which to submit an RTPG. * @qdata: Information about the callback to invoke after the RTPG. * @force: Whether or not to submit an RTPG if a work item that will submi= t an @@ -1004,51 +761,34 @@ static void alua_rtpg_work(struct work_struct *work) * Context: may be called from atomic context (alua_check()) only if the c= aller * holds an sdev reference. */ -static bool alua_rtpg_queue(struct alua_port_group *pg, - struct scsi_device *sdev, +static bool alua_rtpg_queue(struct scsi_device *sdev, struct alua_queue_data *qdata, bool force) { int start_queue =3D 0; + struct alua_dh_data *h =3D sdev->handler_data; unsigned long flags; =20 - if (WARN_ON_ONCE(!pg) || scsi_device_get(sdev)) + if (scsi_device_get(sdev)) return false; =20 - spin_lock_irqsave(&pg->lock, flags); + spin_lock_irqsave(&h->lock, flags); if (qdata) { - list_add_tail(&qdata->entry, &pg->rtpg_list); - pg->flags |=3D ALUA_PG_RUN_STPG; + list_add_tail(&qdata->entry, &h->rtpg_list); + h->flags |=3D ALUA_PG_RUN_STPG; force =3D true; } - if (pg->rtpg_sdev =3D=3D NULL) { - struct alua_dh_data *h =3D sdev->handler_data; - - rcu_read_lock(); - if (h && rcu_dereference(h->pg) =3D=3D pg) { - pg->interval =3D 0; - pg->flags |=3D ALUA_PG_RUN_RTPG; - kref_get(&pg->kref); - pg->rtpg_sdev =3D sdev; - start_queue =3D 1; - } - rcu_read_unlock(); - } else if (!(pg->flags & ALUA_PG_RUN_RTPG) && force) { - pg->flags |=3D ALUA_PG_RUN_RTPG; + if (!(h->flags & ALUA_PG_RUN_RTPG) && force) { + h->flags |=3D ALUA_PG_RUN_RTPG; /* Do not queue if the worker is already running */ - if (!(pg->flags & ALUA_PG_RUNNING)) { - kref_get(&pg->kref); + if (!(h->flags & ALUA_PG_RUNNING)) start_queue =3D 1; - } } =20 - spin_unlock_irqrestore(&pg->lock, flags); - + spin_unlock_irqrestore(&h->lock, flags); if (start_queue) { - if (queue_delayed_work(kaluad_wq, &pg->rtpg_work, + if (queue_delayed_work(kaluad_wq, &h->rtpg_work, msecs_to_jiffies(ALUA_RTPG_DELAY_MSECS))) sdev =3D NULL; - else - kref_put(&pg->kref, release_port_group); } if (sdev) scsi_device_put(sdev); @@ -1088,7 +828,6 @@ static int alua_initialize(struct scsi_device *sdev, s= truct alua_dh_data *h) static int alua_set_params(struct scsi_device *sdev, const char *params) { struct alua_dh_data *h =3D sdev->handler_data; - struct alua_port_group *pg =3D NULL; unsigned int optimize =3D 0, argc; const char *p =3D params; int result =3D SCSI_DH_OK; @@ -1102,19 +841,12 @@ static int alua_set_params(struct scsi_device *sdev,= const char *params) if ((sscanf(p, "%u", &optimize) !=3D 1) || (optimize > 1)) return -EINVAL; =20 - rcu_read_lock(); - pg =3D rcu_dereference(h->pg); - if (!pg) { - rcu_read_unlock(); - return -ENXIO; - } - spin_lock_irqsave(&pg->lock, flags); + spin_lock_irqsave(&h->lock, flags); if (optimize) - pg->flags |=3D ALUA_OPTIMIZE_STPG; + h->flags |=3D ALUA_OPTIMIZE_STPG; else - pg->flags &=3D ~ALUA_OPTIMIZE_STPG; - spin_unlock_irqrestore(&pg->lock, flags); - rcu_read_unlock(); + h->flags &=3D ~ALUA_OPTIMIZE_STPG; + spin_unlock_irqrestore(&h->lock, flags); =20 return result; } @@ -1132,10 +864,8 @@ static int alua_set_params(struct scsi_device *sdev, = const char *params) static int alua_activate(struct scsi_device *sdev, activate_complete fn, void *data) { - struct alua_dh_data *h =3D sdev->handler_data; int err =3D SCSI_DH_OK; struct alua_queue_data *qdata; - struct alua_port_group *pg; =20 qdata =3D kzalloc_obj(*qdata); if (!qdata) { @@ -1145,26 +875,12 @@ static int alua_activate(struct scsi_device *sdev, qdata->callback_fn =3D fn; qdata->callback_data =3D data; =20 - mutex_lock(&h->init_mutex); - rcu_read_lock(); - pg =3D rcu_dereference(h->pg); - if (!pg || !kref_get_unless_zero(&pg->kref)) { - rcu_read_unlock(); - kfree(qdata); - err =3D h->init_error; - mutex_unlock(&h->init_mutex); - goto out; - } - rcu_read_unlock(); - mutex_unlock(&h->init_mutex); - - if (alua_rtpg_queue(pg, sdev, qdata, true)) { + if (alua_rtpg_queue(sdev, qdata, true)) { fn =3D NULL; } else { kfree(qdata); err =3D SCSI_DH_DEV_OFFLINED; } - kref_put(&pg->kref, release_port_group); out: if (fn) fn(data, err); @@ -1179,18 +895,7 @@ static int alua_activate(struct scsi_device *sdev, */ static void alua_check(struct scsi_device *sdev, bool force) { - struct alua_dh_data *h =3D sdev->handler_data; - struct alua_port_group *pg; - - rcu_read_lock(); - pg =3D rcu_dereference(h->pg); - if (!pg || !kref_get_unless_zero(&pg->kref)) { - rcu_read_unlock(); - return; - } - rcu_read_unlock(); - alua_rtpg_queue(pg, sdev, NULL, force); - kref_put(&pg->kref, release_port_group); + alua_rtpg_queue(sdev, NULL, force); } =20 /* @@ -1202,14 +907,12 @@ static void alua_check(struct scsi_device *sdev, boo= l force) static blk_status_t alua_prep_fn(struct scsi_device *sdev, struct request = *req) { struct alua_dh_data *h =3D sdev->handler_data; - struct alua_port_group *pg; - unsigned char state =3D SCSI_ACCESS_STATE_OPTIMAL; + unsigned long flags; + unsigned char state; =20 - rcu_read_lock(); - pg =3D rcu_dereference(h->pg); - if (pg) - state =3D pg->state; - rcu_read_unlock(); + spin_lock_irqsave(&h->lock, flags); + state =3D h->state; + spin_unlock_irqrestore(&h->lock, flags); =20 switch (state) { case SCSI_ACCESS_STATE_OPTIMAL: @@ -1242,20 +945,26 @@ static int alua_bus_attach(struct scsi_device *sdev) h =3D kzalloc_obj(*h); if (!h) return SCSI_DH_NOMEM; - spin_lock_init(&h->pg_lock); - rcu_assign_pointer(h->pg, NULL); + spin_lock_init(&h->lock); h->init_error =3D SCSI_DH_OK; h->sdev =3D sdev; - INIT_LIST_HEAD(&h->node); + INIT_DELAYED_WORK(&h->rtpg_work, alua_rtpg_work); + INIT_LIST_HEAD(&h->rtpg_list); =20 mutex_init(&h->init_mutex); + + h->state =3D SCSI_ACCESS_STATE_OPTIMAL; + h->valid_states =3D TPGS_SUPPORT_ALL; + if (optimize_stpg) + h->flags |=3D ALUA_OPTIMIZE_STPG; + + sdev->handler_data =3D h; err =3D alua_initialize(sdev, h); if (err !=3D SCSI_DH_OK && err !=3D SCSI_DH_DEV_OFFLINED) goto failed; - - sdev->handler_data =3D h; return SCSI_DH_OK; failed: + sdev->handler_data =3D NULL; kfree(h); return err; } @@ -1267,20 +976,8 @@ static int alua_bus_attach(struct scsi_device *sdev) static void alua_bus_detach(struct scsi_device *sdev) { struct alua_dh_data *h =3D sdev->handler_data; - struct alua_port_group *pg; - - spin_lock(&h->pg_lock); - pg =3D rcu_dereference_protected(h->pg, lockdep_is_held(&h->pg_lock)); - rcu_assign_pointer(h->pg, NULL); - spin_unlock(&h->pg_lock); - if (pg) { - spin_lock_irq(&pg->lock); - list_del_rcu(&h->node); - spin_unlock_irq(&pg->lock); - kref_put(&pg->kref, release_port_group); - } + sdev->handler_data =3D NULL; - synchronize_rcu(); kfree(h); } =20 --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 79DDB3B6C1A; Tue, 17 Mar 2026 12:07:38 +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=1773749260; cv=fail; b=GPOGgCmqVeuc65X9c8tKm7900ma9dJN4eBONxzbkEKTjLm4z9J4HuSS2DdYY+QxzK1NjTOWPumJ3Y1NKguArz98lepFWjhr5ROFhtx8NJQdJziHIjUzCxtX0Dzs+4RXN1xQR0/296VqzMvQZoEKyLaNtO1/5gr2xXcpdPYJkIGA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749260; c=relaxed/simple; bh=hJxvjNZOwNPeuSjIvugy9S0FS8AjZmoIAU6ZgIzmFrQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Z63uHslbLVqTYEiUfuC6P0IAPnWSgTeJtfELOJPlkIMkZjjK3UAnlcJB9TZ7pZ50AcxhYFCBicYTpT3D/r2ADpb4cpwcSPer1qD9M6zXRoYKw//171YVTOvTXS8WNQH5UE2Y1ZytNZHfdTQKSix/dFz68EtS5OMP6HwhJIMHDnw= 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=TT9DzR/z; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=bncvzzyy; 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="TT9DzR/z"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="bncvzzyy" 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 62GLEe0T1337612; Tue, 17 Mar 2026 12:07: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=e3ilrWJzrcEND/6/dwlT+5vQxFP8FGfVeJfHq4Kbk7w=; b= TT9DzR/z9ocQpSOvUW0LMSZ+bywcnOa7KLdaOHYF/5OeXChLedD5FqeDVbgogkid SMR+q/GdyTN76Or3M2kA3eLXZiJcxvIfb+3vLiCTwEdDXDYEkiNb833udAehCu3r QSeNbjFYjjh56Ns8PBsXPsLT9DfDancLGYiWhTwQUK9/zBBqROW5kAVvFILEHmRf n7c1CY84nEbwoTWTgG3mzUF8CzoLpUeAtq9+pA1Cf2dVWiw9mKCmDJBZrKBvHxQo joDgr1AMxlA7Uaei8kTQJgOSv6b3lmswXEWL7iG/U2V9DGkiiAx3NBbT08d8lHeA 1Y6ET6hNl/PyTIWwUpjpDw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvy9ruwyq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:24 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HBaXS7003335; Tue, 17 Mar 2026 12:07:24 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011066.outbound.protection.outlook.com [52.101.57.66]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4a0198-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=x6jYrThWkOlLGqVAaPpWmNC6UAusU2adRhbDj4Ld5uxCxsfoSvJ440AAh5cYVahLUvg7h71v7S64l6NJeIWhrRx8qK4XQV3BKkSwHiypreIsUnLvXZ4oNMLGainyHrorp3Hj/FKu+vLbxm3r4n+w8nW7PhjNXzq4aN1HDfL4/YXL3LX5AbVJS6fiDdkGsPXUewCbHbcfLM49wBLk7l/lidBGh04y3s/GDec5StPj8o+X7lVkKs/XSd5QS14Y/x4EyAQskWPaKFBtoenT0kXvEA7s691DMAx/JnUyvtzi0KpnuoDVNXU3ydMp34QnNgOfXg4JeiydN4uIXhQbGCYzRw== 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=e3ilrWJzrcEND/6/dwlT+5vQxFP8FGfVeJfHq4Kbk7w=; b=RwzjM7XEVS6Di/fMEbeMKj6wA5QTLdljbh0QFoqPPHLAnKcvBr7d8qWINLdHny3GyiyWspfqV3D15C9znzRDVVd+Q8K93DtDKu48m3miQDsswct+ChUWNnk0GqcPbFVfQgGhCGzmCc+DO54O1AMEH3mrRuXVW/ng9lKuZuZj0OZovLAKliZpvS8eEX0Nn+dOo4QXoh/L10uR2sJni//oKCXkRJZIU+KiEZcw5Wj2kF29EY/CrK6KvG0n7MXsUbDI6DRrjms1ceR6Rne/x7QBXnfRyeEaW1zZMABpbUxnqA385SxkqrAkl9TqSD0+U5cPSfTkhLmxJqljwCQ60Jplsw== 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=e3ilrWJzrcEND/6/dwlT+5vQxFP8FGfVeJfHq4Kbk7w=; b=bncvzzyyVG4F8q+GDH7SmgcXZ7T43BDE8aoCvKP13SCyfri9yx0CV8rfqi0eP7egXdgFoFHBwXhOqm8IhERwJl98RLRYuUQ7DzO1oHts97R2oq10tf3PEBJcY8Y40R4fShLf7cL+5MENEanP50Z+1clnjLL6elP65W00XTidbdM= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:19 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:19 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 02/13] scsi: alua: Create a core ALUA driver Date: Tue, 17 Mar 2026 12:06:52 +0000 Message-ID: <20260317120703.3702387-3-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8P222CA0009.NAMP222.PROD.OUTLOOK.COM (2603:10b6:510:2d7::12) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 502983ce-2478-4873-b9ce-08de841dbd1a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: hFiAckAPO2emL9fQUnXi88oOMCfqNCJd5huwzsKnCA9WMO526FN7o7e3K2jDbFwkBw9W/EyBcunC6xYP60+nkDYD8TOvg7MTlY8bLJj1uMQfTEaDB4i1uojJ6AEWFqFxUSDxGvkacHwWqSeWiSwAdAczyZ7U4Oq4/HAkH2ILHcOhgINRQYjnsPPlEDQdtzyKXNAhT2Dkv6OGvzpyhs/akjBS7gq9CJXy/Xy6yYdjlP1NuPjAs2tJzGsbzYhqtjwt8pEavaedefCB1ShtpD8+S2gxh/1dT6SvVCYIYh0B4ZYjNca9irtzbQW/RxtVaxepT7PBAMOOKvYQXGGMH7XIqAtoUtdHtt6XfuUJZu5QVILLc/tIwkBXUIyFSe//Rj19HzKoWBOo6pY6YIgnSO7ZQ2thVCszfzjdMTQaq1VakFXoz/OJS45fo8vMlVuLU22s7t/lMTlJxTxM00htW+6gjZ17+qPyHQ49EUxe99ar3a8iOHqLnonOY8htRgJ+pvuD/CFPDvuMVt2aHDgcpuPQSnFdFP83XB3H/L8zb/RzqTxtO61loA4xKdKXmiHlcObOybdBQqXraCY2kgoykYCXbnEpGlvKctjLGD+Jc1LXNLP9qKQRjjdTIYcSvH+dDwLSEH+6MhSLj93vfvQ5G81EsSxlx+lz6ZPZqyGTqC1cU9CxO6mf0mMO9CRKPkPJNRuZWEGUk3OzCE5ZW950bcgv6ed1A84iX0kvG6gn+/mLj0g= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SkhKGPYX003emg/yAT9qFEphiSqalcDULeCYLFJuj4ZByYbeXUGC2ktlm1Tv?= =?us-ascii?Q?gvGHh13K+hR4ZxnY4HLcFEdjSUFMvU95fvmh46inLvk8KITcqkbmFF/8v1/X?= =?us-ascii?Q?NgEpAty7SxG/9ga8GsPkMyHccNS2tlAiUUtH1/pVC2KSXgQaeSLUM7+hA1n1?= =?us-ascii?Q?VSAw+2UW6oQfHt5Ojo+MMprVo7ZcesN9A0Pds0lgo4v79nu0HKOktYOWkwdK?= =?us-ascii?Q?t+GqWtyn0/VY+ohYKMl5tguYg3//nib4YZk2XS5SbUxirtQdNf1Uw8HLrpDd?= =?us-ascii?Q?lxRwGVZ+ZrYLtYFxSV6HX6yxhlhGKhWHKb2ySOHB8BdctuHyRCUABf2tR2DB?= =?us-ascii?Q?JOHgUrlGAMz9miRHTUOLixxKZyxgPjVRQH9op37cS7mtTikbmB7syo8PcpiU?= =?us-ascii?Q?kXWVs3M7PEnnqFM+SIBkaJVKqft29Bx2lZVnn4HiNaodqKd150fFQuYzhiJZ?= =?us-ascii?Q?wbTr6TzIZMX2DjaqMsDkgDXN/+Qg6ZDIfTjZYNGerYJU49BB1inVL6RO7Arw?= =?us-ascii?Q?cj3gyRJUMD8w2vAGRsiGHUwQ1o+fL1qE9FM0XnuUChqdVgNNbnhDpdwfMWgJ?= =?us-ascii?Q?dIk/Ar/gzJgQ50cd/bCTHJeBdeQFWABSChvlY+7gNRRxx+tgwztUTaAs6FFL?= =?us-ascii?Q?axtFgAX4upuRonnF9xNBr3z+HQbUYLhg4zCwVps4bUcjlqGXmm63AvW6o+74?= =?us-ascii?Q?W8GeP5oAd7+G76iA4qKzymBmg4rN4brADJtb+oejwus/vYKXK+k5zIKoEfhf?= =?us-ascii?Q?XVc96JlOSqAxjAB2FrTKyetmAjhr24gODKnpIT9dLqrPpoylyxvbr16GwYFJ?= =?us-ascii?Q?Qu/rBgPvTPMZVktiahTBNaHTTCj0cLIbOvQw2AZdtftnrJwBRAAhN7jWjkfT?= =?us-ascii?Q?b3ElBi+RSKRRn6Hwp5vcrG4gxl9C4kmWrMjCNc5Xd74jWKpqg7W+HiwwZWR+?= =?us-ascii?Q?ixgUadG+uXawc2+yaRZ6Z8kjGvbZA6EXOXBBrz7LXaHjeb1rcFai3oR7Hhku?= =?us-ascii?Q?DSW+vCIrjS9ONCIvpSgVT8zyz88ATE5Ekc81Sp+rpIC+NUs+iaQlZVQngekv?= =?us-ascii?Q?fWWnmcB05V7VHRdELRTSHiiuyCxkzdye/3J4fXq7Rpf20Koun/WpJi8/Oas8?= =?us-ascii?Q?7ccXFbSp6nVaDX24bbjgshUHa3KUFpkuroKOwpT5qha/Md9huitQHgAftbvQ?= =?us-ascii?Q?oChL4r35gOcLY+BFqcxli/9mo+/XJTVOUx7PG2xheBNZZDj6w/9B3UwKJ7UQ?= =?us-ascii?Q?2Y165Ada9KRC2J/Z4Z1jxpBe8gb1031O2Qya8xHtHNahAkoM2Juh1tamgWOr?= =?us-ascii?Q?m0GzVLBahJLdXK5D4tdUGSLW57NT8fnMq5GdAetYJQddfw5TgUuOA1eJQ3ZX?= =?us-ascii?Q?JhltRIi70+PVJFeSoiuNakQhDkCom2lRRa5pFyn/KJqjyTap8TSSIM/dMVFK?= =?us-ascii?Q?I1nP9lQjf/DW4L2tT3Npo9NknNtTg41AtOy5yONgdP/3BCeX5coLcBcqPXJa?= =?us-ascii?Q?ZPSoaeSxvVeaUuFfjLWNBELSQ1fycsWsPtNNIFuZw7gBeSSC4Ti5nBv0QpeW?= =?us-ascii?Q?4esAqTGApJv2I4ct+pI66tducqJvXTGlXsnjKHaXMfFlW0JtMW7Kqw1cPvgR?= =?us-ascii?Q?TJmIij/IRRfvZ6XQ1yx+1JIsi0a/ukdrX/upog57FCEIjbF4CKBWvFvONNRr?= =?us-ascii?Q?V4Opi9tV3g+vC4HkkBUwRhLhOL9whV4HDkSKFekHHTENaPuggmSgPDbZ0djA?= =?us-ascii?Q?9mB+dbqch9AGfFyp4yFzcxT54x44jPA=3D?= X-Exchange-RoutingPolicyChecked: KW4bZa/yGl1igfuziRppRitguFgCvzyhyeGgmaKtjfgtZi0Zp1Fw5KPGHhotTcqPJMLrPkZv4kz8FDv9gvCY5Ku3KnweIX3d3bih9+0u6mF9j19RKl7m4wQIL5hIAHdibvXojRmD127QR/POYX2NakdsFHhmrm24ymAM6Pf5q5X5I6DsxV73b4gLjIwOAd+8z6tD4ZD8t95ReHP1ttjkMdVdFaHaWQTevwslxoMqmqSAIqbwA1w7p1dt3Kb2H2ALku/CxicePY6X040B9HWQDhGFa1Z0QvSLToHxnOhBryizh7DX3TKkArCQsfY5NMLj7GS5mzETsTXm+sRB0s3pvw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: T9FwYgOmvpyr+YS31StgnOkH1qKkx/+eLoCpEX8wrxZcxZfgorZg1zph1WDu/54ay7THQE+D5mU9ockuceqgcdXd9CS+t3fsWtYLvxqgcIwJ2hJAmgLFnPiI4jFnNup3her+U1HTG+RevVoGMLFKpAgsPflVBtiJXCx6GPRXLeUaY95/o4fPUA1KLm4VslOsRZqV7uLWZHSwK+OmfzXd8RF5am4q+3NHufE3BHePcaCh13k+rQ4dXWBhLDoI/4l1U0OPuntKVrt5usoYRPOIj7XGP6oqkIM86HZzbi+6PB51QRU+OrzCzIC7AWSHq0d5CjltliP/NauClzUppACSWX8hOPMfdF/YNC05fDlYJNgsXsn7+KLDKsPLFH8catEhpLuLoIWsJLB7mrTep3HubaWT4kyZi4qXFPue9MyBvoUaKHm+MJlpd4FG95Wsvo9x/5XxhygJQvVHaGil3y0vbQaInLrXWiMKveKTHhnVQQA1es9/mg8FKZDTDyh11nPoHsfGf5Xczs9R0M0tc5IdXuOMAfh1kIqBCPMGxwmcVTetgz51bUC9U1TDOVsEcp6E+2aKTCxGFp+i9n8NWeSrZ766xY+sxBtg+jJEvYLSu+U= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 502983ce-2478-4873-b9ce-08de841dbd1a X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:19.7373 (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: mwjpr3OGMGs1XHpI/1YNZ0arPRQwYO+Jm7mNT6qrdLaXnN/xk2HTgJUCj79BN0SdViVBzYee63/EYsl9ujLhKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxlogscore=999 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Authority-Analysis: v=2.4 cv=X5Vf6WTe c=1 sm=1 tr=0 ts=69b943fd 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=3I1J8UUJPc9JN9BFgKH3:22 a=yPCof4ZbAAAA:8 a=kTpkkXqb0D4BMuDiu54A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX+1FkyyFXs8Hf 9+uCKjmUjkrWvtKlqL4Hctc4hSWYLOyE8126yhgB+gNDMQvpv6D4RODLW16w8kYVJcQifM9FV0n rlrADqGPw8/XMbh7yiGoMRzj01tSD5tE8B/W/0HpRSVlKO1ZCa6+ekfoxD4a9w3cK5U/XgqcHmI 3NDfNGrgfWkWqSfZXg6FTO6F+cvdZzKUDK4W1fyPoU3NAhdhPMlABsLa8QC12+KZhNgcRc6Iiwl 26lkNCVcOnJzPut9WdAEPCh2898frMhzzZoSp1lFm5kDLA21mbIp+f+wAudiDPvaVsrFa3hLpLo hjXA54VjfOxZn6G6OkC96KyF6QqFOBZUD65o+RBpA6wK9RvHl1FaVXMKWTuGQYF7Rq8mFJwQ8qz z0GiIMQLmY1+6NI2smqBRq7A/3JVzBJzm5Z9yZPKewSCJoJfUTJWuBGCqesJBdKaqmn83sU+w2s THWmboQ/RpCMlFBdcfg== X-Proofpoint-GUID: lPGdBTugAML-Imnox4tMghNCCH2bzcyH X-Proofpoint-ORIG-GUID: lPGdBTugAML-Imnox4tMghNCCH2bzcyH Content-Type: text/plain; charset="utf-8" Add a dedicated ALUA driver which can be used for native SCSI multipath and also DH-based ALUA support. The core driver will provide ALUA support for when a scsi_device does not have a DH attachment. The core driver will provide functionality to handle RTPG and STPG, but the scsi DH ALUA driver will be responsible for driving these when DH attached. New structure alua_data holds all ALUA-related scsi_device info. Hannes Reinecke originally authored the kernel ALUA code. Signed-off-by: John Garry --- drivers/scsi/Kconfig | 10 +++- drivers/scsi/Makefile | 1 + drivers/scsi/device_handler/Kconfig | 1 + drivers/scsi/scsi.c | 7 +++ drivers/scsi/scsi_alua.c | 78 +++++++++++++++++++++++++++++ drivers/scsi/scsi_scan.c | 4 ++ drivers/scsi/scsi_sysfs.c | 3 ++ include/scsi/scsi_alua.h | 45 +++++++++++++++++ include/scsi/scsi_device.h | 1 + 9 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 drivers/scsi/scsi_alua.c create mode 100644 include/scsi/scsi_alua.h diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 19d0884479a24..396cc0fda9fcc 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig @@ -76,8 +76,16 @@ config SCSI_LIB_KUNIT_TEST =20 If unsure say N. =20 -comment "SCSI support type (disk, tape, CD-ROM)" +config SCSI_ALUA + tristate "SPC-3 ALUA support" depends on SCSI + help + SCSI support for generic SPC-3 Asymmetric Logical Unit + Access (ALUA). + + If unsure, say Y. + +comment "SCSI support type (disk, tape, CD-ROM)" =20 config BLK_DEV_SD tristate "SCSI disk support" diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile index 16de3e41f94c4..90c25f36ea3a8 100644 --- a/drivers/scsi/Makefile +++ b/drivers/scsi/Makefile @@ -153,6 +153,7 @@ obj-$(CONFIG_SCSI_ENCLOSURE) +=3D ses.o =20 obj-$(CONFIG_SCSI_HISI_SAS) +=3D hisi_sas/ =20 +obj-$(CONFIG_SCSI_ALUA) +=3D scsi_alua.o # This goes last, so that "real" scsi devices probe earlier obj-$(CONFIG_SCSI_DEBUG) +=3D scsi_debug.o scsi_mod-y +=3D scsi.o hosts.o scsi_ioctl.o \ diff --git a/drivers/scsi/device_handler/Kconfig b/drivers/scsi/device_hand= ler/Kconfig index 368eb94c24562..ff06aea8c272c 100644 --- a/drivers/scsi/device_handler/Kconfig +++ b/drivers/scsi/device_handler/Kconfig @@ -35,6 +35,7 @@ config SCSI_DH_EMC config SCSI_DH_ALUA tristate "SPC-3 ALUA Device Handler" depends on SCSI_DH && SCSI + select SCSI_ALUA help SCSI Device handler for generic SPC-3 Asymmetric Logical Unit Access (ALUA). diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index 76cdad063f7bc..fc90ee19bb962 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -58,6 +58,7 @@ #include =20 #include +#include #include #include #include @@ -1042,12 +1043,17 @@ static int __init init_scsi(void) error =3D scsi_sysfs_register(); if (error) goto cleanup_sysctl; + error =3D scsi_alua_init(); + if (error) + goto cleanup_sysfs; =20 scsi_netlink_init(); =20 printk(KERN_NOTICE "SCSI subsystem initialized\n"); return 0; =20 +cleanup_sysfs: + scsi_sysfs_unregister(); cleanup_sysctl: scsi_exit_sysctl(); cleanup_hosts: @@ -1066,6 +1072,7 @@ static int __init init_scsi(void) static void __exit exit_scsi(void) { scsi_netlink_exit(); + scsi_exit_alua(); scsi_sysfs_unregister(); scsi_exit_sysctl(); scsi_exit_hosts(); diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c new file mode 100644 index 0000000000000..a5a67c6deff17 --- /dev/null +++ b/drivers/scsi/scsi_alua.c @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Generic SCSI-3 ALUA SCSI driver + * + * Copyright (C) 2007-2010 Hannes Reinecke, SUSE Linux Products GmbH. + * All rights reserved. + */ + +#include +#include +#include +#include +#include + +#define DRV_NAME "alua" + +static struct workqueue_struct *kalua_wq; + +int scsi_alua_sdev_init(struct scsi_device *sdev) +{ + int rel_port, ret, tpgs; + + tpgs =3D scsi_device_tpgs(sdev); + if (!tpgs) + return 0; + + sdev->alua =3D kzalloc(sizeof(*sdev->alua), GFP_KERNEL); + if (!sdev->alua) + return -ENOMEM; + + sdev->alua->group_id =3D scsi_vpd_tpg_id(sdev, &rel_port); + sdev_printk(KERN_INFO, sdev, + "%s: group_id=3D%d\n", + DRV_NAME, sdev->alua->group_id); + if (sdev->alua->group_id < 0) { + /* + * Internal error; TPGS supported but required + * VPD identification descriptors not present. + * Disable ALUA support. + */ + sdev_printk(KERN_INFO, sdev, + "%s: No target port descriptors found\n", + __func__); + ret =3D -EIO; + goto out_free_data; + } + + sdev->alua->sdev =3D sdev; + sdev->alua->tpgs =3D tpgs; + + return 0; +out_free_data: + kfree(sdev->alua); + sdev->alua =3D NULL; + return ret; +} + +void scsi_alua_sdev_exit(struct scsi_device *sdev) +{ + kfree(sdev->alua); + sdev->alua =3D NULL; +} + +int scsi_alua_init(void) +{ + kalua_wq =3D alloc_workqueue("kalua", WQ_MEM_RECLAIM | WQ_PERCPU, 0); + if (!kalua_wq) + return -ENOMEM; + return 0; +} + +void scsi_exit_alua(void) +{ + destroy_workqueue(kalua_wq); +} + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("scsi_alua"); diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 2cfcf1f5d6a46..3af64d1231445 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -38,6 +38,7 @@ #include =20 #include +#include #include #include #include @@ -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_device_tpgs(sdev)) + scsi_alua_sdev_init(sdev); + /* * 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..6c4c3c22f6acf 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -16,6 +16,7 @@ #include =20 #include +#include #include #include #include @@ -480,6 +481,8 @@ static void scsi_device_dev_release(struct device *dev) =20 sbitmap_free(&sdev->budget_map); =20 + scsi_alua_sdev_exit(sdev); + mutex_lock(&sdev->inquiry_mutex); vpd_pg0 =3D rcu_replace_pointer(sdev->vpd_pg0, vpd_pg0, lockdep_is_held(&sdev->inquiry_mutex)); diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h new file mode 100644 index 0000000000000..07cdcb4f5b518 --- /dev/null +++ b/include/scsi/scsi_alua.h @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Generic SCSI-3 ALUA SCSI Device Handler + * + * Copyright (C) 2007-2010 Hannes Reinecke, SUSE Linux Products GmbH. + * All rights reserved. + */ +#ifndef _SCSI_ALUA_H +#define _SCSI_ALUA_H + +#include +#include + +#if IS_ENABLED(CONFIG_SCSI_ALUA) + +struct alua_data { + int group_id; + int tpgs; + struct scsi_device *sdev; +}; + +int scsi_alua_sdev_init(struct scsi_device *sdev); +void scsi_alua_sdev_exit(struct scsi_device *sdev); + +int scsi_alua_init(void); +void scsi_exit_alua(void); +#else //CONFIG_SCSI_ALUA + +static inline int scsi_alua_sdev_init(struct scsi_device *sdev) +{ + return 0; +} +static inline void scsi_alua_sdev_exit(struct scsi_device *sdev) +{ + +} +static inline int scsi_alua_init(void) +{ + return 0; +} +static inline void scsi_exit_alua(void) +{ +} +#endif // CONFIG_SCSI_ALUA +#endif // _SCSI_ALUA_H diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index d32f5841f4f85..c439e837dcaa6 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -295,6 +295,7 @@ struct scsi_device { struct mutex state_mutex; enum scsi_device_state sdev_state; struct task_struct *quiesced_by; + struct alua_data *alua; unsigned long sdev_data[]; } __attribute__((aligned(sizeof(unsigned long)))); =20 --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 467223BADAD; Tue, 17 Mar 2026 12:07:40 +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=1773749262; cv=fail; b=RpV7yeSiuau86sLuVpeYEHnbgpV1bhyJeifcMFf0Pu6DU6i/5ggXYiC522CxBOTjacbI4utE3M3cm8lW/yD0PbWiwxEYHzuT/pteGSIGYPrG8ezBb3Dmq0yrukoaYMOnt7yjK+5KQ37YCEPNn6yrw52kBcMj+L4CV4Aq7a6+zmA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749262; c=relaxed/simple; bh=jjg733pdKdwU4E3bWjw8hTcBBX24/Vih1U5KfajxUa4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qe6ZFAUB1FjtVCw6tcXXW5l3n7TpKpSsyepWejocueW8mFgCRi0etKnGpKXY2BcejRjVO+aRAeOp6jcxCato6KUzwE2iD4wxPPaHJoHkWjWo7k/D+1sD/Ht9PBTvPaXBNeIKxCKwWMK9rX+zsw/tp/6825xJNFwfRaRqddmvqXo= 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=Ib7SAAUQ; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=QoMDbPSl; 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="Ib7SAAUQ"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="QoMDbPSl" 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 62H0SZMO1866514; Tue, 17 Mar 2026 12:07: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=YTAMdThFVTR5pU87bw28qo/VXc69LX23iEAJFqlzwic=; b= Ib7SAAUQ8Lr8TTeBoRQont/7F5gkceIuT1LrAdMDzFp1UStNDC5kIMOUhiguLESV RKW4AGZLVI5lYIgAGRsaVmD6Fw72ZKTmAUxMCW+uqy8w15xm1LHyd/axHnSnv49R 6vW9sSEePn85vmM3kCfzPHXDNp410yi6/C8ZMUd23U6HFT2KDi9/bd/AT5jRaJT0 eKj/rfKQy8Gri0rOT4JTsb/tb5UHEWCtKXFowO+xVPqfrFXJLh/0HgVH471WEdUO 1VpP3/4+8JO7KLZcINYjw7SePf24kGDiqPhdYUqEILm3mBMdNF498xcASjCU6uFG qIw/BqLFve3Jy4PUfglZwQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvxf43y76-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:25 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HBaXS8003335; Tue, 17 Mar 2026 12:07:24 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011066.outbound.protection.outlook.com [52.101.57.66]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4a0198-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sXHf0zI/uHmi1jPoBiVORmGVVElgo32AVD2rYfTrboVV88CUI7aUaQ3jWOFmSnmypjKhhDotU1h9ECcbw+JFDjAsG0yDmFSpWSlMI3A2T8Y1ZiMKZUZKsZXIIPc49QxaBzB+hA6QkyG/t532cnt9rgwdpotI5R4USCl/cUPdEAXCzYz17UOvXm4K2iP5LnwJOnpYzI0K8KuwVcfPW9FIx+Imotr/QcXAdNxKo5fLm+IPoldZvQHqFcsWH+mMl4Vjbk0KBtYb1Ib//6bl+r4fkDxAHAjInVM0rl23Ys2aUbAxHi4pX1N0jJ5OXrnbu3VpRxdb9uDrmbHipk0kyROyRQ== 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=YTAMdThFVTR5pU87bw28qo/VXc69LX23iEAJFqlzwic=; b=uHYPEl3wKyP9NiFJoV4vf/JqgXufYoFN5i4enb5CoekhVLQpWmDkOZsMTQRvT7Vpkmso+Mz3pmeNM+hhjR7X0nprTXbsO7TzCxrBgxEHiKbq7c8vH4LsIrOZTJEGzv/vhr9eF28B74UzlxlHBBv5k9OW1Iklk27qFljG3aDw5boS0fz4xIyVYHtZNUSFtp1I7Ojkv/bgy20maWUwDAcNFzPamxUpl4ZEzYGbCUyvN1syWdcYtlckpJe1semoc6vUY4aBoCLlxBgmRn2GcL/Ty92gU1bzYXfbmZxXXvEAganZyMIMQNO6PBQSuq1OzQLQCygZ6dp3NPi0aoK1X/co6A== 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=YTAMdThFVTR5pU87bw28qo/VXc69LX23iEAJFqlzwic=; b=QoMDbPSlIZDAc3vNHHy4xR1itAbDfb3dvV/z3UBc2rHs3GTGb+lRwHjddtR2abVeQJZzSamKTeyeu7kw0yYXJGEb03UkdmAp6a2FZO5FQsA1IV6oOdC7XPyV93xCcoJfYkJhUcK+AplFehEfEzv0LEkbOH9oi2cR6dyPA609SaM= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:22 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:21 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 03/13] scsi: alua: Add scsi_alua_rtpg() Date: Tue, 17 Mar 2026 12:06:53 +0000 Message-ID: <20260317120703.3702387-4-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR03CA0022.namprd03.prod.outlook.com (2603:10b6:510:339::6) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 0459dc3a-dad2-4ca6-afa9-08de841dbe67 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: kT2bIEW+VUeXXJ/xiIx8h1ysMqLmBFTuhapC0cvPOsby1+pifjQd6jpek0KteK8TSbTTfJ0sfhf9m4yBjJOQ8Rh/9uLy440PWubam25F3EVdExeAWP5BEojnE8OV79FE4f4WDhvK1WVZvDoB46XnP4KEMTtOGf5pYBgH9enNkwt2I//PiDz1m9bPwI8M48M5oq3qZoVrLZH5bU25jE18jI3dVTlohm2/ekvowoNdkQKTIbvby/dswyrRzdFnPdk1++bXsRefzcvRBzzHR35nlZhz/wi6sJyNaxYVcjwdg1bZy3s/26dMFZa90UHxSO0F4NDT7ARO2yeAxsHgrwuojsHenDAvrHquuvGdbePt9lbYzYycQMme9DUi4GE5r/kreEv1vdyZHTggtZQSbRcJyToZkO9O++yp6cQX7MFLiRUs6Cqnt2GHO3BG9EaxcdhYkATZJRX0eDPbQQHBDM6f9ecIerc6oQ3kjqJkmBIDoEtXBei8wz8M/FwV+FuHNJ2wDgiyW3Zo5h9IhlBCzzBnbA5VYYSdh5a9AxuOksG8FVciItvcV84bKmiNwCg8Vt7buNW5r4RbTGeBpJ7A4qh2bjlzPgHcViQJSSLUYD/djlnevEWDQK8FP/cGnNaqlxAJNPJ25Q46xfOAC4FPgCrYm1tBvS6u025rrGls9CQgQeZVmfYTP/SHsjYXsfMkatUobnyWkvLSSQvKWZl5pPfuXSD4VG8qJyyElEqMwT2dPW4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?NDy4He2rBdsBTtok2odT8Rb727rMxgj9ln50S0n3BJGT/9bnVKSaOs0rOygp?= =?us-ascii?Q?rr70Z3+0RRb21jeE5h1WBLioEdk/G6BytwhjUIWj6ahnHOWnCCA6y5GTXq73?= =?us-ascii?Q?zTbL3m3ORISbgzjaKK/MzaW15ZK3I9Kgwpz8nGFJMGTHKR5p38jSX4sHlRPF?= =?us-ascii?Q?a6X505JGT6S8WRWFQTQJpnPXisB9DWDVGOL2HjAqa3TmOLOR5MFdKoHYAWl1?= =?us-ascii?Q?kCUPBpy/+d7VO8x+0uK8S4Gu8T16xmzhVPD1jqRKahxQpiEZ2SVKjkkf70q5?= =?us-ascii?Q?C2ereu7wCPcvm40LMxVLqqkBMzloljIOuRzW0VTBZBHpXzB8w11SwCRkj69l?= =?us-ascii?Q?PnzrCDYTFOTEy5quOSACxrIpp02wgntuQd6hWFmIJvpXl6zXU9xjNXcH6h/F?= =?us-ascii?Q?p7EcFP+9tDttX/NQhQUheVX7sEPkgFOIo00o51x0ZbacGSUVhhjAX0tbSeyd?= =?us-ascii?Q?cMyIDJFq28yd5KroTjP3eDRqwYSY03HQNCJ2gUOgTqKgdC3HjJz+eErN3/iN?= =?us-ascii?Q?ccEI6SXA5VymKmrZYYtKL9HW3x3sZLcQlOq3aRUOiKQDau1ZC5x5NpVlDwzZ?= =?us-ascii?Q?vg3wQNyYUXV8IomeFa2RTH7x1EaLm1MPu/YqM9b6v3UTXHtqSjFF847djKpg?= =?us-ascii?Q?1Oy9cwx8fhtqG8673l9LZ4aJxji4tMrD0lvXhwddd2Ov82eNIFxQzlujj9na?= =?us-ascii?Q?kPSoPk3nguDQaqF0OUKPr4+yL0Wcn/o01dZqiIdH2rxRu2+vGhiQRts1h9mB?= =?us-ascii?Q?RIsDRe10YCLiXctobvHqmylL3bIriVY4e0cZ87doXwMHWZTfJIiHTNzP1Pcq?= =?us-ascii?Q?6Q2kUSgsb5jPZ+lEeHLrZaHp7yLem/myNH7cjbAmjILcjxsX5Cn8VO6f1r3D?= =?us-ascii?Q?SXiqhmm7W73ozT9Ng9V/IAV07Z8vYPJPcP9SkI9fITC++5B/oewwF1zIsS4e?= =?us-ascii?Q?Yn9pukb/bQ3egmgKrcqZqOEOJT/YWD/JZWUg3dCMaWUCrdDioYkMyHUUM8Lp?= =?us-ascii?Q?dRuLWM3BcaSsWHwMavKUCT8r1jog6YYX/u0mxe1aWpHZ04sWo9gGq/NapaT+?= =?us-ascii?Q?uQx96ezl6majiSVgPO2nJJpM49H/5Q3JZKuramiNVM+CRsBZl0YBzbgFXvaV?= =?us-ascii?Q?A2jirMOXxqILs61YEuGnE7vs8BLQTxw6MR6RgiN7rzGc3DVuOf14WtCkznRz?= =?us-ascii?Q?Xe0kj+h//AKKVtlWB5Dc5IGDE31KbxI+3C2SBoTJbMtWVmZdFBUemPNK1Kg8?= =?us-ascii?Q?3tPsMgMTmjXnOKGllYi0CuAp4jv79+XNrp/7yhuPkBvUuro2FK1uzGv17/O5?= =?us-ascii?Q?PO+IeJFR+eazQELijaGRFPf7xXQ7h+1mTZBIqQo6Orj7lUG6fnl5XPwH9N+I?= =?us-ascii?Q?TooGfVHtiQXcT+XhHl6nlxmT3PSh8BuPLIM7l3Xh9yx/do0yEdNWkpebRPjJ?= =?us-ascii?Q?RkN+7YLAurJwR5Eds+tuRs5qzB8xWl4tSZ48K2++QmqrtTYvvT2aEkWOVWW/?= =?us-ascii?Q?NG7vAOwq91aY31sp00+6YKOB9TdkWR5aXk3uGsX3NWYsT49lNB36Lksj/wJ8?= =?us-ascii?Q?ixPsbK3wNwnzjO+MWBpkzBrvJJLBN86VJDzoFOJiymYYrCcn0g7nXcVS2+3S?= =?us-ascii?Q?HOiwMsPh3IPhDZLrbBFSPiYORHTEjyBXg6QepmLQQFlmp56JgA1xXullwA9g?= =?us-ascii?Q?yqjsDG0r36dUVXqwd1Xh2fmLMu32J71uu0jA+GPF1WuehAMUKpI/HF3buNJ8?= =?us-ascii?Q?MDrB3nzIbW6wHx3DKiN0yaTRHJcrpWo=3D?= X-Exchange-RoutingPolicyChecked: CdoDJ1vRDzPzltaZCRjpsfi8uizx78n9k1jjROCepCBUiLm5w4T01hgL73ncOdkuayYDk7YMWg3SeSaLUfP9sF9W5bwDHL6I+rJIx0H/ZXblpmnSH7Xns9BD64bg5q92SqihTyMNQ3F/Gu2KERNDl3RnRpfpkqMlalXKug5xAsWK3m6Y16ko6xb2WamVXJr1mplUw6FpFLp4jNA3Umlefs3RREAZtKOPfZ2RI88J40wkt+jkjsUrugTS6if099AP9nD6Bt5uUihrKzgXH1jnF0DU9oX0TM4DOnGMEfuL2cprYoZKk2g5by5y4cSewg9NSTt+iR95c8na+XjEOCxPEw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6mFhkA8alxCfwFIWuEqA8WPxGS8L5lcacxHGPruQVItDXgKeu9umAAlbfcwd4hSkMeab2vQ2gkc77kBgDhpo1lf/avGeWeTDMDGYyroIhWmf7mCQQLEydkT1k3dA1WjiN3htQdCoYwkGSo82rmzQ+Bv+PMm7XJTk5aOQGe7VsmT7PThZntKwWvH6GXzND5CzBtFiUv07C2KPOxXOvaSGCnnS/XnSYnhIGh7f1UMbb1fluywnALRITWtKOvEicQm/b+TAWI43AW2mTnkmTv3Lc+BVclN9XBIhtRevstdSh22WkbWOLDG2kMuJUAOSnbS7O6lQmnOGWzo4uCXY032h56nGL7ctjQNOvM6pqAZtMh5lgNvcT4uZgnuX8gG/PwLcpcFgF8+NwsT4V0GMSuCtWn3zUzfBCos5gE2VF4cp2tWdHyuIZPj0SdP/D6GFDeJFqDFRWHxUI4Bc75vpUgv5D7poKd6nZCAxYAjFZvVijcJyQ7+X3ol2L1978aVArfNKqq61F4iTQtKOHyUTvQTlHiiS9BQ3wLDRHWNMKoM5UrINLG3FSWcG5c3zAB3dz47NkZti3Rb3O4Hgbkq5xtPH1Z4YrecNrhaxvweL0JD0yko= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0459dc3a-dad2-4ca6-afa9-08de841dbe67 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:21.8487 (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: kXeMO0Mu9Qo+G2d1oQgfFM6cPKQr8jS+G/XKYOSNMUHySgONoElwBLiBWqbhOvrYogtVasxytq1MB0ogK0sSug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxlogscore=999 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Authority-Analysis: v=2.4 cv=ftrRpV4f c=1 sm=1 tr=0 ts=69b943fd 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=o5oIOnhZENCTenyL_yNV:22 a=yPCof4ZbAAAA:8 a=8xFE9Y0xszT7Za3-YHcA:9 X-Proofpoint-GUID: BrDGQ3Z6vlN1et53BZq8q837CKZlUd97 X-Proofpoint-ORIG-GUID: BrDGQ3Z6vlN1et53BZq8q837CKZlUd97 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfXyoCT+TMhQMiF by8XfB8eOF0dE99KSnnyMlOnY4MMnlwHbIxOWxGteFR1ZEfnGmd6e2jZKDIvIUXjW/tP7J2vXk1 1f3F4CtdCLPMER+6hHHxgPtPnTrOOIaN+2ngpFYpujuk9r9dy8AueliXyl5H33ai+gBzM6OP/5S 5VOAoB8FIJ7QisE6Kpm9A0pUYmJXOLF/s/29e1j5q/T0YZY6WuKZPwWoKwLslc9YxiAHDuWdAcF nrJSvT49DbinqNOT7MYrA6GSvcd9kx3bzjSNG41DNNY6ofTYQ1Px7nzWhB0ZHyE9QtsDB43oBgd 86xbf0vPGJm9Q9vMhkFAxpbZGdRoUXwj17nJZejLe/LgkFDrExcbQqCSbUgC1nPqo8YOqymhCEv 6+0x8CHxwbZxyeM/1nRgpEpt8a0LVfzUnAYXMlrZc/slZ+zQNTD/W0hb1p3aACWZKiMQgl6kuyT y83xEmSsVDKmlxnAY2A== Content-Type: text/plain; charset="utf-8" Add scsi_alua_rtpg(), which does the same as alua_rtpg() from scsi_dh_alua.c Members of the per-sdev alua_data structure are updated from same in alua_dh_data. Signed-off-by: John Garry Reviewed-by: Hannes Reinecke --- drivers/scsi/scsi_alua.c | 311 +++++++++++++++++++++++++++++++++++++++ include/scsi/scsi_alua.h | 8 + 2 files changed, 319 insertions(+) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index a5a67c6deff17..50c1d17b52dc7 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -6,6 +6,8 @@ * All rights reserved. */ =20 +#include + #include #include #include @@ -16,6 +18,314 @@ =20 static struct workqueue_struct *kalua_wq; =20 +#define TPGS_SUPPORT_NONE 0x00 +#define TPGS_SUPPORT_OPTIMIZED 0x01 +#define TPGS_SUPPORT_NONOPTIMIZED 0x02 +#define TPGS_SUPPORT_STANDBY 0x04 +#define TPGS_SUPPORT_UNAVAILABLE 0x08 +#define TPGS_SUPPORT_LBA_DEPENDENT 0x10 +#define TPGS_SUPPORT_OFFLINE 0x40 +#define TPGS_SUPPORT_TRANSITION 0x80 +#define TPGS_SUPPORT_ALL 0xdf + +#define RTPG_FMT_MASK 0x70 +#define RTPG_FMT_EXT_HDR 0x10 + +#define ALUA_RTPG_SIZE 128 +#define ALUA_FAILOVER_TIMEOUT 60 +#define ALUA_FAILOVER_RETRIES 5 +#define ALUA_RTPG_DELAY_MSECS 5 +#define ALUA_RTPG_RETRY_DELAY 2 + +/* + * submit_rtpg - Issue a REPORT TARGET GROUP STATES command + * @sdev: sdev the command should be sent to + */ +static int submit_rtpg(struct scsi_device *sdev, unsigned char *buff, + int bufflen, struct scsi_sense_hdr *sshdr) +{ + u8 cdb[MAX_COMMAND_SIZE]; + blk_opf_t opf =3D REQ_OP_DRV_IN | REQ_FAILFAST_DEV | + REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER; + const struct scsi_exec_args exec_args =3D { + .sshdr =3D sshdr, + }; + + /* Prepare the command. */ + memset(cdb, 0x0, MAX_COMMAND_SIZE); + cdb[0] =3D MAINTENANCE_IN; + if (!sdev->alua->rtpg_ext_hdr_unsupp) + cdb[1] =3D MI_REPORT_TARGET_PGS | MI_EXT_HDR_PARAM_FMT; + else + cdb[1] =3D MI_REPORT_TARGET_PGS; + put_unaligned_be32(bufflen, &cdb[6]); + + return scsi_execute_cmd(sdev, cdb, opf, buff, bufflen, + ALUA_FAILOVER_TIMEOUT * HZ, + ALUA_FAILOVER_RETRIES, &exec_args); +} + +static char print_alua_state(unsigned char state) +{ + switch (state) { + case SCSI_ACCESS_STATE_OPTIMAL: + return 'A'; + case SCSI_ACCESS_STATE_ACTIVE: + return 'N'; + case SCSI_ACCESS_STATE_STANDBY: + return 'S'; + case SCSI_ACCESS_STATE_UNAVAILABLE: + return 'U'; + case SCSI_ACCESS_STATE_LBA: + return 'L'; + case SCSI_ACCESS_STATE_OFFLINE: + return 'O'; + case SCSI_ACCESS_STATE_TRANSITIONING: + return 'T'; + default: + return 'X'; + } +} + +/* + * scsi_alua_rtpg - Evaluate REPORT TARGET GROUP STATES + * @sdev: the device to be evaluated. + * + * Evaluate the Target Port Group State. + * Returns -ENODEV if the path is + * found to be unusable. + */ +__maybe_unused +static int scsi_alua_rtpg(struct scsi_device *sdev) +{ + struct alua_data *alua =3D sdev->alua; + struct scsi_sense_hdr sense_hdr; + int len, k, off, bufflen =3D ALUA_RTPG_SIZE; + int group_id_old, state_old, pref_old, valid_states_old; + unsigned char *desc, *buff; + unsigned err; + int retval; + unsigned int tpg_desc_tbl_off; + unsigned char orig_transition_tmo; + unsigned long flags; + bool transitioning_sense =3D false; + int rel_port, group_id =3D scsi_vpd_tpg_id(sdev, &rel_port); + + if (group_id < 0) { + /* + * Internal error; TPGS supported but required + * VPD identification descriptors not present. + * Disable ALUA support + */ + sdev_printk(KERN_INFO, sdev, + "%s: No target port descriptors found\n", + DRV_NAME); + return -EOPNOTSUPP; //SCSI_DH_DEV_UNSUPP; + } + + group_id_old =3D alua->group_id; + state_old =3D alua->state; + pref_old =3D alua->pref; + valid_states_old =3D alua->valid_states; + + if (!alua->expiry) { + unsigned long transition_tmo =3D ALUA_FAILOVER_TIMEOUT * HZ; + + if (alua->transition_tmo) + transition_tmo =3D alua->transition_tmo * HZ; + + alua->expiry =3D round_jiffies_up(jiffies + transition_tmo); + } + + buff =3D kzalloc(bufflen, GFP_KERNEL); + if (!buff) + return -ENOMEM; + + retry: + err =3D 0; + retval =3D submit_rtpg(sdev, buff, bufflen, &sense_hdr); + + if (retval) { + /* + * Some (broken) implementations have a habit of returning + * an error during things like firmware update etc. + * But if the target only supports active/optimized there's + * not much we can do; it's not that we can switch paths + * or anything. + * So ignore any errors to avoid spurious failures during + * path failover. + */ + if ((alua->valid_states & ~TPGS_SUPPORT_OPTIMIZED) =3D=3D 0) { + sdev_printk(KERN_INFO, sdev, + "%s: ignoring rtpg result %d\n", + DRV_NAME, retval); + kfree(buff); + return 0;//SCSI_DH_OK + } + if (retval < 0 || !scsi_sense_valid(&sense_hdr)) { + sdev_printk(KERN_INFO, sdev, + "%s: rtpg failed, result %d\n", + DRV_NAME, retval); + kfree(buff); + if (retval < 0) + return -EBUSY;//SCSI_DH_DEV_TEMP_BUSY; + if (host_byte(retval) =3D=3D DID_NO_CONNECT) + return -ENOENT;//SCSI_DH_RES_TEMP_UNAVAIL; + return -EIO;//SCSI_DH_IO + } + + /* + * submit_rtpg() has failed on existing arrays + * when requesting extended header info, and + * the array doesn't support extended headers, + * even though it shouldn't according to T10. + * The retry without rtpg_ext_hdr_req set + * handles this. + * Note: some arrays return a sense key of ILLEGAL_REQUEST + * with ASC 00h if they don't support the extended header. + */ + if (!alua->rtpg_ext_hdr_unsupp && + sense_hdr.sense_key =3D=3D ILLEGAL_REQUEST) { + alua->rtpg_ext_hdr_unsupp =3D true; + goto retry; + } + /* + * If the array returns with 'ALUA state transition' + * sense code here it cannot return RTPG data during + * transition. So set the state to 'transitioning' directly. + */ + if (sense_hdr.sense_key =3D=3D NOT_READY && + sense_hdr.asc =3D=3D 0x04 && sense_hdr.ascq =3D=3D 0x0a) { + transitioning_sense =3D true; + goto skip_rtpg; + } + /* + * Retry on any other UNIT ATTENTION occurred. + */ + if (sense_hdr.sense_key =3D=3D UNIT_ATTENTION) + err =3D -EAGAIN;//SCSI_DH_RETRY + if (err =3D=3D -EAGAIN && + alua->expiry !=3D 0 && time_before(jiffies, alua->expiry)) { + sdev_printk(KERN_ERR, sdev, "%s: rtpg retry\n", + DRV_NAME); + scsi_print_sense_hdr(sdev, DRV_NAME, &sense_hdr); + kfree(buff); + return err; + } + sdev_printk(KERN_ERR, sdev, "%s: rtpg failed\n", + DRV_NAME); + scsi_print_sense_hdr(sdev, DRV_NAME, &sense_hdr); + kfree(buff); + alua->expiry =3D 0; + return -EIO;//SCSI_DH_IO + } + + len =3D get_unaligned_be32(&buff[0]) + 4; + + if (len > bufflen) { + /* Resubmit with the correct length */ + kfree(buff); + bufflen =3D len; + buff =3D kmalloc(bufflen, GFP_KERNEL); + if (!buff) { + sdev_printk(KERN_WARNING, sdev, + "%s: kmalloc buffer failed\n",__func__); + /* Temporary failure, bypass */ + alua->expiry =3D 0; + return -EBUSY;//SCSI_DH_DEV_TEMP_BUSY; + } + goto retry; + } + + orig_transition_tmo =3D alua->transition_tmo; + if ((buff[4] & RTPG_FMT_MASK) =3D=3D RTPG_FMT_EXT_HDR && buff[5] !=3D 0) + alua->transition_tmo =3D buff[5]; + else + alua->transition_tmo =3D ALUA_FAILOVER_TIMEOUT; + + if (orig_transition_tmo !=3D alua->transition_tmo) { + sdev_printk(KERN_INFO, sdev, + "%s: transition timeout set to %d seconds\n", + DRV_NAME, alua->transition_tmo); + alua->expiry =3D jiffies + alua->transition_tmo * HZ; + } + + if ((buff[4] & RTPG_FMT_MASK) =3D=3D RTPG_FMT_EXT_HDR) + tpg_desc_tbl_off =3D 8; + else + tpg_desc_tbl_off =3D 4; + + for (k =3D tpg_desc_tbl_off, desc =3D buff + tpg_desc_tbl_off; + k < len; + k +=3D off, desc +=3D off) { + u16 group_id_desc =3D get_unaligned_be16(&desc[2]); + + spin_lock_irqsave(&alua->lock, flags); + if (group_id_desc =3D=3D group_id) { + alua->group_id =3D group_id; + WRITE_ONCE(alua->state, desc[0] & 0x0f); + alua->pref =3D desc[0] >> 7; + WRITE_ONCE(sdev->access_state, desc[0]); + alua->valid_states =3D desc[1]; + } + spin_unlock_irqrestore(&alua->lock, flags); + off =3D 8 + (desc[7] * 4); + } + + skip_rtpg: + spin_lock_irqsave(&alua->lock, flags); + if (transitioning_sense) + alua->state =3D SCSI_ACCESS_STATE_TRANSITIONING; + + if (group_id_old !=3D alua->group_id || state_old !=3D alua->state || + pref_old !=3D alua->pref || valid_states_old !=3D alua->valid_states) + sdev_printk(KERN_INFO, sdev, + "%s: port group %02x state %c %s supports %c%c%c%c%c%c%c\n", + DRV_NAME, alua->group_id, print_alua_state(alua->state), + alua->pref ? "preferred" : "non-preferred", + alua->valid_states&TPGS_SUPPORT_TRANSITION?'T':'t', + alua->valid_states&TPGS_SUPPORT_OFFLINE?'O':'o', + alua->valid_states&TPGS_SUPPORT_LBA_DEPENDENT?'L':'l', + alua->valid_states&TPGS_SUPPORT_UNAVAILABLE?'U':'u', + alua->valid_states&TPGS_SUPPORT_STANDBY?'S':'s', + alua->valid_states&TPGS_SUPPORT_NONOPTIMIZED?'N':'n', + alua->valid_states&TPGS_SUPPORT_OPTIMIZED?'A':'a'); + + switch (alua->state) { + case SCSI_ACCESS_STATE_TRANSITIONING: + if (time_before(jiffies, alua->expiry)) { + /* State transition, retry */ + alua->interval =3D ALUA_RTPG_RETRY_DELAY; + err =3D -EAGAIN;//SCSI_DH_RETRY + } else { + unsigned char access_state; + + /* Transitioning time exceeded, set port to standby */ + err =3D -EIO;//SCSI_DH_IO; + alua->state =3D SCSI_ACCESS_STATE_STANDBY; + alua->expiry =3D 0; + access_state =3D alua->state & SCSI_ACCESS_STATE_MASK; + if (alua->pref) + access_state |=3D SCSI_ACCESS_STATE_PREFERRED; + WRITE_ONCE(sdev->access_state, access_state); + } + break; + case SCSI_ACCESS_STATE_OFFLINE: + /* Path unusable */ + err =3D -ENODEV;//SCSI_DH_DEV_OFFLINED; + alua->expiry =3D 0; + break; + default: + /* Useable path if active */ + err =3D 0;//SCSI_DH_OK + alua->expiry =3D 0; + break; + } + spin_unlock_irqrestore(&alua->lock, flags); + kfree(buff); + return err; +} + int scsi_alua_sdev_init(struct scsi_device *sdev) { int rel_port, ret, tpgs; @@ -47,6 +357,7 @@ int scsi_alua_sdev_init(struct scsi_device *sdev) =20 sdev->alua->sdev =3D sdev; sdev->alua->tpgs =3D tpgs; + spin_lock_init(&sdev->alua->lock); =20 return 0; out_free_data: diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index 07cdcb4f5b518..068277261ed9d 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -16,7 +16,15 @@ struct alua_data { int group_id; int tpgs; + int state; + int pref; + int valid_states; + bool rtpg_ext_hdr_unsupp; + unsigned char transition_tmo; + unsigned long expiry; + unsigned long interval; struct scsi_device *sdev; + spinlock_t lock; }; =20 int scsi_alua_sdev_init(struct scsi_device *sdev); --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 C46F43BB9EC; Tue, 17 Mar 2026 12:07:40 +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=1773749263; cv=fail; b=TRRz5iWtJ6ikcgmSJPxybGVqdW1mC51VTl7ZbvyD4TliPK64yUtNDot5FqaaK5h+fr04aim74MAdyU1CU1b9X+rx7Kmrj4SRVT+c2yhSkTq5VdLtTp5pinZsTrmgVG1wJr7AVY8VxafZabUIlQ66o1JIlIfOtVvot9+vLCSBJUU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749263; c=relaxed/simple; bh=dmnO8KPE5l+jUZsgvli3jrP3FZzrd54IG6vpnuv+tu8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=e/hX9nsoNJ1lWWsiy9UjhdQFCH9lGvfMGbS7bhFP2Kv9VbkKPp70hFm0ZKb/cfWUwB4kL1BClkwCyVHKYQpPsnN7gvU2SOPNZ+r9DmvFzFESkP+M0CKlaj3iYzFspFYZevSOmM+yIhy94Rd6GkK6Ri2sK6NVVsZP25AzprrOSpY= 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=egBB3eu7; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=DMhMh+wV; 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="egBB3eu7"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="DMhMh+wV" 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 62GNp6Ri1338917; Tue, 17 Mar 2026 12:07:27 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=U7Fk0noflicseDIIY0B05/u91wrEnrK/qP+8PpTuvZw=; b= egBB3eu7oe1VyJubnWzoucme126T8jePEK63+xiVFEBkBuH0Pj+4J8ciWPTz73V/ 8R3JtlmnLEgryXgLWf6MBXSxEQ67SyhnzgSW34TZQ2PubTMCEKWmgfmJ7EkujT7J Ml7p0uR97SJ623V1K7VODC4Nb/fXiryHQvxx7bjandpGym+5XTzrU69iBLUg4zdY PpUVfzv4Dk9o3fCjwJbQDwl/KLXLLs0nTZIhvyO+qarDHnmN7iGkRMpxki2Dn6nG I47ePCnvb5ADydaixrjeH25pzJCMO76zEBH8VOHVgoneFFRRTPb/+8oMa7RYDPTt vg9XIsHxHzJfhKExc8GvCA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvx3b3xhd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:27 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HBwS4g002825; Tue, 17 Mar 2026 12:07:26 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011037.outbound.protection.outlook.com [52.101.57.37]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4m7tgq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g1PbyBZxd2Pmk1usKJw0MMLfdKmqhHlWPCz+Ts93LA2kUdglRsjWUUQDy5wkf1KpWnc5em0mlR5WsLfDuoVhAm1hSX6fGDB7CIR3/6ln3W0iX+1XsOQ8XIRZtEH4omdD4GzVLwYkIUlLtsxcyHk8rxikqRf8wqfZohYFSc4nFlqkQDK67kqdyQIyMIdC9MsAdu/NUCkzq+GGACGQaJWbKbD23u9S3G56ZwzNtnL/o7cvLw3h7R23yU3Wq+FZqxuNxrvNSx/SMArZG2uHdWTudw/mViJkq43aJjyONnGxm9Pyu82eCb1SPYrBPyCjjRCUbgDJpIfsJEAcCq4HaJxbpg== 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=U7Fk0noflicseDIIY0B05/u91wrEnrK/qP+8PpTuvZw=; b=IW+qCqCldh8RT7UfrQQK3Wjwm4yRiOyG8Vt7n4XCuXkTLdeb4g3Ii18FuA2Vf6oKKGXXSePLeAnw1jtLBrKGKwHu72QHriJ+zzygBLT6/A5HQdE0VspZ2Y5eLy946AYhMJLvzmtDDkgEnYLD71eskKWZtgQR+DAn+9yapiHdO9nrmhaEyccNCfHX44eb6D4bTZe4kV0f7blSSMLsIKQBnaylpHBRxIm7JC9W8RabuOEZJGWaL2bZnzSv8qdU4VGTCtBDPgjShDIW8DU6J3fTN/Rbu56gPf2uMWoLiUwkQg7biTwXwV0rhXu+XH+ffs4cyvGPKYdSyreP4DDsPVKtkQ== 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=U7Fk0noflicseDIIY0B05/u91wrEnrK/qP+8PpTuvZw=; b=DMhMh+wV6Va8XbYrCcJmHIyR7EzcdWqOLRA/OqDE/bfg1IHxMoxCtt7bb6sJy/+1+ShGFuCIw2F/WyWeRQCVsKD0zeojXISx9PHPHTNqzO1+HvBmGO0HRIkt/jzaAK9TIHTbSlXsbfLsEAkYuVAWh1Eqyp2bBoX+Wm2SU9Ti8rw= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:24 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:24 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 04/13] scsi: alua: Add scsi_alua_stpg() Date: Tue, 17 Mar 2026 12:06:54 +0000 Message-ID: <20260317120703.3702387-5-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0151.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:33b::11) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 861ef62f-842a-452e-8905-08de841dbfb2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: M3iqijtN13ka6Sc5O1pYP/GPNAWvV7oyxAyMz5tOk4lotrKW4JYPrBzoDcmpi4ewf1kHK1uKoGdS8kjJxVGWHtSsdQnDBzIKX27xL+HW+zG6TUf4ZprpSDTO4kgcqEmHWesOOUvEVTFhNyyNFgmSUwSm5UAsr3NxyJf1hHuufetDhfcLoP73slzi0L6cdqOB+vtJff6KNeIGu5FCZvIbZKueAvAeHRHF8DJYlYEnOQcn56Ni4FJ9SYy3egI3lA8mlvGVQHRQ5MU13kvCiMlaBKsmD7PWi0JZUP5ORGVuR4lh1gtLEMt/KplhBVay8uRjCekC5cFdTSz+z3psJOscZtUr0rqphB7iaZVHLQpQtkzDNxipg56m0dFXBemk4JYPihOE+oSMQtT0GsGcldCZoXHfefQ44dC9lAUoOXoublfNG0NKw3sa9u5kOzWHR6XSUZ+tpT0R03H/G5sJWtipZ3mio0l3Hq3eftR7C0wvMyjk3sWhaY1XfjiUQvNCQ55AYcGPcyXTUDBEAAh0qJUQfgzRFB5BKbJNEnJN1v+AgheW2Q3HsciA1ywIJaafjFB72bjtHPq0omcvn4zLdJ+++lk2/PyT+k99+mQZb7J7uzIU9tgtiT2cC5c+HiMupBIEWpdr4FjJuM6NisAqv3oBp1yWIX7hVLVo6YvfQDrnu1kh2a4RdXMQ6mAmGf5ovTSyfZgq4VGSrh4+cN9JbHELMQT0JqX0zSE44HeVbf3RrMU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9+P7Ey8PHpOCyTvlhySyfAjjo/m6hjYBypu6/4feN/FJOh9ukMrLTru7YzEO?= =?us-ascii?Q?WM/egY8e0bif9WXShJktPg9Ui9zvY6CxE4BxrfLJJxVooVmO9i46ghXl+6hw?= =?us-ascii?Q?+5TLTxcVMgGrt7/tFE7XP3ZjHd52sJ/jY70UltA1jZxA5M0NLq6LKF+9wNhv?= =?us-ascii?Q?doWexkoaYrfb50aqS10Oy1QOh24TGOF63Oz4dxStWUie/jEUcxa+Fr6DF30V?= =?us-ascii?Q?xfIvt6pnOZtcMH15IYMVwJGNkzt/GkX7XS68oK4BPkOQ8IJpGQUq0NkuwOkr?= =?us-ascii?Q?tgp8+DLeQrgvbYCl5/648llMBcVwkX4KVE4WXYlNmg+/kbVUxt+ps9h7d5w/?= =?us-ascii?Q?tT62VUdHA+qsf7KUbUpUEE6S2vj6CtjXTkRQKRAWnI5p3GrbUhP6Tt0+L8/2?= =?us-ascii?Q?qBG9k4pwzX8B2fJGkowi1HTdFk4GOypI1R6UNHMRRVZ0NFYKfYj60w/lTDHr?= =?us-ascii?Q?7Y9RHXb+NWl6OMNXDQ+unwBejrz7ZK3zM6LG0IflNM8L7SWmHBd+ve1wfTYG?= =?us-ascii?Q?7NL2OluylHCtqdnlWEYl8QqFrnyMcJI3svaBqkN/ea3icVweTH4/VofoE+oz?= =?us-ascii?Q?LlBL9JaIbOiiQfUfJXLD4a+ZvRO58juBgCeE+OcJ/I7aj/Ei22GtZ4NPEjnv?= =?us-ascii?Q?z0j6ch2GAhiA8uPrC046DMH5XMNJ90fBDTCpWp3Bu+JMCmHYoUuUiQ/EzSPx?= =?us-ascii?Q?WEx1XmG8mBsASYbgPFVCxvbjAdKSO18Zdu2dCz3pzS14BT6/C2409CDJjcMf?= =?us-ascii?Q?L82/LeaqN6jVX8xTqt+Dr64CIhmLRM0kXkHMVyrod9Od4SwC0kexrN0yktfJ?= =?us-ascii?Q?uJ7GSf4OZXz2jBHHe+IkdxmH8QzRau2WaZV2RdxWCO9TdHuNRqUrMWuTfx9u?= =?us-ascii?Q?q2x882UATx3UtfFymAKBaoi32nX1liNO5z7nnfqP7tjyThsDpLSRhQpnfzwX?= =?us-ascii?Q?VPJpweMfSOwIHszPU3+zZnDpQMIIQ5ewrvy9C+C0HQ+GCJIFMgO3kXREJQID?= =?us-ascii?Q?pIIm8mQmZ2MY5L8sVwsd0ySWItOL4R++S0hXyQICeL+AZBrPeccjG88XXjkr?= =?us-ascii?Q?xfzLNN9Q5V2+Je54kwx7rW/y8f7Luc6MyFsfYp+lLweSqUesIaJdQ82KdAdR?= =?us-ascii?Q?tcDv1Df5gfoVNV5DTTpkgMUMw6b6NWEeqY/LymRolwCxBUTnni1znPuK4GNF?= =?us-ascii?Q?tv9tQCrReVR6gWyDtTflZG4i2Z3yYk+zAa9nrVqKGbEiAAg4OGkrNZeaz0e6?= =?us-ascii?Q?PbZpTg8dAmS1ixfYdGji8uYRZ2m4obaTdKD93Cp7sewuQzB2DfHelzkDB4Wh?= =?us-ascii?Q?mbq4v2XB1AePXRQBSn/Cbrvr9AdX3sv8vfzs8GUJf0KQOT32aY58oyBOmKmi?= =?us-ascii?Q?cLsEK4xRuObalZytTwavpj7yhOiJONqW99Hwm+NA7F5EHMmaC8wHAJAS6rPM?= =?us-ascii?Q?y4sM1w9oQGnVJ5nGo2xL1NuewOdixc/g6wvko6NG7Cn762x7AjnPvVoOkbos?= =?us-ascii?Q?b56myGdELXMgsOwy/HePq4AXFJeIjqNfnhH2i4PljA8/xbi3j7mLoWaDMYlX?= =?us-ascii?Q?3ot00/z4HgvgGeC5UENJnx0WbTxRxyQah0cAls786TOZLPSnRkE4VKJIOk5b?= =?us-ascii?Q?mECJOX0C9xdZared7mzQ26tyy6cFDCbR0avn+qNN3A7jJ6fGedBHBUTc09Up?= =?us-ascii?Q?luN/7Pkp8ML3Eh2Vp4nYLZNXqMO3OdKsWywfEQquRSOv7Xcu1g95xnz315tw?= =?us-ascii?Q?Uh0oRIKSIZo6lKwvItQyu7WHTlR/LG8=3D?= X-Exchange-RoutingPolicyChecked: RkjzyVE3EbOq8tC1yJt6zrfkTRiwVzMUuAf4OlLo6ocrLHsqokm+M2Bi3ls/vhl5MNcLosGG+m4YuHAecXY9VlH+8V2k5j0wQCkxvRlEwQsi1/vhNUKWITsfo12yqTsnHAXgmnmYRQ3cb8N2itLhnVAKvXLalfMSU+1IQKpx/n2lJ4nMWJCtoYffL51DWbYeBDFKJIsYhRI4NZcqXcgJ3oCtdL9UhOt94HhO7HY/z1q7Dh+nFdLSI+RPSEUL/4/QDqjTqNYyMX09spqUpbembXgzBZY+k4cZ40deak8QqiRV7siUMIOpyrXX0j9a1qYJkA/eK/VXJGMmj9ZlAqjbnQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: FZ5MqByJ9OKWlqxK0THFQDbpgFUGd947NKTFdNmm3lBOg/QjkxpK8aDQIAjrvviGmoHOvpZF76Jb0EhvOXb0CPor4gAn618MKt6EWba6CdemjRSc/N37BLsFR/+UtaxpQ4dEt7NXwcdqVA/k+062kEDcFdxgmDLFp/3VcrWKI1pToTVzsadTNZcQq8y2bU8eWSUJAIuCqM1/OO8RvEkhQVClE2OaUoi5R0Ns/MD8lWaMQEFVbQ+Z4l3n+irQ0yl5woWNaZiVW9H0mOm9Yds5hdlJCQrUZR9MYa4loACen62CdF4SPpbWvVES7BSEwmn/GqaMAfsR5fzI8XxAuRYNRD0MgE0F6bzXHiTFSaZ9bsg5alMH+Id42Dz/EQl/LX4Ninwx2DBoXSzUQAeI/OJzlT1qJ2CDr7qeNzPhfDd+oQ2GAzslLcT2IYdiO5tQxMDndPvcVcvyVEKTiO2wrpRJKJ9afh3o5TaVoitTtEBiqLs8Il3sXzHzOn1/bqv0AagE5zMrP6O9GE0PvCw/21kNEJbzE5ryBSYLaTLYVJK5qb2eL+Z8u4zWBDIKMrG0l8TgsLoR2XAjewCLcKpdm4KzRh36EGuh5Osfc7RNMxS+nTk= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 861ef62f-842a-452e-8905-08de841dbfb2 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:23.9991 (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: gC1MG5UFwu48IxRv6hm5vGH/womPz3NEzXMb3vJzgocpgh0+3MfRoUvJYr/odz3APERR67fnZ422fnPve4sorQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 phishscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-GUID: r4Xb16XV01uOLEw6f-Q4OENfz80Bl7DC X-Proofpoint-ORIG-GUID: r4Xb16XV01uOLEw6f-Q4OENfz80Bl7DC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX18z8UOUNA7J3 L4DyY5BONEaTnko3SGEG022DO5LmLEVlj7qAV2GdON0tY7v9905bS/PcxKwd/6iMkQc6vJn5sL0 uR0C9n3tMZ/slTay5TzSljsZbUCYgibHaAME7ddmbzzBj9rFbP0YFyBla5cno40DgCg/GVR8uf4 yc29hCOeZZweaaxFLMZ0omaynYirH37gAMXIMklR0q09Fq4+vF8cL8P5FnFMU6+mYhIZB36/zjf JKHO14tPUXZwhe3gG5xU40AUV4j2OY0TtAoov8fze/W/XlKAQqv/oyh3bVQVuwuXibZXRzP+HxE vkqR33aCdXc+BItTYSNXMQ3qEhDjUfpgACR3NxcLL3INghLT2KkcK3iuk+89bexRNl3WTw4D3fX ThbVan6BO3vaRPVc4Egt8y7E+vBbq3w3Qmy5CQCEVOeKsG/e5nWpuErIXTRegE4nocvLAz66cRT UjKorJIW0HYSPSvMMru4BTKv/WfwbzOjGKdvxxGc= X-Authority-Analysis: v=2.4 cv=IN4PywvG c=1 sm=1 tr=0 ts=69b943ff 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=x4eqshVgHu-cdnggieHk:22 a=yPCof4ZbAAAA:8 a=P8ANGnkCntlzGNEWBNIA:9 cc=ntf awl=host:12272 Content-Type: text/plain; charset="utf-8" Add a core equivalent of alua_stpg() from scsi_dh_alua.c Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 99 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index 50c1d17b52dc7..1045885f74169 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -30,6 +30,9 @@ static struct workqueue_struct *kalua_wq; =20 #define RTPG_FMT_MASK 0x70 #define RTPG_FMT_EXT_HDR 0x10 +#define TPGS_MODE_NONE 0x0 +#define TPGS_MODE_IMPLICIT 0x1 +#define TPGS_MODE_EXPLICIT 0x2 =20 #define ALUA_RTPG_SIZE 128 #define ALUA_FAILOVER_TIMEOUT 60 @@ -65,6 +68,41 @@ static int submit_rtpg(struct scsi_device *sdev, unsigne= d char *buff, ALUA_FAILOVER_RETRIES, &exec_args); } =20 +/* + * submit_stpg - Issue a SET TARGET PORT GROUP command + * + * Currently we're only setting the current target port group state + * to 'active/optimized' and let the array firmware figure out + * the states of the remaining groups. + */ +static int submit_stpg(struct scsi_device *sdev, + struct scsi_sense_hdr *sshdr) +{ + u8 cdb[MAX_COMMAND_SIZE]; + unsigned char stpg_data[8]; + int stpg_len =3D 8; + blk_opf_t opf =3D REQ_OP_DRV_OUT | REQ_FAILFAST_DEV | + REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER; + const struct scsi_exec_args exec_args =3D { + .sshdr =3D sshdr, + }; + + /* Prepare the data buffer */ + memset(stpg_data, 0, stpg_len); + stpg_data[4] =3D SCSI_ACCESS_STATE_OPTIMAL; + put_unaligned_be16(sdev->alua->group_id, &stpg_data[6]); + + /* Prepare the command. */ + memset(cdb, 0x0, MAX_COMMAND_SIZE); + cdb[0] =3D MAINTENANCE_OUT; + cdb[1] =3D MO_SET_TARGET_PGS; + put_unaligned_be32(stpg_len, &cdb[6]); + + return scsi_execute_cmd(sdev, cdb, opf, stpg_data, + stpg_len, ALUA_FAILOVER_TIMEOUT * HZ, + ALUA_FAILOVER_RETRIES, &exec_args); +} + static char print_alua_state(unsigned char state) { switch (state) { @@ -326,6 +364,67 @@ static int scsi_alua_rtpg(struct scsi_device *sdev) return err; } =20 + +/* + * scsi_alua_stpg - Issue a SET TARGET PORT GROUP command + * + * Issue a SET TARGET PORT GROUP command and evaluate the + * response. Returns SCSI_DH_RETRY per default to trigger + * a re-evaluation of the target group state or SCSI_DH_OK + * if no further action needs to be taken. + */ +__maybe_unused +static int scsi_alua_stpg(struct scsi_device *sdev, bool optimize) +{ + struct alua_data *alua =3D sdev->alua; + int retval; + struct scsi_sense_hdr sense_hdr; + + if (!(alua->tpgs & TPGS_MODE_EXPLICIT)) { + /* Only implicit ALUA supported, retry */ + return -EAGAIN;//SCSI_DH_RETRY; + } + switch (alua->state) { + case SCSI_ACCESS_STATE_OPTIMAL: + return 0;//SCSI_DH_OK; + case SCSI_ACCESS_STATE_ACTIVE: + if (optimize && + !alua->pref && + (alua->tpgs & TPGS_MODE_IMPLICIT)) + return 0;//SCSI_DH_OK; + break; + case SCSI_ACCESS_STATE_STANDBY: + case SCSI_ACCESS_STATE_UNAVAILABLE: + break; + case SCSI_ACCESS_STATE_OFFLINE: + return -EIO;//SCSI_DH_IO; + case SCSI_ACCESS_STATE_TRANSITIONING: + break; + default: + sdev_printk(KERN_INFO, sdev, + "%s: stpg failed, unhandled TPGS state %d", + DRV_NAME, alua->state); + return -ENOSYS ;//SCSI_DH_NOSYS; + } + retval =3D submit_stpg(sdev, &sense_hdr); + + if (retval) { + if (retval < 0 || !scsi_sense_valid(&sense_hdr)) { + sdev_printk(KERN_INFO, sdev, + "%s: stpg failed, result %d", + DRV_NAME, retval); + if (retval < 0) + return -EBUSY;//SCSI_DH_DEV_TEMP_BUSY; + } else { + sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n", + DRV_NAME); + scsi_print_sense_hdr(sdev, DRV_NAME, &sense_hdr); + } + } + /* Retry RTPG */ + return -EAGAIN;//SCSI_DH_RETRY; +} + int scsi_alua_sdev_init(struct scsi_device *sdev) { int rel_port, ret, tpgs; --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 3C7743BA22B; Tue, 17 Mar 2026 12:07:37 +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=1773749258; cv=fail; b=PWwJLgrn1rM8tslkhJWSVTsD9Gcfq9w6+mqId4lUfm0w/tX5FApW85ruCtJw0QrZmXlmoWjdo3H71Nh3f/l28+8VYbMhxynb6BAqfMLU9xElG0jhcKAewdRMtm1uarlD8zo86wr7hFAWd+Ttpo/G3DiBAdwbhBjDwlHcO6ylgaA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749258; c=relaxed/simple; bh=7E45LziP9EkOewPvo+dqYmXA2975IVpAXfy9qT6LFD0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=b6v8av3XddU5t/FPR3QNnGRrDkLpWneaj5Z2t2OBjbQI85qrclEItbN4LycndKkv3I+7Z8aHe47BXJHE5qLFmCtsynyPfGRSwlWLCDjqcyllY+HVTAY++9fPUPAtwrLGzgPksn49pArINHFUY+YPdhVRYeCBujjfPAk1FW91q+8= 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=oGCYqmfa; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=hCeJCLwo; 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="oGCYqmfa"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="hCeJCLwo" 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 62GMfERV2838188; Tue, 17 Mar 2026 12:07: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=jcyDmr7jNbSyEeEpe1qI25t7xl+2e6NWB8vDHnxWAd4=; b= oGCYqmfa7eqrAYaSZ29aVXWe+2wL+kfRXlnw7uvuRmmqUqws1Ka2cVIjF9M9dy56 8Uuu2bGccqOojXlXaZlpCTbKNN0BoGefVgMalyceDOyxV9JXfIAAA0w+j2yaVCzy ingV5rvYBPKlKNt0Wuvelp7Mzb7MrPvVXvCMSJbBMyp765gEfCbMKvf+T9LWU2IS /o+OZDaI7Vbyp8XOzYCcF8toNSKNSWC2ZwWY127sV7JF/QnZRpZtWCH34012pq58 DPJ/tYwRxjMnqzOs+mkfY0AX0l++m5yz56Y9Fik5l1V9VTaeVDhpBCb4EaTJLjmB HS0VOfxR9n1ukqHxNt+r1A== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvyqbuy62-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:29 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HAYoke014043; Tue, 17 Mar 2026 12:07:28 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011039.outbound.protection.outlook.com [52.101.57.39]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx49yre1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PCFctNqKPrIjsA0dbVxa4vp3ku5zdQ46dIDqNoZoDapZT9OvwmaDRGOvk7Wt1dXaag4DIqy2msVrmazhgBy8Y6SDIM29endzKvebdVdkkCm4AcGUm4qxjdpjt6sne49/KYOCQW3DWZMKDHLP5M1JKeyP1TthOwqdw6DaFgErtG3HJYrd/vD3OV/u/hdk+RQIezN3pTrC5dNc/C4zseahNQHTQ+30Rgo0v1+Op35Sr7874rMm1n2WC2hai89z61/KXVouCC9qeC85JdWf7xqg5zvlbjOFT1Wm3rURFaJe4XXCmTIETt4fvKa59K3XzwdTqrRU2BIq3aex2o5H0wz+Mg== 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=jcyDmr7jNbSyEeEpe1qI25t7xl+2e6NWB8vDHnxWAd4=; b=xRbYnsX+2YTqWuDOLbxNcQrrAELm9nKaQ//uP17H3kQlESHCvbg66oNEXrNG78pRdJEQpOKpooRjfusg2rsXQq97ysiZUhxk10xzUQ4SIRCCEWB8UuQAcYkYO0SaSc0/DTOR7yhWkKBmnxjgyQkM0j7Ydsp1KgcXWl1zXhg8kDP8/KCavNolNTRz0hoFFUUaMbDM4qzf8KS3RZjfwTQDM+wBYsLLXwu8vQ/MPY20+/gkdPo7WwDB0BrE++zxEKtN/V7CD1ZuczH5Fnlm7bi4Gc3+oKiaUv1oZ9gQ/3NZD8cQXcLNCWRw7DlTlTtZTVc9a1UfOlRq9GWDlUE0KU7bpw== 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=jcyDmr7jNbSyEeEpe1qI25t7xl+2e6NWB8vDHnxWAd4=; b=hCeJCLwoIW1PkgOE3ZgDhkHAj8YCTaQJ8ZuvG07pPSnEIAloa3xvb2e29+lGl9FJ2v5/3h8gwka3j/FBF4UGcjF058Ku6H5zvlVNYtquJvgwEduB3+op7lX7veArZqojUviS+lV06iOeiPMupvHH7sCtlqT4DDLTQx9WZGwuKAg= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:26 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:26 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 05/13] scsi: alua: Add scsi_alua_tur() Date: Tue, 17 Mar 2026 12:06:55 +0000 Message-ID: <20260317120703.3702387-6-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8PR21CA0003.namprd21.prod.outlook.com (2603:10b6:510:2ce::14) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 549e0fff-4766-46c9-08b3-08de841dc0e5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: sS8QgC3WRiDLLNmBsuWCY7A8wlLxcdOWEukbrlkilZPkBTwbyL0BnsZV9y4OLd+MHS9kVmmETj+/OYEdg3tFmlcOCf3GOPlnuqPuyXIrMEGKzdKVzmLRtm3ifMVyFbO+bFAd/bZisQcTjbQ4PjdzJqlUAHxzq7otVLzrz0lHtnazJWt9S3lhEvDd5uiuHXUdI8xiBuqqgkL7hddlZa5DcIfG+KzLP9hRn2zOCVSMjc2oGP3WINVj+MjcMJnCKMz+Id1z0u1P20M3QA3E9JV/ms0JKUriL3Nm9xHOicgwVVJ2p2brUAKLAdUuvfKx4vn7NA+hiDfFUMe0J6zXRbsyRLiixsgG5qNA5wrbZnqTQghwTb1gNaupqUqrndPBFnzCpvH6D/pt2PnxftmxIY8TwbjewhGLNXK5O6hZ6dJReGcwvQofDiRra+SlXtCXhh0pKvBJwsRgh63i7e1N199U7jJlp77XuZFDfcxNtAAAzj/UY9j0JBGnw5vyoh1xQDZ9s+YOiTWidGncjd8NRd/dUshXs7HujHlnI7z9GupPD8oS57FgYuwVKNvvqhC136IPuFnIynoirsnzWHXp5ipHetEa+wluDHfm4WtvkHysRwvDpQX4X7flbSVsJMpKab5sXtxB4vJrSxgR258Km+/9Lwb2XQDd62zxTvBXOa86d7OWynh1rb7B4sP7JJ3vUzfBHiO9Z+xmiyY/xhgHNRR9f+anyfLpmzCrZ/Ue5I3MwRU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?OS+gSY7QpIO+j4S94bBxDfN/z6NZA9/7bcdLs1K6q9HE9ETp5uQgSOCYEQQC?= =?us-ascii?Q?ZcPtWEHs2SKQIr4rGoWON9cOZSfJRmDWQpHlMoq6qCl6ea3hPQrezWitUEaT?= =?us-ascii?Q?rago1Ud9GIkMi2J3eS2UcfMHmeMQIsmZUgV4mkevE1gWOjx7AKk8d1sEUfZK?= =?us-ascii?Q?ikUtls5lYgdGQa0j0Fj73XX/CWnoi5GeSuPTE203hlfwhC1aMu4vum9c/vlt?= =?us-ascii?Q?ZDRz9xaGCIqhKIVqxoBUZeKcnsUwvbATSK4ic3MpM2KMfV1SCKMpUaD3fKJ3?= =?us-ascii?Q?yFtby92u4eTDCy5RhnpZN0Usl6Z8r6yFHUJ823h59Uvmb6K3O+7DgvNth3aC?= =?us-ascii?Q?EXtttdnWzo6PlLJhFvA1MVwp+2MA1TCrKHypPYEsb0Z2Vf9x6wiTCivETutf?= =?us-ascii?Q?1gVgpT/2PimdksZoBFvFJwq8/dpQ20+IZPkuZi687KMDcLgKfkxg35EDnad3?= =?us-ascii?Q?S4o0V1OHBztIEj8PZqFcOVmub2gmejzMVfZehbV6xWsRLvEXZ7U/6JjwE3b8?= =?us-ascii?Q?Cm1uYLHCcVaQBGC+ugN2l64OJamyhHNeyHK/pxfKDCYwg0luSyj26FlqhB8B?= =?us-ascii?Q?YockS38yqEQ4ZSfJvMITp98FDGVg2WBqFLCECDZKSq/+z+z/RlvLjpf32pDQ?= =?us-ascii?Q?7J8V436I1VUocbK9zph79m3UKYb/Uqui5y4yNZ1cNc3ZpAqqCf8vD6VZhrcd?= =?us-ascii?Q?OnYDyE0NfsTFq72CIsvPMIpo6gZzwr7E/hMuMIa5Jj2siZsjEAkKIweCTupu?= =?us-ascii?Q?vdRj3AkfC3N9wIMIOH27+XrMhBgqUpTj1R+JVnHwfFYU1JGeA2us1ejVUlCx?= =?us-ascii?Q?xWdiviDZ7BJXA2u0kQ3u2FDa0r7EigwCSUgGT1hwIfRlyR9ohUQZq3r3EgCy?= =?us-ascii?Q?m34bHKndlbid72/d06eE9BVidTB2Z3sBzfqpvGj0yrpRlzvLiiuMkJZPxtee?= =?us-ascii?Q?sBoBZ7ELA4Ttr37g/kfRoB5+m6EVkwLHVGDMiWET7gJ6ts7GtGCx9k5PsvTI?= =?us-ascii?Q?ko5qMu0Oi0cgRfDBwYp2ePBIOTHLexrXsk61mRp0n32amWRgCGRM4OArrxFE?= =?us-ascii?Q?8a1zCCVlsm/7UjYTrpUwjVyQspvGGOGtOmOYyTh5I2nWZinZfWWnxU5FZ0c6?= =?us-ascii?Q?42te3zFmRh8qsX1nAWCyqIehLB5L1HaESOleVFQpno9zKht45DQvOZ7DlycM?= =?us-ascii?Q?EnCt1i9jKBsk90FGMMVh1IKeDjDzob0ZIf0aae/w76R0xITspQvK6gVgJXRc?= =?us-ascii?Q?IX521NqUiI+svzauVj2L4aTdZQD14UKYDifFksk8aMgLPe5ZBFM7T4SCsWT0?= =?us-ascii?Q?v+H410A6EJDxx4BYJ4pnxj1G+mphvrn7f78ER9jsTZ52EOh+xSEp1fmf1Fdw?= =?us-ascii?Q?g4vLnXWHjSEMxXlxUUzajtRw2UqX2OTZU15a+2Sqcyahs+hxN/zqK4zuLRli?= =?us-ascii?Q?XXcUF/KLUD/2joPxW3dk1HUcI67fX+AjSGxM6lNYqiK0Qktw+oYG4zTpVsOa?= =?us-ascii?Q?MrldEUTn5ttx8ResXt4L72faXlZRO9hRF9Ywj/W1NzCf8PEnxRi+JfIHjWMO?= =?us-ascii?Q?AYp9lVRoBwWVMdOCPup9S1fWqIuODHE1lRl8V6CNTDVK5Ksw70Jq4dM42q2t?= =?us-ascii?Q?GPa+PWL14lU6Vgn3eWiEZUxGXw7PIFMFUzhMrg27o+4yBw3Bbiy/9rYcZHff?= =?us-ascii?Q?HTG+5f7DVSxN4fIA2oLCmY4NROX/+k4zB/r4yztr7dXypQtIeIhwZ8IVtYK+?= =?us-ascii?Q?XkFHhDFcLR9q1hKPZHHg0w2XUtfIlhI=3D?= X-Exchange-RoutingPolicyChecked: c+gofYBdQnk+bVGVjce9S2Vq0acTpJfBoaQusrFWhV1c5dw0aGIxKAoS3ihfHIwawSLlDxH0CQNplAsS9k/H1tOBw1WuIOylfercYZb1KrjckH8hneGQ64a8b2XQ47doc2NH3H1bX01CGVFAbIE52YtnO2OsvpH39NwXDXGK7Y6HQHmQXCKnOy/1ohtlj91cOr/3YW7XOFd5WqWr0lahhdNCfLKoaxB+HYy32S2EtgyMT4BcBmgO8AFxn+bubOTncZVN4ozd+o0l8EFseThry1pf/aENIeJ8t71STqYzhl5wUgyHc/slQ6bQbMZj0yFDoEHq/P8+6FSRe1rNeotJgQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: DYPubBR4lXXkcWpBYaZFCud3g/PwAsLI1KgJcaKMAKxjE2CxlRTXqX7mUeMad+fwrP2KUcC7rKn4xiiN97WyyohArizGRqJeLTr32Yp0LXMwkQKjioidFmPeihiKNRy/m7Tm7/K8WuFvqzFxBlYKbLMDARTE9KXKMt2y5+FZfrhZJmAxRaGExcB8gybUXQou+30AzptrQAA6qhp+iEfKjVmeYQHetoQAHSNADvwLN2bl+B7Cb9T/+MumBBcmz4xbp57w7luBrcI5plADahFCE0DX+ZP9O8RNzPL+dl0Lq+UHsSVbfzUp8hq4kIL1YZW0cNIZy50kXmzK877IKuVyWsfF+rkYuD5dJHHdJTIf0H+113156JQ8z55+2Ezg3SCMGdRBIcQUBItEjQ7FutI7q/iL8LpoH1qVkI87GURYLGs4KEaBhziF0lSrlY9UpNBDpD9+UiG5KqiyWQ1NPM5oD0PGZlanWT0DBHcsPFTMEVz2w+152JCRNLGcqQciGR8YdxJeKUaULFjLYBBytGUz9VCh4VcIStv5QaUN6aNFKb5dbdhQ3yTQckCuQxwzNGMSPlaQxVMbYAfRqcXDQyWBO/oEmshwMIR5o85tsSFOu7U= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 549e0fff-4766-46c9-08b3-08de841dc0e5 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:25.9828 (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: QBKCa8jsah4l+avitzQfJ+ae3ljJG9LfgnaJOlaWmv1cctzU/+/H+relbxhwnIcECsnuQEmLOgSc0u0MmFyl0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX8vclRx+cRXoB V9IQH97C3xkfOtseA425T/GsF3sDHZzIbR2eCiaHyXbluVLXJZ/PLSPPlQeFhiZ1Q4u2yQ+QdIh JmzN06fD6v7QkM4DpJ8VxUy3yoOORSnqGJScFF8hR5nFpG58ihYc6bc65nErRJa8aI1+UR4Xkre mhXh+XxBDDd/mw8IZif7yd+asqsPSF6ABFeZQEjmqFB57IjCPIHCoOjirvMUn5xfAzv3AXaqVJh oHIFmyrPin6F4aq6QVK1Vl5gvOiRzmOrlmNlKuKQmHTJuCtUYngIT7heGtVLmzeBVOphe63TpzG AIdTZ3uGfXJrgWrgF4NFb9MJhGxiwdEEv749Vc43/DmnrX1se6JzpkZ+U4SNuxHfmWHA4B7i9tD lqZ9znRfQ8D2a2rdQchNaCFTgGz3jdv0eNrCvnke9NQ7YAQ9X1emQQ8QukAbNNPzNaEmDydAa4J Rda2atwUkoZUuxZ1GnA== X-Authority-Analysis: v=2.4 cv=J8WnLQnS c=1 sm=1 tr=0 ts=69b94401 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=yPCof4ZbAAAA:8 a=mXXEoj_3trUtFsI1lXEA:9 X-Proofpoint-GUID: y5LlJ6Ft7pXlmNU-yK8Vj8mUGOsCXtrU X-Proofpoint-ORIG-GUID: y5LlJ6Ft7pXlmNU-yK8Vj8mUGOsCXtrU Content-Type: text/plain; charset="utf-8" Add same as alua_tur() from scsi_dh_alua.c Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index 1045885f74169..d8825ad7a1672 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -40,6 +40,32 @@ static struct workqueue_struct *kalua_wq; #define ALUA_RTPG_DELAY_MSECS 5 #define ALUA_RTPG_RETRY_DELAY 2 =20 +/* + * alua_tur - Send a TEST UNIT READY + * @sdev: device to which the TEST UNIT READY command should be send + * + * Send a TEST UNIT READY to @sdev to figure out the device state + * Returns SCSI_DH_RETRY if the sense code is NOT READY/ALUA TRANSITIONING, + * SCSI_DH_OK if no error occurred, and SCSI_DH_IO otherwise. + */ +__maybe_unused +static int scsi_alua_tur(struct scsi_device *sdev) +{ + struct scsi_sense_hdr sense_hdr; + int retval; + + retval =3D scsi_test_unit_ready(sdev, ALUA_FAILOVER_TIMEOUT * HZ, + ALUA_FAILOVER_RETRIES, &sense_hdr); + if ((sense_hdr.sense_key =3D=3D NOT_READY || + sense_hdr.sense_key =3D=3D UNIT_ATTENTION) && + sense_hdr.asc =3D=3D 0x04 && sense_hdr.ascq =3D=3D 0x0a) + return -EAGAIN;//SCSI_DH_RETRY; + else if (retval) + return -EIO;//SCSI_DH_IO; + else + return 0;//SCSI_DH_OK; +} + /* * submit_rtpg - Issue a REPORT TARGET GROUP STATES command * @sdev: sdev the command should be sent to --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 8320C3B8BD0; Tue, 17 Mar 2026 12:07:39 +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=1773749261; cv=fail; b=gjnzQYqKf+b13OcJo5SL4G8U7JI4Ef0aVt5l3WLZCzYEE7nJoydbJ0pcmBW5E5xOyrJUNVGzT7eEmW9+prHLZ4zyF49SKKkGRa5RVqURGqe6JxpUfVylFtJZIiU1BjLlB+SZ73/yoUdWv3Sq+Ww7TZtgwkooWYpx7KK470X/ED4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749261; c=relaxed/simple; bh=F42IRHpKl7xwhLVY1aa/XNVbKbbMAtXSxwvzYDRPlgM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=T65uAJlzikm5NQ8E99/P070bk1vp7CGEpsefmWrWFwCIfefs3+k1C0n9fpjDvRIYrD8hurJalalyPnk7tl76YO2V0MtGovhIofnUUgDek9Y+hRf2PCyhHln99X6k5bLm/Rmg+wGYPv13b4IOeWMGDq0HPynulrdnBuZ3XTEbgCY= 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=iw1+Ql6u; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=Xp6wV9oe; 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="iw1+Ql6u"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="Xp6wV9oe" 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 62H03P9X2998684; Tue, 17 Mar 2026 12:07:32 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=g/b37hqSZ/N7I2gb4kUKYKzzMqIfUcGvay5cozlOnCA=; b= iw1+Ql6udguqEvWH666ATLEwlrCn5C7Cb8MGauIHhmXPNJEaABwKanR8p8b5CAqZ Z7ntXGWsKh3GEFNHjQCr/x7N64ZSEV6+ko8v4Mjh6bwitZa5uOMZakIP/T3uzDMk Lg4jwU4+Kaxe6EvsXNIzIH22fadvRDF0CIq6gWuOPhWuD9V5UZapZV/PRVERJzDO BLdm4bGFImewYDQUU+nFomDEUOs3zqqXhLa3j1ZhYui1x2L164KO2EI+Esfadu9L oV9L1i81j5ofdn95enUhYDtdaj/O61HG03ZSd/VPBhfznTyWM7tU0/zDr8nCKEmR rOfQGw/+EpLnHxn0Y38RVQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvyqbuy63-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:31 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HAarIb030802; Tue, 17 Mar 2026 12:07:31 GMT Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azon11011041.outbound.protection.outlook.com [52.101.57.41]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx49ypqh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CjgKYFVPqo+gAI5akArdPob2cBDlGd1F/OER4N4CQWZuz7Fkerbyk6XyIhP+NxmtYEyYhmMGMTiDMLVx+Hbddin4ymFpnGx5YMejBbEITGyUrBvCHjEL5nf7JP8W4i4tZBJkMzIubQJEYHIFNrh3bkj+oZ9wrkddP0kHybr6HLbj4bua607S5aVTZ3/yOLaoMVY3YJuNWLwKywC7L7M+t7gMMNxjcdpJxS26vAbvz3xR8o9U9bds5/yuNKTu2n0GBrlbpkx8Xtn0tWAwweShimDl44o5CJxqeAZ4tt9uS4l+vBvxp5DeDSkDwCv3TWSxzUBtXEFX+gIJ1eha/jUexw== 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=g/b37hqSZ/N7I2gb4kUKYKzzMqIfUcGvay5cozlOnCA=; b=AGBj8P8Pq61GPGdxERkCjV5CWZmeI+IxLHdya1wvTZs/rgBWKKSzsg/yQwaHxS7QL9hIFS1Bjo94DeCLmHAdum8JisuLb6JyILFTKkNFWlYVeNc1U4/Xkd9Uw0jf8+xqYXyYiKKgWuUOUVf0xCCyJBw9e4nWhA9pTD9otosffrQAc58hOaLPBqnjJ/R7tKhDNAb2gukTUVNfR5dEszDOex0CGu3GjEaIwommZmLxlbzarZp8OzE3WxcW+WQWvO0zKR5x9eSXMIQvy9Wi11zD7WMyb5zbhyNtLoXW1eK15uMALhMSa1PEZ+dF2cpL1wwFsRPkDunGOD9+4Cjv9qkscw== 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=g/b37hqSZ/N7I2gb4kUKYKzzMqIfUcGvay5cozlOnCA=; b=Xp6wV9oeXW+UtZdT913dSMrpCsmG0cjHPRcR/nsVCfT4hUQhpYvhEwG52t8Nq7dATrPuhzwgmqiVtnv+ggmEjUcRjTuLLqBUGv/tzfdaVgloRBY65oSDM/Iu/1PUNSaJN2kmfgSYgqXtwhIWwp0G8hlSv5nipyXq9hlpefaEA8I= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:28 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:28 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 06/13] scsi: alua: Add scsi_alua_rtpg_run() Date: Tue, 17 Mar 2026 12:06:56 +0000 Message-ID: <20260317120703.3702387-7-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH0PR07CA0029.namprd07.prod.outlook.com (2603:10b6:510:5::34) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d195be0-74c2-41f8-9acd-08de841dc213 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: gBLyNzedTgHenC/labaiG9K+8EHvpfysYikqzLjA+cOk/ixRLSktUC3HJIRTDWY3hNMjjRYopPK05UeAC/vCLwnmaOfRWubfoBazXonGQosMmMuQHH1RZ+XPt9e1/Cs0PW+dNleHI0aH5rGrIgqX4LPYV+M1MsjBjKSr1Yc16droTu7twTeCcoPg2uspBiOPLF65eF+o+YCfYZrHQprn+nOlY2HPI+SZejWaQGdDiKZfyFZby0RHc7Z9NPV3y55s/iEJm8WHgtmlxNcdQmGoD9UsjAoxFeAM25nA38iWR+uWmXzpdpZVGApExqZP/uctmfDDOzza5xvi51Z0n/XCrneJD2tgBJetgrpW6HKr+GSNvF/AOEHr9p0UVoU+7scSD0X3xfKtsHq8TiIKrf53GxShCCqLnkFFiudH7iJwc0oP0lFF+l8oJDrEk7b32n9qeWsKnVbLfbunNcnxiQuE/I1BHeo09d2R/M/QR23WHXGgBS/Lvji7PMEPQyseMu3l5kXmU4Hw4sDDnIw5q4aS12Agc+yQ1kC33xy3mZioVTai+6QD2wveGfaac6QzheYj3KLWD0iY/cIbHfiuywoMyTjmwPu+11jBrescDPBFkydZ11xy8eaIktGcNcQrHGtwam9SdqHzA+2imWtORPfX665R2w+d/12srru75pEMKSaveRvx0RHE37ko7MXQpD+5WkjXIKDzWxeeT5JQJswMUosN8HnoDVMeEKARBIbrXx8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0MU11HNkptIA95GCyfVuBBuN+pY3aMZhOg4Gex1d8L6PIjeWwJ5JEevN3rWn?= =?us-ascii?Q?bqRwTnZFN2tNJ77BUSp15jkhU5E1E2U/wOCq0+IbCDwwPChTNMlCkkf7JYh6?= =?us-ascii?Q?b5PnKWv1vsGnJanScuL5Su635o/t4w7EOGZtxpZpe8EQqBn4VjcwYUul26kh?= =?us-ascii?Q?oAlEWP0O44Y+aYXnVkb6pl4JOVdfwSE0XZUGfNePRABZPjhL8PMM+/D36HYf?= =?us-ascii?Q?Oy6jj9f23P37tJ1/3C2MfAMdtF8fdc1gkhiGQhfv8L66iiEAseF9gcpoBUth?= =?us-ascii?Q?hwH6RwJfz9MJeMUNNYwk7/zaH+ftQOMsP4TIigio+1qbduV7vRGnpJecDxPo?= =?us-ascii?Q?vIqcNU3acZ5ofTD7hWLX8l14pJZYTEPnhmmZx7+6ybhv9mnvJsGM445c9kk/?= =?us-ascii?Q?qAwWebY9rNQEdsSR1nnNfDQmYq7FRv9XQKwqPlVTNFzTxOmkxDDaR/oicIHM?= =?us-ascii?Q?vB3ONSRxHjZM3yG0Uuji5+0eYacL4PmiP20cfHpYnROA2kzkc7rijNDzuiat?= =?us-ascii?Q?QlvIHVgIJQJKqmUJa0MIiVnfgn9g+mKeW8Jr5OggpzLxe0kUeIqTcfX2x6OK?= =?us-ascii?Q?Bm0GGscsLuN8gwMlCE+Cn/tjB/458h9AN74Jazx/fXeSa5MRXutL3iMHxHfs?= =?us-ascii?Q?sp28yl/P2UfPIe+c7dmsUv0fR46P33FoJKQfAKUFflQCLcxHTt/B5RikSsLL?= =?us-ascii?Q?k3XqbtbwaNESRWKq5qu6bv7FgPKGLzZoNCnjdHdfZZpo16r3TkmN9sEob9or?= =?us-ascii?Q?ACXtrGr8LIUbP4Dp7Y16OyxjIYJ1G6V/VyOSUy5i6CMLqrOL5Q77Qsbhhr6O?= =?us-ascii?Q?+k0kdtNgwIO8thK6IRQZv0urwXvXXHjI6bzhaD9POkIucpmvntgC+YJdtD/5?= =?us-ascii?Q?MOVhwoy+Sr6ZAvtA/uMAAk1zSgsp/yKbDD0AH9hajwavnh/ExdlgTKOFkatN?= =?us-ascii?Q?jI9iG5m+HEsqs2mO95xsvxt1QrEsJJZfk1vThWYi7xgbT23ueHLXH7dGrYUs?= =?us-ascii?Q?C4UOggftOG4x40ysIOmuxRRyD79rdlGsd60OoHKHg2qheKDyRal7bDayycqr?= =?us-ascii?Q?aRfUWxGBMlWCkZzkMDEWRO0dLtB2dwBgglV27SF5WasI0qbm/lRr2kQ2RXEI?= =?us-ascii?Q?7TgI7Byk6QzTRFQZhspsPpy4cKGJ1VBQ3fNe+W1D18n0tji4nIOTxBsajjf4?= =?us-ascii?Q?33kO6Bt7dQvSuprXEU4HY8NeTfnb4guh4lTmI9n0jopUU/sHFWEf4Yndl0jB?= =?us-ascii?Q?WVL2df0Md2fw3Cc+mR/nxZUc4GmahcBMDZ/fIprOz3F/jsqNSmC9NWQf4LEY?= =?us-ascii?Q?OWR2sBtNn5sz9jH7uFI2eYhCvelrOcU3cceoFjZuYXQzQAVxz2CNIHKuNYG7?= =?us-ascii?Q?JRJSPkwMZpD6szs/5E1U5EGptsK5foV5PicZ4JRatiuXvctkRKL+koLGGPfl?= =?us-ascii?Q?H7wMCAFCWtj7FnARym9pSCVbDGCoY0oPo47EwOZC3OAVUw+EiYWw6JUIjlzs?= =?us-ascii?Q?jTAa7GRXDZxO6RXXczuDvDOcZ0yCm/dCcBF6iAPaBC9MTOzFqIDL460fGfyz?= =?us-ascii?Q?8cmtrmlMfxDc/4YddUcph5JxbHjW30MNM0x5uGnmhR4tQgfY1H+YPK40dbPP?= =?us-ascii?Q?JJEA6QHxtDXIRLcrH3MWiorHMjx5T6QwobDrsJrGK8aTr9lNdnoNcAOPndVq?= =?us-ascii?Q?w54zjHuoULuq1Wil+eGzK0xLxHTOl7aL7Qit7NURgzU3H709GT0YwC9UXUZk?= =?us-ascii?Q?HzSwaoj8cQpIagHJS+9SVSwCYCrqheU=3D?= X-Exchange-RoutingPolicyChecked: XYtU+X3Aly/4mvcmzc/mqNmlCjQw0bi2tGA8DAgmiWV3QVbPZ7H2ugJ9FQaH7QBh7isaZMWK9C97ghh+/RD5xS0BMVF/q7y43kcPr29laZlbYAhWfzq1JXsJR+F00QboveuSR52FbNBQubcyw4tdAKGWpK8oUBGH1qv67rBNoFp3gIpdtVeNQjR1FnAFDI2pHFD0LcPB2KPeBVMNyVa6ycGjVSNX+92RrTQai5FQjML9HBNr4DlHs7qv1CywhGTkWo1MjkED6S6PhUzBjen2RYGSWp/n1ZUlr4H4RKupqmXeFokD5S8aW1q4NC445vrJCw3WyoBnECmmIPlUxOIrvA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: SYymoFxpZMrVUjU57gfrgVsDog3ZMyzMp9iAvm4MaM9AAfFMEP+RN0WL5UjrL+NT3GBYL/kTsSyEDkXSAq94bM+tR4yQtbHJt/+lq2z9PclJMMrMctGktLaONDO2JGTfFThIG7lZjncB9L0K4TN7lYH+dsL486Y0eWCCRHPcNiZ8ybchXmGX/r8hRKgiNG/5bPUCh5yoESAN5R06Qa9GR1x2Pqz3nVqyqb7WkwIx+r8bk7hADaPEalJ+WvViNHhxRZrNtM/p4Rwx7mauDgtKCyg2S/eqiSxAZTCBaopbwKjPUQMI30smUDrGPX8puSRJBaq1QBF3s1E75gGV5XWa6PPNmD9jPD5fFBQHm6W9jaSdo1Vxlttzbhrtf/nS/DKMOnkeE02z2wYuLtD7XZlgLgCgAMa1N89zkPm3ln8Myv9IUJ/OVuOJGwFS8PSS0XqWuWgsw5Cha55nBpMCjlqrMJ3FxVTCWvrfcFCg/aowy/v1YeweNAjNG8NqUPg6ThXIz8ymMPvm4ER66Z6FeCl40BGeoM0c3TDwLxu+RqbZTXyuoA1TCVJyBliGjM4C+encpxJ+8u0AvtD+b7ywyJPjhBwpgEOiC6rc4BtetHVKq0E= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d195be0-74c2-41f8-9acd-08de841dc213 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:28.0075 (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: ExMbks6d6zwp8Gh616S1Hm19AE1mbgmLoPGqq0bKq3tmnI03MG5flEikMd06XXg4JdeUaA8KMlvM2RZ7/QZi6Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 spamscore=0 adultscore=0 malwarescore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX8sWyC1Jqnpj8 eSFTcUVdXWBBSNNo5f6qlTSRTf62FCmaALn+8tyeYnRoRF9MlT2JeedEDdu4cQDy9bTKZj3UXZ7 qWubYwrmVJ1VrGtRR6wAvHlhPUDdvXKFJKmWXYSeS3hBF23nA3iHPHTNSlS+AYy6F1EzddLjD7D sPM0A19Lgc1R8+u0A2cbLer2BHCwPv778rrLekZMWM+AQAfZ2l2PiXQ6wagJd1ZbPrvqJSWumAP O2Za8Kq9I7ompcLr7Kz+EjdQFqqJOeA9blzClF9kkqieIGPnkYh6FWJWqe/qMaMdXufMIJ3ZL06 uthFJxQ/vFVqoVOT+I0UkQxAa9Y8y5J3p3hzaATQSs1ctIe9J/GErSHBhh0MlXcyS1RP2Qyhl+z SGd/p2mVYD5JMEkFEAtTTQRLvhXuE20Px+wkiVh4gIvJa3FrMj3JL1Z6gncH53bw2MI06qH1cE7 Y51eXAMsr8VXuN0Mi6w== X-Authority-Analysis: v=2.4 cv=J8WnLQnS c=1 sm=1 tr=0 ts=69b94404 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=yPCof4ZbAAAA:8 a=JoSIP8vjq7l9lMBlepkA:9 X-Proofpoint-GUID: BniuAr-F9vdM3H-7ggaYkI4PhgH_SCri X-Proofpoint-ORIG-GUID: BniuAr-F9vdM3H-7ggaYkI4PhgH_SCri Content-Type: text/plain; charset="utf-8" Add a function to run rtpg and handle error codes - it does equivalent handling as in alua_rtpg_work() from scsi_dh_alua.c Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 33 +++++++++++++++++++++++++++++++-- include/scsi/scsi_alua.h | 6 ++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index d8825ad7a1672..e4cb43ba645fa 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -48,7 +48,6 @@ static struct workqueue_struct *kalua_wq; * Returns SCSI_DH_RETRY if the sense code is NOT READY/ALUA TRANSITIONING, * SCSI_DH_OK if no error occurred, and SCSI_DH_IO otherwise. */ -__maybe_unused static int scsi_alua_tur(struct scsi_device *sdev) { struct scsi_sense_hdr sense_hdr; @@ -159,7 +158,6 @@ static char print_alua_state(unsigned char state) * Returns -ENODEV if the path is * found to be unusable. */ -__maybe_unused static int scsi_alua_rtpg(struct scsi_device *sdev) { struct alua_data *alua =3D sdev->alua; @@ -390,6 +388,37 @@ static int scsi_alua_rtpg(struct scsi_device *sdev) return err; } =20 +int scsi_alua_rtpg_run(struct scsi_device *sdev) +{ + struct alua_data *alua =3D sdev->alua; + unsigned long flags; + int state, err; + + spin_lock_irqsave(&alua->lock, flags); + state =3D alua->state; + spin_unlock_irqrestore(&alua->lock, flags); + + if (state =3D=3D SCSI_ACCESS_STATE_TRANSITIONING) { + if (scsi_alua_tur(sdev) =3D=3D -EAGAIN) { + spin_lock_irqsave(&alua->lock, flags); + alua->interval =3D ALUA_RTPG_RETRY_DELAY; + spin_unlock_irqrestore(&alua->lock, flags); + return -EAGAIN; + } + /* Send RTPG on failure or if TUR indicates SUCCESS */ + } + + err =3D scsi_alua_rtpg(sdev); + spin_lock_irqsave(&alua->lock, flags); + if (err =3D=3D -EAGAIN) { + alua->interval =3D ALUA_RTPG_RETRY_DELAY; + spin_unlock_irqrestore(&alua->lock, flags); + return -EAGAIN; + } + spin_unlock_irqrestore(&alua->lock, flags); + return 0; +} +EXPORT_SYMBOL_GPL(scsi_alua_rtpg_run); =20 /* * scsi_alua_stpg - Issue a SET TARGET PORT GROUP command diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index 068277261ed9d..1eb5481f40bd4 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -30,10 +30,16 @@ struct alua_data { int scsi_alua_sdev_init(struct scsi_device *sdev); void scsi_alua_sdev_exit(struct scsi_device *sdev); =20 +int scsi_alua_rtpg_run(struct scsi_device *sdev); + int scsi_alua_init(void); void scsi_exit_alua(void); #else //CONFIG_SCSI_ALUA =20 +static inline int scsi_alua_rtpg_run(struct scsi_device *sdev) +{ + return 0; +} static inline int scsi_alua_sdev_init(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 7076C3BADA1; Tue, 17 Mar 2026 12:07:46 +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=1773749268; cv=fail; b=PgtudRKi68UH9fdfSiN0Q8RB2Qsx9iY+EbNqULtGV1qILnP4jzkB1CvGrezgcHcOknb6YzO4r3dyUssLupyg4WkSaaHqqGAqZAfgCPvx6MESS/quq56YfTV5Y+mQTV9AyJXZ01mt3vQUld60PhcQqraxXrgZP+EKYB3cFuPlHuI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749268; c=relaxed/simple; bh=+gcM/UOi70IG+eDdpgz+EFoSmnLicSXPhgHaUJ/1fDQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=d4CkYo6CjEPFal3GuVfQpR5moYyOJnmx35yhMZh6TWOuQDCBXlRYXEAg/zbBHIb6yRuvHLudF6PG5NvDrdq19ltkWcLpWOtZ0QG2prQFUn1frfLI1VcX98mzlt9vL0OWisKSUgE0g5mZw3eVU4OqRuxR0HHeUBHVWuS7+uWy5IU= 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=RqNyV7g1; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=KtfnG4US; 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="RqNyV7g1"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="KtfnG4US" 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 62GNRb9w2962140; Tue, 17 Mar 2026 12:07:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=SP273bkHhfssUKZ/gCYGisnfZjj2tpPhZluOqMp1MwI=; b= RqNyV7g1ZbQUSNWlX3vcRRS3JQoaGPz6F/X9nieRZpOcHL/GU8nDbcxn7GQYrCcF D0MFkwnlqqHZPF2N7E+7YErIuwiZSGZ877qBkSVRTy3DVX3MWdzxoseZ32I5cwMk ba5TIdUSt6OfQfq0SSlQsJPbyMAi8kYPzwLTERBkbRkYaGYsF/R4y32jxH7hiBGx owcxuLcyRjwgu/h9ALcJ8K9P2igM6neIi6s0T/l/axTZzwLn0X+rmURRPILR1kAe dQd9MBIvd8PC3WUZwUAU21mpl4WtswcINv8HTAoTBs+XWOyFTDS56rOeT8yzfWgA py4ALgPPW4UWZMSqajO5gQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvyqbuy6a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:38 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HBPCbB002699; Tue, 17 Mar 2026 12:07:38 GMT Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011035.outbound.protection.outlook.com [40.107.208.35]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4m7tkr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dR9Dsc0QllyiSth+HJR0epwIqT0V8tP8vWcQauKNQS/7INNqCWSprErxkyfZtnM5ThwSaDh0xVL7XCH9Cn4e/uaBa22WSEEBlsQIJaWtoOprigRCfCWbSI2gR1h0lOpgMBt+keKOSUe9DK7STmg/quMCoxgzsPN/RIeDcJHlcXSoE+HJP8gpNYnMfODIhE7JthHf+6J987fbWRtKtR3xMeqWc2IONtiSN3Q/fCTtmB9z/gc7UhgE3Qp5b4NAdQPtZO+CE4i/Do7VsKlZ9sOXNg0gcewKzZITxiowPHgy0WQJFV8+NVJKmvd5ikTblDEBMugzQgdmncn59hwwGnweQg== 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=SP273bkHhfssUKZ/gCYGisnfZjj2tpPhZluOqMp1MwI=; b=XSbLnWeKEsIfnVc3MkNXN91fG1HMeBSzqQAZXwv5psrG7CB9VGIvwx8K5IhZ7aw1aydXHcHp/7k5HBJowFQLNZu8iJTNbDReFTpxHnaqDPaCCIS+gv2ZloqwDZ1R1JYd5dB9Qi3JsmmtpnWQSN8us46MKP7Ima+CQPDBTYL0siE3w0pyE63zy4Hbt2glLlvRMJEGmkO+8FJeOGwm/KKNLay3InTWWFAg71l1KPpxKuW9K+FhV5ryJZh8pm8JzCXc2wTkt4r5aFKmjd3YY8BTrYywyMC6dKSPT2c4gV5h5ePGYLwISUCyZkgTPi1Fw4TqNmLRPrZWVq+xy+72hT7AWg== 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=SP273bkHhfssUKZ/gCYGisnfZjj2tpPhZluOqMp1MwI=; b=KtfnG4US02qWftocELsE9arzUgqjCpU7UjLZWXAsQ/993E9Hh2Z7f0Z39DFEEhKCz9zr+zV/XEpJ17RfEmHlAJ+Z+pwu9PP9S98Si3lbUOgSF3e1323ccgrfBEpKFhJ+uw+ZNoe3N+5J6RtZXyBGRoeRH/5eJ8e3bESiR7BYpjk= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:30 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:30 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 07/13] scsi: alua: Add scsi_alua_stpg_run() Date: Tue, 17 Mar 2026 12:06:57 +0000 Message-ID: <20260317120703.3702387-8-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0172.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:33b::33) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b599e9e-2fa2-4630-bc5f-08de841dc355 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: YexhWCCvzIDuITHfLTh0UKmTQXTEn5PR1E2fH1uzUEuakGQsOGYoODsTalzGMeUYIWiU3YUVn95aSExcOYQU9nsnzKfITXHOhWbopDFLz/WKkwpfBDPXkY6fJDTdMINxDEbqjp7ysqSDySMUfks5Lq2HbQie6sYnSj2UY7+lpZh9+Z9NiisqtpOK14nSTrZkliHQN2lTLYMpsEHhEEJCRlULkbxOszr/+ZN4iAS00cPhgnaSrujEzBCxYLobcWB+vB+tcTjEGofGt2DP+dh+aO6TCWEeF8vwXk8hFqhRDhSyRo4UTXIt2slSEmc299wZBQbXARQn8QZdXtwemamR2b1n37rbZKyY5IV0IABhAIVxJlq5chuUqE/+xNSgNd2CnL/kCbOduhE3Ra4GOxVa6SwhqHx58gx9IYZm4wANpJRITqkNHXQk/hagQF0uR+MJQhD8V4hCzmJpLppYPr3X67XFqJoor9tMphvm4ixcxI03yPGcB9sxr3c5yrzwojvKIs+CnbNSmmmOZuzKNPXpyBZvzKi8+Ovrrmu/NZHJtrAA/65JK1DM5A2nlhhb7b0laEwTUrvVOtlW8YN8DWndhE5gfD2Rh5OdcStgYt0Hej/vBRHQd2WN8Dvg1ukABkRCk1UK6C6oZDBbJXvx8F9w0EfzTRaDXoTyCGFKDAK5RZdcZ1y5oOhPAecwIdzMn6mjNBtPBM+3m2o/vbdCkgmWChu98a/KfRNVqvJJnEA+e5E= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jz7KSRk7sGE7B5CeYi6kooW7jFxI25qZJgTPZqSJx/InvCLk1NKeiaNkw2KQ?= =?us-ascii?Q?0zzMw2m8+bsROViV9ZrSxJMIBOULZBkB6j05nn6H/3MNSSs3uQ9Y0RxUxNBM?= =?us-ascii?Q?9BydtC/siH+jo9VKOAOOfXM3Nqe1qwl+FXf1QpOzuhfaCQVPhMR6GbfLqvyp?= =?us-ascii?Q?x3vx3cUuLdNTg9xsEi5XeLif39OrByr89B+cMGqdItYv8Pfa3Fku0Ev9Djf1?= =?us-ascii?Q?jVV6ejeJJxprYd4DoRbJMU5RrrPGvZ9RkQwfqElbggJx279lFd7LaxbqBYMF?= =?us-ascii?Q?fjS8ahnZ8aFkeQkjvYKt1R9O072NhiyRoZ/91YWaXCRcDZRN3+7Ri4zBl2Ua?= =?us-ascii?Q?L6sB4wU7+g5eIqfdjslsDRdWC9QfasWLwoDiUrNCWPJBFCTyCSbk09/hCzmd?= =?us-ascii?Q?WkJOZfSzqkT+Iaxn5k0fJU5wwSyh8ROjGmlpVoUM06D1dBw1zc6+tf3vxm/j?= =?us-ascii?Q?x4VRt/xxGmkMg/VyuxY+T5vEeM/H9GrchetoQN3Rosnu/RgFQ5mnSi8zhMaT?= =?us-ascii?Q?y0k9REP+trkC2i2te2JtLBJKzRKpO0qL/UZ+Lo/BRe0T9gGxhxSEBywvcKtI?= =?us-ascii?Q?uNHJAPsAtuwlW1nAFsCSgNHDJlZ9zcOozNl14jQbs6fuWm+thbOi78wk6rUP?= =?us-ascii?Q?ir05vI0S9c+60XkZZgazT1gMLd/qbnN3GJIf99DdSB8hh+IjoJLWWBXw5PhW?= =?us-ascii?Q?bhzexh0+8wai0Vx3QiP7rG1ucldY7yfhheg4dcJUi0biSCf5nmWAuFKGQr7/?= =?us-ascii?Q?yRYKF1C7ETJLF0IzWObPJEyWWZ67LCyM5xgDJqn+Sgh/nJ57/EDay8/kmocr?= =?us-ascii?Q?NAHtmuT51yR3Y5QQPiOQueHkw6LzZ1DddeKAJ8Ci8D6CXgY4hJB3i9Nl2cSZ?= =?us-ascii?Q?ElZi1/0aXptFhDCo2t4UGuy/nCVTunVUy03Lk0vCrT+vGZXHT77H3r6I5uJm?= =?us-ascii?Q?hhIml7C/j1mmTgFyBsBpLdXSeFx+qXoWkb6u2zPMJk99tIkAWZy/FZ529Ld4?= =?us-ascii?Q?0EL5aos3M5K25DvdoYtXGBsvw0i59KB/+Wf8O8Nu45NM6PJJCPJHdBN48Hiy?= =?us-ascii?Q?336Dda+yEOtht0zwt+YFoBFStPIMlQefH4H1Ug5P4ip80LObEP4f42IX0vvv?= =?us-ascii?Q?qqKDLt9cTcX8YIlpCqpbG7jCdzmYqQp2y+al33inKI4M+ynJQzfIjoDlSM5t?= =?us-ascii?Q?h3wBRK49YTe3y3NE2231oX5fxF9wTQQr5bjsR3ibAU15eLTxFCfA48aBx9Jx?= =?us-ascii?Q?cJDICiR3FSLxrsu76K1nGqgPNihwO48fJlV8MCWJsHSEfZDmi/Wvn2tbYjEa?= =?us-ascii?Q?69nPdQ9pgWtwJqVyvYE8zRMBRCB7I2xfYI8MjuMUBYR8PHRSmi1UpbtiMvAl?= =?us-ascii?Q?mQnx+lE9F1AXrQb1ZCFdKPKu0L4d66mWVXSMmq5RdXfRGbWKbmlNRzkxofFg?= =?us-ascii?Q?4vmFKEbB5rCiJK3YjeAqNMtCzZOtOGs45whuxYt7TfvqlMbavjF4xMW6lk/a?= =?us-ascii?Q?V5TptltOPZGM/fdi8OGszjvJjHGINz7/7hLQc4ZlVcNdnFxMrV+izON6E4qT?= =?us-ascii?Q?RkJsvPxkNgw+eCDdhBoB73u22KUdmXWI9INf+M7A33cpe7yk+Y93tAz/vM87?= =?us-ascii?Q?/6bvXl3uM0fz6HeV+l0kuP1UxXwoslLeHjXUEyGrqED/KqSzdAJ9A6VdmHXt?= =?us-ascii?Q?Cl5exorgfaZ539FtMQonYAgyu1RFgNA7c6l/0Gf4GwmakCQrg1Iv88zZRTvH?= =?us-ascii?Q?ZFEAIooJzPb5asZes5YDXEOk+1YQev0=3D?= X-Exchange-RoutingPolicyChecked: R1r5GnxhiK2CLCqchc51wn8ajPxJr0dI+JWfmZuWagYz7PNx9Hfbv0DHXWy84dS83Plmt1jT/mkhkW1bplWN2mOtcWrcoglGiBnyeoF5mYVV0KaE17kkHga8b8+Y71yHnXbJ0hJKSoyzR3uvIu2XVG8T1wUI7Cqwn5rXv9Kdn+lKUrebVFQoAqH3Q2bAIIzK0CZn/dIOIT/Oc36T4QP+oaf7qaPfDFdMEVc09Xj+Ps42sAeB8LfYjDI9gQ96bJ834DOj7Xjx8AchvGA24C/oLga1fG4+bJyAJKHu7Ruyccwn96lMmuWZSdsxuOqy/8syXtNbyn4rYWwnAUK52dhJNg== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Qwg8X0v+1168BjBUJA96jWXfFElGHk9xza4rRpomvEPu+ZC5jJtxCSgvrmJ9Lntb08lsKkXi18W7/oPvnsokH8jHiANhOZ7cDYlnrXAmRaHqRBwzyXFpUbhjfYWox0z1ZNPUYXc6uoymWXMuWxiLpE371NL/J/2+TwnR9CHydbsFlW6GU0T6o0adaq3xvfNP/FQ3VsPJtpWtZE9CNUNN+1fTcPP+OLqTYsOOeW3CuaXLqoPILNYzEcgadCZrrsw8dPG/ab1lX0wP/pR97MJryF/founnhPQzuUzGlCCqopGPo3XuQ0IdACxxS5ufpvKHVywgYUoic4RK+VlCU5X9Fy2HYvlN9QfZWUQkWeO/IOh/6zZrb9NQPpkThYC/9/3hZSnduNB7lZgYWepvL4dN1e7uDmCMKf3TfmYiZSuJMQki0+5/2D0Rzm+K2D4FuFNMCVQSUG01llL3OKj/G3Lpd0fN8NeT6Pbi2I91GloueVh6wo+dCNJTEsfluIk/p9zUTo5OU4URBf8dC6S46lPQ+GJUkR2xpoDsbT+BLU6Jv864TK83X/QA0qRsnZETAk5yCAuJGri804p+cp/7BDkSRvFTrauh7j118mfKg3MBr9M= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b599e9e-2fa2-4630-bc5f-08de841dc355 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:30.0502 (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: oQxhkN/juOx9zJJalx5fEgkGWr/l0roprhRYP143hLGeSjjP8WJrHwVBznKU8Ivno/1yUlu+ZQNbMwhr9jL5Ww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 phishscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX42w+Ddth8Waj xQY+YE5nGK4WLjns3RckYlnx3BKyUU1uBY+EtmymM0IlTxjVqGR2fUYxHun4LtWGQFsSfxW2w/3 ox/mimDxNqbu3fYN0Ru8M0Fn8PuBBTCCOu1ixPZ91Wec3WfeRAj8orBgj4t8/2MlNylhAXyT3cb cotYml4gwVwMw3gYbCCZxf/3dGdKY6WWHBlaJ7GkSfoHkEjUP6jleGdguPka5aaUP7txM6eMOvl cLW0KE1o0wACrzJB7cqJsBASwWFhzT5d1RDurMi3XBZ9la75HIn3IhxcR6njILtesK5JLA2A7Iq Uf1dfZ+2GGOFL827AiLG34UWo70ya/sB9rJuPU/mZfFixDAuHmZwG7PH5+vD7YcJAHl90vJa4aK jmmtpvLIvG6vPQ7KFtjYyJnAoJGGU5K65ghjgW01ai0Yuv8TheUnV8OtE2RzW7C+ByVsIgX+SkE OyJ7BRsjBqJSDe9bc4npp3Wp+S02RGrlA43bRDdc= X-Authority-Analysis: v=2.4 cv=J8WnLQnS c=1 sm=1 tr=0 ts=69b9440a 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=yPCof4ZbAAAA:8 a=JoSIP8vjq7l9lMBlepkA:9 cc=ntf awl=host:12272 X-Proofpoint-GUID: tBN2SswFGaPL5a4sJ7kMF1_lfuZLOhKZ X-Proofpoint-ORIG-GUID: tBN2SswFGaPL5a4sJ7kMF1_lfuZLOhKZ Content-Type: text/plain; charset="utf-8" Add a function to run stpg and handle error codes - it does equivalent handling as in alua_rtpg_work() from scsi_dh_alua.c Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 20 +++++++++++++++++++- include/scsi/scsi_alua.h | 5 +++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index e4cb43ba645fa..4e20a537a4ad6 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -428,7 +428,6 @@ EXPORT_SYMBOL_GPL(scsi_alua_rtpg_run); * a re-evaluation of the target group state or SCSI_DH_OK * if no further action needs to be taken. */ -__maybe_unused static int scsi_alua_stpg(struct scsi_device *sdev, bool optimize) { struct alua_data *alua =3D sdev->alua; @@ -480,6 +479,25 @@ static int scsi_alua_stpg(struct scsi_device *sdev, bo= ol optimize) return -EAGAIN;//SCSI_DH_RETRY; } =20 +int scsi_alua_stpg_run(struct scsi_device *sdev, bool optimize) +{ + struct alua_data *alua =3D sdev->alua; + unsigned long flags; + int err; + + err =3D scsi_alua_stpg(sdev, optimize); + spin_lock_irqsave(&alua->lock, flags); + if (err =3D=3D EAGAIN) { + alua->interval =3D 0; + spin_unlock_irqrestore(&alua->lock, flags); + return -EAGAIN; + } + spin_unlock_irqrestore(&alua->lock, flags); + + return 0; +} +EXPORT_SYMBOL_GPL(scsi_alua_stpg_run); + int scsi_alua_sdev_init(struct scsi_device *sdev) { int rel_port, ret, tpgs; diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index 1eb5481f40bd4..6e4f262bbfbc0 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -31,6 +31,7 @@ int scsi_alua_sdev_init(struct scsi_device *sdev); void scsi_alua_sdev_exit(struct scsi_device *sdev); =20 int scsi_alua_rtpg_run(struct scsi_device *sdev); +int scsi_alua_stpg_run(struct scsi_device *sdev, bool optimize); =20 int scsi_alua_init(void); void scsi_exit_alua(void); @@ -40,6 +41,10 @@ static inline int scsi_alua_rtpg_run(struct scsi_device = *sdev) { return 0; } +static inline int scsi_alua_stpg_run(struct scsi_device *sdev, bool optimi= ze) +{ + return 0; +} static inline int scsi_alua_sdev_init(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 785373BD229; Tue, 17 Mar 2026 12:07:44 +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=1773749267; cv=fail; b=c5YdmF6/vlvby9797h14sO3k4SNGQC+9dWAtFTv8eNpcu/0BzTOMED4sx6H3ov0z2BRAA4HlYAP7XEpE2xKkeR/S4MWBdLKXPzC/9/rkWO4Y3UAlVj26YT9z5S7tHKi2oZzOPrkxRPDTNDQWgGVDB08QMDjQ+dA5FS6E3m44wJg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749267; c=relaxed/simple; bh=g7OuxHwp3f9eqddMF1ToK5Ob84oNK0lEMgsOKWIB+Ao=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=knMO0BhU7aTSpPD0KhVfiWlSdGeJ5g6TMFr1yvkMVXbL2kUY833zxkJ2BUG8I1xQo8GidNT+CYOsbrk02chs0jIu3cs1IV3NI3NUe9Kpgd55SmBuSgLZup7/neHS6nwQTnxqEdLHnb4mda6rNrciKXZ0d21XU7tI1fgmITXFPDA= 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=sg+G+/sd; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=H966RtnJ; 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="sg+G+/sd"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="H966RtnJ" 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 62GMfRnW2629971; Tue, 17 Mar 2026 12:07:37 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=MIgl19WTgVDQ7PYxMbO/J0ZQFKK2o2MQw9P/VSrbZXo=; b= sg+G+/sd806NaXuUs7k6LlIhF+nzgJsE44fE5uggmFit/dIeFD20Seu6ngNC24eN CBSXeqghg9MxBZgvReEjeMs0FPMWAYcgS0X5lSm8N/E+nY3YoPisuq1oMokKl0Fe QbkoFrWNyeXBhuasKlptTnzPHxnJxQDflgSXMJZNSBaxRvFjVg+6MKzd4FlJB1rc XHzSICINIcNS6WZKyQuKPVp3w1+fC8VlbRDBHbv/2agJLOfoCZix3PIM/evNOBAj KJfpGRC6oA9rZ08j7isV++xWHTwHJDJaWAZ10+UReeO/Uod+VpZQaxOzX2xLXSNX +2pW7rwV7Mlr3HDh2D9nFQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvyqbuy69-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:37 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62H9jvh5017844; Tue, 17 Mar 2026 12:07:36 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013025.outbound.protection.outlook.com [40.93.201.25]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4mh26u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=w83e3FXTm+XUo69KAIFZzRvIk5tlUQWNqZ7TI9DueYZF4Jpw4iTBbGMdnNO1vzzHt3eR07diMpPhwmdO+6jjN+S2EXFWDw5o5Ei0RO/F5fs7zIXcKeDQzaL8cgR35FYC4sbBWnT43xdgvPdWpwuLf1ox5dkbfW9+Tx5+djGRsGt3f4y7PFq3sgkLwHT/kRF1AqgNzVw1LPp0wfUmfAT25MNKs66YTb2boo4nfGHfhDEdDemr38xsxL9qTOgFgjLqVJgmNziGcrJj8i1lhzq9CR7Y4YefceZK3iSYypt0436Mk3ebl9oKQt8erlYGxnuOZ3aAwYZ/6bKWkb7y+76Kag== 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=MIgl19WTgVDQ7PYxMbO/J0ZQFKK2o2MQw9P/VSrbZXo=; b=aANJWBGYkFRODheRcBO953vW4zN+PpLghYwz+YY9025rhSeViVM8TBl+G6DKnV4RF2Cbm6C7/WqpdFwt1ORAQ0FY6OWkE26s9rcameY+fUAi0yEZoRiQ3lTkafOOEaNytWl0+m274NzqujJ4lqdgfz7Js++gHUxW4ns77dsg6DrvDvBTh3s2QkQyto8AMAdvNArX7y23CigLaOoOf7H8835ZG4keoWvzqJFrcc+462EQzcrl3qJ7DmiCq5rMrmui36JWyCnhv/FU9aSvAuvgBMyZkSCEupQICP8LZkyjB/A+kRJ7H992w+pJqoUNbeQFlqcVnc34sXeT+0SxN6TMwA== 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=MIgl19WTgVDQ7PYxMbO/J0ZQFKK2o2MQw9P/VSrbZXo=; b=H966RtnJeaOJK5BljQoLHo1EqNTFxFuSoG/SGmKMq/s68sELXJU7qCM1NJGNMMHnQIUhp3MNmAr5DP0r9FDtGvKDSWhYPpyuNb4pCEKh5OOMUlkxVtotYQX3yx2ib+nCO1fUYLrNCK1WJIB1rmXAWO0FD+P2W9pQtdfzLw+SrUk= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS7PR10MB5976.namprd10.prod.outlook.com (2603:10b6:8:9c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.22; Tue, 17 Mar 2026 12:07:32 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:32 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 08/13] scsi: alua: Add scsi_alua_check_tpgs() Date: Tue, 17 Mar 2026 12:06:58 +0000 Message-ID: <20260317120703.3702387-9-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:326::16) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS7PR10MB5976:EE_ X-MS-Office365-Filtering-Correlation-Id: 7c83d045-9360-43c5-0dac-08de841dc494 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: xXuuFS5t52AlK/jxT9707wqhbIrovp08EHq9CV8vPdLNN0HRQ71X8E0JbGA07yqwX/e/1K02e3Pd0yqOyeonWlNxLNv5MHWYgg8ZVXQNIyydJPoGNVK0tnJB5l1cXqqdIy5Zl3ul9MtMZK9igoUyKl3kZNcJdrjCXDXigLZOyG5mmtH3SLUJG3IpNmsLXem3kyzWwsP8tydAhsR/ZiIwUkL063VWgcysN3bugMoVCCO4iQDuZYg6QSatrrErlTjLuO10lQ6rJa7aYwv1bB8CaAsYdSa+fFMEv73XoNM0GnWyraFAj0i81kjeNEEuYKyhFQxCIezAYYDlWLZzQBMU54KwS89B0vCsthy+Zi2o7qB/jx5ZBJv/2yJE6+PrPBAhCu9gHxrUcHkwSMJWeN4z9thhFPLGR+3PRp7JM4zVRp2HewyixfjJqHrI1ciDGEnbtLhvWGou2UxHizCkHgilDnBaO/K4XruKFKM2W0DPIFPHbFkYf3ECQQzjOgDVsAg6+raxawij4rKO7pIWTT1Gxy9On7nHY9Nf4VhPV9znZVML9IEYlD+gAm1rk0/p++yaDI3YLLV/ClzNuKvsSS4IGobJ8x3e/MQkk2eP6PydsD4AhZMgwzNkzkLdPQhnW2d8kz7SjMbmQ+vZTXRzzlC2WnPhFzmoCfLtAE0SnDbipmBQx8ynBiidJjWGj0SKD3q/LLx4QF1R7SepRsvn7fXqwSMo7QAMbZ45saGnGIojhHU= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4hkFdV/j44Zm9suDEo7nBk9zaS8M4muwGwibTOlPxmXOIANtg37oMYxtfhPp?= =?us-ascii?Q?0BSLszeelXgqA3uEGlE9WvaCMDmNhfh3bUosVB74AjBTEBJMOu5Qkb4Whh2L?= =?us-ascii?Q?D5xDmIAfhPEKX2GV4FDWvldhL5atEtDjtCyIqyVAhrXhjxokIy2Dsr+3GO+t?= =?us-ascii?Q?3GutTxPoUastuurL9OoqyX3o8qdEcpXcJapBKaYarJWXgktHi7R0KMtQnd8f?= =?us-ascii?Q?BqtRimiB+a7CEvDtux+YPKIFWDu9AvX0wuqJ3ByQ3kRKaIhvsuCnW8Gg1ntZ?= =?us-ascii?Q?uOITy/qCXfGe0zFYDc0AqjMVRZJuZ5vEBuQtpqnDK0GKZPSVjjJ8PSZtSuCW?= =?us-ascii?Q?gJbdCAvcZha7CbdLlQBJUGg9POaCFHLKk/0c4QH/RB75KLwbHes7ToXOOmcz?= =?us-ascii?Q?vWuxWNsoN0zQM+gWzkCcJmmy9GqSD4VBPTlscaJEfejJ0uoBJraDjyLv8Xah?= =?us-ascii?Q?UyDzWgLGigT5qOxr8j17WZWuOYuhwLvAF+6LvlR/WfbUfI5Jh8aTpMzOqObJ?= =?us-ascii?Q?fvbSMAA6AWOtchBJI63z1T/a10Fdaktl3XEMWmff6Mz6c4+WUsyM2ZzTwAdN?= =?us-ascii?Q?uoebdPM9KBjyupUzXfHrta8WcvEytr6G6sIFyC06BlfFfRQQnkjYmiwraT7w?= =?us-ascii?Q?PpnqFm+figXuFQ7xxOnXYRPNhtZSEUObc1UEwTaBDfyy2l6Q7UjPe6mAIhVo?= =?us-ascii?Q?9WYJB8t2EkrjC643O72Qe4cXyVLPBnRf9mIgS3BJv3RuQIu/94tFM/FkzMRQ?= =?us-ascii?Q?Q1lSem+DqraKBZ5+6QRKmnqh0KLv4GNsoSCdvp6PAZ5RTehQxaU6y5Kh2Wa9?= =?us-ascii?Q?5F+RLwn55qqVSr+aEc/AJ6rrIwUg0/JX8VDECuFNwpGlGspG04jVhd5mzwxh?= =?us-ascii?Q?L5uU8xvgPBSPa5hTXveWZjeXKoxggEmDRjgxbsYfcpsvEnvpAZsIBJNNP4u6?= =?us-ascii?Q?Md2uEZoTGs2SfbF7dXif1sTMcjRTSD9I6sdG5YgpL5wvvYNhTUjPRPzvGgo6?= =?us-ascii?Q?uHTMpDtAhZHRMYHtfF2DB4/dCCXnzO1OSx6Cf128srLVV1Ivl8ISYLI5OiMQ?= =?us-ascii?Q?W/ZXO9kofUrKPwYF0bgZXgUsAFsOyhTXqSAfOBqB7TUx8CW5Kr5J5gsHk9iB?= =?us-ascii?Q?5s1RUF0WSSMAe3L0onOtFxr/tpPyN/qeYZrhmpV9+5vMIlR8CeEXOALWgV8H?= =?us-ascii?Q?mC7V7D/H9DvzC2JhlPtZhVC8Oj5n9xKI5jQ9vKpo/LrURoc74vywi7A1WIPp?= =?us-ascii?Q?2aczzkaLAyU5eclPjh7/uw3hiXx/zYIT8/m+GxN/qeLyQoziT882JhBwyjpT?= =?us-ascii?Q?HFXzDGYV/nq9l+HWdIaRgTgDYFf6HCNBbG0EZqhjP8ond3jcSAEa1hU2B8p5?= =?us-ascii?Q?dpQEV15OXt3/zuHSAoomtAuRLAwp31GQ8Wr2onw2OC6OR3N1rEb9VQtwqQW5?= =?us-ascii?Q?QWVttSIP2oXeWeRgzKRyqk6tZD2GYU7HlSuo+mMrUg4kxlez6junSjHfJ5kY?= =?us-ascii?Q?FWAM33AeBIDidmnIR4l0U1kcXbIrbwt0W8OBm1viMsJe3rzoM2lrMJNShMHP?= =?us-ascii?Q?JwnwBnJzuXdBBakXR17My40g7iPeIg+oxzr+ni4ijoZ67xuTEh5EablRMkn+?= =?us-ascii?Q?S1EW3Nj9JlH2a1QrIEywqEIodsuVJsHN5Cd2IWREbvQIAuudXiZTif2gv36J?= =?us-ascii?Q?xqB0NdmnXUXFOOyyr42tveG1a6T5V9EQaxl/bqNvURJAXfh2ckWwPeP2jAPx?= =?us-ascii?Q?kA3Gvs9kHIAwRoqipmUnByipupX3UyU=3D?= X-Exchange-RoutingPolicyChecked: CLv0JlJyC6Udh137KkkBYD0rCdMCsuAN8WKzxVqvm6w3iYMwTiX5k8VRiUOVP+l98oTMfVI+k+NToq8Oe0SggclOliDnGdZcfDvBxLozV+apm9baMsSGSJyUxfOdbv2vY4dg3Bc3kksWCnGl11b+1wa/A3INQWRnajohLUlvBT/P09KaMi3Km2TRn/mQ5iNgcY/y7b7ZiZvvCb9UvNNbccImjfsVgF5rJTCVfAdzoex9HKQW1AuOXR/9FZ4dthE5qmmYMqdO3uJ7Xpf69jui2ewqyK/74ayKzcqZ/4YL7lAB+/PPQqvjXhlh3kaLqcEem6tZ9zZWX0UiXobf3h60IQ== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: ycuoyWvx3I24yCwr5XRfjs16kb1xK0tTWZ1ZUkZrU4JZXUKoODt4f+PDZ+zdOFJGDeU6u8qRpMgGhsgERpTyHXD3d8cG6sR+BjBWDBwY8OfKlmidzf6YnLDW+MMX9eeOa7OUoHodnoXRDPibHj5vtLI+9dIE1i+/b8OCaKmWkJY8fCYr8J9puugOXj4Z6LQbfTbFq2+TCD4OkGQrezfK1a0J1l4du1ws8YCPh91JJ7r1oSF0WrtVaJnqg2JwOh0ZlJZSnIoGUBFK66WyJGtFk14wEHKsc8VKyvmWtwP6g7PyXzLYQXtHdaMk2yY3yp700DhXgAFpKjq4LPeXb1sV9W0XJt4ojXq1P5M4s0rInGfsqif4lP6ppZGlj0mXV22PN2dM25nyUMOuO+L1Tp+vdRtvm/fMCmljnW6lYMF2yC3meL0ehvutEz2humne5vSJ6IL8gyGaQYiphkPor4nOBWV3bXXOZXEmdqbycLfetHG3im5FDy6UhYorTbRzCpLVDsE+V088YUyW2yEBhdyL5xrQ5a9CzjCxvOygsqLpn8n5hjh6pHw03Ynl5pyWwC7jm/YZklZYZgxus4znHo1vsYdLDr0mx9S9XKXnlYtecfA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c83d045-9360-43c5-0dac-08de841dc494 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:32.1843 (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: c4Ie+qNDNDLA7/vBJkB4zVkEhG2hSembEiarde5KlE9us5FOyAJhWdZHYi0ZSXZF7+lNfXoqcdcFDOGaOf9fDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5976 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX9R90Tlyb6XAS W+Qp0RGjJvcNXGFs1RsI6POrKL/8CgZ7AD2uJaT2f/8icBFRuDJsNOTVnPUr/4ty2uzSk6g+Vdl mrCdOfR6yT6j3oTOZZRV6vNReVnx9Tj4iIhbaU+JRqcI2UhMzYDPtsvtypr+91KqaJk1xqCeLPP eqfgUejapMzwhVQQY5g/Cb8ukAn1gu7i2C9RYmL5msWc/7KDW73WLvAaxGJbsyGW1f820D+7p1Z fHfDL7rIZWrXIPw6FSdr5tq+ssCnqDfTjdGv/aYhNKtzG5ORZRq15+z2TLZ7qW0yGNpK3fp5YdQ Bbr3/Fy7kReO8L58Ll5xGnO7wVHsokvGIGrGN6voNinXZq8pi1TyrgQo9H3eRwWJXrSM32NW2aY NaVlZmtsWucf5Lyoq1cLYGnI4mR/mP9XMs4v0/+NxT1iCJewfZIDiCmNNtAGoikbCU0rP32909v tUDDrMOlR5tCRU+PcmIEt0yaKtEKq01C1Dz11t8g= X-Authority-Analysis: v=2.4 cv=J8WnLQnS c=1 sm=1 tr=0 ts=69b94409 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=yPCof4ZbAAAA:8 a=hChlPkc6gP06MHZJlesA:9 cc=ntf awl=host:12273 X-Proofpoint-GUID: 19LNzdIY8yq1Uj1R2LIYojUgufFjVOFX X-Proofpoint-ORIG-GUID: 19LNzdIY8yq1Uj1R2LIYojUgufFjVOFX Content-Type: text/plain; charset="utf-8" Add a core version of alua_check_tpgs() from scsi_sh_alua.c Signed-off-by: John Garry Reviewed-by: Hannes Reinecke --- drivers/scsi/scsi_alua.c | 53 ++++++++++++++++++++++++++++++++++++++++ include/scsi/scsi_alua.h | 6 +++++ 2 files changed, 59 insertions(+) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index 4e20a537a4ad6..9c317e60d031e 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -128,6 +128,59 @@ static int submit_stpg(struct scsi_device *sdev, ALUA_FAILOVER_RETRIES, &exec_args); } =20 +/* + * scsi_alua_check_tpgs - Evaluate TPGS setting + * @sdev: device to be checked + * + * Examine the TPGS setting of the sdev to find out if ALUA + * is supported. + */ +int scsi_alua_check_tpgs(struct scsi_device *sdev) +{ + int tpgs =3D TPGS_MODE_NONE; + + /* + * ALUA support for non-disk devices is fraught with + * difficulties, so disable it for now. + */ + if (sdev->type !=3D TYPE_DISK) { + sdev_printk(KERN_INFO, sdev, + "%s: disable for non-disk devices\n", + DRV_NAME); + return tpgs; + } + + tpgs =3D scsi_device_tpgs(sdev); + switch (tpgs) { + case TPGS_MODE_EXPLICIT|TPGS_MODE_IMPLICIT: + sdev_printk(KERN_INFO, sdev, + "%s: supports implicit and explicit TPGS\n", + DRV_NAME); + break; + case TPGS_MODE_EXPLICIT: + sdev_printk(KERN_INFO, sdev, "%s: supports explicit TPGS\n", + DRV_NAME); + break; + case TPGS_MODE_IMPLICIT: + sdev_printk(KERN_INFO, sdev, "%s: supports implicit TPGS\n", + DRV_NAME); + break; + case TPGS_MODE_NONE: + sdev_printk(KERN_INFO, sdev, "%s: not supported\n", + DRV_NAME); + break; + default: + sdev_printk(KERN_INFO, sdev, + "%s: unsupported TPGS setting %d\n", + DRV_NAME, tpgs); + tpgs =3D TPGS_MODE_NONE; + break; + } + + return tpgs; +} +EXPORT_SYMBOL_GPL(scsi_alua_check_tpgs); + static char print_alua_state(unsigned char state) { switch (state) { diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index 6e4f262bbfbc0..2e664f20d9681 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -30,6 +30,8 @@ struct alua_data { int scsi_alua_sdev_init(struct scsi_device *sdev); void scsi_alua_sdev_exit(struct scsi_device *sdev); =20 +int scsi_alua_check_tpgs(struct scsi_device *sdev); + int scsi_alua_rtpg_run(struct scsi_device *sdev); int scsi_alua_stpg_run(struct scsi_device *sdev, bool optimize); =20 @@ -37,6 +39,10 @@ int scsi_alua_init(void); void scsi_exit_alua(void); #else //CONFIG_SCSI_ALUA =20 +static inline int scsi_alua_check_tpgs(struct scsi_device *sdev) +{ + return 0; +} static inline int scsi_alua_rtpg_run(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 D59763BD627; Tue, 17 Mar 2026 12:07:47 +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=1773749269; cv=fail; b=WXToUbPxgjgU1c/CWDwLi2l0YwHYBH5fmGM9KcI3h8vHjzLIowRePauonjUGoU1DWjUc446TmiDiijl496fC8QLhdttwmkv5cgZrxPHq8GpnrkjXZ4zGKi/hqS4zRgLBqWJ6jC4CK97RuRkIb6GayNdD1CG8X7Q54XT9b7Pg8oY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749269; c=relaxed/simple; bh=D6kRsgZnL8a5kX/23N3tVM7zPImbgWRuRCPfI8htioU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=CAqF1HcVrM5CqxcKfjMrtAyuFePhQ3UvYiLaZTLXgR0azMy46AMj4tE+O7S71o/b4HRp7DDsZuFcWzWgKmZhbbhTafd5MLcE+Di8ntH9anMFhn31LhNHkNq2/Ch57xbSXVOld1PWQg2UzZ70AMkWeKg268pnMHB235XwnupWRTM= 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=XFpcG9Re; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=J1mJ+srb; 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="XFpcG9Re"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="J1mJ+srb" 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 62GN7VTf3005786; Tue, 17 Mar 2026 12:07:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=SUWSbEjEQ9FkkqYJYlK0nz6w3cgMcg89TTGXL4rTREM=; b= XFpcG9Reab62sMAyyRoQ0apZqYMB7cOy6G63uykys5kriD7f1bUBj3Dxdf/3wOxJ c/8HSc1AftNGUxTOavELZ47Cp78t4YdZnzDkAr/eI04rYNPS0q9lbBbVxYFpqEAJ qdcBm30zXgFsuuJ5yHoyVF6K6t3r2giXnm3lkcIt07uBr1BuzHboaUWeT2OSG09S FWST3dbU+71vd8DTjuwRFsrQebxSpqVt7PFlFSybv5mjPGghG9v26ac/6Tn6+hNm rdGMMJ1xkIseuIsvkNBwEZgZhFG4dZaIugKCnXhE8lm3MOgWBar+/46jACP5qIrw YbFdr7NO+XoSHpk3e4e6gQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvyqbuy6b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:39 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HBPCbC002699; Tue, 17 Mar 2026 12:07:38 GMT Received: from ph0pr06cu001.outbound.protection.outlook.com (mail-westus3azon11011035.outbound.protection.outlook.com [40.107.208.35]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4m7tkr-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=r9KUbLA+ijsqc6zCTLVoVEtLkMotMznbvUWHCGP9Tn/EfgFO4n5ZaoQfAyaZ2q1yirZjb1o+Az2fdTr/naqgRprRTcvUuYtsD+3ToNaH8O7ev9ReTPNL9PtV8Kdu+pzSVhUWDCrCBZFMXuLyXts3JfMP8EVNt61yEfnT9NfUUQe45zBC9XpFTDpy2+12ZeIV+qdP/0oBVNt3qDxKp8TmgVyHi97j3ZqeAFcPaYtm+KB+i+XPp2OGZcwSgwOh8IB+PTvz3g90ZE96oh7dxdFXn6oawYmo11Bl/2bWS6KRGY62W0J9GyVQgmFidXghnqXVe7PeO63QFOG4OFoe+bwCVw== 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=SUWSbEjEQ9FkkqYJYlK0nz6w3cgMcg89TTGXL4rTREM=; b=PInaQEdu5al49jFJjhZWspUNrjRdNjX6ZQiO1j1qdCkj6leNNBPPKbqjwL11O24kva6s/OSGjSPzdXnyOj1lFfP+pwljknzTph6C4oInji1+XyKoUUsHwp0Sl4zY/f3EGJv6UuJyIAIbP18okC1w1I0j6tN+SIf8unm+TdF6ZGIrHEFpqP1BIhPnPs4unftiz+o0G9qPcaIVNv6NLZbsx14/6SFlBsWDDfm7nP6zKdXmAlB0ewVYtoEFB56RXCffotMcowrOb2ySu0XKjg3bEBYDv1RKGu0PnYHp9R2klE2cl3vIsU+9EWrLYbYWQsplkkitbvWG+Uu6WWzSfalQ+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SUWSbEjEQ9FkkqYJYlK0nz6w3cgMcg89TTGXL4rTREM=; b=J1mJ+srbg8rEANWGJ79XsyUBvcW47PocwUu5dyPy0leZ0t0c9d93OdET0oXydLcyWZYBPMlQIlK+I0NTLBxbwFMMbhXMglyqDKBetYWylFksWXwmwkrkAA4/QbiBWfcQDlHXdgfj2wC2898NhwHs7ijg5vLZ6dkYb+aSpn8HRHo= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS0PR10MB7454.namprd10.prod.outlook.com (2603:10b6:8:163::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9723.19; Tue, 17 Mar 2026 12:07:34 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:34 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 09/13] scsi: alua: Add scsi_alua_handle_state_transition() Date: Tue, 17 Mar 2026 12:06:59 +0000 Message-ID: <20260317120703.3702387-10-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0013.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:326::30) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS0PR10MB7454:EE_ X-MS-Office365-Filtering-Correlation-Id: 103909e6-82d4-4918-5aee-08de841dc5d1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: iKzkPu9L8P6eeMC9KYsBtv2qzp6yVHyhFyqRqDY0CsxFz4R4N+x0cgpMmCF2at0PGOdBQgdHOcT4xDX0xEbqSbptiGf1mL8Pt9bujr2HnS8Y4dUStMjEArq0k+aGUzgjGmV39ZuOAut8ZuZbrisCMRoj2NyuDOoChPXmt1PzPtlf4gYJxeQ5yEAZL32CUJo2aybyE1hns9edTjQLf+UajKCK7jsG8BzkpZg71xd5+AKThyq/6gHUyLwERCniP1M9Lv04syq6v1fdNAHWkbiQE7M7P+n0fm9Z6G8Ir8fN4IypYv16B7d4rkBVTvrSlSeu2awb3yjOlUzGiQ/xvhDyIBixOblLXrVm7hrK1uFXgZ0RQhYeegd8rNYOSYNFzjzjANVlit+0Qm6hJfTFTTPZcz959+RIzVT42ziHIwYmcB88vq7kIbckjVrtKJmEEZfs0cYcc5A3291FNzR6SlOC8eNjjc//6BHJrhHPypPIQw4Ehn+oldWW7tGVNXSfYo+GByiXezgK2RXMLr8qIsQu0n/NnTHt+P4liwB0Fu0G72kuEeq1KfNbUIm9kI7260tB+Nw9CpIdh9fpRh5Xq9pks2THzkBEPKUASZhhWsBEwwYwA84i1By0xk6j9Vcc0EzitV1fRDcFrm51QocG++wjg/TC5jqNQnMhngk0jl2lh0uIutViF++H2g98WY9G7Dy5N1XwYHtqi/G95ZwJTs+2oYtqMqhMz05mncTz3R/SJtM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ynd/3zkLvBHm6sxxa9QOxwZo4668MvhA0Ph7xM+2Vqv+w1k0/pxRZeRqix0A?= =?us-ascii?Q?fY6CQhtqJxIYrhV1Dw1lE5vQsVkVnTTYzVn0toD+kDbg1UsLzQCGHDb499qi?= =?us-ascii?Q?b9K5u6O6ij/KRAlWDC+bBjM/ZnNcbXUQF4LqGXVu9ApySZ8y/emjOElEgUEx?= =?us-ascii?Q?1KGdglDBNqJtg1tzRxPJJXjH2pSAEG6C/ahLvLknSJ7qwlFRUyLdqBeUQDav?= =?us-ascii?Q?+pIMmCJhSVLAG1oaE8pgKNx2G1Dx375WuE4x0cr8gHcl/75EXDQwFs17hA4c?= =?us-ascii?Q?gjEfmAa2XNknGdkn8pgR1+WWFZWYQnZhxwXDUdnFtGWsJhiBcclhaW/CoDJz?= =?us-ascii?Q?N4aPKxutSO2JC3Eu/I+jTLvVRy2i6lCW1OGWOWIkYNJhyMgt/+Cs8JPAGcSZ?= =?us-ascii?Q?GcqyAhw+rmU1feaDusddLg776YMPbfodcCdnfLkq35o8hSCnmkmaV8NymeTT?= =?us-ascii?Q?LX1cTQnYbhGHeC9/73ZVfCoXAKJT8T9JqKCX9YKEIDVSfwIZPT/25/Wp5qeM?= =?us-ascii?Q?aLN5icD8iMr7HG71tgX/QsPEGzzAD6vpSSfsKj4zj35eubNxumdFabt0Kiqn?= =?us-ascii?Q?xZFXQDSRajgORL42W5Azn2amGEVm1O28Bgw6EBoMHIOMyJJOPVAWBxvQ1j/j?= =?us-ascii?Q?B/8dPKU9pdCj4uJCgxL731y2PStvtKKrQ8OWqMXjRdqbBMEhJghl5zrmPFHJ?= =?us-ascii?Q?MB9GXbc406T3v9zfFw5US4ang59zQZvXrYqBiWUSpPleVyZ2y5S6LO0W1+hv?= =?us-ascii?Q?Mfg1UmUW3jEiKMTY+EQQokL25dpqSH52O+HJ75n9iyRXyLNldm06WCpfKO6R?= =?us-ascii?Q?NJRQTeiqvGokxFMaz4ukvdIMELUKKBDHPKK5oUzLiU3o1dqp6kSAz0UvlnVy?= =?us-ascii?Q?cAhq13vyqOxnak7GBWhXP5NlkkDqULE0Y5YknZt3obmgbWIc1EyOjZEqeHBc?= =?us-ascii?Q?/O6gkgOr1LyzWzn0HNwS1fN5Ko5oDH8hFbiJWiIIa6mxsUHKG9/HFp4aw5iR?= =?us-ascii?Q?I4rrPO2yWFzt+o3hOVgBxcUamyS/E6LpnZreX6kOAigKDZAvEpFL5TACyyVd?= =?us-ascii?Q?OA/wd8jMitM8CgFbH52gCKFgyjwVv7qDUzTJNZy5oMpCvIN5nB+pKrYWKiw1?= =?us-ascii?Q?owNqGZNt2Z5mPqJAvOchJYvJB1CSrF/JFNFX4/CJ139L98Jv57AgmTCR/Oov?= =?us-ascii?Q?6J4S8l/LuNPJ9m3Vt9UHYax3OphXyDKcX3ds+ffUsA8/ZfmmNfY/q+pVAaL9?= =?us-ascii?Q?2T1LPrJkc61qS5lu9xfPKguxNIq0ui8Jfkl4X+Q+diCQRXZ6v6CwxIDzgDOK?= =?us-ascii?Q?LcAVxjjFRlWh6G/ruUuejWVE6GcKk0/hxpqKRj9GNvzA5oryOoJ72NCHZ3UX?= =?us-ascii?Q?TE3Jl6a6z9FQ/l3XPB03pMmaaPRDAlJuGqXHJemIVATQzBmtv6eim4aTc436?= =?us-ascii?Q?/gSwBp7bcRLhmclU0P0w9RVJc/Zp2Gu0LL+elhMwo4HRaCkc+FLRnCzfYaQK?= =?us-ascii?Q?FZLyb/ZvsQGcP5X50rk+EqrhMGFgDkRMKPwSZXEry/w6PHsZxAGugnP4C7ow?= =?us-ascii?Q?oUvJjYLBnGpMFAghHryiXk0+PVbqEqRfXkoO9gsfwW+zpWt02PBiDO7S4JzU?= =?us-ascii?Q?lCK+Yn6w29j4ZOXSMPOaO08XiKfXgUbouQiVK/chMWJeY5EHGHXhKuBAQ7Yn?= =?us-ascii?Q?o2xj1O1E1FSYwxXbNwrB/o6tpRRsmINsX7eUkBHyylZ1cCEz7i19x3XdLx9C?= =?us-ascii?Q?8AJp0+M1TXL+HjXCUUOCCdPA/prwT3o=3D?= X-Exchange-RoutingPolicyChecked: JHxXtvFeBgcYbCsmmaGps3CZgzVXaAplHi9sM2oPDQxkxbhph4as+us8/LRVZiK/5ahxukVN2Zcmvnu5Zc75Af0i5kL910hf9YlVl84FVJwHqFhaxDPgvpJ84nwh6kDX2gWn/sXxM0du5rFyyI+LALM1gQwzz8ur/w/vThH51D9CLrsdSCrC/TmsrrE0brSGQQCfahFLXWMxC8WPtkEdAZafncAWjpEiHU7yx5Jv841FwlpMLP6MD5HhX+kSZfDcrZnrTE1Lf3kGspc0k3/GpK2Q8gHXEBltlkekUtCcdz5O/ZuzfKpmWFKz2buM663Y5Q/noxk7PQOBdyh+x4jHMw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: sCaDCn6LapAH/IGiSgFKRl3Ck0pdnBnIveTEpeXpshz7P02UTIi0r2Kg98TMmQC+bSkpbgDrKiucvKw+WysR3OOMi/MLuS5xFXhjATveXIOdnL7MVmT3zD+T1P4/CGb0x+lWdvWBVOyIy3S9E5sFjw36I8NS9gpub2PwPgaMh8w67Fg8ecoIzrVK+f+8Wbdvqa7m+rYoUzhn3dLn/CmCFI1wT/JkfMHVyaeAKQn9aKQ6DkBVBWtEHWgqeJbKgLb7fUWVDVGvTrOD0iiJcmDBzU50crviUyqnfn4UtLfUTx9ePiSdILkUoYtNcf/a/i/UoywS7fbgolho63au1G/vLyTTJFKwJCqhAYGoHkvM/MsEilU6lrIxaoXqgvZqiolycbBa6e2vETxKvFp840/8UPQ/22BOecfMtfO+i5p6LBqLghw+Cywiv64Mud+2U3oqJ0U0x21gf5qwdJgMqJGjvQpfwzT1Ggqn7zuit+8Vjv6fm45vRkPZcsH3lJ+f+dKKhvoIkZro8yVGblx8nsgujtfA2rIg//jzTGxW28PmKvRwVTMe5rPK4tVOy/s3Cunm2mokA3awJSCFiA3CsDNrSDs2gJeFR/RSeEBysT5wHyo= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 103909e6-82d4-4918-5aee-08de841dc5d1 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:34.2493 (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: FhMkAqphF9QzajZ6BWq7mqVRTFm7xXm8kpydJwV6Yc1+LfzioaiEEKTp3Lq+qHt1O6wwAFI+rl9Om1K2wF3aAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7454 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 phishscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX+001yxmJuIto 9Iv23KwmlXXtIE1OrmGij6njUYnJhziQTMiAC0Dlao76ULAxTpetP+LCs5TjES2Lmf5A1bH0A07 OSwoop7jSoBPzcRGmtv+4NFxmoZR5aMkaoRVTx9YSCOjVH4zL9aVqhw9K6n2kDdoMy7xDU0xiZc hbtJOKR8WKogbdtCwUABmIoqOHqRQKFRdydsemZFn8I0269fq3f5o0xWYBYkVgd4cCkKiWBUCUp EMVc6lpzKExrxD1wtJa9JF6MKWavoIbKcIoDpnT4JyBpNFBxawtKycvWBaMr6pf4SbQZQIWbVki BSqFVtGNF3tZ3XLlWxZUe9UpLeYARbhBR0ZL4pQywcngFksStVrGbr+VT6u2hzASSlojDIGCSdD +1iARhsBADRLa58N/Mkt9yUmU2bJ4DMq1m6R7+YGlfy7IDmyjbVEAbFTttKx5SKYFRbxjNKOM8q 50wIh3voCrhM6nMeNjXjepyoSFsPELSL41Co/qE0= X-Authority-Analysis: v=2.4 cv=J8WnLQnS c=1 sm=1 tr=0 ts=69b9440b 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=BqU2WV_vvsyTyxaotp0D:22 a=yPCof4ZbAAAA:8 a=aG-FcTSS9aIwPrGjZIgA:9 cc=ntf awl=host:12272 X-Proofpoint-GUID: usNcTsC3sxn6i-K-ptWTAtKxBBcvZ_Kx X-Proofpoint-ORIG-GUID: usNcTsC3sxn6i-K-ptWTAtKxBBcvZ_Kx Content-Type: text/plain; charset="utf-8" Add an equivalent of alua_handle_state_transition() from scsi_dh_alua.c Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 11 +++++++++++ include/scsi/scsi_alua.h | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index 9c317e60d031e..d19d1845bc324 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -40,6 +40,17 @@ static struct workqueue_struct *kalua_wq; #define ALUA_RTPG_DELAY_MSECS 5 #define ALUA_RTPG_RETRY_DELAY 2 =20 +void scsi_alua_handle_state_transition(struct scsi_device *sdev) +{ + struct alua_data *alua =3D sdev->alua; + unsigned long flags; + + spin_lock_irqsave(&alua->lock, flags); + alua->state =3D SCSI_ACCESS_STATE_TRANSITIONING; + spin_unlock_irqrestore(&alua->lock, flags); +} +EXPORT_SYMBOL_GPL(scsi_alua_handle_state_transition); + /* * alua_tur - Send a TEST UNIT READY * @sdev: device to which the TEST UNIT READY command should be send diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index 2e664f20d9681..5b3a12861658f 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -30,6 +30,8 @@ struct alua_data { int scsi_alua_sdev_init(struct scsi_device *sdev); void scsi_alua_sdev_exit(struct scsi_device *sdev); =20 +void scsi_alua_handle_state_transition(struct scsi_device *sdev); + int scsi_alua_check_tpgs(struct scsi_device *sdev); =20 int scsi_alua_rtpg_run(struct scsi_device *sdev); @@ -39,6 +41,9 @@ int scsi_alua_init(void); void scsi_exit_alua(void); #else //CONFIG_SCSI_ALUA =20 +static inline void scsi_alua_handle_state_transition(struct scsi_device *s= dev) +{ +} static inline int scsi_alua_check_tpgs(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 D68993BD629; Tue, 17 Mar 2026 12:07:47 +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=1773749269; cv=fail; b=KvdGtijDpm76vXdaqs0CAs/AkMFsVS2/5HN/lKNz9MQfxQIe4o2a+Cyf79dSyNNFBGN/N3lrrk+C0V3yK7X6wMyDsGO08UDdGXh1ge1uxhy5jsWFMPqkncMuYiT88hjuzNSLCNTxoSQWoB1aykX5nf7byX0e8p7oy8Whp864xpE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749269; c=relaxed/simple; bh=VgYtamapMJvR5ZAvY1aaZgm/bI69lcn3ociUeVMyWdQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=izrFirbI5KhFPvAkwVWukb7/u+cNzSnxDSqUy4jLyb0IuhwcShv6VZ1KmLUG+t8vEgXnk9Ix/TeB0zujuRXxwLJWkUOQMRvVYykygmAL9Crzvy9323VvrqjMc6oAVm7K15b++0ayV4Gr4/RHhDCCKUqArMUx9LOFMAzyaqcpFD4= 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=noiJaBWO; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=oaRaeCCN; 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="noiJaBWO"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="oaRaeCCN" 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 62GN4uts1347797; Tue, 17 Mar 2026 12:07:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2025-04-25; bh=qs6brQKG93X0dnUWjK52b2sQ9FPr98n8xPjH8rza7As=; b= noiJaBWO0hPq+bSQIYTaOJrh+352l6ry+bvj5gmHbn+UtcoPonL+mhPj5HqHOAEc nrRDDkamth4ec1KFluR9lgWw55+n0GdEkIVsvu9w1j4wlJaQKn4ltU4imLaFDN8+ NSEzUdW4sTsn+cNdVWM4Ir/uU6Wk6TYNoxkt1aCpruOTK/y2X4Yn6h8JkaXXqPmk kyLHuwnpS7ylhPMbeb1zmeYGY4Ot8La5K+UEXWDtb89v5eN3HwRDL0lmERTP9RNj WZQlMofDrQo8gDNO7+IvMSF15ZQMTci2m0jXlcozyUoorVt4JQzC71xNBCkaWxU/ CStAin9o4qi9scGQO7HHyg== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvx3b3xhu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:40 +0000 (GMT) Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HA6t0L003526; Tue, 17 Mar 2026 12:07:39 GMT Received: from cy3pr05cu001.outbound.protection.outlook.com (mail-westcentralusazon11013049.outbound.protection.outlook.com [40.93.201.49]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4a01gc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NQPEjWVF+btnZzd/hkalykTCH9V05QtnBCGG0/Ak3rkwPMWTUqnUZqH5MXqHkEOxj6b96zwrNBttpa5OcC2MnRR4w/4T/MNOUYepRqlbqrkzTeBlSkKI9FFaU+9k2llrnq1J/cTsuKAB5/zFVZRGFyisWgiEb7R+B8jHJo/OUAPDmcLAzYp6T4aZn6SVeZuk4ln4xEc/yXzkQ56xMfmC29woJjBjtDLnmdKdMlqtcygas74ahEb5/7JmBB+oykUeQn2hgov5d0hzPwiGDwiA5wOw98p1MtmajRWXHMj/CnmDvnTGk/YJZ+xyyaz+uAWJPnRtkIIsIHb8f+KTC7rCLA== 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=qs6brQKG93X0dnUWjK52b2sQ9FPr98n8xPjH8rza7As=; b=SXt3+n1heCF/IzLizo0UxWN/UR+c25iWb61Ex6czpF75VbNvKi59y4OauSVYcV/YakzV4XK1nYbHB8Qd0hX2OxFeyJra38kmiyjuBu/r8u96mZyQYUWG/1INRvGEW7ZL9SwW1ofLZilXgSs/+txljUoSK0zJ5RpDXdBZEn/FhWp9pZCAHIqK43URHQjXMlOa6jMJG1C3bGHpyzqMM2VXGKMLQ5tOtUU2V1Oq+mg05zT9ReyIQwcCDI+b/IN2lqVEY4hDIL4FkjYSs78h7bVNmxRP+SCa0VCVT2qDlZE82CwNW7BfNS0IOtEg8NxrMrRtHRKcdZJByLi9ESpgj9SRXQ== 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=qs6brQKG93X0dnUWjK52b2sQ9FPr98n8xPjH8rza7As=; b=oaRaeCCNZdObE+/CLA45azfiPz0mc2mP4U2ysZGWCGnNlubh5+0ZIH3MkBd9PFh/raPvEQmqdRxGYV5UDjoKfdjitfXHcnYJk68pwW6qXunUkWc1HnbADgBOw3qRmkTRaaZY4LQOSgZRikTL+dcXCRborsDcpZWIi61P40PzkIk= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS7PR10MB5976.namprd10.prod.outlook.com (2603:10b6:8:9c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.22; Tue, 17 Mar 2026 12:07:36 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:36 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 10/13] scsi: alua: Add scsi_alua_prep_fn() Date: Tue, 17 Mar 2026 12:07:00 +0000 Message-ID: <20260317120703.3702387-11-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0029.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:326::21) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS7PR10MB5976:EE_ X-MS-Office365-Filtering-Correlation-Id: b8f3d35a-197d-4d9c-7886-08de841dc719 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: dV4buX8r+FK9g/qETxq6BgWeINcJuI2pnHiKrmA5099Ihgdm3U21pSEd6cRgTc3AGFd5zkN+7L4A9xZBbNq4cBdYQnPhDtZp1kjEJTTwHlpBOifLAH7xeDTaMkMMGy61lHz0toMbfqbwMe8LmVT3DSogdAgJjpiJVRkxNTXZVL90Wt6zv7WF/EJ1HTLybqnPxb93x7OXImf8jR7np9Z2ktwFLbgZyJER2UIOUcRuDiS3aITRuUuzeiIKtANUXNqZmB/9wEB2Bvcjs+9yv47WTKamfSL/JXD/0qbghLw1jUyCXzd/JWfy6/oJE+DaoFSIWQKzzqGNL4K5CotA5aDcfrHxf06FBxQ8rxFR9WU5CqeS4CPwf8q7aGRLE35vzSXKiFBPkipvH2YTS5N2DwxfDxskvOHTQXyeK6mKD/cO7HW0T7u2G2yo6jVFZIUqQ/lo8nBoggvWKLXuYsoX9C9qwhA+B/Ceem1x3nv0fk15fky+Ld0In3v3nqYTj4sYQe5qpNfJpcenJsD4+ghKCw79Ti6Nod5BSjGv3RDsv3n05upRuGIiBv8rhZkP2sbP5axVvGab1nBhs9HVFMTF5IKgZN9oxHnZUOZOyx6dmGwpAhOaGvvTgnkEvhoeDVICka5W1Ns0UtGuGbwqHoyZ+3K666Mh5ffiAU5nwQ2iG/POIaeY2EPdkI/Z8RJBNrc9blzZ+pC9hqS/kmFROk/AK/4xQli+u6y2bOXl1luZQlWDsag= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UE7UppDwOTgQKlNeBeeA5654P2Vle0cVXotwiaWdeATcKNyKMAC1aXjuk8D/?= =?us-ascii?Q?mo3/Yd/c9O1wu8oDNBh6qrUYkeKaxq+U9caOhcZdwrf316mTDuXLKBvDWZ/Q?= =?us-ascii?Q?NyKkLLrLbo2xx8Z5BABd8ALAnfyF/ro5ufqofB+1d4gOu7XzHjDg2JGEY6c1?= =?us-ascii?Q?FZ7rgHY6N+xzbCeeB0lMlUFflavxxgcvxoQ2F+Q7SnTkT7PnnVVIN2szxPbm?= =?us-ascii?Q?pX8zFHBsf7xFMLHtwzo665gpBHg1e7JHxB/Td7joWYPNQB0GAjneau3ke9yB?= =?us-ascii?Q?XYr2vtSMvCXYmDTFleHa5QJCozfyVAiAU76mve1SMtGUhJdQfpdFC4zUE30o?= =?us-ascii?Q?QzHesEcKBKTZJ2GN/ff9mBsU2cHuI0W3/JJRmTZxkSCnetjNRXOERp6WzNSO?= =?us-ascii?Q?5V+woU7flJp8HNYKPM+gLrQ/sJZ9xdm5vVEn7aHg9ZBDnjgBlHIHOmXEsfUB?= =?us-ascii?Q?qWHIebKBHSdTheN5WOkuwqVeMbsQD4YF+Rsnz6qRptUUKvL1+BjFk9++NmHt?= =?us-ascii?Q?2gLgrmeDwxyZZdL3F6LgdRErNTLjQI8ltpw1MOQ79xwA4rYmeLviMA/IuuYq?= =?us-ascii?Q?/Sut6sgeFG+2mXt/2s0LLJSFUpAWtnOO7ZKYHAew01L/hJBTv3DDQLsoP7vW?= =?us-ascii?Q?hDmHwe+ny3SwOxMDJS6VrSX1NEJLub3Eah42jdJhZbiCpz1DDP3FYS6mOm/F?= =?us-ascii?Q?AIDTXx26ktKZBWv+hxTDjeF8f3uZYhOm7C3LPH0IZ/kLssH4TOjTCnwZiWD6?= =?us-ascii?Q?2GyWLashC3SrrNrVMgU9XTTowD5iQm+hr/hwd37YMPm/u5GKNLomDlTan1Hj?= =?us-ascii?Q?uN6u/csfGRgcel9KJFeeCP1Sg3HrxwqNBJ4Nienh4CcNTPSpWTNd8jPS/yuX?= =?us-ascii?Q?B+ajI1wkAbD2nJYYxFzwqOV9V+IsBLrMdys+mQaBbOkqzJ/n7cJsR9xEpLMy?= =?us-ascii?Q?4rbVDEV2+e3wKw3+S9yrjqArD77O1+cv1rBusITDD9GzPqomMM4VZ/OKW4Ig?= =?us-ascii?Q?MLUO+V0A6PD7xgNEOzW9sladFzmx6EYez1SrClHCxUWR4uiPEhfDNLF/UhYN?= =?us-ascii?Q?Ox+LQvyJuJXH4atrNDx76WcwQwq7lIp6FDCQtUdNZXTce+Pz2qoPv6kkqRoJ?= =?us-ascii?Q?Jp9X2coyZeN05F/TD4hYjc5WVvMQJ30v51FHEMYOzszBn9i4CRNogkPX6AD6?= =?us-ascii?Q?sM8wQ5lrwmhUUJULDRfGFyagfAQUtQN6J8qLHsaW3gF/BtYuL5Gp2NnnCh2l?= =?us-ascii?Q?AsthNr0brea5AmK1/U0FxBbe3JGd4Mo/KrFZL0P10Z3MaAxqh/Sd41QCmSjo?= =?us-ascii?Q?IJrMC6uK1H18sKd8KQlLz3SR44TrCwEB9ZEUqJwRM+85B46arKmfU0iFxItM?= =?us-ascii?Q?BFFeUbTNH+BWeegrTK37UM3yzYMNuGR2nGQ0bpEVWctR1Ui76vHoUfnuxIbG?= =?us-ascii?Q?VfUt5MPd1pKbtZebkxlycTXBS0vy+aJCAZkzIhrmksPS5SbvdQR85n5ITSRZ?= =?us-ascii?Q?9zbLfl3z0GR7JfYHOfO2GRJv1r+MaTrXm1rsPxiDRHlgahkTjAAtU1QZByBQ?= =?us-ascii?Q?PkvyUJFDRcTlmwQ/fsr/mrE1aE9Zlnn8hHPBxTW872tvL+qww5KicbHjpD5p?= =?us-ascii?Q?QOo5IIJn1qGTVAJ+rMsZvZVP7T5uf7CDd6Mlxxz0LG1rLjcc+HJEc6TO2+Hm?= =?us-ascii?Q?mb+/Wfjenl2RMB8J4P/hq3l/IPZdk6qbUIvy0DenR9Fvui/Hr2RckFum3nCM?= =?us-ascii?Q?+0t5RJLC4U7SgBXav4tNz6Ib3w097/s=3D?= X-Exchange-RoutingPolicyChecked: Ftfkv5BcT6cg4aZIUATqCzOnNV2pyTN2RiKp3LdTwe0kDqCIPhJhXxEBtbBOimQoG+HcXzhXgCdi0dxoX/6VrcyqKlPJ+zI4nMO4Nqi8Xi5e2JZqM8IaF3mmZ7c7UB14W2kilElZbe+qAYWdI7NFac9lnzdjaS9pASb/IrK5hxFlEsVL4xgpunjRRXPMciOySgYwZLAz9uduOAHyZM5H7WIU2MOf1KVCB+ls9laZni1ljO0K2gJfWVjifv1ERfjj/TaTeHQJgePraCNDhnmxVXmxtOkaZ4gfTDAjcFdOgQocG+QGQZiEzSkJiQBZcsJlMODshfJdd6pjg8bf06Y2Ig== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: xnT+ScXqReKQAXztVz31U9LSFAUwKzYqLQ3oPH3cERxcA7Ew/26LB8fGfxTUy5gYvDpsK0mACYXwh8LZA5vWpdNjt9rgVDRghR55h1UYko0ETKA2HfPmqa/xH++Qt24kKuc4ucKJDuSwNUC+31HOPkRMa7B5W0oKocFhUv0pnPa4D50NyV6c+C/SueQghfjKoiJWWKMzgMYXjSnrMxrMi2nTYsUKbpfIZ4UOP8HV8z9vxCFLN7bm7zP6nQCEkj4zENy/UxLmKkvAFDnFxdaIDBJmn5QOdU7L4D1GBbepGw6qUUYwpbv7YymXmCST2WJN/SsCzgk99KfDeWa4mAcX44wgSEanbdtThInh+wAr1394VN06Lg7LxX90Qrhl2HffY17/zdskRQ+vvE9ex71tRd/9l07Tdf8gQ2gztj4924tNabPGe7umFrf5M9eZI95rUx3xSPrBLFaJjqu/pmqHVziOvdc+0/ZKnYj2Y6o1PBDgXVnBEqOPhlLg0cT6bmNC+3Pc53E8G3dujv6ZH3GL5uoeYSV45MO6Eoh2HjRJCgk6BZfCEwFTQjO9g5+Ql8Nb33tlkLfuI4tGgTp+UoPX9c7JMfiGVi2Pgl+WfQs0oEM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b8f3d35a-197d-4d9c-7886-08de841dc719 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:36.4109 (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: EcICIw6gL3+Ru3xULZ1XX9PLyX40nD1wyp4hhTyxclCl62rvZyzWFniOnl8025oy1WTCJ8nELb8fMk7CnivfnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5976 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxlogscore=999 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-GUID: LMltvQx-3nBOcjMSELj8sTeCBWlTW-2j X-Proofpoint-ORIG-GUID: LMltvQx-3nBOcjMSELj8sTeCBWlTW-2j X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX7Gg6Hegg2COO Xq2CDdXDe+44soqd9zfPILjtlhhq2d//AaO3F/n4ge6+Tu1Ri97yRvRygK2FsxVZo5+BQlocGo8 QZoj+/H38RRu/ab0ci5gfEICND+y+IwmvDMMURsLRbNTEX2nZPm/NsYoRZjSG1QPliIkSRqePUB 7zTqmev6rgaUeJvqNNgiM+nzCoMd4FAbI0ayKMkgOeDykgsN/b8zkLh1nimxA/jToASJ/qrD09o gXO3tgKUoyZNIAvih+ea67hsz3p9CQ+XlI3rmb9RTgUv1kSC+U8RswT2uBncNvp8aqZPhOJYubt 2pg7g7xJqwaDCyfnzTx3gvhECGKLu9OkR/wj8F2PEXJqj5eajoiJ9Q+UeXVnMgrJCtWE6bt1Dj4 J5PKpJbOw/0XTLJkdP9d1nxuxNuD3Q6kA2BYyx2TibfMQ5jw1CphlcQtmZLZ3Is2kkIgCm7u48U libw83Bg4E2LsDVbYBg== X-Authority-Analysis: v=2.4 cv=IN4PywvG c=1 sm=1 tr=0 ts=69b9440c 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=x4eqshVgHu-cdnggieHk:22 a=yPCof4ZbAAAA:8 a=w2j-RYuHlRZ48gblGfEA:9 Content-Type: text/plain; charset="utf-8" Add a core version of alua_prep_fn() from scsi_dh_alua.c Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 23 +++++++++++++++++++++++ include/scsi/scsi_alua.h | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index d19d1845bc324..c269105dbae4a 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -608,6 +608,29 @@ void scsi_alua_sdev_exit(struct scsi_device *sdev) sdev->alua =3D NULL; } =20 +blk_status_t scsi_alua_prep_fn(struct scsi_device *sdev, struct request *r= eq) +{ + struct alua_data *alua =3D sdev->alua; + unsigned long flags; + unsigned char state; + + spin_lock_irqsave(&alua->lock, flags); + state =3D alua->state; + spin_unlock_irqrestore(&alua->lock, flags); + + switch (state) { + case SCSI_ACCESS_STATE_OPTIMAL: + case SCSI_ACCESS_STATE_ACTIVE: + case SCSI_ACCESS_STATE_LBA: + case SCSI_ACCESS_STATE_TRANSITIONING: + return BLK_STS_OK; + default: + req->rq_flags |=3D RQF_QUIET; + return BLK_STS_IOERR; + } +} +EXPORT_SYMBOL_GPL(scsi_alua_prep_fn); + int scsi_alua_init(void) { kalua_wq =3D alloc_workqueue("kalua", WQ_MEM_RECLAIM | WQ_PERCPU, 0); diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index 5b3a12861658f..c16d4adc915ec 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -8,6 +8,7 @@ #ifndef _SCSI_ALUA_H #define _SCSI_ALUA_H =20 +#include #include #include =20 @@ -37,6 +38,8 @@ int scsi_alua_check_tpgs(struct scsi_device *sdev); int scsi_alua_rtpg_run(struct scsi_device *sdev); int scsi_alua_stpg_run(struct scsi_device *sdev, bool optimize); =20 +blk_status_t scsi_alua_prep_fn(struct scsi_device *sdev, struct request *r= eq); + int scsi_alua_init(void); void scsi_exit_alua(void); #else //CONFIG_SCSI_ALUA @@ -56,6 +59,11 @@ static inline int scsi_alua_stpg_run(struct scsi_device = *sdev, bool optimize) { return 0; } +static inline +blk_status_t scsi_alua_prep_fn(struct scsi_device *sdev, struct request *r= eq) +{ + return BLK_STS_OK; +} static inline int scsi_alua_sdev_init(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 BCD5B3BED26; Tue, 17 Mar 2026 12:07:51 +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=1773749273; cv=fail; b=JlWnn8322+azY+W8HguH64OoaWQ969J5XHJNOR6MCWCFrfQDho7E1gVN1lCZFgZPllCbvFmrtUnkqjgafMYg7KxDRZHKyesKcdPYROJskB86MfMYymKzgAaqZYnPXSOToemk0JFKNOOp0shVsQogqLryHN3zh8u9yVfF7DJOMvA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749273; c=relaxed/simple; bh=18ExPBL4lFc+FHi0x3KiuPt+qJaiBI1gbTWMkJBdqlM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YQzZv/hpFA0zUrJ0lLi1JqpcabvX93GaXOKjTSg7Mk5Zr1atxCQKvx8xUt3wIYPS6ZBkk4W5XBtFBQHhh9TaC+12m5gonTJMOsSPTjuOcTxAtsy2aI1rOfhY75oIT7rqFKowUUqo/QqvnPjWyLtifS7h8kQxCRJctNKxCG0oBbU= 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=Qbnl1q/m; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=CGGDsPev; 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="Qbnl1q/m"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="CGGDsPev" 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 62GLEe0W1337612; Tue, 17 Mar 2026 12:07: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=fu3irzz6CEZuCbENjJGVMaWXJdh7PhOhkyMbQBT4BAE=; b= Qbnl1q/m9NeslOzmETgMgHIh8FbawwpxpbHxWenMenccnf9Ry1SgcrAsfbyKvF+W 6JOWl//BS2jiWcP3POMlScfTrQ9YT1coKtsQJYDNUd9XHSA+DlRwqgRwAEUaAKmb e5n6HSxssG+tk4OWFoZSzMV/LKHMgAA1dmRyIBxhhURr/x94zt0rvz7TqFBhh98O nwnYZLsh53kWBL2pKhhI4N2K1Tk82GkJCWm2qtp+utSbFIBsRO2Iabcp7+GzSHuo M8kKgI7goNa5TgkAyRaiUeeGlfnNCpOpdC7hlZWmjEi7gLG6m87DaVreKupGA3Ih Ok4b6AjaHz3HauDQyzBCbg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvy9rux07-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:42 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HC1DtY017822; Tue, 17 Mar 2026 12:07:41 GMT Received: from bl0pr03cu003.outbound.protection.outlook.com (mail-eastusazon11012048.outbound.protection.outlook.com [52.101.53.48]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4mh293-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VUFA5wY3oJJekcTr6vTWGJZPLDt8WE3ZN9dsC214Y5qM/YnygKz6lvdDt5k22F6RKvDqoGGL29z9EqTfL91+QQEIy7wJqts32V91UXqopqNxRnFYPkdsCKmicfk6Y8aai5+t+lOkKz9ILEjcf0IWd1ADQsIjxrqkyeeVi+pF051rZJ7uUc4ZuOV/huAPCDxlTGGgcLAhsxF4sMYLZUtBQHs1xA8sehydLF730qaCsrcOyQKTsvFrDjnqVd7FqY3PZ94lnrXAYUrB6pLZZx7FSMA34+gOQd4nEEtfu90Y6sicgdilUoSME/FE0zQm/Q59RTm9eF0L0q+BnQ0avq27VQ== 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=fu3irzz6CEZuCbENjJGVMaWXJdh7PhOhkyMbQBT4BAE=; b=oa97fRXg9Xp/4vxHQar6CkccLWfGhG+4t0zDIlx2gVlXPwrPXuK3MwhB+k9Czi7akg+16fIouZgs/KjJdTp8Y6a13A7uyb4m4MFG6sx3RL/jf4i4LzoBQqDn9dTUhJ9NCQqdNT/Z41sOyhxwhZrAxozGKffElCyL4cY+Ccvq6Df5rYCoTNcmcFNXXRIiVIMIAEr0vptibWC9BPaw+hf00gSAznF0PYxppGVBGC7I6AVg77LPG/pKXrFo1B+I8YdaxzPI8AqfFb5lEATVujxaFoLuCRcs2aZ0AH9rjRP4IfOzNOaNdIQVPxP/rdoeP/5L8k3IQBh3vrSIOC9V4vC2cw== 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=fu3irzz6CEZuCbENjJGVMaWXJdh7PhOhkyMbQBT4BAE=; b=CGGDsPevxge5T6SGUzyRi4ccqCTkxaBrOb5SMZTnb/a9isD+PO/XBy7ZZfWTVpAQF9x9oKUIiFjluIPhX4pDVBvwzgOoOnxx+JfBIs7njb84b5gAxW6Fx92U9KdpWaAsan8OuzBlQfBDCJ57Ce5lqxd7/2GJredrBewSXmcYy80= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS7PR10MB5976.namprd10.prod.outlook.com (2603:10b6:8:9c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.22; Tue, 17 Mar 2026 12:07:38 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:38 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 11/13] scsi: alua: Add scsi_device_alua_implicit() Date: Tue, 17 Mar 2026 12:07:01 +0000 Message-ID: <20260317120703.3702387-12-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH8P220CA0013.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:345::8) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS7PR10MB5976:EE_ X-MS-Office365-Filtering-Correlation-Id: e9635834-8a95-4e86-cb24-08de841dc879 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: BcdBgWwaFZg9cd/Xmg1K99HYWfGcvUOtSqyAct7YtZRwdYH5ZmQb+C8kKEF8Oy4hRJBd7iqlM9osBRfJ/gm7T/JfVl8yeXXg0NWWK03LoSwarRaErNkWyTO6rHXtWDxYSgP8ZXbrmYDC+SaCq0DaCNCEb/kgy/qggxmOR3MHmBlU84E0JdtFLZTBdC+rpxKBmrzZV9K9X1EiX2j4JOWgxxhmkPljGmlJQ4MVgwszZQ3YXFG+ImxPxk34bGCPT4Nes79vifXrDmPNdcH5xY+NYgcQhwdobyAJTaWiEcB+/EuV5Jw9EZHM7OkVkbtRlpHcmJL/2lbOA1qumpywqRgM07rcPjU2cbCMEyhaQ6J+lwd6kkOL/5/f2aQsiCStwEzzhwpGdcGprIxYP3IFd4AmXQB0XT5ES1hlrIkCza4eoSd0x0HQuBQq48oGKQg5iK+Dy5yFp7lbWBhhYzu7w1M5GrhNLYzFonspnf8SYnYpDuTnktWjGc13r2U5mhJ597D9bXpyeK363iE/rAWGFVwUXRTMdeaQLZGYFXTg47jpfCkY3QyI0DH0iCNAgdk/zzQxMS9d7y7RL3Jjr3cNSPdaTaxoNIEJkxgEOQjlESqTCrpPOr8xZ9TBwj6eYIPwVev+hMNhxI9OOeyaJF7UjqxPPlDTWGV5AMkoqToPgdKn4z9wUnSIMrpGJYx+RTGby+flQUuo1GgQquNQXyzroJ0Sqdc7pTtp5f4ksdV1aRT276E= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oh0NS4pMELjpuEC57Fk51BaUaimyzW+HbyUheXscbB+wmw31mhx4HhcU/jxV?= =?us-ascii?Q?BVNOWb3MMznCOWVn4r3Hh+gkLEst3SCGSxWIGNsVWtvaoM34EfZ1NbxMxfLW?= =?us-ascii?Q?Ene4AvMRP3h2Wjflw2jcYiuIaqjKztUNKKRmdVb6wZuSyDAcrbqGG9vtsWx7?= =?us-ascii?Q?Utus2YC91ExmzHJtGvq2u6VOheFhpWap6MtWS47n8HAQzMr3MMOcOKDcgMOq?= =?us-ascii?Q?mTydq79p5Lz6jBbGZ36rVFX0fGWGIxvuHcqrdWJd1EmZnfu5a70GN+eKiGLy?= =?us-ascii?Q?KlDY98npsMW4/lALPTX9fp5K+A3vbUc94kfA50edrtmMX5iH1rbjjtak/u7O?= =?us-ascii?Q?ZTtNloZtFEkxLFWH/Cvsnr0S6XD2Fuv8WWG/X3e6zaZHzuo06A7LFGttndCN?= =?us-ascii?Q?V1/IM5CgV/b6/Vs3aBQQ8ykHAbOi6EnlP8wWFI1yS4YzPZ3JMmv3S4C4yHvr?= =?us-ascii?Q?qohX+PTCu/cjGolcCO4gU+bd3XTZfU1FDkW5GD5s9FF3BkkEpwMKfstQljHK?= =?us-ascii?Q?ZrTNFnjjx6hgLDB+tzWPrR0+h4MTenarZGzFIUQCgn0xBDDt+vStcO528i+j?= =?us-ascii?Q?mpq2iNSmRXbWTjprKM1nxkp/21QvSQ4iZmyY23O6jQAhklMaZ6xKd5H8v3uv?= =?us-ascii?Q?KlUWMBxNCoARPYZ9pmjOofmCuOUv8LvQ2wdlazO9FdeldzTm7aHnmQxkH3Tg?= =?us-ascii?Q?NCvF0wYB2wnB0hyVA1+zgmYzTDnpp1L7+UvVT03bxo+oTcJ7XRHwry25E/st?= =?us-ascii?Q?n8Dl7+6CtzGVYK3nRj7M07lM+wMv53ci4Eq6nFvXDqz2Rvumvt/3QRYwz6C9?= =?us-ascii?Q?2yHyG6Mc+56QJxJzXf4BOd/+OYH6twv9qW0/uPL7krsZAFFH0CITnH1jfPWd?= =?us-ascii?Q?bKUUnzuabp6NItFJV0025zJWUN7x8iLyj0Jc07Ll23hsCUVJLIvolT45BWJl?= =?us-ascii?Q?LAsl3Hrxx6vVAYtk7GpLuKjJqrltOfKA+hOJqKMVDtoqFFiCBLSVn+qSQRzU?= =?us-ascii?Q?wpb3TcIrGhVE5g3mh4Ma0VyS7/uJqehA5M6qEscrVs+Vbkrozx/xjzbG9R9K?= =?us-ascii?Q?x495IhogfW59JkvGUpsMGJk3mGTfsWurvaxjxqJtSycPpwTEDkkvMJ2o97uC?= =?us-ascii?Q?EjeWTPXLvoZMrjQPEmq42MkXXR9zUkYIsLygkGjA931jfSwGc+odf/xGsY3a?= =?us-ascii?Q?AIZtDB3U9Ybfw+zkLomJP/d2R8XmmD0/NuRdFX81aktgvZDz2Io76+SqtdPd?= =?us-ascii?Q?6PlWIOwsX8PC3FiI/sGKzyJGlmWHbhlrtZR13PtcrO/VebbDiqnJCVDyy2Dg?= =?us-ascii?Q?17I4lE5I8I/rWrV5YyFcM7kxEcuA9El7iP5+1fWEVBnG8ix38vJzCgG9KPIH?= =?us-ascii?Q?mwvT/aKNbBE+hlgHpkCXI+QLoprTswKNUM0L8jbHXMOZd7n+R7weWBzsr/0C?= =?us-ascii?Q?SCIMIuQs87HKQumgUt7kendNKpMUwNke+kwg62Srtlty8OJhty6P63295DIn?= =?us-ascii?Q?lk9/+JAqYuXHXuEtCYLMfssOL6Xuf7DQehonbctnemlxJoHPbhkvA85kbOyx?= =?us-ascii?Q?77vbX9LNvJrBCIAkGBT4xGrN/s/LCZefSZ/yMJLH62OFI0bzaZ6YUcSq4cno?= =?us-ascii?Q?5ZWd8SCxUbsPDRrYyggKSKEkOS0lUSBHao1Nvqg4T9pfP1e+4bzsC0d2EeoH?= =?us-ascii?Q?u14COfrLreVhpRX1LvagOSQ6eIitEzaM8yChTFmzwl6RdTAn/DSDQ9e9dHCo?= =?us-ascii?Q?30VoB8WfLQ=3D=3D?= X-Exchange-RoutingPolicyChecked: g4ODHpXHymsgkml0dP3s6vpGtrKdHZzduMbCgrvK2wECQUCJOOrx8eDsXumrz1PUUV20z1cxN4o8mO4cYhG+GFFVox34HHBPIZZLyh2t+q7Qp4eBntgS5En6CvGblfBJl6RYdmXEhTRlUtro92DU4wu/UiWoSg4OCNQw26jzCBbm4GulARvR5d8OVOhfDkQdJyJHpNwBBiogHUoo8weWRoDrxEsOP7Rbe3/qUCke5Tj+x/nJWK9Emx7YBdJRu6BO2vZrMbR36epm2Kpb6WT1SogJpDPnfqIIv6/WkSf/M9qhEM0xtq+jDrS4vDnoRXcFw4qvMysJ+I3rj96+xMtc7A== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: PqKvGbEhm9KcUVmPBkbSNuUs7qwZ/OqMekKM84qxKJb8lP5n+J77PtNkDQqLC9mTsnKJTfuduMqvg3Lwp2sGMFMK6B8OcKFXcMrXMqFHveETuGK7DoN7zdqFWI4AdbXpdQJFeRmKVzVM48F28QXr9cHZbQ9Zb2FRYuuz7Lpm5uqpB0OD2GjmKxqTvqCTqb8Z3eDBjuNFSKZ+WrmaA2YpUs2GUxXFO0We88ZHKZR5wfKBEVGUQb9u8W3MfEHU2BaGn32oA7wmDDzVFpYUDttF+mAEm2ha5oLwhzvkLq3yqBzRVoB/aAZxZYTO6n+jMJhixiaNcNLw7ZDDAMmblKIwyuN/SZyO2dhEVY+KYCplWakJazogZs04IZNhFQOC2mpk9DElOwO3y0hTvRKrNZesKzzc2gK2O/pNMLlIKkMMcBj2q7wqk1Si2H5dGwfWDMVdZQ5hyHZU4JJj1WS9ZQMmYMHwdvu9Z3kvAPxObim62aoc0UCN5AShxSjE41/Q0m8aDYKY9CpzVbZJQnvgDbfmSZA4LT1RRltbgGAsyFu5m3hN+bxTTn6d0ivxN8m3AQD7Y6RSZEJGRzdx5yNIOcv1zPpKf99NChwgwzFcWww1GsY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9635834-8a95-4e86-cb24-08de841dc879 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:38.7097 (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: YoI+f8Xbqex6gtZdmaLDpWLB+edqBlqSQ8C68lxp75eutEMlb8i53fGh7NVIInlcQoD7V2fATZoPVvXNZSjAqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5976 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Authority-Analysis: v=2.4 cv=X5Vf6WTe c=1 sm=1 tr=0 ts=69b9440e 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=3I1J8UUJPc9JN9BFgKH3:22 a=yPCof4ZbAAAA:8 a=KAAJkfB_3P8-iicpQfoA:9 cc=ntf awl=host:12273 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX03iDTrJULv5x vIdLhElcJqTgM3KPfWmvxMVfq0V0cCqD+Ig9e/233JPeiy/cRoDNJfyNJ4aWcgXBM7MVvX32quz u893MaChrJ3GXWp46SK8ADl3q4LvYrUA17VsBxtbHfaZna6+7CoiV8iJmvhfTKLgwjKGTNgJDxU 3CBfgYyc1/6s42cYYBLLO06IXtnPxyhlISdnebHmfhRpuxlPlf3qgt50LHOQc0DP61DdNnMG+UM FilN162usQD2+UrsrUdd+sJ8YDtRPD+qZHioGJEH3CKJIv7AiEyOcBT5/r+GjVPXEdvaSW+q6CQ vJmg6TwbdPdosrPD69WvgPbbxCKTb6bVKWT08Xc/miIorOARaMjtwJvXWHfpjGF83ynGc79nEC4 CgvdC2j2Q4BlgrslVhkNdW+348g6yxW/QKvknAtVUDAtFH11WbRCgTJ4/c1jutNZDaHtv3JnX6S bq8u8T/0tr60PIItnFcgEsQoFgkaFV56ez9vBWbM= X-Proofpoint-GUID: ekTHaxyDeZVDRp4onqq5uq27MurhWZy6 X-Proofpoint-ORIG-GUID: ekTHaxyDeZVDRp4onqq5uq27MurhWZy6 Content-Type: text/plain; charset="utf-8" Add to function to check whether implicit support is available, as this will be the general check for ALUA support and no DH support. Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 7 +++++++ include/scsi/scsi_alua.h | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index c269105dbae4a..d3fcd887e5018 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -631,6 +631,13 @@ blk_status_t scsi_alua_prep_fn(struct scsi_device *sde= v, struct request *req) } EXPORT_SYMBOL_GPL(scsi_alua_prep_fn); =20 +bool scsi_device_alua_implicit(struct scsi_device *sdev) +{ + if (!sdev->alua) + return false; + return sdev->alua->tpgs & TPGS_MODE_IMPLICIT; +} + int scsi_alua_init(void) { kalua_wq =3D alloc_workqueue("kalua", WQ_MEM_RECLAIM | WQ_PERCPU, 0); diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index c16d4adc915ec..2d5db944f75b7 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -40,6 +40,8 @@ int scsi_alua_stpg_run(struct scsi_device *sdev, bool opt= imize); =20 blk_status_t scsi_alua_prep_fn(struct scsi_device *sdev, struct request *r= eq); =20 +bool scsi_device_alua_implicit(struct scsi_device *sdev); + int scsi_alua_init(void); void scsi_exit_alua(void); #else //CONFIG_SCSI_ALUA @@ -64,6 +66,10 @@ blk_status_t scsi_alua_prep_fn(struct scsi_device *sdev,= struct request *req) { return BLK_STS_OK; } +static inline bool scsi_device_alua_implicit(struct scsi_device *sdev) +{ + return false; +} static inline int scsi_alua_sdev_init(struct scsi_device *sdev) { return 0; --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 820C73BD224; Tue, 17 Mar 2026 12:07:54 +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=1773749276; cv=fail; b=B9rPx2E9hu9xJLuds1vIsfjZ51ePpblyHhQsSa7wPvJdUVJJWcnMhNv8HyNZ+OAhfr4jBb1AOrWix3xqRXlBNt2PSYvezIJp6NZqzt7DwDmvzPsnMFR6qET0HwM2U28Rfyxh3HcMVHNsQK6iSbwcjo8tRJj4hDjrA7GSDbD4I5Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749276; c=relaxed/simple; bh=R62RqGzE5Tjw6GAX3I9yVAdzQCRzDV6WV/ZchLoNr0E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=u0ONsEjgw60ps5YS4ZBlnjgPpz4cH+YbNTo5gn39yPFBroCwrYP9eKpVX49Y0JvOweMv1ACzGmRG8oapfaTzRv4pMip/K6xSGm25oHlBg0r2Y6bpVogLhL5+kPb+PDcDGurLlj1iCM4m/0DkT6rjC5S4tFafO6iu3jJAP+yJd2E= 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=a4J2WBrY; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=C01k+bI6; 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="a4J2WBrY"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="C01k+bI6" 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 62GLZkUr1061276; Tue, 17 Mar 2026 12:07:46 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=+14gFPWhSSY6JLjHH4UJzAFhFa4yDEUuwhjPlF/9PE0=; b= a4J2WBrYALMh/A6DMPPhRalDnZ1hpoMYqRZCvGWAaZTptc4t4Z3KOKTKGzLuOWG7 eCU07rZ1GDPLsMl9jaY0WF7UXyWW7aEFGaHmAn5tqS+3iUln9rCOxaBXz2VeHfMp 0/nmA9XRygeKLLwTB5BzB3SYHgPwpd7pASzajaEbTmanu1vDD8o5AjQtlMn5EVCS rAkjYvR4MyzxnW08/yZPUZ3GejXpNa5F+zYEm0j4T0HzVVrbMFyOS+9UVN/AqBYD nwaT1t7/0fd3fqcVqsMHq/cJw+rD9DyGm0oTK/3CdDWcxgNfddRxW5Y73CiSvRer E9Lg5IKQnVcLgBX+Stxz8w== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvy9rux09-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:45 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HBvIOk017825; Tue, 17 Mar 2026 12:07:45 GMT Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazon11011027.outbound.protection.outlook.com [52.101.52.27]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx4mh2a3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LjxySUYNKuQzjS++xi5IWK/sqBog9FnnBem/JzjoqHAYrl1Uz28PtKtItmH4bGUMRY8f01b2MTwSAUg918CdCo8L5EjR07+Bz/uFsvmWv366wvzcWbXYbZucEfvkrlCGbhE9YVXXOTlkSeibGfd+v8T9VkdlhiEfKUTpADFKkH9DzntnF2p/FSpmf9UxrLwpr0RMGEk8dEpDN3xX5oEVqzCu3Zp/H8BV+JNVaVa5NnUYfU2qc3Q6A5Lm9ok2tHw8Z/m7k19kP1NFJMf8EIJSbkJjyOF+DYNg0g9+TboKziVWBCT5VmSK44bZUl+rqRLypDjsqCxekjJ/CE3QRmTs3A== 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=+14gFPWhSSY6JLjHH4UJzAFhFa4yDEUuwhjPlF/9PE0=; b=BWE8BVD6u5aTVlkUhYdP8y/OxBVD3BI2bGspeuHzBR9Oo8kTtSxYADH9YbmAf5OG/mFaPj7LbkEJH2HRLqfveRB9L2VZqH3jERGpU/Bk7dywPID+SOF8qywqGHKZz/6reG4ToVTdRSBKRY8VXU4A+l/3xVxNKka9pvM8aUqQUpDt3d3W11JK1CARFtqFTOk9xnQc3O7vwCVlRgk1vH5RQXTomJkuGAx9oaodTx+ORfAfjG9LNZKbOh2XZQqq/rodD72tw42BnyOUbKlxkRxJyPTn+tdUZoFraV6spjD87OQzaL7gFH7SfF+C3+Ks1QnKqVZAnrF6edH30m2k4mDsfA== 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=+14gFPWhSSY6JLjHH4UJzAFhFa4yDEUuwhjPlF/9PE0=; b=C01k+bI6z3u78kBoYQpv+YB+6wo3a5cMOr5ODDDfKjbp/zRGD1MqwL0wOE3E4d2ySWIkwc/sU1AoD23HOA9RZKshNUkcGFQafH9LUWRHzg+L5el1znK734lq51hZlrNK/+DqCWBHgCEKFgHSWN0oaa/mAHyNLS1uXl36LOLnx5Q= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS7PR10MB5976.namprd10.prod.outlook.com (2603:10b6:8:9c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.22; Tue, 17 Mar 2026 12:07:41 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:40 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 12/13] scsi: scsi_dh_alua: Switch to use core support Date: Tue, 17 Mar 2026 12:07:02 +0000 Message-ID: <20260317120703.3702387-13-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7PR17CA0060.namprd17.prod.outlook.com (2603:10b6:510:325::24) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS7PR10MB5976:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c773524-38c5-42bb-a8c3-08de841dc9b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: bXtfspgtOq01qq99weMV836kclvbyTTmiSdvs0fnqqKrPhMxNE0nGHHmK4rJtIX2UEMyhXY+iV2rCkrAuvyqkjptF1W8TLGankWo9zLQKaH5L4HdmIgqbMgDMRW7Fq1kGxbfCqqbD2nvBAUllERv2dXDJM9du9pE2rs8iojjDo44JsDYq9fGMpXHGnmE+TeMUucbGADOeiKzKOxlTvFV3DwdUY3K34Q/QZNdFbIkfcJJmY1UUD6bR/klEtpYD2eyv2Ojn0GEcu4JvFkQ8BX0E3mg12XhpsP2+3ZHdFy66Uz4EGBT3gwKoJPSMOz+YDCaxHdHTwRkCSIGIZvOXbBkNojch4QtBTk2pOshPMoISRxIve5ixQln/4HsDT7W11RoSOaXr/IfKZ7Y5v3EzUzi52CAc5hAXp8SUwESmRvoNxpLjPNBbcMMCTxYliVSjCOL3RazN1rakfDwLtn7UyXvQyXPO18Yec9AeTSXGvg+CjwzgVZWcduRaQyNl5ZdlAjvGWc//k8uMhZZh7fjvaI23GQKpZywez7RMMaz96MM09sTKP+oRRL9no4lCZGqorLbLdz3hXFJFddjODOYVeXX0uasJEAPMyEl/svk8T38pV3i+B/LDle2uWdtXWGIJk5NiQY7doCoclXDaP1chGn0vsG7mbYbWwPTbHUFxkapkn2tczPzD0lKg3cfIhySlT0eb7+tWdFKjpvIZ+pImaeR1vUrSMva7HTpuH89In5Mo+s= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lOkHeOu0m1ifei0Oy0PCgtq4ZY7y6Tw3JsONbPOrE1hwQ7NVARStKCVyfVF/?= =?us-ascii?Q?ODraw2rhvWPyYaXqicHga63hvG+1D1v4hk6br++M1KQfRf3X1yxZrQrXfhS3?= =?us-ascii?Q?Wl2iuzYTppa8yjBG6RIIdu0BhFCdXzc6iIBDgZE50/X0S6uNfiwr9MsSsb8s?= =?us-ascii?Q?Twk9aUY0bufJNqGqm2+W0Px5kv0PKYAZ0B7A5ignyMuRzC4pkRj6RXRUG9TI?= =?us-ascii?Q?qnO4NG1XKKSLiuEmzuQkJ6/56XwCeE+qyoorwn23PEi8zay32ngjpyWcJw3W?= =?us-ascii?Q?RW6XF2djsoSDH9ZsrxgEni47Z6mRBFma6kpn4oVs6rrqB8IkUpCjDtIDJD76?= =?us-ascii?Q?dzmxEWnPAHkt1Sykb2wWKR07/dok5hBA2kXz4v9U1+iYIB5d5jYzwS2IkkCI?= =?us-ascii?Q?yXfGJzfENSH0bntDZ7ZswXZStdMwIczFEnxPlZKo5d6C/5ehMZAvl6teU/Bl?= =?us-ascii?Q?oWUauDDd1e+pzPs+YMRLebY3Ye4c1il5Ti30vF2FAV68SR0CY4byi6kTKJP6?= =?us-ascii?Q?hnfVmny9gIsJA5zcXacQX9HoY6CBwGmSDqh6vA5S6cQIKM1PC/s7qbCXSakL?= =?us-ascii?Q?bJ2iYplX9Y0AjAvvBOoH/SuAGKYwQmS+t7pv7VnMHDdxSEwmae5H9lifggYo?= =?us-ascii?Q?pyTuSvYhDx5O+CUVlJGp/JCjYRFzVtJNWIcCzhb1Oz73/XNdqHiKNFfw8s4m?= =?us-ascii?Q?TE4WMeLkq67dA6kVEAePYEMqnoDbIrxOTnZSJwSUzk6wWRm1TGobYzh7A/In?= =?us-ascii?Q?GRoS1aYIlsoqq77iIWlct+cMXnei4UnTsoFRJbpQA4RaPQFKb9n6ZhNRsKlZ?= =?us-ascii?Q?IHeqvZHQMVpjog/kIb7khSEumrIKSUO1r99os4tlqwuKKoetgXyRCFFIfcQs?= =?us-ascii?Q?3vDud3kLImz3iMnSLdsApSyoT54bWR5dHPULPHCarRjob/5B0joz3fJK3F2O?= =?us-ascii?Q?B243FK2WO+z7PdSXpsYOkgk6Q4V7Sx2vCYkUpVAwIL9pHbbPlJeoCGewfM4H?= =?us-ascii?Q?MtBe2guytA5bizy2MtWtGsrXr2KK/W4ORTA0jULVfw/vQM7HYF1SPebteZS/?= =?us-ascii?Q?bwj2bfliCTp/YS5KeAus7iUA9DxsXhyfA0HOWsWH7/qV6sDbZ4iD6Mp5sStW?= =?us-ascii?Q?axJYpuIJWCS9YoyS0jotB2R/zrlRkMZ+UeFWq9syZhueMc9POwuSsKo9ssoP?= =?us-ascii?Q?dXOqpF8sY513PslANG5KXS0liwdTAJaMyvvG8cMCxXHM4lFFKYMjMfmGvpk1?= =?us-ascii?Q?PclCfkbkfCKjcOEc2DVw9ck+1aku79hWKlEkXXAQi4b0yXVmesEFWDgKeZgT?= =?us-ascii?Q?2/xPClqgh2SVOnGWRNOYu6YSPlKNe/bZgslMpo2sWXSRB6ZIHmOVxL6yrq1z?= =?us-ascii?Q?wonThfDqlBue2O5klGgygtIHNtJyPuKWPX8CvqzIbBgYBQtPaCNnP5GqYPgJ?= =?us-ascii?Q?t9CREqmGpIl6iraCBuAkJyApwWk2IpziRes2uRYdKGzziUEbbvSWFyVNR9ct?= =?us-ascii?Q?DfOmZbSJX0XHfWwWxN5AWx3+6LS/6epO81k9spwK7D48AppsTJ/9FvU89FG+?= =?us-ascii?Q?J0SZ7DkZt+xQ5R5RaMM6WfshsE8vbYTNeaFnTxiMiaHqAO+F67w74PVxvrpD?= =?us-ascii?Q?OFJRKJVYQJjDgF3jA3+0X46r6GfnWRf4Iw6Mh4bgiNXiRQTs8BSSbOnW9iqk?= =?us-ascii?Q?huQmrgcsXuMUriVMkqf0zkhpEhin9h33T4KluY0HSvwg7TcZv/p3+G4mhv77?= =?us-ascii?Q?7FoHBH0KDw=3D=3D?= X-Exchange-RoutingPolicyChecked: uX7aKL3frYU404wUQSyGWfiiaV05VAPtKrB5OJtTJvoe+SO/foROdO6iWEWz48HcEu+fnIZyARCjg4kL1AzxlCtBC1APHNgIiFfMpLzp1qhHHlO5fWjGiUR0K2NWAT/2KQi5XsY/PoiawT940t/ZbNAFN3tdTSFf6h8wH7pGwFGPDF0k6owYortU1HXdFxoXIuvwCAHoQ6WpY9459JNrDKld4yWbQ0pYM1yrigmiua+1BVngG9pP1XjxdAb9MBQs3e1KQosi48b+DATtl1zN1NSEMYqclhHiHXWJyx4+fXqKzRFumrKqPE6KEWf5a+wLQEThS1lCVNKv8YBo8jFvSA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: G10JxuTS83UyOk8KUaH30lrVIZhAqoIquxbQV+WwDnCo0BHtJ5Y3REmvnSc2gwgVhoEx2j0oswNFl17vwURbQYLEbYMaYuCMv8qZVTKUNfD+Hgy5ucG4RST0tOIZrODlU9IfeUP7c3FPwFdSsANEQl1okfSvUTX9+hm8avsgi0rkCFcjbg900jWlFej+66RZUSg4SIvJSba4v577pslDRaTQIDkDZJiNodqfJLNwfu2EanAZ6gW2IyxfLm3i8bEH8QQaBCDhZwIrWWZyJ7bZgcJBnBWFGmr5G++TslVkWzoPsMciq+FWN2B9D+tYNB7aQRp6XL1Kxw/0KAYR+MtR1hxz3ClQ/rjEkSENC4ea32lPpMHlPEOPW+7ADQ/n0ntM5lBAaQhVH3VL0M9E2BKJEwKA6c0RkeKt+FprPKERzt78rePLYco7hOuqSUBc+RZBeSNp8HKn/WUMRGWdxDlLMMaPtqgMYujGOLNbTOWaldZ+I/LIcHpulQmfWzVqybDwh0cMMaDif46vJNpdYAoNue+BRcWGspHzm0Kr76wTWkt3Vhsr7nbZZq2cCr+4amsk+rv5hPUCutHm2/nWF1qZwnbUdcCV4yFDYIkqUuaHjuE= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c773524-38c5-42bb-a8c3-08de841dc9b9 X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:40.8590 (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: nJ60GfxjqU0nz9oG0XcmPv+vR9Wbb5kOQo2z7/KeIaQ0lhthSHj1/UCrgP4lwjUzNSqVzS4MVGa2EyNw55DwTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5976 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 suspectscore=0 bulkscore=0 spamscore=0 phishscore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Authority-Analysis: v=2.4 cv=X5Vf6WTe c=1 sm=1 tr=0 ts=69b94411 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=3I1J8UUJPc9JN9BFgKH3:22 a=yPCof4ZbAAAA:8 a=O3QGT2ws4lNaYII34bUA:9 cc=ntf awl=host:12273 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX3Ju7+FZcoG4/ VzWZuUyR1zbrF7Jp1GFVYewwJOdzVSWz6DD3YpILE9oEjGLqEdrwwXF0WO4omjYroXkA08BHcX4 2IpDnb+VbOT1y+U2hgwuk5L9/56/SOxPoxVPY+8a5K8MCX9dKlCvq69qKA3oHyA0Oj3uS7DHNdk Q7VHW5yLdAruWC2HckXFt0MUhNabk/sv31Ghah5Bj5d9jkvfkhJ16Eqf5czHubuQnBVyVREZtMh 86OqTuwDwGEbsSUDNb9N5Ls4LvGPsCCfFhsqOY3HRXLjIkkjVY3fCGuUzbVbgk+MTOAnpWd5wMh 0KpwqGRpRjUU9TWtBh/zv2iu3J4uAht1b43GlZ6Dy+SPd9xfL4f8eE0IxjZ0S48EDY+ecgjZUBa Utw0JhbVQVjySXDRhFQHer+9MRJXTJMJAmMy2kBLEo6WzZavikcKJMeN2mke8JbODaadw3Up5GW ZoBK1COORvHpwHKT3vF5g9qyDr71fp/fKLxQe/RE= X-Proofpoint-GUID: YOv_RkM-8BiPYFy5EM3pTTM3itl05yWP X-Proofpoint-ORIG-GUID: YOv_RkM-8BiPYFy5EM3pTTM3itl05yWP Content-Type: text/plain; charset="utf-8" Switch to use core scsi ALUA support. We still need to drive the state machine for explicit ALUA. Signed-off-by: John Garry --- drivers/scsi/device_handler/scsi_dh_alua.c | 580 +-------------------- 1 file changed, 21 insertions(+), 559 deletions(-) diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/devi= ce_handler/scsi_dh_alua.c index 067021fffc16f..4d53fab85a7ed 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -44,7 +45,6 @@ =20 /* device handler flags */ #define ALUA_OPTIMIZE_STPG 0x01 -#define ALUA_RTPG_EXT_HDR_UNSUPP 0x02 /* State machine flags */ #define ALUA_PG_RUN_RTPG 0x10 #define ALUA_PG_RUN_STPG 0x20 @@ -65,14 +65,6 @@ struct alua_dh_data { unsigned flags; /* used for optimizing STPG */ spinlock_t lock; =20 - /* alua stuff */ - int state; - int pref; - int valid_states; - int tpgs; - unsigned char transition_tmo; - unsigned long expiry; - unsigned long interval; struct delayed_work rtpg_work; struct list_head rtpg_list; }; @@ -91,121 +83,6 @@ static bool alua_rtpg_queue(struct scsi_device *sdev, struct alua_queue_data *qdata, bool force); static void alua_check(struct scsi_device *sdev, bool force); =20 -/* - * submit_rtpg - Issue a REPORT TARGET GROUP STATES command - * @sdev: sdev the command should be sent to - */ -static int submit_rtpg(struct scsi_device *sdev, unsigned char *buff, - int bufflen, struct scsi_sense_hdr *sshdr, int flags) -{ - u8 cdb[MAX_COMMAND_SIZE]; - blk_opf_t opf =3D REQ_OP_DRV_IN | REQ_FAILFAST_DEV | - REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER; - const struct scsi_exec_args exec_args =3D { - .sshdr =3D sshdr, - }; - - /* Prepare the command. */ - memset(cdb, 0x0, MAX_COMMAND_SIZE); - cdb[0] =3D MAINTENANCE_IN; - if (!(flags & ALUA_RTPG_EXT_HDR_UNSUPP)) - cdb[1] =3D MI_REPORT_TARGET_PGS | MI_EXT_HDR_PARAM_FMT; - else - cdb[1] =3D MI_REPORT_TARGET_PGS; - put_unaligned_be32(bufflen, &cdb[6]); - - return scsi_execute_cmd(sdev, cdb, opf, buff, bufflen, - ALUA_FAILOVER_TIMEOUT * HZ, - ALUA_FAILOVER_RETRIES, &exec_args); -} - -/* - * submit_stpg - Issue a SET TARGET PORT GROUP command - * - * Currently we're only setting the current target port group state - * to 'active/optimized' and let the array firmware figure out - * the states of the remaining groups. - */ -static int submit_stpg(struct scsi_device *sdev, int group_id, - struct scsi_sense_hdr *sshdr) -{ - u8 cdb[MAX_COMMAND_SIZE]; - unsigned char stpg_data[8]; - int stpg_len =3D 8; - blk_opf_t opf =3D REQ_OP_DRV_OUT | REQ_FAILFAST_DEV | - REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER; - const struct scsi_exec_args exec_args =3D { - .sshdr =3D sshdr, - }; - - /* Prepare the data buffer */ - memset(stpg_data, 0, stpg_len); - stpg_data[4] =3D SCSI_ACCESS_STATE_OPTIMAL; - put_unaligned_be16(group_id, &stpg_data[6]); - - /* Prepare the command. */ - memset(cdb, 0x0, MAX_COMMAND_SIZE); - cdb[0] =3D MAINTENANCE_OUT; - cdb[1] =3D MO_SET_TARGET_PGS; - put_unaligned_be32(stpg_len, &cdb[6]); - - return scsi_execute_cmd(sdev, cdb, opf, stpg_data, - stpg_len, ALUA_FAILOVER_TIMEOUT * HZ, - ALUA_FAILOVER_RETRIES, &exec_args); -} - -/* - * alua_check_tpgs - Evaluate TPGS setting - * @sdev: device to be checked - * - * Examine the TPGS setting of the sdev to find out if ALUA - * is supported. - */ -static int alua_check_tpgs(struct scsi_device *sdev) -{ - int tpgs =3D TPGS_MODE_NONE; - - /* - * ALUA support for non-disk devices is fraught with - * difficulties, so disable it for now. - */ - if (sdev->type !=3D TYPE_DISK) { - sdev_printk(KERN_INFO, sdev, - "%s: disable for non-disk devices\n", - ALUA_DH_NAME); - return tpgs; - } - - tpgs =3D scsi_device_tpgs(sdev); - switch (tpgs) { - case TPGS_MODE_EXPLICIT|TPGS_MODE_IMPLICIT: - sdev_printk(KERN_INFO, sdev, - "%s: supports implicit and explicit TPGS\n", - ALUA_DH_NAME); - break; - case TPGS_MODE_EXPLICIT: - sdev_printk(KERN_INFO, sdev, "%s: supports explicit TPGS\n", - ALUA_DH_NAME); - break; - case TPGS_MODE_IMPLICIT: - sdev_printk(KERN_INFO, sdev, "%s: supports implicit TPGS\n", - ALUA_DH_NAME); - break; - case TPGS_MODE_NONE: - sdev_printk(KERN_INFO, sdev, "%s: not supported\n", - ALUA_DH_NAME); - break; - default: - sdev_printk(KERN_INFO, sdev, - "%s: unsupported TPGS setting %d\n", - ALUA_DH_NAME, tpgs); - tpgs =3D TPGS_MODE_NONE; - break; - } - - return tpgs; -} - /* * alua_check_vpd - Evaluate INQUIRY vpd page 0x83 * @sdev: device to be checked @@ -216,56 +93,11 @@ static int alua_check_tpgs(struct scsi_device *sdev) static int alua_check_vpd(struct scsi_device *sdev, struct alua_dh_data *h, int tpgs) { - int rel_port =3D -1; - - h->group_id =3D scsi_vpd_tpg_id(sdev, &rel_port); - if (h->group_id < 0) { - /* - * Internal error; TPGS supported but required - * VPD identification descriptors not present. - * Disable ALUA support - */ - sdev_printk(KERN_INFO, sdev, - "%s: No target port descriptors found\n", - ALUA_DH_NAME); - return SCSI_DH_DEV_UNSUPP; - } - h->tpgs =3D tpgs; - alua_rtpg_queue(sdev, NULL, true); =20 return SCSI_DH_OK; } =20 -static char print_alua_state(unsigned char state) -{ - switch (state) { - case SCSI_ACCESS_STATE_OPTIMAL: - return 'A'; - case SCSI_ACCESS_STATE_ACTIVE: - return 'N'; - case SCSI_ACCESS_STATE_STANDBY: - return 'S'; - case SCSI_ACCESS_STATE_UNAVAILABLE: - return 'U'; - case SCSI_ACCESS_STATE_LBA: - return 'L'; - case SCSI_ACCESS_STATE_OFFLINE: - return 'O'; - case SCSI_ACCESS_STATE_TRANSITIONING: - return 'T'; - default: - return 'X'; - } -} - -static void alua_handle_state_transition(struct scsi_device *sdev) -{ - struct alua_dh_data *h =3D sdev->handler_data; - - h->state =3D SCSI_ACCESS_STATE_TRANSITIONING; -} - static enum scsi_disposition alua_check_sense(struct scsi_device *sdev, struct scsi_sense_hdr *sense_hdr) { @@ -275,7 +107,7 @@ static enum scsi_disposition alua_check_sense(struct sc= si_device *sdev, /* * LUN Not Accessible - ALUA state transition */ - alua_handle_state_transition(sdev); + scsi_alua_handle_state_transition(sdev); return NEEDS_RETRY; } break; @@ -284,7 +116,7 @@ static enum scsi_disposition alua_check_sense(struct sc= si_device *sdev, /* * LUN Not Accessible - ALUA state transition */ - alua_handle_state_transition(sdev); + scsi_alua_handle_state_transition(sdev); return NEEDS_RETRY; } if (sense_hdr->asc =3D=3D 0x29 && sense_hdr->ascq =3D=3D 0x00) { @@ -338,329 +170,6 @@ static enum scsi_disposition alua_check_sense(struct = scsi_device *sdev, return SCSI_RETURN_NOT_HANDLED; } =20 -/* - * alua_tur - Send a TEST UNIT READY - * @sdev: device to which the TEST UNIT READY command should be send - * - * Send a TEST UNIT READY to @sdev to figure out the device state - * Returns SCSI_DH_RETRY if the sense code is NOT READY/ALUA TRANSITIONING, - * SCSI_DH_OK if no error occurred, and SCSI_DH_IO otherwise. - */ -static int alua_tur(struct scsi_device *sdev) -{ - struct scsi_sense_hdr sense_hdr; - int retval; - - retval =3D scsi_test_unit_ready(sdev, ALUA_FAILOVER_TIMEOUT * HZ, - ALUA_FAILOVER_RETRIES, &sense_hdr); - if ((sense_hdr.sense_key =3D=3D NOT_READY || - sense_hdr.sense_key =3D=3D UNIT_ATTENTION) && - sense_hdr.asc =3D=3D 0x04 && sense_hdr.ascq =3D=3D 0x0a) - return SCSI_DH_RETRY; - else if (retval) - return SCSI_DH_IO; - else - return SCSI_DH_OK; -} - -/* - * alua_rtpg - Evaluate REPORT TARGET GROUP STATES - * @sdev: the device to be evaluated. - * - * Evaluate the Target Port Group State. - * Returns SCSI_DH_DEV_OFFLINED if the path is - * found to be unusable. - */ -static int alua_rtpg(struct scsi_device *sdev) -{ - struct scsi_sense_hdr sense_hdr; - struct alua_dh_data *h =3D sdev->handler_data; - int len, k, off, bufflen =3D ALUA_RTPG_SIZE; - int group_id_old, state_old, pref_old, valid_states_old; - unsigned char *desc, *buff; - unsigned err; - int retval; - unsigned int tpg_desc_tbl_off; - unsigned char orig_transition_tmo; - unsigned long flags; - bool transitioning_sense =3D false; - int rel_port, group_id =3D scsi_vpd_tpg_id(sdev, &rel_port); - - if (group_id < 0) { - /* - * Internal error; TPGS supported but required - * VPD identification descriptors not present. - * Disable ALUA support - */ - sdev_printk(KERN_INFO, sdev, - "%s: No target port descriptors found\n", - ALUA_DH_NAME); - return SCSI_DH_DEV_UNSUPP; - } - - group_id_old =3D h->group_id; - state_old =3D h->state; - pref_old =3D h->pref; - valid_states_old =3D h->valid_states; - - if (!h->expiry) { - unsigned long transition_tmo =3D ALUA_FAILOVER_TIMEOUT * HZ; - - if (h->transition_tmo) - transition_tmo =3D h->transition_tmo * HZ; - - h->expiry =3D round_jiffies_up(jiffies + transition_tmo); - } - - buff =3D kzalloc(bufflen, GFP_KERNEL); - if (!buff) - return SCSI_DH_DEV_TEMP_BUSY; - - retry: - err =3D 0; - retval =3D submit_rtpg(sdev, buff, bufflen, &sense_hdr, h->flags); - - if (retval) { - /* - * Some (broken) implementations have a habit of returning - * an error during things like firmware update etc. - * But if the target only supports active/optimized there's - * not much we can do; it's not that we can switch paths - * or anything. - * So ignore any errors to avoid spurious failures during - * path failover. - */ - if ((h->valid_states & ~TPGS_SUPPORT_OPTIMIZED) =3D=3D 0) { - sdev_printk(KERN_INFO, sdev, - "%s: ignoring rtpg result %d\n", - ALUA_DH_NAME, retval); - kfree(buff); - return SCSI_DH_OK; - } - if (retval < 0 || !scsi_sense_valid(&sense_hdr)) { - sdev_printk(KERN_INFO, sdev, - "%s: rtpg failed, result %d\n", - ALUA_DH_NAME, retval); - kfree(buff); - if (retval < 0) - return SCSI_DH_DEV_TEMP_BUSY; - if (host_byte(retval) =3D=3D DID_NO_CONNECT) - return SCSI_DH_RES_TEMP_UNAVAIL; - return SCSI_DH_IO; - } - - /* - * submit_rtpg() has failed on existing arrays - * when requesting extended header info, and - * the array doesn't support extended headers, - * even though it shouldn't according to T10. - * The retry without rtpg_ext_hdr_req set - * handles this. - * Note: some arrays return a sense key of ILLEGAL_REQUEST - * with ASC 00h if they don't support the extended header. - */ - if (!(h->flags & ALUA_RTPG_EXT_HDR_UNSUPP) && - sense_hdr.sense_key =3D=3D ILLEGAL_REQUEST) { - h->flags |=3D ALUA_RTPG_EXT_HDR_UNSUPP; - goto retry; - } - /* - * If the array returns with 'ALUA state transition' - * sense code here it cannot return RTPG data during - * transition. So set the state to 'transitioning' directly. - */ - if (sense_hdr.sense_key =3D=3D NOT_READY && - sense_hdr.asc =3D=3D 0x04 && sense_hdr.ascq =3D=3D 0x0a) { - transitioning_sense =3D true; - goto skip_rtpg; - } - /* - * Retry on any other UNIT ATTENTION occurred. - */ - if (sense_hdr.sense_key =3D=3D UNIT_ATTENTION) - err =3D SCSI_DH_RETRY; - if (err =3D=3D SCSI_DH_RETRY && - h->expiry !=3D 0 && time_before(jiffies, h->expiry)) { - sdev_printk(KERN_ERR, sdev, "%s: rtpg retry\n", - ALUA_DH_NAME); - scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); - kfree(buff); - return err; - } - sdev_printk(KERN_ERR, sdev, "%s: rtpg failed\n", - ALUA_DH_NAME); - scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); - kfree(buff); - h->expiry =3D 0; - return SCSI_DH_IO; - } - - len =3D get_unaligned_be32(&buff[0]) + 4; - - if (len > bufflen) { - /* Resubmit with the correct length */ - kfree(buff); - bufflen =3D len; - buff =3D kmalloc(bufflen, GFP_KERNEL); - if (!buff) { - sdev_printk(KERN_WARNING, sdev, - "%s: kmalloc buffer failed\n",__func__); - /* Temporary failure, bypass */ - h->expiry =3D 0; - return SCSI_DH_DEV_TEMP_BUSY; - } - goto retry; - } - - orig_transition_tmo =3D h->transition_tmo; - if ((buff[4] & RTPG_FMT_MASK) =3D=3D RTPG_FMT_EXT_HDR && buff[5] !=3D 0) - h->transition_tmo =3D buff[5]; - else - h->transition_tmo =3D ALUA_FAILOVER_TIMEOUT; - - if (orig_transition_tmo !=3D h->transition_tmo) { - sdev_printk(KERN_INFO, sdev, - "%s: transition timeout set to %d seconds\n", - ALUA_DH_NAME, h->transition_tmo); - h->expiry =3D jiffies + h->transition_tmo * HZ; - } - - if ((buff[4] & RTPG_FMT_MASK) =3D=3D RTPG_FMT_EXT_HDR) - tpg_desc_tbl_off =3D 8; - else - tpg_desc_tbl_off =3D 4; - - for (k =3D tpg_desc_tbl_off, desc =3D buff + tpg_desc_tbl_off; - k < len; - k +=3D off, desc +=3D off) { - u16 group_id_desc =3D get_unaligned_be16(&desc[2]); - - spin_lock_irqsave(&h->lock, flags); - if (group_id_desc =3D=3D group_id) { - h->group_id =3D group_id; - WRITE_ONCE(h->state, desc[0] & 0x0f); - h->pref =3D desc[0] >> 7; - WRITE_ONCE(sdev->access_state, desc[0]); - h->valid_states =3D desc[1]; - } - spin_unlock_irqrestore(&h->lock, flags); - off =3D 8 + (desc[7] * 4); - } - - skip_rtpg: - spin_lock_irqsave(&h->lock, flags); - if (transitioning_sense) - h->state =3D SCSI_ACCESS_STATE_TRANSITIONING; - - if (group_id_old !=3D h->group_id || state_old !=3D h->state || - pref_old !=3D h->pref || valid_states_old !=3D h->valid_states) - sdev_printk(KERN_INFO, sdev, - "%s: port group %02x state %c %s supports %c%c%c%c%c%c%c\n", - ALUA_DH_NAME, h->group_id, print_alua_state(h->state), - h->pref ? "preferred" : "non-preferred", - h->valid_states&TPGS_SUPPORT_TRANSITION?'T':'t', - h->valid_states&TPGS_SUPPORT_OFFLINE?'O':'o', - h->valid_states&TPGS_SUPPORT_LBA_DEPENDENT?'L':'l', - h->valid_states&TPGS_SUPPORT_UNAVAILABLE?'U':'u', - h->valid_states&TPGS_SUPPORT_STANDBY?'S':'s', - h->valid_states&TPGS_SUPPORT_NONOPTIMIZED?'N':'n', - h->valid_states&TPGS_SUPPORT_OPTIMIZED?'A':'a'); - - switch (h->state) { - case SCSI_ACCESS_STATE_TRANSITIONING: - if (time_before(jiffies, h->expiry)) { - /* State transition, retry */ - h->interval =3D ALUA_RTPG_RETRY_DELAY; - err =3D SCSI_DH_RETRY; - } else { - struct alua_dh_data *h; - unsigned char access_state; - - /* Transitioning time exceeded, set port to standby */ - err =3D SCSI_DH_IO; - h->state =3D SCSI_ACCESS_STATE_STANDBY; - h->expiry =3D 0; - access_state =3D h->state & SCSI_ACCESS_STATE_MASK; - if (h->pref) - access_state |=3D SCSI_ACCESS_STATE_PREFERRED; - WRITE_ONCE(sdev->access_state, access_state); - } - break; - case SCSI_ACCESS_STATE_OFFLINE: - /* Path unusable */ - err =3D SCSI_DH_DEV_OFFLINED; - h->expiry =3D 0; - break; - default: - /* Useable path if active */ - err =3D SCSI_DH_OK; - h->expiry =3D 0; - break; - } - spin_unlock_irqrestore(&h->lock, flags); - kfree(buff); - return err; -} - -/* - * alua_stpg - Issue a SET TARGET PORT GROUP command - * - * Issue a SET TARGET PORT GROUP command and evaluate the - * response. Returns SCSI_DH_RETRY per default to trigger - * a re-evaluation of the target group state or SCSI_DH_OK - * if no further action needs to be taken. - */ -static unsigned alua_stpg(struct scsi_device *sdev) -{ - int retval; - struct scsi_sense_hdr sense_hdr; - struct alua_dh_data *h =3D sdev->handler_data; - - if (!(h->tpgs & TPGS_MODE_EXPLICIT)) { - /* Only implicit ALUA supported, retry */ - return SCSI_DH_RETRY; - } - switch (h->state) { - case SCSI_ACCESS_STATE_OPTIMAL: - return SCSI_DH_OK; - case SCSI_ACCESS_STATE_ACTIVE: - if ((h->flags & ALUA_OPTIMIZE_STPG) && - !h->pref && - (h->tpgs & TPGS_MODE_IMPLICIT)) - return SCSI_DH_OK; - break; - case SCSI_ACCESS_STATE_STANDBY: - case SCSI_ACCESS_STATE_UNAVAILABLE: - break; - case SCSI_ACCESS_STATE_OFFLINE: - return SCSI_DH_IO; - case SCSI_ACCESS_STATE_TRANSITIONING: - break; - default: - sdev_printk(KERN_INFO, sdev, - "%s: stpg failed, unhandled TPGS state %d", - ALUA_DH_NAME, h->state); - return SCSI_DH_NOSYS; - } - retval =3D submit_stpg(sdev, h->group_id, &sense_hdr); - - if (retval) { - if (retval < 0 || !scsi_sense_valid(&sense_hdr)) { - sdev_printk(KERN_INFO, sdev, - "%s: stpg failed, result %d", - ALUA_DH_NAME, retval); - if (retval < 0) - return SCSI_DH_DEV_TEMP_BUSY; - } else { - sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n", - ALUA_DH_NAME); - scsi_print_sense_hdr(sdev, ALUA_DH_NAME, &sense_hdr); - } - } - /* Retry RTPG */ - return SCSI_DH_RETRY; -} - static void alua_rtpg_work(struct work_struct *work) { struct alua_dh_data *h =3D @@ -670,56 +179,41 @@ static void alua_rtpg_work(struct work_struct *work) int err =3D SCSI_DH_OK; struct alua_queue_data *qdata, *tmp; unsigned long flags; + int ret; =20 spin_lock_irqsave(&h->lock, flags); h->flags |=3D ALUA_PG_RUNNING; if (h->flags & ALUA_PG_RUN_RTPG) { - int state =3D h->state; =20 h->flags &=3D ~ALUA_PG_RUN_RTPG; spin_unlock_irqrestore(&h->lock, flags); - if (state =3D=3D SCSI_ACCESS_STATE_TRANSITIONING) { - if (alua_tur(sdev) =3D=3D SCSI_DH_RETRY) { - spin_lock_irqsave(&h->lock, flags); - h->flags &=3D ~ALUA_PG_RUNNING; - h->flags |=3D ALUA_PG_RUN_RTPG; - if (!h->interval) - h->interval =3D ALUA_RTPG_RETRY_DELAY; - spin_unlock_irqrestore(&h->lock, flags); - queue_delayed_work(kaluad_wq, &h->rtpg_work, - h->interval * HZ); - return; - } - /* Send RTPG on failure or if TUR indicates SUCCESS */ - } - err =3D alua_rtpg(sdev); - spin_lock_irqsave(&h->lock, flags); - - if (err =3D=3D SCSI_DH_RETRY || h->flags & ALUA_PG_RUN_RTPG) { + ret =3D scsi_alua_rtpg_run(sdev); + if (ret =3D=3D -EAGAIN) { + spin_lock_irqsave(&h->lock, flags); h->flags &=3D ~ALUA_PG_RUNNING; - if (err =3D=3D SCSI_DH_IMM_RETRY) - h->interval =3D 0; - else if (!h->interval && !(h->flags & ALUA_PG_RUN_RTPG)) - h->interval =3D ALUA_RTPG_RETRY_DELAY; h->flags |=3D ALUA_PG_RUN_RTPG; spin_unlock_irqrestore(&h->lock, flags); - goto queue_rtpg; + queue_delayed_work(kaluad_wq, &h->rtpg_work, + sdev->alua->interval * HZ); + return; } - if (err !=3D SCSI_DH_OK) - h->flags &=3D ~ALUA_PG_RUN_STPG; + if (err !=3D 0) + h->flags &=3D ~ALUA_PG_RUN_STPG; } + spin_lock_irqsave(&h->lock, flags); if (h->flags & ALUA_PG_RUN_STPG) { h->flags &=3D ~ALUA_PG_RUN_STPG; spin_unlock_irqrestore(&h->lock, flags); - err =3D alua_stpg(sdev); - spin_lock_irqsave(&h->lock, flags); - if (err =3D=3D SCSI_DH_RETRY || h->flags & ALUA_PG_RUN_RTPG) { + ret =3D scsi_alua_stpg_run(sdev, h->flags & ALUA_OPTIMIZE_STPG); + if (err =3D=3D -EAGAIN || h->flags & ALUA_PG_RUN_RTPG) { + spin_lock_irqsave(&h->lock, flags); h->flags |=3D ALUA_PG_RUN_RTPG; - h->interval =3D 0; h->flags &=3D ~ALUA_PG_RUNNING; spin_unlock_irqrestore(&h->lock, flags); goto queue_rtpg; } + } else { + spin_unlock_irqrestore(&h->lock, flags); } =20 list_splice_init(&h->rtpg_list, &qdata_list); @@ -728,8 +222,6 @@ static void alua_rtpg_work(struct work_struct *work) * Re-enable the device for the next attempt. */ h->disabled =3D false; - spin_unlock_irqrestore(&h->lock, flags); - =20 list_for_each_entry_safe(qdata, tmp, &qdata_list, entry) { list_del(&qdata->entry); @@ -745,7 +237,7 @@ static void alua_rtpg_work(struct work_struct *work) return; =20 queue_rtpg: - queue_delayed_work(kaluad_wq, &h->rtpg_work, h->interval * HZ); + queue_delayed_work(kaluad_wq, &h->rtpg_work, sdev->alua->interval * HZ); } =20 /** @@ -809,7 +301,7 @@ static int alua_initialize(struct scsi_device *sdev, st= ruct alua_dh_data *h) =20 mutex_lock(&h->init_mutex); h->disabled =3D false; - tpgs =3D alua_check_tpgs(sdev); + tpgs =3D scsi_alua_check_tpgs(sdev); if (tpgs !=3D TPGS_MODE_NONE) err =3D alua_check_vpd(sdev, h, tpgs); h->init_error =3D err; @@ -898,34 +390,6 @@ static void alua_check(struct scsi_device *sdev, bool = force) alua_rtpg_queue(sdev, NULL, force); } =20 -/* - * alua_prep_fn - request callback - * - * Fail I/O to all paths not in state - * active/optimized or active/non-optimized. - */ -static blk_status_t alua_prep_fn(struct scsi_device *sdev, struct request = *req) -{ - struct alua_dh_data *h =3D sdev->handler_data; - unsigned long flags; - unsigned char state; - - spin_lock_irqsave(&h->lock, flags); - state =3D h->state; - spin_unlock_irqrestore(&h->lock, flags); - - switch (state) { - case SCSI_ACCESS_STATE_OPTIMAL: - case SCSI_ACCESS_STATE_ACTIVE: - case SCSI_ACCESS_STATE_LBA: - case SCSI_ACCESS_STATE_TRANSITIONING: - return BLK_STS_OK; - default: - req->rq_flags |=3D RQF_QUIET; - return BLK_STS_IOERR; - } -} - static void alua_rescan(struct scsi_device *sdev) { struct alua_dh_data *h =3D sdev->handler_data; @@ -953,8 +417,6 @@ static int alua_bus_attach(struct scsi_device *sdev) =20 mutex_init(&h->init_mutex); =20 - h->state =3D SCSI_ACCESS_STATE_OPTIMAL; - h->valid_states =3D TPGS_SUPPORT_ALL; if (optimize_stpg) h->flags |=3D ALUA_OPTIMIZE_STPG; =20 @@ -986,7 +448,7 @@ static struct scsi_device_handler alua_dh =3D { .module =3D THIS_MODULE, .attach =3D alua_bus_attach, .detach =3D alua_bus_detach, - .prep_fn =3D alua_prep_fn, + .prep_fn =3D scsi_alua_prep_fn, .check_sense =3D alua_check_sense, .activate =3D alua_activate, .rescan =3D alua_rescan, --=20 2.43.5 From nobody Mon Apr 6 23:17:58 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 17E953BB9FE; Tue, 17 Mar 2026 12:07:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749280; cv=fail; b=n5e4BYszQFDP8dkspCGVwT+iPBSAAqKnHxHfckw3GPQR+xfkt8ehOTI28LD1h/UDqKdJohZTHSnDjppcVRJnFCEEFY4fFUAnkG1WDTMk0xsFs8/D9lpuyQh2lhWcJmtHZilo/1dMJ23vynUApIxixyjRx2j1e6Q4zv61P4B3AuQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773749280; c=relaxed/simple; bh=o86DfHwRxxs6+Wc0pYQHL6ENdy+fjg1FLkw9PH3ymZg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FC+w1xmovCSJ2l5oQAoNtD9pXI34YhRTLjdxio4UiSvwwfHNFiDQp7NFZAcjfEqJKYwpjgFNCq5M++G+9aDIqkug/RuQJTwlCGCyVoTg5zS59Y8EX+eRJsJGn73XPxsCEv1dRTYHT/U5/EPJCsRi2R7TQCV3opcMEKX8EyLbzXU= 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=MtMjEoUA; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b=m0a5l1jw; 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="MtMjEoUA"; dkim=pass (1024-bit key) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.b="m0a5l1jw" 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 62GMNvq9220822; Tue, 17 Mar 2026 12:07:47 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=7ZQtHlmpkLo5vShD7NjG0mJ2gw3epdlRnE4S3t/wSnA=; b= MtMjEoUABcitiIDzJNNjcQd3o+RaY4WGBnvQGn2EdQwtcPGBAtRgXpLX76tB6826 jtgpC1Utjd7YO+H8+w6KkPXO2z/tN0MbHe/YvQUG2wq6LmOmVt4kAF5AhDbu/YMN MT5YH9VANrpOIRcqKPTt3kxNJ9HLQ2E/+q+jFRDhlflTiVJiKsCz0qomFBslLNkc 5xBgiD/+RuEU4yeKQFw0hbqdFrLJywSG+D3kMLznQB0pKiPICLLeeV+9iaaVC47n EfCnAEpPO56raFdaCK9ZnnHpnWGYpsZqGYcKHSaYdxTVa+s7Xe7/bxKkUvQktu9z ZOlytlhht9IC0qby795P6A== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4cvx8x41q1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:47 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 62HAFxKm014028; Tue, 17 Mar 2026 12:07:46 GMT Received: from ph8pr06cu001.outbound.protection.outlook.com (mail-westus3azon11012048.outbound.protection.outlook.com [40.107.209.48]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 4cvx49yrnm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:07:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wEjClswdSF/8NwcupXQ9K2fDg171KjYiKIfR6D7BmJbYAJnsJ4YBRlwX8X96WNpHoX2b5AB41V1VALLckOtiecSIdK0OLLXmRbGtTcxE4YUn2hHiinxKEYLELa/XyPrEaXF6gBsGpoP1Yeo2YnGdqLkkLenjKLg8vVFKjtR2iZu6M1esxnfV4+lJEKsXDOkSx7aAgTT9T8DIt3i9Ir8nLmtejP+A+hZdfEPIM7D2HGpSRdn4UG91oriZdUgiCgpoLUp2GZmkCM4rdcFkS30YkXlyfMWIXALRmX/qtBzHGkSFWm1YLVdih3reu+OTiEASGD8EeMrEALOkXJexZ9irhw== 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=7ZQtHlmpkLo5vShD7NjG0mJ2gw3epdlRnE4S3t/wSnA=; b=VvO6Y0bgMgRVbvHlOvowwP5cdDAuWIJeVyGsQc811LovIW+Qs+AbpD3jixLqUtKVAW+trtdERvgHwzzoldCddrmY+qsiAHT1qZEaa1p6FLltskN6xfan+iUAiFKc6Smnr47E1ILHhHmCFpJ8vrqXxpnOwFjzQ6XQHC1Ip/H3zR6dy+AEYr0S65KoYqbLvZfPMHNRiPLg5Wyk6NV+dYBjJd2GUTZwNjhShLHRg14TYSs2rdITi+O7iDCA48/9yXhc/Rqpx7xUGFgLJ+TmNO6ECa6BNi8jD/OTBCntk3xPUbuWTe11JnE89suvIm/G8IhlV91HRB/asYwWR1xztBED7A== 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=7ZQtHlmpkLo5vShD7NjG0mJ2gw3epdlRnE4S3t/wSnA=; b=m0a5l1jwlfu6bJydh5hHGD3F4kGxFoE3Jy/y44ZtgxdLz40ZDNpp6BN21WQBRiINDXF1vIz8xLhKGYfPGNceOiOEHjCy7HC+h8bpV1/fHLCarKMR2FwSeMa8t0GbkmiF/DfMsA9/6HzFQjoH272+vLh6ojfo2bJbqpnNH/FZZ6g= Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) by DS7PR10MB5976.namprd10.prod.outlook.com (2603:10b6:8:9c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.22; Tue, 17 Mar 2026 12:07:43 +0000 Received: from DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a]) by DS4PPFEAFA21C69.namprd10.prod.outlook.com ([fe80::5266:1601:5598:3f0a%5]) with mapi id 15.20.9700.022; Tue, 17 Mar 2026 12:07:43 +0000 From: John Garry To: martin.petersen@oracle.com, james.bottomley@hansenpartnership.com, hare@suse.com, bmarzins@redhat.com Cc: jmeneghi@redhat.com, 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 13/13] scsi: core: Add implicit ALUA support Date: Tue, 17 Mar 2026 12:07:03 +0000 Message-ID: <20260317120703.3702387-14-john.g.garry@oracle.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260317120703.3702387-1-john.g.garry@oracle.com> References: <20260317120703.3702387-1-john.g.garry@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH7P220CA0001.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:326::35) To DS4PPFEAFA21C69.namprd10.prod.outlook.com (2603:10b6:f:fc00::d54) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS4PPFEAFA21C69:EE_|DS7PR10MB5976:EE_ X-MS-Office365-Filtering-Correlation-Id: fcc20bae-69b6-4991-668f-08de841dcafd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: nxkNqeU0XinqMqcfklT+kxuM1ncr9+iUILwg0frcJngFVJfsVrKAjjB9N2CgvmE9oGS0V+qwp1TYoe2S55pWB5AanGLbPsE+m1GjjBxKCEuthfKZOPIR91AieiLe0KfbFg91pkCOLeEZ1q6g8ooO2LmjKfz+9Fx4w4uFxBUMrbvILcUpz2ovP5PdR5mipkwjbG3fTeJmEjS64R9WOHE45wpXfwDhZIqZxoqPvuvCel+ATF8rOE7cHZbPFKy4NkblOcR05KXeLEfQZjQMmXDIX6u04UpgquXKuPrH66F6BmOlJe0eQFg51bA7gSEx4K+YNd7Z753Z/jwYWS/VSqqXKhLLlZ6w3mg25KVKWiQaynPmxKOOhoyu/MGPfBK9YgLlRXiGbdg7yPXuxBpbhY4gbORyJ/swKggGOEkqre7Yl5Ci6Ca4+FI4l8+6RUfqmECkQ52MNylh46VUr1DsHzcIt62QUBYmY8ayuNPemTdPtJAeQPIOPVTNPwRLPwcXghE2lCb6Nv7TNhA/sOrjZ/FTaeYwYoij5HAWFWZI9FVW9tSfKGbTVC/+JwlwVgkslSI4s9Ity0vFDLXnL1OOamrR07ZM1VdVLKyibqZkKUeqvUEcAUY4tvod70evPx5NDmqxbFPiqJDGCunJMZlmNFuDwnFMjdJXzRzQw2JrQT3DCwpExzs0xIboeGpW0to4ocIsmxmduxAzA/OC3nanDNDjLDwfcf5zmEDWjwJ5QRr1lnA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS4PPFEAFA21C69.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IgtxHF79eoMI2PhMa13qZ9Ncb3EslidjabUGLjD+ltmxpAP1z+6aL3ceIcea?= =?us-ascii?Q?CB/cQitucQgNgnGrhIvllD411FUlNPjT5ZJ9MWhIo0q0GF6rreEYRTnW8jnK?= =?us-ascii?Q?EYumj9+oeCYY2Guwh96p8lgW6NqTCX/xGDd3SIKrpUy+k8Q6Cj2ebpnc5PiI?= =?us-ascii?Q?Kd1hBqdnpukXoAxx4xY/Qmqe1UWpIbndajTbd0rwVCDCTEbk1V9FYcDENWyv?= =?us-ascii?Q?XqOUO7s1wO6b8aFFve8VIqFBH4MEK60kHrdK24ZfH5rJjPFku41rqe03F5QR?= =?us-ascii?Q?eO+cAKGiVKNMRZIlxvWRr60d+FIbgY8Ww1oDGQWghe+cumhdYLdivNF1SWeR?= =?us-ascii?Q?tgxzMBK7Z3cCfF7hEyeriu10XQ1v1RXiEzcyghnWxu127Y19e9cdnfCpUiOe?= =?us-ascii?Q?65i9oGMQhv1DCrghZhdMtPUWPLY0rj2xF7VQj7wKBOOz6XAM5+GkYFg+EHJM?= =?us-ascii?Q?BKSovOsBYzSBwf5EduZPR9g+CUz98Dr84kQUh4S2mkwJ7BJUesdPeOyoC2e9?= =?us-ascii?Q?BX1y55iu9NRtRzv6HI1HtgmW/NU1YsUaqqbp/kxuenI29vVOycAAYOnGb1am?= =?us-ascii?Q?3rADAg47q1eZ9gB/vVFCgOiMTm7nmMVacVcUEtInD8/V+y1ByWxFz8aIKSFZ?= =?us-ascii?Q?VYbC86ZAfnlmVFJOGYDpuXmuxeIIFb77SUmjojBq6E66ASTWFYnuzoW46ULZ?= =?us-ascii?Q?oHHP7Toh1W6hJ4Xburoifney31hetGSMESSbFvNxQargLI2m/rXvFoSJusNs?= =?us-ascii?Q?K62kufiiGxGC6cEc8oopmnZVrgLI1pwqXy/uREgqodqOAZfjXVnTd4puNvwq?= =?us-ascii?Q?mYCLdxQSW6eoOR5gQL8u1poQEUN/EQ1bMGDzC//kbp8XMVdJLVATkSJkLdR8?= =?us-ascii?Q?7ZewQlWCj5g8FmqmUNONNujG0NolAaRGLQ4cQO3R5xFi7Ov/8r7Cl1QjIdpp?= =?us-ascii?Q?FNPjBloPjFQT5Uk0+6HYPCB2BO+pibRj6Js9FUkS2NuW7Y9TMjZcbMYYfVUP?= =?us-ascii?Q?ofWVDo0754sDwwhrEfdxW6Xfk111hBx1duKNUnvh9SlwRF+jGYNoF6V/8gvq?= =?us-ascii?Q?5dUZibXRWX9rgzUHUy93zk3sstgPP1NVbwmc4B9m0t7hJ2lvsE8PH6oozrTF?= =?us-ascii?Q?WrjJFi4rFvf671/7mQi8MGEVYq0a6bkyZYLtbI3GgciKFB72zqhQeNYJtShB?= =?us-ascii?Q?b/RtQ84n+7HdDfJhyvwc6cVmUE4X1cZ+uT+NQDMybr9Ymc1MGnOE4eqy/jyL?= =?us-ascii?Q?cQ1+RDzHU3rbN7EBo/FlCY5jjsi5ySVmE+76wuL3M8LCmC7z4er06ypSEbM5?= =?us-ascii?Q?anGgx5b9uxiDvAJyQLfNqc65txapH8Byi1QUMJExXlYv3fWGwehFHQI5O6yY?= =?us-ascii?Q?sIF7rfiElBRuaKcQL+IrDNZ+02SJ1/rswJk4GkFp1V/n8Bd0wqN3cbHLGSvD?= =?us-ascii?Q?L+8/XghzGWv5Sw78X/tktMehMT+LSRohSMqs/W4JaQFmCR1hnlL1K7OYw2dB?= =?us-ascii?Q?ebcxl9Aorbi/n3fh2z2a+MljQgexMkg7B6Ok+fmA7neVuFRvODjek32GE8OY?= =?us-ascii?Q?hZnwfOD+2z7K7BFz0ZDLTH2KANfp+JubUyAY1HwzF33ABHvkiFB6HmypHmcO?= =?us-ascii?Q?ANy2olwK7Jdcr7TBdOFqzCNk6+tq8vyVNe8sydlPmwqRTFBfCi+6jANwwzPN?= =?us-ascii?Q?V4uL98dYZgpcARsu4X/ReJh6/3d2t40/iL/nh4YDJkuVfKoZ8cnq29p/TjMO?= =?us-ascii?Q?mFoTOfBP4w=3D=3D?= X-Exchange-RoutingPolicyChecked: SZQ/ljOPauiiwGD3ctr/aGH4tFy7W2BzIOMy5tPPReT76I7icUPVgoCsG0LWiRfY/iBeZng10Dt/vX6Wi4qcn500NghX53JEDwXtPPO7HsEbqumdVWqpHZaWnRFYrqPIYDadV65M676L976dssHM4XQsFpjuBnQG4ctUBnnKnwSbrakZ8FSTbFlN6CrIRVX6wznxMQLbegih34WEdruu7Bf3/b/JoDbHlDkhc7WXXWxRrb9khXjCoWXahaAldaA9xSDZXHCEgaECGHiqUQw8zkfTs08VBufn7mCqZCHrd5OSDVzcnL+/tyt9oTY9w0iqv/goc75L+qPKB41xJffHRA== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: R94xLDrUZhXgFq9o7shs+8dKXrB8zQRB8fAkVIi054FjjvN+9NvUyAD8U5IOQcpZ/iGlQAMB7nhsMGrJAvO0LrsSOjkXurKSy+RGN6a/WxIeF0pG73d2tojEIJ5MV2+7YBH0EGSsleXIRkKRCyKRjV/3DNAu9wokcmuqnh73ieLXQaA/FRDq9u9xQ8okeTK72oMjT7aqontRvveOXBeXi1MKoH60zieC2XSP3WUlVZvIiPGMNDqHWjSCRZLbg9GFrbj5s5EwnnJNDGrXQ0xZfMxJxHuaKQ37tK6J42R/chTYj7RSuGMfHp1/1F8tTcnRs8Mk+qoDicZGGvz1wMQhEtnQggLZbFj4/2JfYDuyCeWCCLsmD5Gyqe4wBGewo2eCuYwoZy8q2TYCDNC8zOhLvFoZAmx59nWbgmiN8PPUBtWz747v1B3hJsth7i2byl9+MtH/kU4zIKjylGKlY3dQ101JWkE/uDdtBU/G/+nt8B6ZpGcow2P8L7vudhd2u9NGCWa9BRVqVGbyzi/XND01mxr9RO6BtAQJnGeX9QNSF1L2rSM6aOpAEuxOkJUO6b9B+EHu+D1Jy1jGIg24I9RW/jj915nOmCvzqE/enjOIFoM= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcc20bae-69b6-4991-668f-08de841dcafd X-MS-Exchange-CrossTenant-AuthSource: DS4PPFEAFA21C69.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2026 12:07:42.9523 (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: 6YSZt2P3iU/eBE2bMX7/R89Q8jsGdXnA8yIAMJGlWdYRqkYlPX5Fgn4pzhcJXSeGo4ni8h/pXtKu3+hpQc/YLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5976 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-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001 definitions=main-2603170107 X-Proofpoint-GUID: Ow8dLIoNOMhcG6tJlC0_8rb7z68ASJSJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDEwNyBTYWx0ZWRfX+xUrtAphYccR e6gEa22c8DLg9vDudLymektWLmBDDl///Tf/Xzes7UgYTyk1NpW2C8rRecRY/ZT7pELWYX3CuGR vVLKsavGv1iOO0Ol0rrYJcACVhxuLaYq9JcnrNEiccRPWXb9XnjpOYzOi49pn478CIptLc8XOJF tT9793KJ9oPQY7aiw0Jfwg/4eid+TzRSN+Z3Cdkfb2R4ecG7pI7eamCrVgwa8uk8yZ9Z2vM9sfA FJqnzFMaCvtqMst973bQeSR3dc/iTqQpxnehTa5QXMqepPNS6elAeuIXyQN6qa3VkpZmKzrvnBC JIUjxMd6wUcEUYRm4YH8TDzrsgWiRnPr4LIrzzm7QBWoR9FehpaF6p3uJyOPFwjoMTB2w0edaTa LkyOfz2B3BGmcaum+kqtSn7ho+cYLMFEV/PVPqozy6vPePcIIZhjfGl7tbqtOeqVDOzLmZ5WlA7 Bfa6VtCa4emcV6qLI/A== X-Authority-Analysis: v=2.4 cv=dJmrWeZb c=1 sm=1 tr=0 ts=69b94413 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=Yq5XynenixoA:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22 a=RD47p0oAkeU5bO7t-o6f:22 a=yPCof4ZbAAAA:8 a=zsePKhMgOjo2tptVz1EA:9 X-Proofpoint-ORIG-GUID: Ow8dLIoNOMhcG6tJlC0_8rb7z68ASJSJ Content-Type: text/plain; charset="utf-8" For when no device handler is used, add ALUA support. This will be equivalent to when native SCSI multipathing is used. Essentially all the same handling is available as DH alua driver for rescan, request prep, sense handling. Signed-off-by: John Garry --- drivers/scsi/scsi_alua.c | 93 +++++++++++++++++++++++++++++++++++++++ drivers/scsi/scsi_error.c | 7 +++ drivers/scsi/scsi_lib.c | 7 +++ drivers/scsi/scsi_scan.c | 2 + drivers/scsi/scsi_sysfs.c | 4 +- include/scsi/scsi_alua.h | 14 ++++++ 6 files changed, 126 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_alua.c b/drivers/scsi/scsi_alua.c index d3fcd887e5018..ee0229b1a9d12 100644 --- a/drivers/scsi/scsi_alua.c +++ b/drivers/scsi/scsi_alua.c @@ -562,6 +562,90 @@ int scsi_alua_stpg_run(struct scsi_device *sdev, bool = optimize) } EXPORT_SYMBOL_GPL(scsi_alua_stpg_run); =20 +enum scsi_disposition scsi_alua_check_sense(struct scsi_device *sdev, + struct scsi_sense_hdr *sense_hdr) +{ + switch (sense_hdr->sense_key) { + case NOT_READY: + if (sense_hdr->asc =3D=3D 0x04 && sense_hdr->ascq =3D=3D 0x0a) { + /* + * LUN Not Accessible - ALUA state transition + */ + scsi_alua_handle_state_transition(sdev); + return NEEDS_RETRY; + } + break; + case UNIT_ATTENTION: + if (sense_hdr->asc =3D=3D 0x04 && sense_hdr->ascq =3D=3D 0x0a) { + /* + * LUN Not Accessible - ALUA state transition + */ + scsi_alua_handle_state_transition(sdev); + return NEEDS_RETRY; + } + if (sense_hdr->asc =3D=3D 0x29 && sense_hdr->ascq =3D=3D 0x00) { + /* + * Power On, Reset, or Bus Device Reset. + * Might have obscured a state transition, + * so schedule a recheck. + */ + scsi_device_alua_rescan(sdev); + return ADD_TO_MLQUEUE; + } + if (sense_hdr->asc =3D=3D 0x29 && sense_hdr->ascq =3D=3D 0x04) + /* + * Device internal reset + */ + return ADD_TO_MLQUEUE; + if (sense_hdr->asc =3D=3D 0x2a && sense_hdr->ascq =3D=3D 0x01) + /* + * Mode Parameters Changed + */ + return ADD_TO_MLQUEUE; + if (sense_hdr->asc =3D=3D 0x2a && sense_hdr->ascq =3D=3D 0x06) { + /* + * ALUA state changed + */ + scsi_device_alua_rescan(sdev); + return ADD_TO_MLQUEUE; + } + if (sense_hdr->asc =3D=3D 0x2a && sense_hdr->ascq =3D=3D 0x07) { + /* + * Implicit ALUA state transition failed + */ + scsi_device_alua_rescan(sdev); + return ADD_TO_MLQUEUE; + } + if (sense_hdr->asc =3D=3D 0x3f && sense_hdr->ascq =3D=3D 0x03) + /* + * Inquiry data has changed + */ + return ADD_TO_MLQUEUE; + if (sense_hdr->asc =3D=3D 0x3f && sense_hdr->ascq =3D=3D 0x0e) + /* + * REPORTED_LUNS_DATA_HAS_CHANGED is reported + * when switching controllers on targets like + * Intel Multi-Flex. We can just retry. + */ + return ADD_TO_MLQUEUE; + break; + } + + return SCSI_RETURN_NOT_HANDLED; +} + +static void alua_rtpg_work(struct work_struct *work) +{ + struct alua_data *alua =3D + container_of(work, struct alua_data, work.work); + int ret; + + ret =3D scsi_alua_rtpg_run(alua->sdev); + + if (ret =3D=3D -EAGAIN) + queue_delayed_work(kalua_wq, &alua->work, alua->interval * HZ); +} + int scsi_alua_sdev_init(struct scsi_device *sdev) { int rel_port, ret, tpgs; @@ -591,6 +675,7 @@ int scsi_alua_sdev_init(struct scsi_device *sdev) goto out_free_data; } =20 + INIT_DELAYED_WORK(&sdev->alua->work, alua_rtpg_work); sdev->alua->sdev =3D sdev; sdev->alua->tpgs =3D tpgs; spin_lock_init(&sdev->alua->lock); @@ -638,6 +723,14 @@ bool scsi_device_alua_implicit(struct scsi_device *sde= v) return sdev->alua->tpgs & TPGS_MODE_IMPLICIT; } =20 +void scsi_device_alua_rescan(struct scsi_device *sdev) +{ + struct alua_data *alua =3D sdev->alua; + + queue_delayed_work(kalua_wq, &alua->work, + msecs_to_jiffies(ALUA_RTPG_DELAY_MSECS)); +} + int scsi_alua_init(void) { kalua_wq =3D alloc_workqueue("kalua", WQ_MEM_RECLAIM | WQ_PERCPU, 0); diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 147127fb4db9c..a542e7a85a24d 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -29,6 +29,7 @@ #include =20 #include +#include #include #include #include @@ -578,6 +579,12 @@ enum scsi_disposition scsi_check_sense(struct scsi_cmn= d *scmd) if (rc !=3D SCSI_RETURN_NOT_HANDLED) return rc; /* handler does not care. Drop down to default handling */ + } else if (scsi_device_alua_implicit(sdev)) { + enum scsi_disposition rc; + + rc =3D scsi_alua_check_sense(sdev, &sshdr); + if (rc !=3D SCSI_RETURN_NOT_HANDLED) + return rc; } =20 if (scmd->cmnd[0] =3D=3D TEST_UNIT_READY && diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index d3a8cd4166f92..e5bcee555ea10 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -26,6 +26,7 @@ #include =20 #include +#include #include #include #include @@ -1719,6 +1720,12 @@ static blk_status_t scsi_prepare_cmd(struct request = *req) if (sdev->handler && sdev->handler->prep_fn) { blk_status_t ret =3D sdev->handler->prep_fn(sdev, req); =20 + if (ret !=3D BLK_STS_OK) + return ret; + } else if (scsi_device_alua_implicit(sdev)) { + /* We should be able to make this common for ALUA DH as well */ + blk_status_t ret =3D scsi_alua_prep_fn(sdev, req); + if (ret !=3D BLK_STS_OK) return ret; } diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 3af64d1231445..73caf83bd1097 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -1744,6 +1744,8 @@ int scsi_rescan_device(struct scsi_device *sdev) =20 if (sdev->handler && sdev->handler->rescan) sdev->handler->rescan(sdev); + else if (scsi_device_alua_implicit(sdev)) + scsi_device_alua_rescan(sdev); =20 if (dev->driver && try_module_get(dev->driver->owner)) { struct scsi_driver *drv =3D to_scsi_driver(dev->driver); diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 6c4c3c22f6acf..71a9613898cfc 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1152,7 +1152,7 @@ sdev_show_access_state(struct device *dev, unsigned char access_state; const char *access_state_name; =20 - if (!sdev->handler) + if (!sdev->handler && !scsi_device_alua_implicit(sdev)) return -EINVAL; =20 access_state =3D (sdev->access_state & SCSI_ACCESS_STATE_MASK); @@ -1409,6 +1409,8 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev) scsi_autopm_get_device(sdev); =20 scsi_dh_add_device(sdev); + if (!sdev->handler && scsi_device_alua_implicit(sdev)) + scsi_device_alua_rescan(sdev); =20 error =3D device_add(&sdev->sdev_gendev); if (error) { diff --git a/include/scsi/scsi_alua.h b/include/scsi/scsi_alua.h index 2d5db944f75b7..8e506d1d66cce 100644 --- a/include/scsi/scsi_alua.h +++ b/include/scsi/scsi_alua.h @@ -24,6 +24,7 @@ struct alua_data { unsigned char transition_tmo; unsigned long expiry; unsigned long interval; + struct delayed_work work; struct scsi_device *sdev; spinlock_t lock; }; @@ -35,11 +36,15 @@ void scsi_alua_handle_state_transition(struct scsi_devi= ce *sdev); =20 int scsi_alua_check_tpgs(struct scsi_device *sdev); =20 +enum scsi_disposition scsi_alua_check_sense(struct scsi_device *sdev, + struct scsi_sense_hdr *sense_hdr); + int scsi_alua_rtpg_run(struct scsi_device *sdev); int scsi_alua_stpg_run(struct scsi_device *sdev, bool optimize); =20 blk_status_t scsi_alua_prep_fn(struct scsi_device *sdev, struct request *r= eq); =20 +void scsi_device_alua_rescan(struct scsi_device *sdev); bool scsi_device_alua_implicit(struct scsi_device *sdev); =20 int scsi_alua_init(void); @@ -53,6 +58,12 @@ static inline int scsi_alua_check_tpgs(struct scsi_devic= e *sdev) { return 0; } +static inline +enum scsi_disposition scsi_alua_check_sense(struct scsi_device *sdev, + struct scsi_sense_hdr *sense_hdr) +{ + return SCSI_RETURN_NOT_HANDLED; +} static inline int scsi_alua_rtpg_run(struct scsi_device *sdev) { return 0; @@ -66,6 +77,9 @@ blk_status_t scsi_alua_prep_fn(struct scsi_device *sdev, = struct request *req) { return BLK_STS_OK; } +static inline void scsi_device_alua_rescan(struct scsi_device *sdev) +{ +} static inline bool scsi_device_alua_implicit(struct scsi_device *sdev) { return false; --=20 2.43.5