2023-08-14 14:34:37

by John Garry

[permalink] [raw]
Subject: [PATCH 00/10] libsas: Some tidy-up

This series tidies-up libsas a bit, including:
- delete structure(s) with only one member
- delete structure members which are only ever set
- delete structure members which are never set and code which relies on
that member being set

This conflicts with the following series:
https://lore.kernel.org/linux-scsi/[email protected]/

Any conflict should be trivial to resolve.

Based on mkp-scsi staging at a18e81d17a7e ("scsi: ufs: ufs-pci: Add support for QEMU")

This series is compile tested only.

John Garry (10):
scsi: libsas: Delete sas_ha_struct.lldd_module
scsi: libsas: Delete enum sas_class
scsi: libsas: Delete enum sas_phy_type
scsi: libsas: Delete struct scsi_core
scsi: libsas: Delete sas_ssp_task.retry_count
scsi: libsas: Delete sas_ssp_task.enable_first_burst
scsi: libsas: Delete sas_ssp_task.task_prio
scsi: libsas: Delete sas_ata_task.set_affil_pol
scsi: libsas: Delete sas_ata_task.stp_affil_pol
scsi: libsas: Delete sas_ata_task.retry_count

drivers/scsi/aic94xx/aic94xx_hwi.c | 4 +---
drivers/scsi/aic94xx/aic94xx_init.c | 7 +++----
drivers/scsi/aic94xx/aic94xx_task.c | 12 ++---------
drivers/scsi/hisi_sas/hisi_sas_main.c | 9 +++-----
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 9 ++------
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 +--
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 9 ++++----
drivers/scsi/isci/host.h | 2 +-
drivers/scsi/isci/init.c | 5 ++---
drivers/scsi/isci/phy.c | 2 --
drivers/scsi/isci/request.c | 1 -
drivers/scsi/libsas/sas_ata.c | 9 ++++----
drivers/scsi/libsas/sas_discover.c | 8 +++----
drivers/scsi/libsas/sas_expander.c | 2 +-
drivers/scsi/libsas/sas_host_smp.c | 4 ++--
drivers/scsi/libsas/sas_init.c | 16 +++++++-------
drivers/scsi/libsas/sas_internal.h | 1 -
drivers/scsi/libsas/sas_phy.c | 8 +++----
drivers/scsi/libsas/sas_port.c | 8 +++----
drivers/scsi/libsas/sas_scsi_host.c | 15 +++++++------
drivers/scsi/mvsas/mv_init.c | 7 ++-----
drivers/scsi/mvsas/mv_sas.c | 9 ++------
drivers/scsi/pm8001/pm8001_hwi.c | 3 ---
drivers/scsi/pm8001/pm8001_init.c | 5 +----
drivers/scsi/pm8001/pm80xx_hwi.c | 3 ---
include/scsi/libsas.h | 29 +-------------------------
26 files changed, 58 insertions(+), 132 deletions(-)

--
2.35.3



2023-08-14 14:52:37

by John Garry

[permalink] [raw]
Subject: [PATCH 01/10] scsi: libsas: Delete sas_ha_struct.lldd_module

Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
driver"), sas_ha_struct.lldd_module has only ever been set, so remove it.

Struct scsi_host_template already has a reference to the LLD driver
module as to stop the driver being removed unexpectedly.

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_init.c | 1 -
drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1 -
drivers/scsi/isci/init.c | 1 -
drivers/scsi/mvsas/mv_init.c | 1 -
drivers/scsi/pm8001/pm8001_init.c | 1 -
include/scsi/libsas.h | 1 -
7 files changed, 7 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
index f7f81f6c3fbf..6603e91cee8a 100644
--- a/drivers/scsi/aic94xx/aic94xx_init.c
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
@@ -667,7 +667,6 @@ static int asd_register_sas_ha(struct asd_ha_struct *asd_ha)
}

asd_ha->sas_ha.sas_ha_name = (char *) asd_ha->name;
- asd_ha->sas_ha.lldd_module = THIS_MODULE;
asd_ha->sas_ha.sas_addr = &asd_ha->hw_prof.sas_addr[0];

for (i = 0; i < ASD_MAX_PHYS; i++) {
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 7a62590f8730..9585f1ed8ae5 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -2514,7 +2514,6 @@ int hisi_sas_probe(struct platform_device *pdev,

sha->sas_ha_name = DRV_NAME;
sha->dev = hisi_hba->dev;
- sha->lldd_module = THIS_MODULE;
sha->sas_addr = &hisi_hba->sas_addr[0];
sha->num_phys = hisi_hba->n_phy;
sha->core.shost = hisi_hba->shost;
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index a676558b096b..7b40f0eed703 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -4973,7 +4973,6 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)

sha->sas_ha_name = DRV_NAME;
sha->dev = dev;
- sha->lldd_module = THIS_MODULE;
sha->sas_addr = &hisi_hba->sas_addr[0];
sha->num_phys = hisi_hba->n_phy;

diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
index ac1e04b86d8f..c3704208511b 100644
--- a/drivers/scsi/isci/init.c
+++ b/drivers/scsi/isci/init.c
@@ -250,7 +250,6 @@ static int isci_register_sas_ha(struct isci_host *isci_host)
return -ENOMEM;

sas_ha->sas_ha_name = DRV_NAME;
- sas_ha->lldd_module = THIS_MODULE;
sas_ha->sas_addr = &isci_host->phys[0].sas_addr[0];

for (i = 0; i < SCI_MAX_PHYS; i++) {
diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
index 49e2a5e7ce54..aea70ec308f9 100644
--- a/drivers/scsi/mvsas/mv_init.c
+++ b/drivers/scsi/mvsas/mv_init.c
@@ -458,7 +458,6 @@ static void mvs_post_sas_ha_init(struct Scsi_Host *shost,

sha->sas_ha_name = DRV_NAME;
sha->dev = mvi->dev;
- sha->lldd_module = THIS_MODULE;
sha->sas_addr = &mvi->sas_addr[0];

sha->num_phys = nr_core * chip_info->n_phy;
diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index 2e886c1d867d..1e0154d08393 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -654,7 +654,6 @@ static void pm8001_post_sas_ha_init(struct Scsi_Host *shost,
sha->sas_ha_name = DRV_NAME;
sha->dev = pm8001_ha->dev;
sha->strict_wide_ports = 1;
- sha->lldd_module = THIS_MODULE;
sha->sas_addr = &pm8001_ha->sas_addr[0];
sha->num_phys = chip_info->n_phy;
sha->core.shost = shost;
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index 159823e0afbf..ccaf8f6b1055 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -376,7 +376,6 @@ struct sas_ha_struct {
/* public: */
char *sas_ha_name;
struct device *dev; /* should be set */
- struct module *lldd_module; /* should be set */

struct workqueue_struct *event_q;
struct workqueue_struct *disco_q;
--
2.35.3


2023-08-14 14:55:59

by John Garry

[permalink] [raw]
Subject: [PATCH 02/10] scsi: libsas: Delete enum sas_class

enum sas_class prob would have been useful if function sas_show_class() was
ever implemented, which it wasn't.

enum sas_class is used as asd_sas_port.class and asd_sas_phy.class, which
are only ever set, so delete these members and the enum.

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_hwi.c | 1 -
drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
drivers/scsi/isci/phy.c | 1 -
drivers/scsi/libsas/sas_internal.h | 1 -
drivers/scsi/libsas/sas_port.c | 2 --
drivers/scsi/mvsas/mv_init.c | 1 -
drivers/scsi/pm8001/pm8001_init.c | 1 -
include/scsi/libsas.h | 7 -------
8 files changed, 15 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.c b/drivers/scsi/aic94xx/aic94xx_hwi.c
index 3dd110143471..d8f56e528877 100644
--- a/drivers/scsi/aic94xx/aic94xx_hwi.c
+++ b/drivers/scsi/aic94xx/aic94xx_hwi.c
@@ -72,7 +72,6 @@ static int asd_init_phy(struct asd_phy *phy)
struct asd_sas_phy *sas_phy = &phy->sas_phy;

sas_phy->enabled = 1;
- sas_phy->class = SAS;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
sas_phy->type = PHY_TYPE_PHYSICAL;
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 9585f1ed8ae5..1172065c1d7d 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -1018,7 +1018,6 @@ static void hisi_sas_phy_init(struct hisi_hba *hisi_hba, int phy_no)
phy->minimum_linkrate = SAS_LINK_RATE_1_5_GBPS;
phy->maximum_linkrate = hisi_hba->hw->phy_get_max_linkrate();
sas_phy->enabled = (phy_no < hisi_hba->n_phy) ? 1 : 0;
- sas_phy->class = SAS;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
sas_phy->type = PHY_TYPE_PHYSICAL;
diff --git a/drivers/scsi/isci/phy.c b/drivers/scsi/isci/phy.c
index aa8787343e83..ea2e339f5b1a 100644
--- a/drivers/scsi/isci/phy.c
+++ b/drivers/scsi/isci/phy.c
@@ -1404,7 +1404,6 @@ void isci_phy_init(struct isci_phy *iphy, struct isci_host *ihost, int index)
iphy->sas_phy.ha = &ihost->sas_ha;
iphy->sas_phy.lldd_phy = iphy;
iphy->sas_phy.enabled = 1;
- iphy->sas_phy.class = SAS;
iphy->sas_phy.iproto = SAS_PROTOCOL_ALL;
iphy->sas_phy.tproto = 0;
iphy->sas_phy.type = PHY_TYPE_PHYSICAL;
diff --git a/drivers/scsi/libsas/sas_internal.h b/drivers/scsi/libsas/sas_internal.h
index 6f593fa69b58..c06ecbcf1254 100644
--- a/drivers/scsi/libsas/sas_internal.h
+++ b/drivers/scsi/libsas/sas_internal.h
@@ -41,7 +41,6 @@ struct sas_phy_data {

void sas_scsi_recover_host(struct Scsi_Host *shost);

-int sas_show_class(enum sas_class class, char *buf);
int sas_show_proto(enum sas_protocol proto, char *buf);
int sas_show_linkrate(enum sas_linkrate linkrate, char *buf);
int sas_show_oob_mode(enum sas_oob_mode oob_mode, char *buf);
diff --git a/drivers/scsi/libsas/sas_port.c b/drivers/scsi/libsas/sas_port.c
index 11599c0e3fc3..7893c462169a 100644
--- a/drivers/scsi/libsas/sas_port.c
+++ b/drivers/scsi/libsas/sas_port.c
@@ -83,7 +83,6 @@ static void sas_form_port_add_phy(struct asd_sas_port *port,
memcpy(port->sas_addr, phy->sas_addr, SAS_ADDR_SIZE);

if (*(u64 *)port->attached_sas_addr == 0) {
- port->class = phy->class;
memcpy(port->attached_sas_addr, phy->attached_sas_addr,
SAS_ADDR_SIZE);
port->iproto = phy->iproto;
@@ -249,7 +248,6 @@ void sas_deform_port(struct asd_sas_phy *phy, int gone)
INIT_LIST_HEAD(&port->phy_list);
memset(port->sas_addr, 0, SAS_ADDR_SIZE);
memset(port->attached_sas_addr, 0, SAS_ADDR_SIZE);
- port->class = 0;
port->iproto = 0;
port->tproto = 0;
port->oob_mode = 0;
diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
index aea70ec308f9..408113bf506d 100644
--- a/drivers/scsi/mvsas/mv_init.c
+++ b/drivers/scsi/mvsas/mv_init.c
@@ -84,7 +84,6 @@ static void mvs_phy_init(struct mvs_info *mvi, int phy_id)
phy->port = NULL;
timer_setup(&phy->timer, NULL, 0);
sas_phy->enabled = (phy_id < mvi->chip->n_phy) ? 1 : 0;
- sas_phy->class = SAS;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
sas_phy->type = PHY_TYPE_PHYSICAL;
diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index 1e0154d08393..e5d794a97b14 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -162,7 +162,6 @@ static void pm8001_phy_init(struct pm8001_hba_info *pm8001_ha, int phy_id)
phy->minimum_linkrate = SAS_LINK_RATE_1_5_GBPS;
phy->maximum_linkrate = SAS_LINK_RATE_6_0_GBPS;
sas_phy->enabled = (phy_id < pm8001_ha->chip->n_phy) ? 1 : 0;
- sas_phy->class = SAS;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
sas_phy->type = PHY_TYPE_PHYSICAL;
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index ccaf8f6b1055..3048660ff107 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -23,11 +23,6 @@

struct block_device;

-enum sas_class {
- SAS,
- EXPANDER
-};
-
enum sas_phy_role {
PHY_ROLE_NONE = 0,
PHY_ROLE_TARGET = 0x40,
@@ -258,7 +253,6 @@ struct asd_sas_port {
/* public: */
int id;

- enum sas_class class;
u8 sas_addr[SAS_ADDR_SIZE];
u8 attached_sas_addr[SAS_ADDR_SIZE];
enum sas_protocol iproto;
@@ -319,7 +313,6 @@ struct asd_sas_phy {
int enabled; /* must be set */

int id; /* must be set */
- enum sas_class class;
enum sas_protocol iproto;
enum sas_protocol tproto;

--
2.35.3


2023-08-14 15:30:32

by John Garry

[permalink] [raw]
Subject: [PATCH 04/10] scsi: libsas: Delete struct scsi_core

Since commit 79855d178557 ("libsas: remove task_collector mode"), struct
scsi_core only contains a reference to the shost. struct scsi_core is only
used in sas_ha_struct.core, so delete scsi_core and replace with a
reference to the shost there.

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_hwi.c | 2 +-
drivers/scsi/aic94xx/aic94xx_init.c | 6 +++---
drivers/scsi/hisi_sas/hisi_sas_main.c | 6 +++---
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 6 +++---
drivers/scsi/isci/host.h | 2 +-
drivers/scsi/isci/init.c | 4 ++--
drivers/scsi/libsas/sas_ata.c | 8 ++++----
drivers/scsi/libsas/sas_discover.c | 8 ++++----
drivers/scsi/libsas/sas_expander.c | 2 +-
drivers/scsi/libsas/sas_host_smp.c | 4 ++--
drivers/scsi/libsas/sas_init.c | 16 ++++++++--------
drivers/scsi/libsas/sas_phy.c | 8 ++++----
drivers/scsi/libsas/sas_port.c | 6 +++---
drivers/scsi/libsas/sas_scsi_host.c | 14 +++++++-------
drivers/scsi/mvsas/mv_init.c | 4 ++--
drivers/scsi/pm8001/pm8001_init.c | 2 +-
include/scsi/libsas.h | 7 +------
17 files changed, 50 insertions(+), 55 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.c b/drivers/scsi/aic94xx/aic94xx_hwi.c
index 75848de13818..9dda296c0152 100644
--- a/drivers/scsi/aic94xx/aic94xx_hwi.c
+++ b/drivers/scsi/aic94xx/aic94xx_hwi.c
@@ -28,7 +28,7 @@ static int asd_get_user_sas_addr(struct asd_ha_struct *asd_ha)
if (asd_ha->hw_prof.sas_addr[0])
return 0;

- return sas_request_addr(asd_ha->sas_ha.core.shost,
+ return sas_request_addr(asd_ha->sas_ha.shost,
asd_ha->hw_prof.sas_addr);
}

diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
index 6603e91cee8a..8a3340d8d7ad 100644
--- a/drivers/scsi/aic94xx/aic94xx_init.c
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
@@ -687,8 +687,8 @@ static int asd_unregister_sas_ha(struct asd_ha_struct *asd_ha)

err = sas_unregister_ha(&asd_ha->sas_ha);

- sas_remove_host(asd_ha->sas_ha.core.shost);
- scsi_host_put(asd_ha->sas_ha.core.shost);
+ sas_remove_host(asd_ha->sas_ha.shost);
+ scsi_host_put(asd_ha->sas_ha.shost);

kfree(asd_ha->sas_ha.sas_phy);
kfree(asd_ha->sas_ha.sas_port);
@@ -738,7 +738,7 @@ static int asd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
asd_printk("found %s, device %s\n", asd_ha->name, pci_name(dev));

SHOST_TO_SAS_HA(shost) = &asd_ha->sas_ha;
- asd_ha->sas_ha.core.shost = shost;
+ asd_ha->sas_ha.shost = shost;
shost->transportt = aic94xx_transport_template;
shost->max_id = ~0;
shost->max_lun = ~0;
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 72dd5e3ad9da..bd5f39de83d1 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -2514,7 +2514,7 @@ int hisi_sas_probe(struct platform_device *pdev,
sha->dev = hisi_hba->dev;
sha->sas_addr = &hisi_hba->sas_addr[0];
sha->num_phys = hisi_hba->n_phy;
- sha->core.shost = hisi_hba->shost;
+ sha->shost = hisi_hba->shost;

for (i = 0; i < hisi_hba->n_phy; i++) {
sha->sas_phy[i] = &hisi_hba->phy[i].sas_phy;
@@ -2556,12 +2556,12 @@ void hisi_sas_remove(struct platform_device *pdev)
{
struct sas_ha_struct *sha = platform_get_drvdata(pdev);
struct hisi_hba *hisi_hba = sha->lldd_ha;
- struct Scsi_Host *shost = sha->core.shost;
+ struct Scsi_Host *shost = sha->shost;

del_timer_sync(&hisi_hba->timer);

sas_unregister_ha(sha);
- sas_remove_host(sha->core.shost);
+ sas_remove_host(shost);

hisi_sas_free(hisi_hba);
scsi_host_put(shost);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index 7b40f0eed703..813807a24ae1 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -4956,7 +4956,7 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)

sha->sas_phy = arr_phy;
sha->sas_port = arr_port;
- sha->core.shost = shost;
+ sha->shost = shost;
sha->lldd_ha = hisi_hba;

shost->transportt = hisi_sas_stt;
@@ -5060,14 +5060,14 @@ static void hisi_sas_v3_remove(struct pci_dev *pdev)
struct device *dev = &pdev->dev;
struct sas_ha_struct *sha = dev_get_drvdata(dev);
struct hisi_hba *hisi_hba = sha->lldd_ha;
- struct Scsi_Host *shost = sha->core.shost;
+ struct Scsi_Host *shost = sha->shost;

pm_runtime_get_noresume(dev);
del_timer_sync(&hisi_hba->timer);

sas_unregister_ha(sha);
flush_workqueue(hisi_hba->wq);
- sas_remove_host(sha->core.shost);
+ sas_remove_host(shost);

hisi_sas_v3_destroy_irqs(pdev, hisi_hba);
hisi_sas_free(hisi_hba);
diff --git a/drivers/scsi/isci/host.h b/drivers/scsi/isci/host.h
index 6bc3f022630a..52388374cf31 100644
--- a/drivers/scsi/isci/host.h
+++ b/drivers/scsi/isci/host.h
@@ -306,7 +306,7 @@ static inline struct isci_pci_info *to_pci_info(struct pci_dev *pdev)

static inline struct Scsi_Host *to_shost(struct isci_host *ihost)
{
- return ihost->sas_ha.core.shost;
+ return ihost->sas_ha.shost;
}

#define for_each_isci_host(id, ihost, pdev) \
diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
index c3704208511b..db4784cc976a 100644
--- a/drivers/scsi/isci/init.c
+++ b/drivers/scsi/isci/init.c
@@ -574,7 +574,7 @@ static struct isci_host *isci_host_alloc(struct pci_dev *pdev, int id)
goto err_shost;

SHOST_TO_SAS_HA(shost) = &ihost->sas_ha;
- ihost->sas_ha.core.shost = shost;
+ ihost->sas_ha.shost = shost;
shost->transportt = isci_transport_template;

shost->max_id = ~0;
@@ -729,7 +729,7 @@ static int isci_resume(struct device *dev)
sas_prep_resume_ha(&ihost->sas_ha);

isci_host_init(ihost);
- isci_host_start(ihost->sas_ha.core.shost);
+ isci_host_start(ihost->sas_ha.shost);
wait_for_start(ihost);

sas_resume_ha(&ihost->sas_ha);
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index 77714a495cbb..2d29154ca8ef 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -162,7 +162,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
struct ata_port *ap = qc->ap;
struct domain_device *dev = ap->private_data;
struct sas_ha_struct *sas_ha = dev->port->ha;
- struct Scsi_Host *host = sas_ha->core.shost;
+ struct Scsi_Host *host = sas_ha->shost;
struct sas_internal *i = to_sas_internal(host->transportt);

/* TODO: we should try to remove that unlock */
@@ -235,7 +235,7 @@ static void sas_ata_qc_fill_rtf(struct ata_queued_cmd *qc)

static struct sas_internal *dev_to_sas_internal(struct domain_device *dev)
{
- return to_sas_internal(dev->port->ha->core.shost->transportt);
+ return to_sas_internal(dev->port->ha->shost->transportt);
}

static int sas_get_ata_command_set(struct domain_device *dev)
@@ -584,7 +584,7 @@ static struct ata_port_info sata_port_info = {
int sas_ata_init(struct domain_device *found_dev)
{
struct sas_ha_struct *ha = found_dev->port->ha;
- struct Scsi_Host *shost = ha->core.shost;
+ struct Scsi_Host *shost = ha->shost;
struct ata_host *ata_host;
struct ata_port *ap;
int rc;
@@ -822,7 +822,7 @@ static void async_sas_ata_eh(void *data, async_cookie_t cookie)
struct sas_ha_struct *ha = dev->port->ha;

sas_ata_printk(KERN_DEBUG, dev, "dev error handler\n");
- ata_scsi_port_error_handler(ha->core.shost, ap);
+ ata_scsi_port_error_handler(ha->shost, ap);
sas_put_device(dev);
}

diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c
index 8c6afe724944..15cb9965faa2 100644
--- a/drivers/scsi/libsas/sas_discover.c
+++ b/drivers/scsi/libsas/sas_discover.c
@@ -170,7 +170,7 @@ int sas_notify_lldd_dev_found(struct domain_device *dev)
{
int res = 0;
struct sas_ha_struct *sas_ha = dev->port->ha;
- struct Scsi_Host *shost = sas_ha->core.shost;
+ struct Scsi_Host *shost = sas_ha->shost;
struct sas_internal *i = to_sas_internal(shost->transportt);

if (!i->dft->lldd_dev_found)
@@ -192,7 +192,7 @@ int sas_notify_lldd_dev_found(struct domain_device *dev)
void sas_notify_lldd_dev_gone(struct domain_device *dev)
{
struct sas_ha_struct *sas_ha = dev->port->ha;
- struct Scsi_Host *shost = sas_ha->core.shost;
+ struct Scsi_Host *shost = sas_ha->shost;
struct sas_internal *i = to_sas_internal(shost->transportt);

if (!i->dft->lldd_dev_gone)
@@ -234,7 +234,7 @@ static void sas_suspend_devices(struct work_struct *work)
struct domain_device *dev;
struct sas_discovery_event *ev = to_sas_discovery_event(work);
struct asd_sas_port *port = ev->port;
- struct Scsi_Host *shost = port->ha->core.shost;
+ struct Scsi_Host *shost = port->ha->shost;
struct sas_internal *si = to_sas_internal(shost->transportt);

clear_bit(DISCE_SUSPEND, &port->disc.pending);
@@ -373,7 +373,7 @@ static bool sas_abort_cmd(struct request *req, void *data)
static void sas_abort_device_scsi_cmds(struct domain_device *dev)
{
struct sas_ha_struct *sas_ha = dev->port->ha;
- struct Scsi_Host *shost = sas_ha->core.shost;
+ struct Scsi_Host *shost = sas_ha->shost;

if (dev_is_expander(dev->dev_type))
return;
diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index adcac57aaee6..a2204674b680 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -37,7 +37,7 @@ static int smp_execute_task_sg(struct domain_device *dev,
int res, retry;
struct sas_task *task = NULL;
struct sas_internal *i =
- to_sas_internal(dev->port->ha->core.shost->transportt);
+ to_sas_internal(dev->port->ha->shost->transportt);
struct sas_ha_struct *ha = dev->port->ha;

pm_runtime_get_sync(ha->dev);
diff --git a/drivers/scsi/libsas/sas_host_smp.c b/drivers/scsi/libsas/sas_host_smp.c
index 32cdc969b736..2ecb8535634c 100644
--- a/drivers/scsi/libsas/sas_host_smp.c
+++ b/drivers/scsi/libsas/sas_host_smp.c
@@ -114,7 +114,7 @@ static int sas_host_smp_write_gpio(struct sas_ha_struct *sas_ha, u8 *resp_data,
u8 reg_type, u8 reg_index, u8 reg_count,
u8 *req_data)
{
- struct sas_internal *i = to_sas_internal(sas_ha->core.shost->transportt);
+ struct sas_internal *i = to_sas_internal(sas_ha->shost->transportt);
int written;

if (i->dft->lldd_write_gpio == NULL) {
@@ -182,7 +182,7 @@ static void sas_phy_control(struct sas_ha_struct *sas_ha, u8 phy_id,
enum sas_linkrate max, u8 *resp_data)
{
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);
struct sas_phy_linkrates rates;
struct asd_sas_phy *asd_phy;

diff --git a/drivers/scsi/libsas/sas_init.c b/drivers/scsi/libsas/sas_init.c
index f2c05ebeb72f..8586dc79f2a0 100644
--- a/drivers/scsi/libsas/sas_init.c
+++ b/drivers/scsi/libsas/sas_init.c
@@ -183,7 +183,7 @@ static int sas_get_linkerrors(struct sas_phy *phy)
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

return i->dft->lldd_control_phy(asd_phy, PHY_FUNC_GET_EVENTS, NULL);
}
@@ -232,7 +232,7 @@ static int transport_sas_phy_reset(struct sas_phy *phy, int hard_reset)
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

if (!hard_reset && sas_try_ata_reset(asd_phy) == 0)
return 0;
@@ -266,7 +266,7 @@ int sas_phy_enable(struct sas_phy *phy, int enable)
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

if (enable)
ret = transport_sas_phy_reset(phy, 0);
@@ -303,7 +303,7 @@ int sas_phy_reset(struct sas_phy *phy, int hard_reset)
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

ret = i->dft->lldd_control_phy(asd_phy, reset_type, NULL);
} else {
@@ -339,7 +339,7 @@ int sas_set_phy_speed(struct sas_phy *phy,
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

ret = i->dft->lldd_control_phy(asd_phy, PHY_FUNC_SET_LINK_RATE,
rates);
@@ -438,7 +438,7 @@ static void _sas_resume_ha(struct sas_ha_struct *ha, bool drain)
/* all phys are back up or timed out, turn on i/o so we can
* flush out disks that did not return
*/
- scsi_unblock_requests(ha->core.shost);
+ scsi_unblock_requests(ha->shost);
if (drain)
sas_drain_work(ha);
clear_bit(SAS_HA_RESUMING, &ha->state);
@@ -468,7 +468,7 @@ void sas_suspend_ha(struct sas_ha_struct *ha)
int i;

sas_disable_events(ha);
- scsi_block_requests(ha->core.shost);
+ scsi_block_requests(ha->shost);
for (i = 0; i < ha->num_phys; i++) {
struct asd_sas_port *port = ha->sas_port[i];

@@ -641,7 +641,7 @@ struct asd_sas_event *sas_alloc_event(struct asd_sas_phy *phy,
struct asd_sas_event *event;
struct sas_ha_struct *sas_ha = phy->ha;
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

event = kmem_cache_zalloc(sas_event_cache, gfp_flags);
if (!event)
diff --git a/drivers/scsi/libsas/sas_phy.c b/drivers/scsi/libsas/sas_phy.c
index a0d592d11dfb..57494ac97076 100644
--- a/drivers/scsi/libsas/sas_phy.c
+++ b/drivers/scsi/libsas/sas_phy.c
@@ -38,7 +38,7 @@ static void sas_phye_oob_error(struct work_struct *work)
struct sas_ha_struct *sas_ha = phy->ha;
struct asd_sas_port *port = phy->port;
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

sas_deform_port(phy, 1);

@@ -66,7 +66,7 @@ static void sas_phye_spinup_hold(struct work_struct *work)
struct asd_sas_phy *phy = ev->phy;
struct sas_ha_struct *sas_ha = phy->ha;
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

phy->error = 0;
i->dft->lldd_control_phy(phy, PHY_FUNC_RELEASE_SPINUP_HOLD, NULL);
@@ -95,7 +95,7 @@ static void sas_phye_shutdown(struct work_struct *work)
struct asd_sas_phy *phy = ev->phy;
struct sas_ha_struct *sas_ha = phy->ha;
struct sas_internal *i =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);

if (phy->enabled) {
int ret;
@@ -131,7 +131,7 @@ int sas_register_phys(struct sas_ha_struct *sas_ha)
spin_lock_init(&phy->sas_prim_lock);
phy->frame_rcvd_size = 0;

- phy->phy = sas_phy_alloc(&sas_ha->core.shost->shost_gendev, i);
+ phy->phy = sas_phy_alloc(&sas_ha->shost->shost_gendev, i);
if (!phy->phy)
return -ENOMEM;

diff --git a/drivers/scsi/libsas/sas_port.c b/drivers/scsi/libsas/sas_port.c
index 7893c462169a..e3f2ed913419 100644
--- a/drivers/scsi/libsas/sas_port.c
+++ b/drivers/scsi/libsas/sas_port.c
@@ -28,7 +28,7 @@ static void sas_resume_port(struct asd_sas_phy *phy)
struct domain_device *dev, *n;
struct asd_sas_port *port = phy->port;
struct sas_ha_struct *sas_ha = phy->ha;
- struct sas_internal *si = to_sas_internal(sas_ha->core.shost->transportt);
+ struct sas_internal *si = to_sas_internal(sas_ha->shost->transportt);

if (si->dft->lldd_port_formed)
si->dft->lldd_port_formed(phy);
@@ -108,7 +108,7 @@ static void sas_form_port(struct asd_sas_phy *phy)
struct asd_sas_port *port = phy->port;
struct domain_device *port_dev = NULL;
struct sas_internal *si =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);
unsigned long flags;

if (port) {
@@ -211,7 +211,7 @@ void sas_deform_port(struct asd_sas_phy *phy, int gone)
struct sas_ha_struct *sas_ha = phy->ha;
struct asd_sas_port *port = phy->port;
struct sas_internal *si =
- to_sas_internal(sas_ha->core.shost->transportt);
+ to_sas_internal(sas_ha->shost->transportt);
struct domain_device *dev;
unsigned long flags;

diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
index 94c5f14f3c16..86b5d6b87282 100644
--- a/drivers/scsi/libsas/sas_scsi_host.c
+++ b/drivers/scsi/libsas/sas_scsi_host.c
@@ -279,7 +279,7 @@ static enum task_disposition sas_scsi_find_task(struct sas_task *task)
unsigned long flags;
int i, res;
struct sas_internal *si =
- to_sas_internal(task->dev->port->ha->core.shost->transportt);
+ to_sas_internal(task->dev->port->ha->shost->transportt);

for (i = 0; i < 5; i++) {
pr_notice("%s: aborting task 0x%p\n", __func__, task);
@@ -327,7 +327,7 @@ static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd)
int res = TMF_RESP_FUNC_FAILED;
struct scsi_lun lun;
struct sas_internal *i =
- to_sas_internal(dev->port->ha->core.shost->transportt);
+ to_sas_internal(dev->port->ha->shost->transportt);

int_to_scsilun(cmd->device->lun, &lun);

@@ -355,7 +355,7 @@ static int sas_recover_I_T(struct domain_device *dev)
{
int res = TMF_RESP_FUNC_FAILED;
struct sas_internal *i =
- to_sas_internal(dev->port->ha->core.shost->transportt);
+ to_sas_internal(dev->port->ha->shost->transportt);

pr_notice("I_T nexus reset for dev %016llx\n",
SAS_ADDR(dev->sas_addr));
@@ -410,7 +410,7 @@ static void sas_wait_eh(struct domain_device *dev)
spin_unlock_irq(&ha->lock);

/* make sure SCSI EH is complete */
- if (scsi_host_in_recovery(ha->core.shost)) {
+ if (scsi_host_in_recovery(ha->shost)) {
msleep(10);
goto retry;
}
@@ -440,7 +440,7 @@ static int sas_queue_reset(struct domain_device *dev, int reset_type,
set_bit(SAS_DEV_EH_PENDING, &dev->state);
set_bit(reset_type, &dev->state);
int_to_scsilun(lun, &dev->ssp_dev.reset_lun);
- scsi_schedule_eh(ha->core.shost);
+ scsi_schedule_eh(ha->shost);
}
spin_unlock_irq(&ha->lock);

@@ -925,7 +925,7 @@ static int sas_execute_internal_abort(struct domain_device *device,
unsigned int qid, void *data)
{
struct sas_ha_struct *ha = device->port->ha;
- struct sas_internal *i = to_sas_internal(ha->core.shost->transportt);
+ struct sas_internal *i = to_sas_internal(ha->shost->transportt);
struct sas_task *task = NULL;
int res, retry;

@@ -1015,7 +1015,7 @@ int sas_execute_tmf(struct domain_device *device, void *parameter,
{
struct sas_task *task;
struct sas_internal *i =
- to_sas_internal(device->port->ha->core.shost->transportt);
+ to_sas_internal(device->port->ha->shost->transportt);
int res, retry;

for (retry = 0; retry < TASK_RETRY; retry++) {
diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
index d5cf563e9094..43ebb331e216 100644
--- a/drivers/scsi/mvsas/mv_init.c
+++ b/drivers/scsi/mvsas/mv_init.c
@@ -414,7 +414,7 @@ static int mvs_prep_sas_ha_init(struct Scsi_Host *shost,

sha->sas_phy = arr_phy;
sha->sas_port = arr_port;
- sha->core.shost = shost;
+ sha->shost = shost;

sha->lldd_ha = kzalloc(sizeof(struct mvs_prv_info), GFP_KERNEL);
if (!sha->lldd_ha)
@@ -470,7 +470,7 @@ static void mvs_post_sas_ha_init(struct Scsi_Host *shost,
shost->sg_tablesize = min_t(u16, SG_ALL, MVS_MAX_SG);
shost->can_queue = can_queue;
mvi->shost->cmd_per_lun = MVS_QUEUE_SIZE;
- sha->core.shost = mvi->shost;
+ sha->shost = mvi->shost;
}

static void mvs_init_sas_add(struct mvs_info *mvi)
diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index 0ffde0bcd737..8ed3bb1f698a 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -654,7 +654,7 @@ static void pm8001_post_sas_ha_init(struct Scsi_Host *shost,
sha->strict_wide_ports = 1;
sha->sas_addr = &pm8001_ha->sas_addr[0];
sha->num_phys = chip_info->n_phy;
- sha->core.shost = shost;
+ sha->shost = shost;
}

/**
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index e54bcdc1ecd1..d42bfdff7812 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -333,11 +333,6 @@ struct asd_sas_phy {
void *lldd_phy; /* not touched by the sas_class_code */
};

-struct scsi_core {
- struct Scsi_Host *shost;
-
-};
-
enum sas_ha_state {
SAS_HA_REGISTERED,
SAS_HA_DRAINING,
@@ -358,7 +353,7 @@ struct sas_ha_struct {

struct mutex disco_mutex;

- struct scsi_core core;
+ struct Scsi_Host *shost;

/* public: */
char *sas_ha_name;
--
2.35.3


2023-08-14 15:35:37

by John Garry

[permalink] [raw]
Subject: [PATCH 07/10] scsi: libsas: Delete sas_ssp_task.task_prio

Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
driver"), sas_ssp_task.task_prio is never set, so delete it
and any references which depend on it being set (all of them).

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_task.c | 1 -
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 3 +--
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 +--
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 +-
drivers/scsi/isci/request.c | 1 -
drivers/scsi/mvsas/mv_sas.c | 3 +--
drivers/scsi/pm8001/pm8001_hwi.c | 1 -
drivers/scsi/pm8001/pm80xx_hwi.c | 1 -
include/scsi/libsas.h | 1 -
9 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
index 1ac4d3afc1a1..f67983e8b262 100644
--- a/drivers/scsi/aic94xx/aic94xx_task.c
+++ b/drivers/scsi/aic94xx/aic94xx_task.c
@@ -485,7 +485,6 @@ static int asd_build_ssp_ascb(struct asd_ascb *ascb, struct sas_task *task,
scb->ssp_task.ssp_frame.tptt = cpu_to_be16(0xFFFF);

memcpy(scb->ssp_task.ssp_cmd.lun, task->ssp_task.LUN, 8);
- scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_prio << 3);
scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_attr & 7);
memcpy(scb->ssp_task.ssp_cmd.cdb, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
index d4e3c3a058e0..3c555579f9a1 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
@@ -1022,8 +1022,7 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,

memcpy(buf_cmd, &task->ssp_task.LUN, 8);
if (!tmf) {
- buf_cmd[9] = task->ssp_task.task_attr |
- (task->ssp_task.task_prio << 3);
+ buf_cmd[9] = task->ssp_task.task_attr;
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
} else {
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index 404aa7e179cb..73b378837da7 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -1798,8 +1798,7 @@ static void prep_ssp_v2_hw(struct hisi_hba *hisi_hba,

memcpy(buf_cmd, &task->ssp_task.LUN, 8);
if (!tmf) {
- buf_cmd[9] = task->ssp_task.task_attr |
- (task->ssp_task.task_prio << 3);
+ buf_cmd[9] = task->ssp_task.task_attr;
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
} else {
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index 813807a24ae1..bbb64ee6afd7 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -1326,7 +1326,7 @@ static void prep_ssp_v3_hw(struct hisi_hba *hisi_hba,

memcpy(buf_cmd, &task->ssp_task.LUN, 8);
if (!tmf) {
- buf_cmd[9] = ssp_task->task_attr | (ssp_task->task_prio << 3);
+ buf_cmd[9] = ssp_task->task_attr;
memcpy(buf_cmd + 12, scsi_cmnd->cmnd, scsi_cmnd->cmd_len);
} else {
buf_cmd[10] = tmf->tmf;
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
index 6370cdbfba08..fdb8dff2e50c 100644
--- a/drivers/scsi/isci/request.c
+++ b/drivers/scsi/isci/request.c
@@ -180,7 +180,6 @@ static void sci_io_request_build_ssp_command_iu(struct isci_request *ireq)
cmd_iu->_r_a = 0;
cmd_iu->_r_b = 0;
cmd_iu->en_fburst = 0; /* unsupported */
- cmd_iu->task_prio = task->ssp_task.task_prio;
cmd_iu->task_attr = task->ssp_task.task_attr;
cmd_iu->_r_c = 0;

diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index 165f46320bd2..1444b1f1c4c8 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -663,8 +663,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
memcpy(buf_cmd, &task->ssp_task.LUN, 8);

if (ssp_hdr->frame_type != SSP_TASK) {
- buf_cmd[9] = task->ssp_task.task_attr |
- (task->ssp_task.task_prio << 3);
+ buf_cmd[9] = task->ssp_task.task_attr;
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
} else{
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
index 18070e0e06d5..35797b56ea0a 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.c
+++ b/drivers/scsi/pm8001/pm8001_hwi.c
@@ -4053,7 +4053,6 @@ static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
ssp_cmd.tag = cpu_to_le32(tag);
- ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index ad5a73b86415..1c092ee37bdd 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -4316,7 +4316,6 @@ static int pm80xx_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
ssp_cmd.tag = cpu_to_le32(tag);
- ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index d77db53cbd8d..5b2e6932c564 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -565,7 +565,6 @@ enum task_attribute {
struct sas_ssp_task {
u8 LUN[8];
enum task_attribute task_attr;
- u8 task_prio;
struct scsi_cmnd *cmd;
};

--
2.35.3


2023-08-14 15:40:00

by John Garry

[permalink] [raw]
Subject: [PATCH 08/10] scsi: libsas: Delete sas_ata_task.set_affil_pol

Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
driver"), sas_ata_task.set_affil_pol is never set, so delete it and the
reference in asd_build_ata_ascb().

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_task.c | 7 +++----
include/scsi/libsas.h | 1 -
2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
index f67983e8b262..ca435811c310 100644
--- a/drivers/scsi/aic94xx/aic94xx_task.c
+++ b/drivers/scsi/aic94xx/aic94xx_task.c
@@ -390,11 +390,10 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task,

scb->ata_task.retry_count = task->ata_task.retry_count;

- flags = 0;
- if (task->ata_task.set_affil_pol)
- flags |= SET_AFFIL_POLICY;
if (task->ata_task.stp_affil_pol)
- flags |= STP_AFFIL_POLICY;
+ flags = STP_AFFIL_POLICY;
+ else
+ flags = 0;
scb->ata_task.flags = flags;
}
ascb->tasklet_complete = asd_task_tasklet_complete;
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index 5b2e6932c564..3a52094090a1 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -529,7 +529,6 @@ struct sas_ata_task {

u8 dma_xfer:1; /* PIO:0 or DMA:1 */
u8 use_ncq:1;
- u8 set_affil_pol:1;
u8 stp_affil_pol:1;

u8 device_control_reg_update:1;
--
2.35.3


2023-08-14 15:44:22

by John Garry

[permalink] [raw]
Subject: [PATCH 09/10] scsi: libsas: Delete sas_ata_task.stp_affil_pol

Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
driver"), sas_ata_task.stp_affil_pol is never set, so delete it and the
reference in asd_build_ata_ascb().

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_task.c | 6 +-----
include/scsi/libsas.h | 1 -
2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
index ca435811c310..21b69e592664 100644
--- a/drivers/scsi/aic94xx/aic94xx_task.c
+++ b/drivers/scsi/aic94xx/aic94xx_task.c
@@ -390,11 +390,7 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task,

scb->ata_task.retry_count = task->ata_task.retry_count;

- if (task->ata_task.stp_affil_pol)
- flags = STP_AFFIL_POLICY;
- else
- flags = 0;
- scb->ata_task.flags = flags;
+ scb->ata_task.flags = 0;
}
ascb->tasklet_complete = asd_task_tasklet_complete;

diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index 3a52094090a1..a65c16643315 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -529,7 +529,6 @@ struct sas_ata_task {

u8 dma_xfer:1; /* PIO:0 or DMA:1 */
u8 use_ncq:1;
- u8 stp_affil_pol:1;

u8 device_control_reg_update:1;

--
2.35.3


2023-08-14 16:08:11

by John Garry

[permalink] [raw]
Subject: [PATCH 06/10] scsi: libsas: Delete sas_ssp_task.enable_first_burst

Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
driver"), sas_ssp_task.enable_first_burst is never set, so delete it and
any references.

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_task.c | 2 --
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 8 ++------
drivers/scsi/mvsas/mv_sas.c | 8 ++------
drivers/scsi/pm8001/pm8001_hwi.c | 2 --
drivers/scsi/pm8001/pm80xx_hwi.c | 2 --
include/scsi/libsas.h | 1 -
6 files changed, 4 insertions(+), 19 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
index 7f0208300110..1ac4d3afc1a1 100644
--- a/drivers/scsi/aic94xx/aic94xx_task.c
+++ b/drivers/scsi/aic94xx/aic94xx_task.c
@@ -485,8 +485,6 @@ static int asd_build_ssp_ascb(struct asd_ascb *ascb, struct sas_task *task,
scb->ssp_task.ssp_frame.tptt = cpu_to_be16(0xFFFF);

memcpy(scb->ssp_task.ssp_cmd.lun, task->ssp_task.LUN, 8);
- if (task->ssp_task.enable_first_burst)
- scb->ssp_task.ssp_cmd.efb_prio_attr |= EFB_MASK;
scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_prio << 3);
scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_attr & 7);
memcpy(scb->ssp_task.ssp_cmd.cdb, task->ssp_task.cmd->cmnd,
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
index 94fbbceddc2e..d4e3c3a058e0 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
@@ -960,7 +960,7 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,
struct scsi_cmnd *scsi_cmnd = ssp_task->cmd;
struct sas_tmf_task *tmf = slot->tmf;
int has_data = 0, priority = !!tmf;
- u8 *buf_cmd, fburst = 0;
+ u8 *buf_cmd;
u32 dw1, dw2;

/* create header */
@@ -1018,15 +1018,11 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,

buf_cmd = hisi_sas_cmd_hdr_addr_mem(slot) +
sizeof(struct ssp_frame_hdr);
- if (task->ssp_task.enable_first_burst) {
- fburst = (1 << 7);
- dw2 |= 1 << CMD_HDR_FIRST_BURST_OFF;
- }
hdr->dw2 = cpu_to_le32(dw2);

memcpy(buf_cmd, &task->ssp_task.LUN, 8);
if (!tmf) {
- buf_cmd[9] = fburst | task->ssp_task.task_attr |
+ buf_cmd[9] = task->ssp_task.task_attr |
(task->ssp_task.task_prio << 3);
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
index 9978c424214c..165f46320bd2 100644
--- a/drivers/scsi/mvsas/mv_sas.c
+++ b/drivers/scsi/mvsas/mv_sas.c
@@ -564,7 +564,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
void *buf_prd;
struct ssp_frame_hdr *ssp_hdr;
void *buf_tmp;
- u8 *buf_cmd, *buf_oaf, fburst = 0;
+ u8 *buf_cmd, *buf_oaf;
dma_addr_t buf_tmp_dma;
u32 flags;
u32 resp_len, req_len, i, tag = tei->tag;
@@ -582,10 +582,6 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
(phy_mask << TXQ_PHY_SHIFT));

flags = MCH_RETRY;
- if (task->ssp_task.enable_first_burst) {
- flags |= MCH_FBURST;
- fburst = (1 << 7);
- }
if (is_tmf)
flags |= (MCH_SSP_FR_TASK << MCH_SSP_FR_TYPE_SHIFT);
else
@@ -667,7 +663,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
memcpy(buf_cmd, &task->ssp_task.LUN, 8);

if (ssp_hdr->frame_type != SSP_TASK) {
- buf_cmd[9] = fburst | task->ssp_task.task_attr |
+ buf_cmd[9] = task->ssp_task.task_attr |
(task->ssp_task.task_prio << 3);
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
task->ssp_task.cmd->cmd_len);
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
index 73cd25f30ca5..18070e0e06d5 100644
--- a/drivers/scsi/pm8001/pm8001_hwi.c
+++ b/drivers/scsi/pm8001/pm8001_hwi.c
@@ -4053,8 +4053,6 @@ static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
ssp_cmd.tag = cpu_to_le32(tag);
- if (task->ssp_task.enable_first_burst)
- ssp_cmd.ssp_iu.efb_prio_attr |= 0x80;
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
index 39a12ee94a72..ad5a73b86415 100644
--- a/drivers/scsi/pm8001/pm80xx_hwi.c
+++ b/drivers/scsi/pm8001/pm80xx_hwi.c
@@ -4316,8 +4316,6 @@ static int pm80xx_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
ssp_cmd.tag = cpu_to_le32(tag);
- if (task->ssp_task.enable_first_burst)
- ssp_cmd.ssp_iu.efb_prio_attr = 0x80;
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index d8222c442640..d77db53cbd8d 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -564,7 +564,6 @@ enum task_attribute {

struct sas_ssp_task {
u8 LUN[8];
- u8 enable_first_burst:1;
enum task_attribute task_attr;
u8 task_prio;
struct scsi_cmnd *cmd;
--
2.35.3


2023-08-14 16:45:15

by John Garry

[permalink] [raw]
Subject: [PATCH 05/10] scsi: libsas: Delete sas_ssp_task.retry_count

Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
driver"), sas_ssp_task.retry_count is only ever set, so delete it.

The aic94xx driver also had its own retry_count definition in struct scb
sub-structs, which may have caused a mix-up.

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/libsas/sas_ata.c | 1 -
drivers/scsi/libsas/sas_scsi_host.c | 1 -
include/scsi/libsas.h | 2 --
3 files changed, 4 deletions(-)

diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index 2d29154ca8ef..ed9af2b401ef 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -201,7 +201,6 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
task->data_dir = qc->dma_dir;
}
task->scatter = qc->sg;
- task->ata_task.retry_count = 1;
qc->lldd_task = task;

task->ata_task.use_ncq = ata_is_ncq(qc->tf.protocol);
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
index 86b5d6b87282..0c103f4523b8 100644
--- a/drivers/scsi/libsas/sas_scsi_host.c
+++ b/drivers/scsi/libsas/sas_scsi_host.c
@@ -142,7 +142,6 @@ static struct sas_task *sas_create_task(struct scsi_cmnd *cmd,
task->dev = dev;
task->task_proto = task->dev->tproto; /* BUG_ON(!SSP) */

- task->ssp_task.retry_count = 1;
int_to_scsilun(cmd->device->lun, &lun);
memcpy(task->ssp_task.LUN, &lun.scsi_lun, 8);
task->ssp_task.task_attr = TASK_ATTR_SIMPLE;
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index d42bfdff7812..d8222c442640 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -563,8 +563,6 @@ enum task_attribute {
};

struct sas_ssp_task {
- u8 retry_count; /* hardware retry, should be > 0 */
-
u8 LUN[8];
u8 enable_first_burst:1;
enum task_attribute task_attr;
--
2.35.3


2023-08-14 16:58:02

by John Garry

[permalink] [raw]
Subject: [PATCH 03/10] scsi: libsas: Delete enum sas_phy_type

enum sas_phy_type is used for asd_sas_phy.type, which is only ever set,
so delete this member and the enum.

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_hwi.c | 1 -
drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
drivers/scsi/isci/phy.c | 1 -
drivers/scsi/mvsas/mv_init.c | 1 -
drivers/scsi/pm8001/pm8001_init.c | 1 -
include/scsi/libsas.h | 6 ------
6 files changed, 11 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.c b/drivers/scsi/aic94xx/aic94xx_hwi.c
index d8f56e528877..75848de13818 100644
--- a/drivers/scsi/aic94xx/aic94xx_hwi.c
+++ b/drivers/scsi/aic94xx/aic94xx_hwi.c
@@ -74,7 +74,6 @@ static int asd_init_phy(struct asd_phy *phy)
sas_phy->enabled = 1;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
- sas_phy->type = PHY_TYPE_PHYSICAL;
sas_phy->role = PHY_ROLE_INITIATOR;
sas_phy->oob_mode = OOB_NOT_CONNECTED;
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 1172065c1d7d..72dd5e3ad9da 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -1020,7 +1020,6 @@ static void hisi_sas_phy_init(struct hisi_hba *hisi_hba, int phy_no)
sas_phy->enabled = (phy_no < hisi_hba->n_phy) ? 1 : 0;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
- sas_phy->type = PHY_TYPE_PHYSICAL;
sas_phy->role = PHY_ROLE_INITIATOR;
sas_phy->oob_mode = OOB_NOT_CONNECTED;
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
diff --git a/drivers/scsi/isci/phy.c b/drivers/scsi/isci/phy.c
index ea2e339f5b1a..743a3c64b0da 100644
--- a/drivers/scsi/isci/phy.c
+++ b/drivers/scsi/isci/phy.c
@@ -1406,7 +1406,6 @@ void isci_phy_init(struct isci_phy *iphy, struct isci_host *ihost, int index)
iphy->sas_phy.enabled = 1;
iphy->sas_phy.iproto = SAS_PROTOCOL_ALL;
iphy->sas_phy.tproto = 0;
- iphy->sas_phy.type = PHY_TYPE_PHYSICAL;
iphy->sas_phy.role = PHY_ROLE_INITIATOR;
iphy->sas_phy.oob_mode = OOB_NOT_CONNECTED;
iphy->sas_phy.linkrate = SAS_LINK_RATE_UNKNOWN;
diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
index 408113bf506d..d5cf563e9094 100644
--- a/drivers/scsi/mvsas/mv_init.c
+++ b/drivers/scsi/mvsas/mv_init.c
@@ -86,7 +86,6 @@ static void mvs_phy_init(struct mvs_info *mvi, int phy_id)
sas_phy->enabled = (phy_id < mvi->chip->n_phy) ? 1 : 0;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
- sas_phy->type = PHY_TYPE_PHYSICAL;
sas_phy->role = PHY_ROLE_INITIATOR;
sas_phy->oob_mode = OOB_NOT_CONNECTED;
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index e5d794a97b14..0ffde0bcd737 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -164,7 +164,6 @@ static void pm8001_phy_init(struct pm8001_hba_info *pm8001_ha, int phy_id)
sas_phy->enabled = (phy_id < pm8001_ha->chip->n_phy) ? 1 : 0;
sas_phy->iproto = SAS_PROTOCOL_ALL;
sas_phy->tproto = 0;
- sas_phy->type = PHY_TYPE_PHYSICAL;
sas_phy->role = PHY_ROLE_INITIATOR;
sas_phy->oob_mode = OOB_NOT_CONNECTED;
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index 3048660ff107..e54bcdc1ecd1 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -29,11 +29,6 @@ enum sas_phy_role {
PHY_ROLE_INITIATOR = 0x80,
};

-enum sas_phy_type {
- PHY_TYPE_PHYSICAL,
- PHY_TYPE_VIRTUAL
-};
-
/* The events are mnemonically described in sas_dump.c
* so when updating/adding events here, please also
* update the other file too.
@@ -316,7 +311,6 @@ struct asd_sas_phy {
enum sas_protocol iproto;
enum sas_protocol tproto;

- enum sas_phy_type type;
enum sas_phy_role role;
enum sas_oob_mode oob_mode;
enum sas_linkrate linkrate;
--
2.35.3


2023-08-14 16:59:32

by John Garry

[permalink] [raw]
Subject: [PATCH 10/10] scsi: libsas: Delete sas_ata_task.retry_count

Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
driver"), sas_ata_task.retry_count is never set, so delete it and the
reference in asd_build_ata_ascb().

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_task.c | 2 +-
include/scsi/libsas.h | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
index 21b69e592664..4bfd03724ad6 100644
--- a/drivers/scsi/aic94xx/aic94xx_task.c
+++ b/drivers/scsi/aic94xx/aic94xx_task.c
@@ -388,7 +388,7 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task,
flags |= data_dir_flags[task->data_dir];
scb->ata_task.ata_flags = flags;

- scb->ata_task.retry_count = task->ata_task.retry_count;
+ scb->ata_task.retry_count = 0;

scb->ata_task.flags = 0;
}
diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
index a65c16643315..2601f5775a99 100644
--- a/include/scsi/libsas.h
+++ b/include/scsi/libsas.h
@@ -525,8 +525,6 @@ struct sas_ata_task {
struct host_to_dev_fis fis;
u8 atapi_packet[16]; /* 0 if not ATAPI task */

- u8 retry_count; /* hardware retry, should be > 0 */
-
u8 dma_xfer:1; /* PIO:0 or DMA:1 */
u8 use_ncq:1;

--
2.35.3


2023-08-15 03:43:25

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 08/10] scsi: libsas: Delete sas_ata_task.set_affil_pol

On 8/14/23 23:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.set_affil_pol is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-15 04:59:19

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 09/10] scsi: libsas: Delete sas_ata_task.stp_affil_pol

On 8/14/23 23:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.stp_affil_pol is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-15 06:32:53

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 05/10] scsi: libsas: Delete sas_ssp_task.retry_count

On 8/14/23 23:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.retry_count is only ever set, so delete it.
>
> The aic94xx driver also had its own retry_count definition in struct scb
> sub-structs, which may have caused a mix-up.
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-15 08:14:01

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 03/10] scsi: libsas: Delete enum sas_phy_type

On 8/14/23 23:10, John Garry wrote:
> enum sas_phy_type is used for asd_sas_phy.type, which is only ever set,
> so delete this member and the enum.
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-15 09:19:51

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 07/10] scsi: libsas: Delete sas_ssp_task.task_prio

On 8/14/23 23:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.task_prio is never set, so delete it
> and any references which depend on it being set (all of them).
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 3 +--
> drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 +--
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 +-
> drivers/scsi/isci/request.c | 1 -
> drivers/scsi/mvsas/mv_sas.c | 3 +--
> drivers/scsi/pm8001/pm8001_hwi.c | 1 -
> drivers/scsi/pm8001/pm80xx_hwi.c | 1 -
> include/scsi/libsas.h | 1 -
> 9 files changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
> index 1ac4d3afc1a1..f67983e8b262 100644
> --- a/drivers/scsi/aic94xx/aic94xx_task.c
> +++ b/drivers/scsi/aic94xx/aic94xx_task.c
> @@ -485,7 +485,6 @@ static int asd_build_ssp_ascb(struct asd_ascb *ascb, struct sas_task *task,
> scb->ssp_task.ssp_frame.tptt = cpu_to_be16(0xFFFF);
>
> memcpy(scb->ssp_task.ssp_cmd.lun, task->ssp_task.LUN, 8);
> - scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_prio << 3);
> scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_attr & 7);
> memcpy(scb->ssp_task.ssp_cmd.cdb, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
> index d4e3c3a058e0..3c555579f9a1 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
> @@ -1022,8 +1022,7 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,
>
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
> if (!tmf) {
> - buf_cmd[9] = task->ssp_task.task_attr |
> - (task->ssp_task.task_prio << 3);
> + buf_cmd[9] = task->ssp_task.task_attr;
> memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> } else {
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> index 404aa7e179cb..73b378837da7 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> @@ -1798,8 +1798,7 @@ static void prep_ssp_v2_hw(struct hisi_hba *hisi_hba,
>
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
> if (!tmf) {
> - buf_cmd[9] = task->ssp_task.task_attr |
> - (task->ssp_task.task_prio << 3);
> + buf_cmd[9] = task->ssp_task.task_attr;
> memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> } else {
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> index 813807a24ae1..bbb64ee6afd7 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> @@ -1326,7 +1326,7 @@ static void prep_ssp_v3_hw(struct hisi_hba *hisi_hba,
>
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
> if (!tmf) {
> - buf_cmd[9] = ssp_task->task_attr | (ssp_task->task_prio << 3);
> + buf_cmd[9] = ssp_task->task_attr;
> memcpy(buf_cmd + 12, scsi_cmnd->cmnd, scsi_cmnd->cmd_len);
> } else {
> buf_cmd[10] = tmf->tmf;
> diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
> index 6370cdbfba08..fdb8dff2e50c 100644
> --- a/drivers/scsi/isci/request.c
> +++ b/drivers/scsi/isci/request.c
> @@ -180,7 +180,6 @@ static void sci_io_request_build_ssp_command_iu(struct isci_request *ireq)
> cmd_iu->_r_a = 0;
> cmd_iu->_r_b = 0;
> cmd_iu->en_fburst = 0; /* unsupported */
> - cmd_iu->task_prio = task->ssp_task.task_prio;

Shouldn't this be replaced with:

cmd_iu->task_prio = 0;

? (note sure how cmd_iu is being initialized, but given that the other fields
around this code are assigned 0, I would guess this one needs that as well...)

> cmd_iu->task_attr = task->ssp_task.task_attr;
> cmd_iu->_r_c = 0;
>
> diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
> index 165f46320bd2..1444b1f1c4c8 100644
> --- a/drivers/scsi/mvsas/mv_sas.c
> +++ b/drivers/scsi/mvsas/mv_sas.c
> @@ -663,8 +663,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
>
> if (ssp_hdr->frame_type != SSP_TASK) {
> - buf_cmd[9] = task->ssp_task.task_attr |
> - (task->ssp_task.task_prio << 3);
> + buf_cmd[9] = task->ssp_task.task_attr;
> memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> } else{
> diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
> index 18070e0e06d5..35797b56ea0a 100644
> --- a/drivers/scsi/pm8001/pm8001_hwi.c
> +++ b/drivers/scsi/pm8001/pm8001_hwi.c
> @@ -4053,7 +4053,6 @@ static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
> ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
> ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
> ssp_cmd.tag = cpu_to_le32(tag);
> - ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
> ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
> memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
> index ad5a73b86415..1c092ee37bdd 100644
> --- a/drivers/scsi/pm8001/pm80xx_hwi.c
> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
> @@ -4316,7 +4316,6 @@ static int pm80xx_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
> ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
> ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
> ssp_cmd.tag = cpu_to_le32(tag);
> - ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
> ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
> memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
> index d77db53cbd8d..5b2e6932c564 100644
> --- a/include/scsi/libsas.h
> +++ b/include/scsi/libsas.h
> @@ -565,7 +565,6 @@ enum task_attribute {
> struct sas_ssp_task {
> u8 LUN[8];
> enum task_attribute task_attr;
> - u8 task_prio;
> struct scsi_cmnd *cmd;
> };
>

--
Damien Le Moal
Western Digital Research


2023-08-15 11:05:13

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 06/10] scsi: libsas: Delete sas_ssp_task.enable_first_burst

On 8/14/23 23:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.enable_first_burst is never set, so delete it and
> any references.
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-15 11:54:11

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 02/10] scsi: libsas: Delete enum sas_class

On 2023/8/14 22:10, John Garry wrote:
> enum sas_class prob would have been useful if function sas_show_class() was
> ever implemented, which it wasn't.
>
> enum sas_class is used as asd_sas_port.class and asd_sas_phy.class, which
> are only ever set, so delete these members and the enum.
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_hwi.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
> drivers/scsi/isci/phy.c | 1 -
> drivers/scsi/libsas/sas_internal.h | 1 -
> drivers/scsi/libsas/sas_port.c | 2 --
> drivers/scsi/mvsas/mv_init.c | 1 -
> drivers/scsi/pm8001/pm8001_init.c | 1 -
> include/scsi/libsas.h | 7 -------
> 8 files changed, 15 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-15 11:54:43

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 02/10] scsi: libsas: Delete enum sas_class

On 8/14/23 23:10, John Garry wrote:
> enum sas_class prob would have been useful if function sas_show_class() was
> ever implemented, which it wasn't.
>
> enum sas_class is used as asd_sas_port.class and asd_sas_phy.class, which
> are only ever set, so delete these members and the enum.
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-15 14:44:44

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 03/10] scsi: libsas: Delete enum sas_phy_type

On 2023/8/14 22:10, John Garry wrote:
> enum sas_phy_type is used for asd_sas_phy.type, which is only ever set,
> so delete this member and the enum.
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_hwi.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
> drivers/scsi/isci/phy.c | 1 -
> drivers/scsi/mvsas/mv_init.c | 1 -
> drivers/scsi/pm8001/pm8001_init.c | 1 -
> include/scsi/libsas.h | 6 ------
> 6 files changed, 11 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-15 18:28:39

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 05/10] scsi: libsas: Delete sas_ssp_task.retry_count

On 2023/8/14 22:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.retry_count is only ever set, so delete it.
>
> The aic94xx driver also had its own retry_count definition in struct scb
> sub-structs, which may have caused a mix-up.
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/libsas/sas_ata.c | 1 -
> drivers/scsi/libsas/sas_scsi_host.c | 1 -
> include/scsi/libsas.h | 2 --
> 3 files changed, 4 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-15 20:52:07

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 10/10] scsi: libsas: Delete sas_ata_task.retry_count

On 8/14/23 23:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.retry_count is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-15 20:57:46

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 09/10] scsi: libsas: Delete sas_ata_task.stp_affil_pol

On 2023/8/14 22:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.stp_affil_pol is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 6 +-----
> include/scsi/libsas.h | 1 -
> 2 files changed, 1 insertion(+), 6 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-15 21:11:11

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 06/10] scsi: libsas: Delete sas_ssp_task.enable_first_burst

On 2023/8/14 22:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.enable_first_burst is never set, so delete it and
> any references.
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 2 --
> drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 8 ++------
> drivers/scsi/mvsas/mv_sas.c | 8 ++------
> drivers/scsi/pm8001/pm8001_hwi.c | 2 --
> drivers/scsi/pm8001/pm80xx_hwi.c | 2 --
> include/scsi/libsas.h | 1 -
> 6 files changed, 4 insertions(+), 19 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-16 03:51:15

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 08/10] scsi: libsas: Delete sas_ata_task.set_affil_pol

On 2023/8/14 22:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.set_affil_pol is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 7 +++----
> include/scsi/libsas.h | 1 -
> 2 files changed, 3 insertions(+), 5 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-16 08:52:30

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 01/10] scsi: libsas: Delete sas_ha_struct.lldd_module

On 8/14/23 23:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ha_struct.lldd_module has only ever been set, so remove it.
>
> Struct scsi_host_template already has a reference to the LLD driver
> module as to stop the driver being removed unexpectedly.
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-16 09:30:27

by Damien Le Moal

[permalink] [raw]
Subject: Re: [PATCH 04/10] scsi: libsas: Delete struct scsi_core

On 8/14/23 23:10, John Garry wrote:
> Since commit 79855d178557 ("libsas: remove task_collector mode"), struct
> scsi_core only contains a reference to the shost. struct scsi_core is only
> used in sas_ha_struct.core, so delete scsi_core and replace with a
> reference to the shost there.
>
> Signed-off-by: John Garry <[email protected]>

Looks good.

Reviewed-by: Damien Le Moal <[email protected]>

--
Damien Le Moal
Western Digital Research


2023-08-16 11:52:17

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 01/10] scsi: libsas: Delete sas_ha_struct.lldd_module

On 2023/8/14 22:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ha_struct.lldd_module has only ever been set, so remove it.
>
> Struct scsi_host_template already has a reference to the LLD driver
> module as to stop the driver being removed unexpectedly.
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_init.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1 -
> drivers/scsi/isci/init.c | 1 -
> drivers/scsi/mvsas/mv_init.c | 1 -
> drivers/scsi/pm8001/pm8001_init.c | 1 -
> include/scsi/libsas.h | 1 -
> 7 files changed, 7 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-16 15:52:46

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 04/10] scsi: libsas: Delete struct scsi_core

On 2023/8/14 22:10, John Garry wrote:
> Since commit 79855d178557 ("libsas: remove task_collector mode"), struct
> scsi_core only contains a reference to the shost. struct scsi_core is only
> used in sas_ha_struct.core, so delete scsi_core and replace with a
> reference to the shost there.
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_hwi.c | 2 +-
> drivers/scsi/aic94xx/aic94xx_init.c | 6 +++---
> drivers/scsi/hisi_sas/hisi_sas_main.c | 6 +++---
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 6 +++---
> drivers/scsi/isci/host.h | 2 +-
> drivers/scsi/isci/init.c | 4 ++--
> drivers/scsi/libsas/sas_ata.c | 8 ++++----
> drivers/scsi/libsas/sas_discover.c | 8 ++++----
> drivers/scsi/libsas/sas_expander.c | 2 +-
> drivers/scsi/libsas/sas_host_smp.c | 4 ++--
> drivers/scsi/libsas/sas_init.c | 16 ++++++++--------
> drivers/scsi/libsas/sas_phy.c | 8 ++++----
> drivers/scsi/libsas/sas_port.c | 6 +++---
> drivers/scsi/libsas/sas_scsi_host.c | 14 +++++++-------
> drivers/scsi/mvsas/mv_init.c | 4 ++--
> drivers/scsi/pm8001/pm8001_init.c | 2 +-
> include/scsi/libsas.h | 7 +------
> 17 files changed, 50 insertions(+), 55 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-08-16 15:58:25

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH 10/10] scsi: libsas: Delete sas_ata_task.retry_count

On 2023/8/14 22:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.retry_count is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 2 +-
> include/scsi/libsas.h | 2 --
> 2 files changed, 1 insertion(+), 3 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2023-10-09 06:38:12

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 01/10] scsi: libsas: Delete sas_ha_struct.lldd_module

On 8/14/23 16:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ha_struct.lldd_module has only ever been set, so remove it.
>
> Struct scsi_host_template already has a reference to the LLD driver
> module as to stop the driver being removed unexpectedly.
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_init.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1 -
> drivers/scsi/isci/init.c | 1 -
> drivers/scsi/mvsas/mv_init.c | 1 -
> drivers/scsi/pm8001/pm8001_init.c | 1 -
> include/scsi/libsas.h | 1 -
> 7 files changed, 7 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:39:14

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 02/10] scsi: libsas: Delete enum sas_class

On 8/14/23 16:10, John Garry wrote:
> enum sas_class prob would have been useful if function sas_show_class() was
> ever implemented, which it wasn't.
>
> enum sas_class is used as asd_sas_port.class and asd_sas_phy.class, which
> are only ever set, so delete these members and the enum.
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_hwi.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
> drivers/scsi/isci/phy.c | 1 -
> drivers/scsi/libsas/sas_internal.h | 1 -
> drivers/scsi/libsas/sas_port.c | 2 --
> drivers/scsi/mvsas/mv_init.c | 1 -
> drivers/scsi/pm8001/pm8001_init.c | 1 -
> include/scsi/libsas.h | 7 -------
> 8 files changed, 15 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:40:13

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 03/10] scsi: libsas: Delete enum sas_phy_type

On 8/14/23 16:10, John Garry wrote:
> enum sas_phy_type is used for asd_sas_phy.type, which is only ever set,
> so delete this member and the enum.
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_hwi.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_main.c | 1 -
> drivers/scsi/isci/phy.c | 1 -
> drivers/scsi/mvsas/mv_init.c | 1 -
> drivers/scsi/pm8001/pm8001_init.c | 1 -
> include/scsi/libsas.h | 6 ------
> 6 files changed, 11 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:41:01

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 04/10] scsi: libsas: Delete struct scsi_core

On 8/14/23 16:10, John Garry wrote:
> Since commit 79855d178557 ("libsas: remove task_collector mode"), struct
> scsi_core only contains a reference to the shost. struct scsi_core is only
> used in sas_ha_struct.core, so delete scsi_core and replace with a
> reference to the shost there.
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_hwi.c | 2 +-
> drivers/scsi/aic94xx/aic94xx_init.c | 6 +++---
> drivers/scsi/hisi_sas/hisi_sas_main.c | 6 +++---
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 6 +++---
> drivers/scsi/isci/host.h | 2 +-
> drivers/scsi/isci/init.c | 4 ++--
> drivers/scsi/libsas/sas_ata.c | 8 ++++----
> drivers/scsi/libsas/sas_discover.c | 8 ++++----
> drivers/scsi/libsas/sas_expander.c | 2 +-
> drivers/scsi/libsas/sas_host_smp.c | 4 ++--
> drivers/scsi/libsas/sas_init.c | 16 ++++++++--------
> drivers/scsi/libsas/sas_phy.c | 8 ++++----
> drivers/scsi/libsas/sas_port.c | 6 +++---
> drivers/scsi/libsas/sas_scsi_host.c | 14 +++++++-------
> drivers/scsi/mvsas/mv_init.c | 4 ++--
> drivers/scsi/pm8001/pm8001_init.c | 2 +-
> include/scsi/libsas.h | 7 +------
> 17 files changed, 50 insertions(+), 55 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:42:24

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 05/10] scsi: libsas: Delete sas_ssp_task.retry_count

On 8/14/23 16:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.retry_count is only ever set, so delete it.
>
> The aic94xx driver also had its own retry_count definition in struct scb
> sub-structs, which may have caused a mix-up.
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/libsas/sas_ata.c | 1 -
> drivers/scsi/libsas/sas_scsi_host.c | 1 -
> include/scsi/libsas.h | 2 --
> 3 files changed, 4 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:42:37

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 06/10] scsi: libsas: Delete sas_ssp_task.enable_first_burst

On 8/14/23 16:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.enable_first_burst is never set, so delete it and
> any references.
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 2 --
> drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 8 ++------
> drivers/scsi/mvsas/mv_sas.c | 8 ++------
> drivers/scsi/pm8001/pm8001_hwi.c | 2 --
> drivers/scsi/pm8001/pm80xx_hwi.c | 2 --
> include/scsi/libsas.h | 1 -
> 6 files changed, 4 insertions(+), 19 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:55:44

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 07/10] scsi: libsas: Delete sas_ssp_task.task_prio

On 8/14/23 16:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ssp_task.task_prio is never set, so delete it
> and any references which depend on it being set (all of them).
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 1 -
> drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 3 +--
> drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 +--
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 +-
> drivers/scsi/isci/request.c | 1 -
> drivers/scsi/mvsas/mv_sas.c | 3 +--
> drivers/scsi/pm8001/pm8001_hwi.c | 1 -
> drivers/scsi/pm8001/pm80xx_hwi.c | 1 -
> include/scsi/libsas.h | 1 -
> 9 files changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c
> index 1ac4d3afc1a1..f67983e8b262 100644
> --- a/drivers/scsi/aic94xx/aic94xx_task.c
> +++ b/drivers/scsi/aic94xx/aic94xx_task.c
> @@ -485,7 +485,6 @@ static int asd_build_ssp_ascb(struct asd_ascb *ascb, struct sas_task *task,
> scb->ssp_task.ssp_frame.tptt = cpu_to_be16(0xFFFF);
>
> memcpy(scb->ssp_task.ssp_cmd.lun, task->ssp_task.LUN, 8);
> - scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_prio << 3);
> scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_attr & 7);
> memcpy(scb->ssp_task.ssp_cmd.cdb, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
> index d4e3c3a058e0..3c555579f9a1 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
> @@ -1022,8 +1022,7 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,
>
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
> if (!tmf) {
> - buf_cmd[9] = task->ssp_task.task_attr |
> - (task->ssp_task.task_prio << 3);
> + buf_cmd[9] = task->ssp_task.task_attr;
> memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> } else {
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> index 404aa7e179cb..73b378837da7 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> @@ -1798,8 +1798,7 @@ static void prep_ssp_v2_hw(struct hisi_hba *hisi_hba,
>
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
> if (!tmf) {
> - buf_cmd[9] = task->ssp_task.task_attr |
> - (task->ssp_task.task_prio << 3);
> + buf_cmd[9] = task->ssp_task.task_attr;
> memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> } else {
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> index 813807a24ae1..bbb64ee6afd7 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
> @@ -1326,7 +1326,7 @@ static void prep_ssp_v3_hw(struct hisi_hba *hisi_hba,
>
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
> if (!tmf) {
> - buf_cmd[9] = ssp_task->task_attr | (ssp_task->task_prio << 3);
> + buf_cmd[9] = ssp_task->task_attr;
> memcpy(buf_cmd + 12, scsi_cmnd->cmnd, scsi_cmnd->cmd_len);
> } else {
> buf_cmd[10] = tmf->tmf;
> diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
> index 6370cdbfba08..fdb8dff2e50c 100644
> --- a/drivers/scsi/isci/request.c
> +++ b/drivers/scsi/isci/request.c
> @@ -180,7 +180,6 @@ static void sci_io_request_build_ssp_command_iu(struct isci_request *ireq)
> cmd_iu->_r_a = 0;
> cmd_iu->_r_b = 0;
> cmd_iu->en_fburst = 0; /* unsupported */
> - cmd_iu->task_prio = task->ssp_task.task_prio;
> cmd_iu->task_attr = task->ssp_task.task_attr;
> cmd_iu->_r_c = 0;
>
> diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c
> index 165f46320bd2..1444b1f1c4c8 100644
> --- a/drivers/scsi/mvsas/mv_sas.c
> +++ b/drivers/scsi/mvsas/mv_sas.c
> @@ -663,8 +663,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
> memcpy(buf_cmd, &task->ssp_task.LUN, 8);
>
> if (ssp_hdr->frame_type != SSP_TASK) {
> - buf_cmd[9] = task->ssp_task.task_attr |
> - (task->ssp_task.task_prio << 3);
> + buf_cmd[9] = task->ssp_task.task_attr;
> memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> } else{
> diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c
> index 18070e0e06d5..35797b56ea0a 100644
> --- a/drivers/scsi/pm8001/pm8001_hwi.c
> +++ b/drivers/scsi/pm8001/pm8001_hwi.c
> @@ -4053,7 +4053,6 @@ static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
> ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
> ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
> ssp_cmd.tag = cpu_to_le32(tag);
> - ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
> ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
> memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
> index ad5a73b86415..1c092ee37bdd 100644
> --- a/drivers/scsi/pm8001/pm80xx_hwi.c
> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
> @@ -4316,7 +4316,6 @@ static int pm80xx_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
> ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
> ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
> ssp_cmd.tag = cpu_to_le32(tag);
> - ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
> ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
> memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
> task->ssp_task.cmd->cmd_len);
> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
> index d77db53cbd8d..5b2e6932c564 100644
> --- a/include/scsi/libsas.h
> +++ b/include/scsi/libsas.h
> @@ -565,7 +565,6 @@ enum task_attribute {
> struct sas_ssp_task {
> u8 LUN[8];
> enum task_attribute task_attr;
> - u8 task_prio;
> struct scsi_cmnd *cmd;
> };
>
Hmm. While true in general, we lose information on how the 'prio' field
is coded for the various drivers.
Would it be an idea to use explicitly state TASK_ATTR_SIMPLE
in the various drivers such that we know what to fix if we ever
decide to bring task attributes back to life?

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:56:34

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 08/10] scsi: libsas: Delete sas_ata_task.set_affil_pol

On 8/14/23 16:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.set_affil_pol is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 7 +++----
> include/scsi/libsas.h | 1 -
> 2 files changed, 3 insertions(+), 5 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:57:32

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 09/10] scsi: libsas: Delete sas_ata_task.stp_affil_pol

On 8/14/23 16:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.stp_affil_pol is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 6 +-----
> include/scsi/libsas.h | 1 -
> 2 files changed, 1 insertion(+), 6 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-09 06:58:12

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 10/10] scsi: libsas: Delete sas_ata_task.retry_count

On 8/14/23 16:10, John Garry wrote:
> Since libsas was introduced in commit 2908d778ab3e ("[SCSI] aic94xx: new
> driver"), sas_ata_task.retry_count is never set, so delete it and the
> reference in asd_build_ata_ascb().
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_task.c | 2 +-
> include/scsi/libsas.h | 2 --
> 2 files changed, 1 insertion(+), 3 deletions(-)
>
Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
[email protected] +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

2023-10-24 10:08:01

by John Garry

[permalink] [raw]
Subject: Re: [PATCH 07/10] scsi: libsas: Delete sas_ssp_task.task_prio

On 09/10/2023 07:55, Hannes Reinecke wrote:
>> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
>> index d77db53cbd8d..5b2e6932c564 100644
>> --- a/include/scsi/libsas.h
>> +++ b/include/scsi/libsas.h
>> @@ -565,7 +565,6 @@ enum task_attribute {
>>   struct sas_ssp_task {
>>       u8     LUN[8];
>>       enum   task_attribute task_attr;
>> -    u8     task_prio;
>>       struct scsi_cmnd *cmd;
>>   };
> Hmm. While true in general, we lose information on how the 'prio' field
> is coded for the various drivers.
> Would it be an idea to use explicitly state TASK_ATTR_SIMPLE
> in the various drivers such that we know what to fix if we ever
> decide to bring task attributes back to life?

The HW encoding for these drivers is the same as in the SAS COMMAND
frame - Command information unit structure, right? So the amount of info
lost is reduced. And we also have source control history.

I'd be more inclined to get rid of setting task attributes similarly as
well.

Thanks,
John

2023-10-24 10:24:06

by Hannes Reinecke

[permalink] [raw]
Subject: Re: [PATCH 07/10] scsi: libsas: Delete sas_ssp_task.task_prio

On 10/24/23 12:07, John Garry wrote:
> On 09/10/2023 07:55, Hannes Reinecke wrote:
>>> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
>>> index d77db53cbd8d..5b2e6932c564 100644
>>> --- a/include/scsi/libsas.h
>>> +++ b/include/scsi/libsas.h
>>> @@ -565,7 +565,6 @@ enum task_attribute {
>>>   struct sas_ssp_task {
>>>       u8     LUN[8];
>>>       enum   task_attribute task_attr;
>>> -    u8     task_prio;
>>>       struct scsi_cmnd *cmd;
>>>   };
>> Hmm. While true in general, we lose information on how the 'prio'
>> field is coded for the various drivers.
>> Would it be an idea to use explicitly state TASK_ATTR_SIMPLE
>> in the various drivers such that we know what to fix if we ever
>> decide to bring task attributes back to life?
>
> The HW encoding for these drivers is the same as in the SAS COMMAND
> frame - Command information unit structure, right? So the amount of info
> lost is reduced. And we also have source control history.
>
> I'd be more inclined to get rid of setting task attributes similarly as
> well.
>
Fair enough.

Reviewed-by: Hannes Reinecke <[email protected]>

Cheers,

Hannes