Break out sas_ata as a free-standing module that provides a SATA Translation Layer (SATL) for libsas. This patch requires the libsas SATL registration patch; the changes to sas_ata itself are rather minor. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- drivers/scsi/libsas/Makefile | 5 +++-- drivers/scsi/libsas/sas_ata.c | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/libsas/Makefile b/drivers/scsi/libsas/Makefile index 6383eb5..5e95902 100644 --- a/drivers/scsi/libsas/Makefile +++ b/drivers/scsi/libsas/Makefile @@ -33,5 +33,6 @@ libsas-y += sas_init.o \ sas_dump.o \ sas_discover.o \ sas_expander.o \ - sas_scsi_host.o \ - sas_ata.o + sas_scsi_host.o + +obj-$(CONFIG_SCSI_SAS_SATL) += sas_ata.o diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index 1b7221c..f75fa59 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c @@ -404,8 +404,8 @@ static struct ata_port_info sata_port_in .port_ops = &sas_sata_ops }; -int sas_ata_init_host_and_port(struct domain_device *found_dev, - struct scsi_target *starget) +static int sas_ata_init_host_and_port(struct domain_device *found_dev, + struct scsi_target *starget) { struct Scsi_Host *shost = dev_to_shost(&starget->dev); struct sas_ha_struct *ha = SHOST_TO_SAS_HA(shost); @@ -431,7 +431,7 @@ int sas_ata_init_host_and_port(struct do return 0; } -void sas_ata_task_abort(struct sas_task *task) +static void sas_ata_task_abort(struct sas_task *task) { struct ata_queued_cmd *qc = task->uldd_task; struct completion *waiting; @@ -450,3 +450,34 @@ void sas_ata_task_abort(struct sas_task waiting = qc->private_data; complete(waiting); } + +/* Module initialization */ +static struct satl_operations sas_ata_ops = { + .owner = THIS_MODULE, + .init_target = sas_ata_init_host_and_port, + .queuecommand = ata_sas_queuecmd, + .ioctl = ata_scsi_ioctl, + .configure_port = ata_sas_slave_configure, + .deactivate_port = ata_port_disable, + .destroy_port = ata_sas_port_destroy, + .init_port = ata_sas_port_init, + .task_abort = sas_ata_task_abort +}; + +static int __init sas_ata_init(void) +{ + return sas_register_satl(&sas_ata_ops); +} + +static void __exit sas_ata_exit(void) +{ + sas_unregister_satl(&sas_ata_ops); +} + +module_init(sas_ata_init); +module_exit(sas_ata_exit); + +MODULE_AUTHOR("Darrick Wong <djwong@xxxxxxxxxx>"); +MODULE_DESCRIPTION("libata SATL for SAS"); +MODULE_LICENSE("GPL v2"); +MODULE_VERSION("1.0"); - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html