[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1663669630-21333-6-git-send-email-john.garry@huawei.com>
Date: Tue, 20 Sep 2022 18:27:09 +0800
From: John Garry <john.garry@...wei.com>
To: <damien.lemoal@...nsource.wdc.com>, <jejb@...ux.ibm.com>,
<martin.petersen@...cle.com>, <hare@...e.de>, <hch@....de>
CC: <linux-ide@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-scsi@...r.kernel.org>, <brking@...ibm.com>,
John Garry <john.garry@...wei.com>
Subject: [PATCH RFC 5/6] scsi: libsas: Add sas_ata_setup_device()
Add a function which does a custom sdev alloc - essentially replicates
what we do in sas_rphy_add() in terms of sdev parent and id.
Signed-off-by: John Garry <john.garry@...wei.com>
---
drivers/scsi/libsas/sas_ata.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index d35c9296f738..6d3535a4bfbb 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -523,6 +523,25 @@ static int sas_ata_prereset(struct ata_link *link, unsigned long deadline)
return res;
}
+static int sas_ata_setup_device(struct ata_device *dev)
+{
+ u64 lun = 0;
+ int channel = 0;
+ struct ata_link *link = dev->link;
+ struct ata_port *ap = link->ap;
+ struct scsi_device *sdev;
+ struct domain_device *ddev = ap->private_data;
+ struct sas_rphy *rphy = ddev->rphy;
+ struct device *parent = &rphy->dev;
+ uint id = rphy->scsi_target_id;
+
+ sdev = scsi_get_dev(parent, channel, id, lun);
+ if (!sdev)
+ return -ENODEV;
+ dev->sdev = sdev;
+ return 0;
+}
+
static struct ata_port_operations sas_sata_ops = {
.prereset = sas_ata_prereset,
.hardreset = sas_ata_hard_reset,
@@ -537,6 +556,7 @@ static struct ata_port_operations sas_sata_ops = {
.set_dmamode = sas_ata_set_dmamode,
.sched_eh = sas_ata_sched_eh,
.end_eh = sas_ata_end_eh,
+ .setup_scsi_device = sas_ata_setup_device,
};
static struct ata_port_info sata_port_info = {
--
2.35.3
Powered by blists - more mailing lists