[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1666693976-181094-3-git-send-email-john.garry@huawei.com>
Date: Tue, 25 Oct 2022 18:32:51 +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>, <bvanassche@....org>,
<hch@....de>, <ming.lei@...hat.com>, <niklas.cassel@....com>
CC: <axboe@...nel.dk>, <jinpu.wang@...ud.ionos.com>,
<linux-block@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-ide@...r.kernel.org>, <linux-scsi@...r.kernel.org>,
<linuxarm@...wei.com>, John Garry <john.garry@...wei.com>
Subject: [PATCH RFC v3 2/7] ata: libata-scsi: Add ata_internal_queuecommand()
Add callback to queue reserved commands - call it "internal" as this is
what libata uses.
Also add it to the base ATA SHT.
Signed-off-by: John Garry <john.garry@...wei.com>
---
drivers/ata/libata-scsi.c | 14 ++++++++++++++
include/linux/libata.h | 5 ++++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 30d7c90b0c35..0d6f37d80137 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -1118,6 +1118,20 @@ int ata_scsi_dev_config(struct scsi_device *sdev, struct ata_device *dev)
return 0;
}
+int ata_internal_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmd)
+{
+ struct ata_port *ap;
+ int res;
+
+ ap = ata_shost_to_port(shost);
+ spin_lock_irq(ap->lock);
+ res = ata_sas_queuecmd(scmd, ap);
+ spin_unlock_irq(ap->lock);
+
+ return res;
+}
+EXPORT_SYMBOL_GPL(ata_internal_queuecommand);
+
/**
* ata_scsi_slave_config - Set SCSI device attributes
* @sdev: SCSI device to examine
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 8938b584520f..f09c5dca16ce 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1141,6 +1141,8 @@ extern int ata_std_bios_param(struct scsi_device *sdev,
sector_t capacity, int geom[]);
extern void ata_scsi_unlock_native_capacity(struct scsi_device *sdev);
extern int ata_scsi_slave_config(struct scsi_device *sdev);
+extern int ata_internal_queuecommand(struct Scsi_Host *shost,
+ struct scsi_cmnd *scmd);
extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
int queue_depth);
@@ -1391,7 +1393,8 @@ extern const struct attribute_group *ata_common_sdev_groups[];
.slave_destroy = ata_scsi_slave_destroy, \
.bios_param = ata_std_bios_param, \
.unlock_native_capacity = ata_scsi_unlock_native_capacity,\
- .max_sectors = ATA_MAX_SECTORS_LBA48
+ .max_sectors = ATA_MAX_SECTORS_LBA48,\
+ .reserved_queuecommand = ata_internal_queuecommand
#define ATA_SUBBASE_SHT(drv_name) \
__ATA_BASE_SHT(drv_name), \
--
2.35.3
Powered by blists - more mailing lists