scsi: libsas: Drop SAS_DPRINTK() and revise logs levels
Like sas_printk() did previously, SAS_DPRINTK() offers little value now that libsas logs already have the "sas" prefix through pr_fmt(fmt). So it can be dropped. However, after reviewing some logs in libsas, it is noticed that debug level is too low in many instances. So this change drops SAS_DPRINTK() and revises some logs to a more appropriate level. However many stay at debug level, although some are significantly promoted. We add -DDEBUG for compilation so that we keep the debug messages by default, as before. All the pre-existing checkpatch errors for spanning messages across multiple lines are also fixed. Finally, all other references to printk() [apart from special formatting in sas_ata.c] are removed and replaced with appropriate pr_xxx(). Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
71a4a99231
commit
15ba7806c3
|
@ -32,3 +32,5 @@ libsas-y += sas_init.o \
|
|||
sas_task.o
|
||||
libsas-$(CONFIG_SCSI_SAS_ATA) += sas_ata.o
|
||||
libsas-$(CONFIG_SCSI_SAS_HOST_SMP) += sas_host_smp.o
|
||||
|
||||
ccflags-y := -DDEBUG
|
||||
|
|
|
@ -75,8 +75,8 @@ static enum ata_completion_errors sas_to_ata_err(struct task_status_struct *ts)
|
|||
|
||||
case SAS_OPEN_TO:
|
||||
case SAS_OPEN_REJECT:
|
||||
SAS_DPRINTK("%s: Saw error %d. What to do?\n",
|
||||
__func__, ts->stat);
|
||||
pr_warn("%s: Saw error %d. What to do?\n",
|
||||
__func__, ts->stat);
|
||||
return AC_ERR_OTHER;
|
||||
|
||||
case SAM_STAT_CHECK_CONDITION:
|
||||
|
@ -151,8 +151,7 @@ static void sas_ata_task_done(struct sas_task *task)
|
|||
} else {
|
||||
ac = sas_to_ata_err(stat);
|
||||
if (ac) {
|
||||
SAS_DPRINTK("%s: SAS error %x\n", __func__,
|
||||
stat->stat);
|
||||
pr_warn("%s: SAS error %x\n", __func__, stat->stat);
|
||||
/* We saw a SAS error. Send a vague error. */
|
||||
if (!link->sactive) {
|
||||
qc->err_mask = ac;
|
||||
|
@ -237,7 +236,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
|
|||
|
||||
ret = i->dft->lldd_execute_task(task, GFP_ATOMIC);
|
||||
if (ret) {
|
||||
SAS_DPRINTK("lldd_execute_task returned: %d\n", ret);
|
||||
pr_debug("lldd_execute_task returned: %d\n", ret);
|
||||
|
||||
if (qc->scsicmd)
|
||||
ASSIGN_SAS_TASK(qc->scsicmd, NULL);
|
||||
|
@ -282,9 +281,9 @@ int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy)
|
|||
res = sas_get_report_phy_sata(dev->parent, phy->phy_id,
|
||||
&dev->sata_dev.rps_resp);
|
||||
if (res) {
|
||||
SAS_DPRINTK("report phy sata to %016llx:0x%x returned "
|
||||
"0x%x\n", SAS_ADDR(dev->parent->sas_addr),
|
||||
phy->phy_id, res);
|
||||
pr_debug("report phy sata to %016llx:0x%x returned 0x%x\n",
|
||||
SAS_ADDR(dev->parent->sas_addr),
|
||||
phy->phy_id, res);
|
||||
return res;
|
||||
}
|
||||
memcpy(dev->frame_rcvd, &dev->sata_dev.rps_resp.rps.fis,
|
||||
|
@ -431,8 +430,7 @@ static void sas_ata_internal_abort(struct sas_task *task)
|
|||
if (task->task_state_flags & SAS_TASK_STATE_ABORTED ||
|
||||
task->task_state_flags & SAS_TASK_STATE_DONE) {
|
||||
spin_unlock_irqrestore(&task->task_state_lock, flags);
|
||||
SAS_DPRINTK("%s: Task %p already finished.\n", __func__,
|
||||
task);
|
||||
pr_debug("%s: Task %p already finished.\n", __func__, task);
|
||||
goto out;
|
||||
}
|
||||
task->task_state_flags |= SAS_TASK_STATE_ABORTED;
|
||||
|
@ -452,7 +450,7 @@ static void sas_ata_internal_abort(struct sas_task *task)
|
|||
* aborted ata tasks, otherwise we (likely) leak the sas task
|
||||
* here
|
||||
*/
|
||||
SAS_DPRINTK("%s: Task %p leaked.\n", __func__, task);
|
||||
pr_warn("%s: Task %p leaked.\n", __func__, task);
|
||||
|
||||
if (!(task->task_state_flags & SAS_TASK_STATE_DONE))
|
||||
task->task_state_flags &= ~SAS_TASK_STATE_ABORTED;
|
||||
|
@ -558,7 +556,7 @@ int sas_ata_init(struct domain_device *found_dev)
|
|||
|
||||
ata_host = kzalloc(sizeof(*ata_host), GFP_KERNEL);
|
||||
if (!ata_host) {
|
||||
SAS_DPRINTK("ata host alloc failed.\n");
|
||||
pr_err("ata host alloc failed.\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
@ -566,7 +564,7 @@ int sas_ata_init(struct domain_device *found_dev)
|
|||
|
||||
ap = ata_sas_port_alloc(ata_host, &sata_port_info, shost);
|
||||
if (!ap) {
|
||||
SAS_DPRINTK("ata_sas_port_alloc failed.\n");
|
||||
pr_err("ata_sas_port_alloc failed.\n");
|
||||
rc = -ENODEV;
|
||||
goto free_host;
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@ static int sas_get_port_device(struct asd_sas_port *port)
|
|||
SAS_FANOUT_EXPANDER_DEVICE);
|
||||
break;
|
||||
default:
|
||||
printk("ERROR: Unidentified device type %d\n", dev->dev_type);
|
||||
pr_warn("ERROR: Unidentified device type %d\n", dev->dev_type);
|
||||
rphy = NULL;
|
||||
break;
|
||||
}
|
||||
|
@ -186,10 +186,9 @@ int sas_notify_lldd_dev_found(struct domain_device *dev)
|
|||
|
||||
res = i->dft->lldd_dev_found(dev);
|
||||
if (res) {
|
||||
printk("sas: driver on pcidev %s cannot handle "
|
||||
"device %llx, error:%d\n",
|
||||
dev_name(sas_ha->dev),
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
pr_warn("driver on pcidev %s cannot handle device %llx, error:%d\n",
|
||||
dev_name(sas_ha->dev),
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
}
|
||||
set_bit(SAS_DEV_FOUND, &dev->state);
|
||||
kref_get(&dev->kref);
|
||||
|
@ -456,8 +455,8 @@ static void sas_discover_domain(struct work_struct *work)
|
|||
return;
|
||||
dev = port->port_dev;
|
||||
|
||||
SAS_DPRINTK("DOING DISCOVERY on port %d, pid:%d\n", port->id,
|
||||
task_pid_nr(current));
|
||||
pr_debug("DOING DISCOVERY on port %d, pid:%d\n", port->id,
|
||||
task_pid_nr(current));
|
||||
|
||||
switch (dev->dev_type) {
|
||||
case SAS_END_DEVICE:
|
||||
|
@ -473,12 +472,12 @@ static void sas_discover_domain(struct work_struct *work)
|
|||
error = sas_discover_sata(dev);
|
||||
break;
|
||||
#else
|
||||
SAS_DPRINTK("ATA device seen but CONFIG_SCSI_SAS_ATA=N so cannot attach\n");
|
||||
pr_notice("ATA device seen but CONFIG_SCSI_SAS_ATA=N so cannot attach\n");
|
||||
/* Fall through */
|
||||
#endif
|
||||
default:
|
||||
error = -ENXIO;
|
||||
SAS_DPRINTK("unhandled device %d\n", dev->dev_type);
|
||||
pr_err("unhandled device %d\n", dev->dev_type);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -495,8 +494,8 @@ static void sas_discover_domain(struct work_struct *work)
|
|||
|
||||
sas_probe_devices(port);
|
||||
|
||||
SAS_DPRINTK("DONE DISCOVERY on port %d, pid:%d, result:%d\n", port->id,
|
||||
task_pid_nr(current), error);
|
||||
pr_debug("DONE DISCOVERY on port %d, pid:%d, result:%d\n", port->id,
|
||||
task_pid_nr(current), error);
|
||||
}
|
||||
|
||||
static void sas_revalidate_domain(struct work_struct *work)
|
||||
|
@ -510,22 +509,22 @@ static void sas_revalidate_domain(struct work_struct *work)
|
|||
/* prevent revalidation from finding sata links in recovery */
|
||||
mutex_lock(&ha->disco_mutex);
|
||||
if (test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state)) {
|
||||
SAS_DPRINTK("REVALIDATION DEFERRED on port %d, pid:%d\n",
|
||||
port->id, task_pid_nr(current));
|
||||
pr_debug("REVALIDATION DEFERRED on port %d, pid:%d\n",
|
||||
port->id, task_pid_nr(current));
|
||||
goto out;
|
||||
}
|
||||
|
||||
clear_bit(DISCE_REVALIDATE_DOMAIN, &port->disc.pending);
|
||||
|
||||
SAS_DPRINTK("REVALIDATING DOMAIN on port %d, pid:%d\n", port->id,
|
||||
task_pid_nr(current));
|
||||
pr_debug("REVALIDATING DOMAIN on port %d, pid:%d\n", port->id,
|
||||
task_pid_nr(current));
|
||||
|
||||
if (ddev && (ddev->dev_type == SAS_FANOUT_EXPANDER_DEVICE ||
|
||||
ddev->dev_type == SAS_EDGE_EXPANDER_DEVICE))
|
||||
res = sas_ex_revalidate_domain(ddev);
|
||||
|
||||
SAS_DPRINTK("done REVALIDATING DOMAIN on port %d, pid:%d, res 0x%x\n",
|
||||
port->id, task_pid_nr(current), res);
|
||||
pr_debug("done REVALIDATING DOMAIN on port %d, pid:%d, res 0x%x\n",
|
||||
port->id, task_pid_nr(current), res);
|
||||
out:
|
||||
mutex_unlock(&ha->disco_mutex);
|
||||
|
||||
|
|
|
@ -99,17 +99,17 @@ static int smp_execute_task_sg(struct domain_device *dev,
|
|||
|
||||
if (res) {
|
||||
del_timer(&task->slow_task->timer);
|
||||
SAS_DPRINTK("executing SMP task failed:%d\n", res);
|
||||
pr_notice("executing SMP task failed:%d\n", res);
|
||||
break;
|
||||
}
|
||||
|
||||
wait_for_completion(&task->slow_task->completion);
|
||||
res = -ECOMM;
|
||||
if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) {
|
||||
SAS_DPRINTK("smp task timed out or aborted\n");
|
||||
pr_notice("smp task timed out or aborted\n");
|
||||
i->dft->lldd_abort_task(task);
|
||||
if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
|
||||
SAS_DPRINTK("SMP task aborted and not done\n");
|
||||
pr_notice("SMP task aborted and not done\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -134,11 +134,11 @@ static int smp_execute_task_sg(struct domain_device *dev,
|
|||
task->task_status.stat == SAS_DEVICE_UNKNOWN)
|
||||
break;
|
||||
else {
|
||||
SAS_DPRINTK("%s: task to dev %016llx response: 0x%x "
|
||||
"status 0x%x\n", __func__,
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
task->task_status.resp,
|
||||
task->task_status.stat);
|
||||
pr_notice("%s: task to dev %016llx response: 0x%x status 0x%x\n",
|
||||
__func__,
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
task->task_status.resp,
|
||||
task->task_status.stat);
|
||||
sas_free_task(task);
|
||||
task = NULL;
|
||||
}
|
||||
|
@ -347,11 +347,11 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id, void *rsp)
|
|||
if (test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state))
|
||||
set_bit(DISCE_REVALIDATE_DOMAIN, &dev->port->disc.pending);
|
||||
|
||||
SAS_DPRINTK("%sex %016llx phy%02d:%c:%X attached: %016llx (%s)\n",
|
||||
test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state) ? "ata: " : "",
|
||||
SAS_ADDR(dev->sas_addr), phy->phy_id,
|
||||
sas_route_char(dev, phy), phy->linkrate,
|
||||
SAS_ADDR(phy->attached_sas_addr), type);
|
||||
pr_debug("%sex %016llx phy%02d:%c:%X attached: %016llx (%s)\n",
|
||||
test_bit(SAS_HA_ATA_EH_ACTIVE, &ha->state) ? "ata: " : "",
|
||||
SAS_ADDR(dev->sas_addr), phy->phy_id,
|
||||
sas_route_char(dev, phy), phy->linkrate,
|
||||
SAS_ADDR(phy->attached_sas_addr), type);
|
||||
}
|
||||
|
||||
/* check if we have an existing attached ata device on this expander phy */
|
||||
|
@ -500,12 +500,12 @@ static int sas_ex_general(struct domain_device *dev)
|
|||
RG_RESP_SIZE);
|
||||
|
||||
if (res) {
|
||||
SAS_DPRINTK("RG to ex %016llx failed:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
pr_notice("RG to ex %016llx failed:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
goto out;
|
||||
} else if (rg_resp->result != SMP_RESP_FUNC_ACC) {
|
||||
SAS_DPRINTK("RG:ex %016llx returned SMP result:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), rg_resp->result);
|
||||
pr_debug("RG:ex %016llx returned SMP result:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), rg_resp->result);
|
||||
res = rg_resp->result;
|
||||
goto out;
|
||||
}
|
||||
|
@ -513,8 +513,8 @@ static int sas_ex_general(struct domain_device *dev)
|
|||
ex_assign_report_general(dev, rg_resp);
|
||||
|
||||
if (dev->ex_dev.configuring) {
|
||||
SAS_DPRINTK("RG: ex %llx self-configuring...\n",
|
||||
SAS_ADDR(dev->sas_addr));
|
||||
pr_debug("RG: ex %llx self-configuring...\n",
|
||||
SAS_ADDR(dev->sas_addr));
|
||||
schedule_timeout_interruptible(5*HZ);
|
||||
} else
|
||||
break;
|
||||
|
@ -568,12 +568,12 @@ static int sas_ex_manuf_info(struct domain_device *dev)
|
|||
|
||||
res = smp_execute_task(dev, mi_req, MI_REQ_SIZE, mi_resp,MI_RESP_SIZE);
|
||||
if (res) {
|
||||
SAS_DPRINTK("MI: ex %016llx failed:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
pr_notice("MI: ex %016llx failed:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
goto out;
|
||||
} else if (mi_resp[2] != SMP_RESP_FUNC_ACC) {
|
||||
SAS_DPRINTK("MI ex %016llx returned SMP result:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), mi_resp[2]);
|
||||
pr_debug("MI ex %016llx returned SMP result:0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), mi_resp[2]);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -836,10 +836,9 @@ static struct domain_device *sas_ex_discover_end_dev(
|
|||
|
||||
res = sas_discover_sata(child);
|
||||
if (res) {
|
||||
SAS_DPRINTK("sas_discover_sata() for device %16llx at "
|
||||
"%016llx:0x%x returned 0x%x\n",
|
||||
SAS_ADDR(child->sas_addr),
|
||||
SAS_ADDR(parent->sas_addr), phy_id, res);
|
||||
pr_notice("sas_discover_sata() for device %16llx at %016llx:0x%x returned 0x%x\n",
|
||||
SAS_ADDR(child->sas_addr),
|
||||
SAS_ADDR(parent->sas_addr), phy_id, res);
|
||||
goto out_list_del;
|
||||
}
|
||||
} else
|
||||
|
@ -861,16 +860,15 @@ static struct domain_device *sas_ex_discover_end_dev(
|
|||
|
||||
res = sas_discover_end_dev(child);
|
||||
if (res) {
|
||||
SAS_DPRINTK("sas_discover_end_dev() for device %16llx "
|
||||
"at %016llx:0x%x returned 0x%x\n",
|
||||
SAS_ADDR(child->sas_addr),
|
||||
SAS_ADDR(parent->sas_addr), phy_id, res);
|
||||
pr_notice("sas_discover_end_dev() for device %16llx at %016llx:0x%x returned 0x%x\n",
|
||||
SAS_ADDR(child->sas_addr),
|
||||
SAS_ADDR(parent->sas_addr), phy_id, res);
|
||||
goto out_list_del;
|
||||
}
|
||||
} else {
|
||||
SAS_DPRINTK("target proto 0x%x at %016llx:0x%x not handled\n",
|
||||
phy->attached_tproto, SAS_ADDR(parent->sas_addr),
|
||||
phy_id);
|
||||
pr_notice("target proto 0x%x at %016llx:0x%x not handled\n",
|
||||
phy->attached_tproto, SAS_ADDR(parent->sas_addr),
|
||||
phy_id);
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
|
@ -927,11 +925,10 @@ static struct domain_device *sas_ex_discover_expander(
|
|||
int res;
|
||||
|
||||
if (phy->routing_attr == DIRECT_ROUTING) {
|
||||
SAS_DPRINTK("ex %016llx:0x%x:D <--> ex %016llx:0x%x is not "
|
||||
"allowed\n",
|
||||
SAS_ADDR(parent->sas_addr), phy_id,
|
||||
SAS_ADDR(phy->attached_sas_addr),
|
||||
phy->attached_phy_id);
|
||||
pr_warn("ex %016llx:0x%x:D <--> ex %016llx:0x%x is not allowed\n",
|
||||
SAS_ADDR(parent->sas_addr), phy_id,
|
||||
SAS_ADDR(phy->attached_sas_addr),
|
||||
phy->attached_phy_id);
|
||||
return NULL;
|
||||
}
|
||||
child = sas_alloc_device();
|
||||
|
@ -1038,25 +1035,24 @@ static int sas_ex_discover_dev(struct domain_device *dev, int phy_id)
|
|||
ex_phy->attached_dev_type != SAS_FANOUT_EXPANDER_DEVICE &&
|
||||
ex_phy->attached_dev_type != SAS_EDGE_EXPANDER_DEVICE &&
|
||||
ex_phy->attached_dev_type != SAS_SATA_PENDING) {
|
||||
SAS_DPRINTK("unknown device type(0x%x) attached to ex %016llx "
|
||||
"phy 0x%x\n", ex_phy->attached_dev_type,
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
phy_id);
|
||||
pr_warn("unknown device type(0x%x) attached to ex %016llx phy 0x%x\n",
|
||||
ex_phy->attached_dev_type,
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
phy_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
res = sas_configure_routing(dev, ex_phy->attached_sas_addr);
|
||||
if (res) {
|
||||
SAS_DPRINTK("configure routing for dev %016llx "
|
||||
"reported 0x%x. Forgotten\n",
|
||||
SAS_ADDR(ex_phy->attached_sas_addr), res);
|
||||
pr_notice("configure routing for dev %016llx reported 0x%x. Forgotten\n",
|
||||
SAS_ADDR(ex_phy->attached_sas_addr), res);
|
||||
sas_disable_routing(dev, ex_phy->attached_sas_addr);
|
||||
return res;
|
||||
}
|
||||
|
||||
if (sas_ex_join_wide_port(dev, phy_id)) {
|
||||
SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n",
|
||||
phy_id, SAS_ADDR(ex_phy->attached_sas_addr));
|
||||
pr_debug("Attaching ex phy%d to wide port %016llx\n",
|
||||
phy_id, SAS_ADDR(ex_phy->attached_sas_addr));
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -1067,12 +1063,11 @@ static int sas_ex_discover_dev(struct domain_device *dev, int phy_id)
|
|||
break;
|
||||
case SAS_FANOUT_EXPANDER_DEVICE:
|
||||
if (SAS_ADDR(dev->port->disc.fanout_sas_addr)) {
|
||||
SAS_DPRINTK("second fanout expander %016llx phy 0x%x "
|
||||
"attached to ex %016llx phy 0x%x\n",
|
||||
SAS_ADDR(ex_phy->attached_sas_addr),
|
||||
ex_phy->attached_phy_id,
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
phy_id);
|
||||
pr_debug("second fanout expander %016llx phy 0x%x attached to ex %016llx phy 0x%x\n",
|
||||
SAS_ADDR(ex_phy->attached_sas_addr),
|
||||
ex_phy->attached_phy_id,
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
phy_id);
|
||||
sas_ex_disable_phy(dev, phy_id);
|
||||
break;
|
||||
} else
|
||||
|
@ -1101,9 +1096,8 @@ static int sas_ex_discover_dev(struct domain_device *dev, int phy_id)
|
|||
SAS_ADDR(child->sas_addr)) {
|
||||
ex->ex_phy[i].phy_state= PHY_DEVICE_DISCOVERED;
|
||||
if (sas_ex_join_wide_port(dev, i))
|
||||
SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n",
|
||||
i, SAS_ADDR(ex->ex_phy[i].attached_sas_addr));
|
||||
|
||||
pr_debug("Attaching ex phy%d to wide port %016llx\n",
|
||||
i, SAS_ADDR(ex->ex_phy[i].attached_sas_addr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1154,13 +1148,11 @@ static int sas_check_level_subtractive_boundary(struct domain_device *dev)
|
|||
if (sas_find_sub_addr(child, s2) &&
|
||||
(SAS_ADDR(sub_addr) != SAS_ADDR(s2))) {
|
||||
|
||||
SAS_DPRINTK("ex %016llx->%016llx-?->%016llx "
|
||||
"diverges from subtractive "
|
||||
"boundary %016llx\n",
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
SAS_ADDR(child->sas_addr),
|
||||
SAS_ADDR(s2),
|
||||
SAS_ADDR(sub_addr));
|
||||
pr_notice("ex %016llx->%016llx-?->%016llx diverges from subtractive boundary %016llx\n",
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
SAS_ADDR(child->sas_addr),
|
||||
SAS_ADDR(s2),
|
||||
SAS_ADDR(sub_addr));
|
||||
|
||||
sas_ex_disable_port(child, s2);
|
||||
}
|
||||
|
@ -1239,12 +1231,10 @@ static int sas_check_ex_subtractive_boundary(struct domain_device *dev)
|
|||
else if (SAS_ADDR(sub_sas_addr) !=
|
||||
SAS_ADDR(phy->attached_sas_addr)) {
|
||||
|
||||
SAS_DPRINTK("ex %016llx phy 0x%x "
|
||||
"diverges(%016llx) on subtractive "
|
||||
"boundary(%016llx). Disabled\n",
|
||||
SAS_ADDR(dev->sas_addr), i,
|
||||
SAS_ADDR(phy->attached_sas_addr),
|
||||
SAS_ADDR(sub_sas_addr));
|
||||
pr_notice("ex %016llx phy 0x%x diverges(%016llx) on subtractive boundary(%016llx). Disabled\n",
|
||||
SAS_ADDR(dev->sas_addr), i,
|
||||
SAS_ADDR(phy->attached_sas_addr),
|
||||
SAS_ADDR(sub_sas_addr));
|
||||
sas_ex_disable_phy(dev, i);
|
||||
}
|
||||
}
|
||||
|
@ -1284,13 +1274,12 @@ static int sas_check_eeds(struct domain_device *child,
|
|||
|
||||
if (SAS_ADDR(parent->port->disc.fanout_sas_addr) != 0) {
|
||||
res = -ENODEV;
|
||||
SAS_DPRINTK("edge ex %016llx phy S:0x%x <--> edge ex %016llx "
|
||||
"phy S:0x%x, while there is a fanout ex %016llx\n",
|
||||
SAS_ADDR(parent->sas_addr),
|
||||
parent_phy->phy_id,
|
||||
SAS_ADDR(child->sas_addr),
|
||||
child_phy->phy_id,
|
||||
SAS_ADDR(parent->port->disc.fanout_sas_addr));
|
||||
pr_warn("edge ex %016llx phy S:0x%x <--> edge ex %016llx phy S:0x%x, while there is a fanout ex %016llx\n",
|
||||
SAS_ADDR(parent->sas_addr),
|
||||
parent_phy->phy_id,
|
||||
SAS_ADDR(child->sas_addr),
|
||||
child_phy->phy_id,
|
||||
SAS_ADDR(parent->port->disc.fanout_sas_addr));
|
||||
} else if (SAS_ADDR(parent->port->disc.eeds_a) == 0) {
|
||||
memcpy(parent->port->disc.eeds_a, parent->sas_addr,
|
||||
SAS_ADDR_SIZE);
|
||||
|
@ -1308,12 +1297,11 @@ static int sas_check_eeds(struct domain_device *child,
|
|||
;
|
||||
else {
|
||||
res = -ENODEV;
|
||||
SAS_DPRINTK("edge ex %016llx phy 0x%x <--> edge ex %016llx "
|
||||
"phy 0x%x link forms a third EEDS!\n",
|
||||
SAS_ADDR(parent->sas_addr),
|
||||
parent_phy->phy_id,
|
||||
SAS_ADDR(child->sas_addr),
|
||||
child_phy->phy_id);
|
||||
pr_warn("edge ex %016llx phy 0x%x <--> edge ex %016llx phy 0x%x link forms a third EEDS!\n",
|
||||
SAS_ADDR(parent->sas_addr),
|
||||
parent_phy->phy_id,
|
||||
SAS_ADDR(child->sas_addr),
|
||||
child_phy->phy_id);
|
||||
}
|
||||
|
||||
return res;
|
||||
|
@ -1427,14 +1415,13 @@ static int sas_configure_present(struct domain_device *dev, int phy_id,
|
|||
goto out;
|
||||
res = rri_resp[2];
|
||||
if (res == SMP_RESP_NO_INDEX) {
|
||||
SAS_DPRINTK("overflow of indexes: dev %016llx "
|
||||
"phy 0x%x index 0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, i);
|
||||
pr_warn("overflow of indexes: dev %016llx phy 0x%x index 0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, i);
|
||||
goto out;
|
||||
} else if (res != SMP_RESP_FUNC_ACC) {
|
||||
SAS_DPRINTK("%s: dev %016llx phy 0x%x index 0x%x "
|
||||
"result 0x%x\n", __func__,
|
||||
SAS_ADDR(dev->sas_addr), phy_id, i, res);
|
||||
pr_notice("%s: dev %016llx phy 0x%x index 0x%x result 0x%x\n",
|
||||
__func__, SAS_ADDR(dev->sas_addr), phy_id,
|
||||
i, res);
|
||||
goto out;
|
||||
}
|
||||
if (SAS_ADDR(sas_addr) != 0) {
|
||||
|
@ -1498,9 +1485,8 @@ static int sas_configure_set(struct domain_device *dev, int phy_id,
|
|||
goto out;
|
||||
res = cri_resp[2];
|
||||
if (res == SMP_RESP_NO_INDEX) {
|
||||
SAS_DPRINTK("overflow of indexes: dev %016llx phy 0x%x "
|
||||
"index 0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, index);
|
||||
pr_warn("overflow of indexes: dev %016llx phy 0x%x index 0x%x\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, index);
|
||||
}
|
||||
out:
|
||||
kfree(cri_req);
|
||||
|
@ -1547,8 +1533,8 @@ static int sas_configure_parent(struct domain_device *parent,
|
|||
}
|
||||
|
||||
if (ex_parent->conf_route_table == 0) {
|
||||
SAS_DPRINTK("ex %016llx has self-configuring routing table\n",
|
||||
SAS_ADDR(parent->sas_addr));
|
||||
pr_debug("ex %016llx has self-configuring routing table\n",
|
||||
SAS_ADDR(parent->sas_addr));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1609,8 +1595,8 @@ static int sas_discover_expander(struct domain_device *dev)
|
|||
|
||||
res = sas_expander_discover(dev);
|
||||
if (res) {
|
||||
SAS_DPRINTK("expander %016llx discovery failed(0x%x)\n",
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
pr_warn("expander %016llx discovery failed(0x%x)\n",
|
||||
SAS_ADDR(dev->sas_addr), res);
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
|
@ -1854,10 +1840,10 @@ static int sas_find_bcast_dev(struct domain_device *dev,
|
|||
if (phy_id != -1) {
|
||||
*src_dev = dev;
|
||||
ex->ex_change_count = ex_change_count;
|
||||
SAS_DPRINTK("Expander phy change count has changed\n");
|
||||
pr_info("Expander phy change count has changed\n");
|
||||
return res;
|
||||
} else
|
||||
SAS_DPRINTK("Expander phys DID NOT change\n");
|
||||
pr_info("Expander phys DID NOT change\n");
|
||||
}
|
||||
list_for_each_entry(ch, &ex->children, siblings) {
|
||||
if (ch->dev_type == SAS_EDGE_EXPANDER_DEVICE || ch->dev_type == SAS_FANOUT_EXPANDER_DEVICE) {
|
||||
|
@ -1967,8 +1953,8 @@ static int sas_discover_new(struct domain_device *dev, int phy_id)
|
|||
struct domain_device *child;
|
||||
int res;
|
||||
|
||||
SAS_DPRINTK("ex %016llx phy%d new device attached\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id);
|
||||
pr_debug("ex %016llx phy%d new device attached\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id);
|
||||
res = sas_ex_phy_discover(dev, phy_id);
|
||||
if (res)
|
||||
return res;
|
||||
|
@ -2046,15 +2032,15 @@ static int sas_rediscover_dev(struct domain_device *dev, int phy_id, bool last)
|
|||
|
||||
if (ata_dev && phy->attached_dev_type == SAS_SATA_PENDING)
|
||||
action = ", needs recovery";
|
||||
SAS_DPRINTK("ex %016llx phy 0x%x broadcast flutter%s\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, action);
|
||||
pr_debug("ex %016llx phy 0x%x broadcast flutter%s\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id, action);
|
||||
return res;
|
||||
}
|
||||
|
||||
/* we always have to delete the old device when we went here */
|
||||
SAS_DPRINTK("ex %016llx phy 0x%x replace %016llx\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id,
|
||||
SAS_ADDR(phy->attached_sas_addr));
|
||||
pr_info("ex %016llx phy 0x%x replace %016llx\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id,
|
||||
SAS_ADDR(phy->attached_sas_addr));
|
||||
sas_unregister_devs_sas_addr(dev, phy_id, last);
|
||||
|
||||
return sas_discover_new(dev, phy_id);
|
||||
|
@ -2082,8 +2068,8 @@ static int sas_rediscover(struct domain_device *dev, const int phy_id)
|
|||
int i;
|
||||
bool last = true; /* is this the last phy of the port */
|
||||
|
||||
SAS_DPRINTK("ex %016llx phy%d originated BROADCAST(CHANGE)\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id);
|
||||
pr_debug("ex %016llx phy%d originated BROADCAST(CHANGE)\n",
|
||||
SAS_ADDR(dev->sas_addr), phy_id);
|
||||
|
||||
if (SAS_ADDR(changed_phy->attached_sas_addr) != 0) {
|
||||
for (i = 0; i < ex->num_phys; i++) {
|
||||
|
@ -2093,8 +2079,8 @@ static int sas_rediscover(struct domain_device *dev, const int phy_id)
|
|||
continue;
|
||||
if (SAS_ADDR(phy->attached_sas_addr) ==
|
||||
SAS_ADDR(changed_phy->attached_sas_addr)) {
|
||||
SAS_DPRINTK("phy%d part of wide port with "
|
||||
"phy%d\n", phy_id, i);
|
||||
pr_debug("phy%d part of wide port with phy%d\n",
|
||||
phy_id, i);
|
||||
last = false;
|
||||
break;
|
||||
}
|
||||
|
@ -2152,23 +2138,23 @@ void sas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
|
|||
case SAS_FANOUT_EXPANDER_DEVICE:
|
||||
break;
|
||||
default:
|
||||
printk("%s: can we send a smp request to a device?\n",
|
||||
pr_err("%s: can we send a smp request to a device?\n",
|
||||
__func__);
|
||||
goto out;
|
||||
}
|
||||
|
||||
dev = sas_find_dev_by_rphy(rphy);
|
||||
if (!dev) {
|
||||
printk("%s: fail to find a domain_device?\n", __func__);
|
||||
pr_err("%s: fail to find a domain_device?\n", __func__);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* do we need to support multiple segments? */
|
||||
if (job->request_payload.sg_cnt > 1 ||
|
||||
job->reply_payload.sg_cnt > 1) {
|
||||
printk("%s: multiple segments req %u, rsp %u\n",
|
||||
__func__, job->request_payload.payload_len,
|
||||
job->reply_payload.payload_len);
|
||||
pr_info("%s: multiple segments req %u, rsp %u\n",
|
||||
__func__, job->request_payload.payload_len,
|
||||
job->reply_payload.payload_len);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
@ -128,19 +128,19 @@ int sas_register_ha(struct sas_ha_struct *sas_ha)
|
|||
|
||||
error = sas_register_phys(sas_ha);
|
||||
if (error) {
|
||||
printk(KERN_NOTICE "couldn't register sas phys:%d\n", error);
|
||||
pr_notice("couldn't register sas phys:%d\n", error);
|
||||
return error;
|
||||
}
|
||||
|
||||
error = sas_register_ports(sas_ha);
|
||||
if (error) {
|
||||
printk(KERN_NOTICE "couldn't register sas ports:%d\n", error);
|
||||
pr_notice("couldn't register sas ports:%d\n", error);
|
||||
goto Undo_phys;
|
||||
}
|
||||
|
||||
error = sas_init_events(sas_ha);
|
||||
if (error) {
|
||||
printk(KERN_NOTICE "couldn't start event thread:%d\n", error);
|
||||
pr_notice("couldn't start event thread:%d\n", error);
|
||||
goto Undo_ports;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,9 +40,6 @@
|
|||
|
||||
#define pr_fmt(fmt) SAS_FMT fmt
|
||||
|
||||
#define SAS_DPRINTK(fmt, ...) printk(KERN_DEBUG fmt, ## __VA_ARGS__)
|
||||
|
||||
|
||||
#define TO_SAS_TASK(_scsi_cmd) ((void *)(_scsi_cmd)->host_scribble)
|
||||
#define ASSIGN_SAS_TASK(_sc, _t) do { (_sc)->host_scribble = (void *) _t; } while (0)
|
||||
|
||||
|
@ -127,10 +124,10 @@ static inline void sas_smp_host_handler(struct bsg_job *job,
|
|||
|
||||
static inline void sas_fail_probe(struct domain_device *dev, const char *func, int err)
|
||||
{
|
||||
SAS_DPRINTK("%s: for %s device %16llx returned %d\n",
|
||||
func, dev->parent ? "exp-attached" :
|
||||
"direct-attached",
|
||||
SAS_ADDR(dev->sas_addr), err);
|
||||
pr_warn("%s: for %s device %16llx returned %d\n",
|
||||
func, dev->parent ? "exp-attached" :
|
||||
"direct-attached",
|
||||
SAS_ADDR(dev->sas_addr), err);
|
||||
sas_unregister_dev(dev->port, dev);
|
||||
}
|
||||
|
||||
|
|
|
@ -110,9 +110,9 @@ static void sas_form_port(struct asd_sas_phy *phy)
|
|||
wake_up(&sas_ha->eh_wait_q);
|
||||
return;
|
||||
} else {
|
||||
SAS_DPRINTK("%s: phy%d belongs to port%d already(%d)!\n",
|
||||
__func__, phy->id, phy->port->id,
|
||||
phy->port->num_phys);
|
||||
pr_info("%s: phy%d belongs to port%d already(%d)!\n",
|
||||
__func__, phy->id, phy->port->id,
|
||||
phy->port->num_phys);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -125,8 +125,8 @@ static void sas_form_port(struct asd_sas_phy *phy)
|
|||
if (*(u64 *) port->sas_addr &&
|
||||
phy_is_wideport_member(port, phy) && port->num_phys > 0) {
|
||||
/* wide port */
|
||||
SAS_DPRINTK("phy%d matched wide port%d\n", phy->id,
|
||||
port->id);
|
||||
pr_debug("phy%d matched wide port%d\n", phy->id,
|
||||
port->id);
|
||||
break;
|
||||
}
|
||||
spin_unlock(&port->phy_list_lock);
|
||||
|
@ -147,8 +147,7 @@ static void sas_form_port(struct asd_sas_phy *phy)
|
|||
}
|
||||
|
||||
if (i >= sas_ha->num_phys) {
|
||||
printk(KERN_NOTICE "%s: couldn't find a free port, bug?\n",
|
||||
__func__);
|
||||
pr_err("%s: couldn't find a free port, bug?\n", __func__);
|
||||
spin_unlock_irqrestore(&sas_ha->phy_port_lock, flags);
|
||||
return;
|
||||
}
|
||||
|
@ -180,10 +179,10 @@ static void sas_form_port(struct asd_sas_phy *phy)
|
|||
}
|
||||
sas_port_add_phy(port->port, phy->phy);
|
||||
|
||||
SAS_DPRINTK("%s added to %s, phy_mask:0x%x (%16llx)\n",
|
||||
dev_name(&phy->phy->dev), dev_name(&port->port->dev),
|
||||
port->phy_mask,
|
||||
SAS_ADDR(port->attached_sas_addr));
|
||||
pr_debug("%s added to %s, phy_mask:0x%x (%16llx)\n",
|
||||
dev_name(&phy->phy->dev), dev_name(&port->port->dev),
|
||||
port->phy_mask,
|
||||
SAS_ADDR(port->attached_sas_addr));
|
||||
|
||||
if (port->port_dev)
|
||||
port->port_dev->pathways = port->num_phys;
|
||||
|
@ -279,7 +278,7 @@ void sas_porte_broadcast_rcvd(struct work_struct *work)
|
|||
prim = phy->sas_prim;
|
||||
spin_unlock_irqrestore(&phy->sas_prim_lock, flags);
|
||||
|
||||
SAS_DPRINTK("broadcast received: %d\n", prim);
|
||||
pr_debug("broadcast received: %d\n", prim);
|
||||
sas_discover_event(phy->port, DISCE_REVALIDATE_DOMAIN);
|
||||
|
||||
if (phy->port)
|
||||
|
|
|
@ -93,9 +93,8 @@ static void sas_end_task(struct scsi_cmnd *sc, struct sas_task *task)
|
|||
hs = DID_ERROR;
|
||||
break;
|
||||
case SAS_PROTO_RESPONSE:
|
||||
SAS_DPRINTK("LLDD:%s sent SAS_PROTO_RESP for an SSP "
|
||||
"task; please report this\n",
|
||||
task->dev->port->ha->sas_ha_name);
|
||||
pr_notice("LLDD:%s sent SAS_PROTO_RESP for an SSP task; please report this\n",
|
||||
task->dev->port->ha->sas_ha_name);
|
||||
break;
|
||||
case SAS_ABORTED_TASK:
|
||||
hs = DID_ABORT;
|
||||
|
@ -132,12 +131,12 @@ static void sas_scsi_task_done(struct sas_task *task)
|
|||
|
||||
if (unlikely(!task)) {
|
||||
/* task will be completed by the error handler */
|
||||
SAS_DPRINTK("task done but aborted\n");
|
||||
pr_debug("task done but aborted\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (unlikely(!sc)) {
|
||||
SAS_DPRINTK("task_done called with non existing SCSI cmnd!\n");
|
||||
pr_debug("task_done called with non existing SCSI cmnd!\n");
|
||||
sas_free_task(task);
|
||||
return;
|
||||
}
|
||||
|
@ -208,7 +207,7 @@ int sas_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
|
|||
return 0;
|
||||
|
||||
out_free_task:
|
||||
SAS_DPRINTK("lldd_execute_task returned: %d\n", res);
|
||||
pr_debug("lldd_execute_task returned: %d\n", res);
|
||||
ASSIGN_SAS_TASK(cmd, NULL);
|
||||
sas_free_task(task);
|
||||
if (res == -SAS_QUEUE_FULL)
|
||||
|
@ -301,40 +300,38 @@ static enum task_disposition sas_scsi_find_task(struct sas_task *task)
|
|||
to_sas_internal(task->dev->port->ha->core.shost->transportt);
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
SAS_DPRINTK("%s: aborting task 0x%p\n", __func__, task);
|
||||
pr_notice("%s: aborting task 0x%p\n", __func__, task);
|
||||
res = si->dft->lldd_abort_task(task);
|
||||
|
||||
spin_lock_irqsave(&task->task_state_lock, flags);
|
||||
if (task->task_state_flags & SAS_TASK_STATE_DONE) {
|
||||
spin_unlock_irqrestore(&task->task_state_lock, flags);
|
||||
SAS_DPRINTK("%s: task 0x%p is done\n", __func__,
|
||||
task);
|
||||
pr_debug("%s: task 0x%p is done\n", __func__, task);
|
||||
return TASK_IS_DONE;
|
||||
}
|
||||
spin_unlock_irqrestore(&task->task_state_lock, flags);
|
||||
|
||||
if (res == TMF_RESP_FUNC_COMPLETE) {
|
||||
SAS_DPRINTK("%s: task 0x%p is aborted\n",
|
||||
__func__, task);
|
||||
pr_notice("%s: task 0x%p is aborted\n",
|
||||
__func__, task);
|
||||
return TASK_IS_ABORTED;
|
||||
} else if (si->dft->lldd_query_task) {
|
||||
SAS_DPRINTK("%s: querying task 0x%p\n",
|
||||
__func__, task);
|
||||
pr_notice("%s: querying task 0x%p\n", __func__, task);
|
||||
res = si->dft->lldd_query_task(task);
|
||||
switch (res) {
|
||||
case TMF_RESP_FUNC_SUCC:
|
||||
SAS_DPRINTK("%s: task 0x%p at LU\n",
|
||||
__func__, task);
|
||||
pr_notice("%s: task 0x%p at LU\n", __func__,
|
||||
task);
|
||||
return TASK_IS_AT_LU;
|
||||
case TMF_RESP_FUNC_COMPLETE:
|
||||
SAS_DPRINTK("%s: task 0x%p not at LU\n",
|
||||
__func__, task);
|
||||
pr_notice("%s: task 0x%p not at LU\n",
|
||||
__func__, task);
|
||||
return TASK_IS_NOT_AT_LU;
|
||||
case TMF_RESP_FUNC_FAILED:
|
||||
SAS_DPRINTK("%s: task 0x%p failed to abort\n",
|
||||
__func__, task);
|
||||
return TASK_ABORT_FAILED;
|
||||
}
|
||||
pr_notice("%s: task 0x%p failed to abort\n",
|
||||
__func__, task);
|
||||
return TASK_ABORT_FAILED;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -350,9 +347,9 @@ static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd)
|
|||
|
||||
int_to_scsilun(cmd->device->lun, &lun);
|
||||
|
||||
SAS_DPRINTK("eh: device %llx LUN %llx has the task\n",
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
cmd->device->lun);
|
||||
pr_notice("eh: device %llx LUN %llx has the task\n",
|
||||
SAS_ADDR(dev->sas_addr),
|
||||
cmd->device->lun);
|
||||
|
||||
if (i->dft->lldd_abort_task_set)
|
||||
res = i->dft->lldd_abort_task_set(dev, lun.scsi_lun);
|
||||
|
@ -376,8 +373,8 @@ static int sas_recover_I_T(struct domain_device *dev)
|
|||
struct sas_internal *i =
|
||||
to_sas_internal(dev->port->ha->core.shost->transportt);
|
||||
|
||||
SAS_DPRINTK("I_T nexus reset for dev %016llx\n",
|
||||
SAS_ADDR(dev->sas_addr));
|
||||
pr_notice("I_T nexus reset for dev %016llx\n",
|
||||
SAS_ADDR(dev->sas_addr));
|
||||
|
||||
if (i->dft->lldd_I_T_nexus_reset)
|
||||
res = i->dft->lldd_I_T_nexus_reset(dev);
|
||||
|
@ -471,9 +468,9 @@ static int sas_queue_reset(struct domain_device *dev, int reset_type,
|
|||
return SUCCESS;
|
||||
}
|
||||
|
||||
SAS_DPRINTK("%s reset of %s failed\n",
|
||||
reset_type == SAS_DEV_LU_RESET ? "LUN" : "Bus",
|
||||
dev_name(&dev->rphy->dev));
|
||||
pr_warn("%s reset of %s failed\n",
|
||||
reset_type == SAS_DEV_LU_RESET ? "LUN" : "Bus",
|
||||
dev_name(&dev->rphy->dev));
|
||||
|
||||
return FAILED;
|
||||
}
|
||||
|
@ -501,7 +498,7 @@ int sas_eh_abort_handler(struct scsi_cmnd *cmd)
|
|||
if (task)
|
||||
res = i->dft->lldd_abort_task(task);
|
||||
else
|
||||
SAS_DPRINTK("no task to abort\n");
|
||||
pr_notice("no task to abort\n");
|
||||
if (res == TMF_RESP_FUNC_SUCC || res == TMF_RESP_FUNC_COMPLETE)
|
||||
return SUCCESS;
|
||||
|
||||
|
@ -612,34 +609,33 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
|||
spin_unlock_irqrestore(&task->task_state_lock, flags);
|
||||
|
||||
if (need_reset) {
|
||||
SAS_DPRINTK("%s: task 0x%p requests reset\n",
|
||||
__func__, task);
|
||||
pr_notice("%s: task 0x%p requests reset\n",
|
||||
__func__, task);
|
||||
goto reset;
|
||||
}
|
||||
|
||||
SAS_DPRINTK("trying to find task 0x%p\n", task);
|
||||
pr_debug("trying to find task 0x%p\n", task);
|
||||
res = sas_scsi_find_task(task);
|
||||
|
||||
switch (res) {
|
||||
case TASK_IS_DONE:
|
||||
SAS_DPRINTK("%s: task 0x%p is done\n", __func__,
|
||||
pr_notice("%s: task 0x%p is done\n", __func__,
|
||||
task);
|
||||
sas_eh_finish_cmd(cmd);
|
||||
continue;
|
||||
case TASK_IS_ABORTED:
|
||||
SAS_DPRINTK("%s: task 0x%p is aborted\n",
|
||||
__func__, task);
|
||||
pr_notice("%s: task 0x%p is aborted\n",
|
||||
__func__, task);
|
||||
sas_eh_finish_cmd(cmd);
|
||||
continue;
|
||||
case TASK_IS_AT_LU:
|
||||
SAS_DPRINTK("task 0x%p is at LU: lu recover\n", task);
|
||||
pr_info("task 0x%p is at LU: lu recover\n", task);
|
||||
reset:
|
||||
tmf_resp = sas_recover_lu(task->dev, cmd);
|
||||
if (tmf_resp == TMF_RESP_FUNC_COMPLETE) {
|
||||
SAS_DPRINTK("dev %016llx LU %llx is "
|
||||
"recovered\n",
|
||||
SAS_ADDR(task->dev),
|
||||
cmd->device->lun);
|
||||
pr_notice("dev %016llx LU %llx is recovered\n",
|
||||
SAS_ADDR(task->dev),
|
||||
cmd->device->lun);
|
||||
sas_eh_finish_cmd(cmd);
|
||||
sas_scsi_clear_queue_lu(work_q, cmd);
|
||||
goto Again;
|
||||
|
@ -647,14 +643,14 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
|||
/* fallthrough */
|
||||
case TASK_IS_NOT_AT_LU:
|
||||
case TASK_ABORT_FAILED:
|
||||
SAS_DPRINTK("task 0x%p is not at LU: I_T recover\n",
|
||||
task);
|
||||
pr_notice("task 0x%p is not at LU: I_T recover\n",
|
||||
task);
|
||||
tmf_resp = sas_recover_I_T(task->dev);
|
||||
if (tmf_resp == TMF_RESP_FUNC_COMPLETE ||
|
||||
tmf_resp == -ENODEV) {
|
||||
struct domain_device *dev = task->dev;
|
||||
SAS_DPRINTK("I_T %016llx recovered\n",
|
||||
SAS_ADDR(task->dev->sas_addr));
|
||||
pr_notice("I_T %016llx recovered\n",
|
||||
SAS_ADDR(task->dev->sas_addr));
|
||||
sas_eh_finish_cmd(cmd);
|
||||
sas_scsi_clear_queue_I_T(work_q, dev);
|
||||
goto Again;
|
||||
|
@ -663,12 +659,12 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
|||
try_to_reset_cmd_device(cmd);
|
||||
if (i->dft->lldd_clear_nexus_port) {
|
||||
struct asd_sas_port *port = task->dev->port;
|
||||
SAS_DPRINTK("clearing nexus for port:%d\n",
|
||||
port->id);
|
||||
pr_debug("clearing nexus for port:%d\n",
|
||||
port->id);
|
||||
res = i->dft->lldd_clear_nexus_port(port);
|
||||
if (res == TMF_RESP_FUNC_COMPLETE) {
|
||||
SAS_DPRINTK("clear nexus port:%d "
|
||||
"succeeded\n", port->id);
|
||||
pr_notice("clear nexus port:%d succeeded\n",
|
||||
port->id);
|
||||
sas_eh_finish_cmd(cmd);
|
||||
sas_scsi_clear_queue_port(work_q,
|
||||
port);
|
||||
|
@ -676,11 +672,10 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
|||
}
|
||||
}
|
||||
if (i->dft->lldd_clear_nexus_ha) {
|
||||
SAS_DPRINTK("clear nexus ha\n");
|
||||
pr_debug("clear nexus ha\n");
|
||||
res = i->dft->lldd_clear_nexus_ha(ha);
|
||||
if (res == TMF_RESP_FUNC_COMPLETE) {
|
||||
SAS_DPRINTK("clear nexus ha "
|
||||
"succeeded\n");
|
||||
pr_notice("clear nexus ha succeeded\n");
|
||||
sas_eh_finish_cmd(cmd);
|
||||
goto clear_q;
|
||||
}
|
||||
|
@ -689,10 +684,9 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
|||
* of effort could recover from errors. Quite
|
||||
* possibly the HA just disappeared.
|
||||
*/
|
||||
SAS_DPRINTK("error from device %llx, LUN %llx "
|
||||
"couldn't be recovered in any way\n",
|
||||
SAS_ADDR(task->dev->sas_addr),
|
||||
cmd->device->lun);
|
||||
pr_err("error from device %llx, LUN %llx couldn't be recovered in any way\n",
|
||||
SAS_ADDR(task->dev->sas_addr),
|
||||
cmd->device->lun);
|
||||
|
||||
sas_eh_finish_cmd(cmd);
|
||||
goto clear_q;
|
||||
|
@ -704,7 +698,7 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
|||
return;
|
||||
|
||||
clear_q:
|
||||
SAS_DPRINTK("--- Exit %s -- clear_q\n", __func__);
|
||||
pr_debug("--- Exit %s -- clear_q\n", __func__);
|
||||
list_for_each_entry_safe(cmd, n, work_q, eh_entry)
|
||||
sas_eh_finish_cmd(cmd);
|
||||
goto out;
|
||||
|
@ -758,8 +752,8 @@ void sas_scsi_recover_host(struct Scsi_Host *shost)
|
|||
list_splice_init(&shost->eh_cmd_q, &eh_work_q);
|
||||
spin_unlock_irq(shost->host_lock);
|
||||
|
||||
SAS_DPRINTK("Enter %s busy: %d failed: %d\n",
|
||||
__func__, scsi_host_busy(shost), shost->host_failed);
|
||||
pr_notice("Enter %s busy: %d failed: %d\n",
|
||||
__func__, scsi_host_busy(shost), shost->host_failed);
|
||||
/*
|
||||
* Deal with commands that still have SAS tasks (i.e. they didn't
|
||||
* complete via the normal sas_task completion mechanism),
|
||||
|
@ -800,9 +794,9 @@ void sas_scsi_recover_host(struct Scsi_Host *shost)
|
|||
if (retry)
|
||||
goto retry;
|
||||
|
||||
SAS_DPRINTK("--- Exit %s: busy: %d failed: %d tries: %d\n",
|
||||
__func__, scsi_host_busy(shost),
|
||||
shost->host_failed, tries);
|
||||
pr_notice("--- Exit %s: busy: %d failed: %d tries: %d\n",
|
||||
__func__, scsi_host_busy(shost),
|
||||
shost->host_failed, tries);
|
||||
}
|
||||
|
||||
int sas_ioctl(struct scsi_device *sdev, int cmd, void __user *arg)
|
||||
|
@ -875,9 +869,8 @@ int sas_slave_configure(struct scsi_device *scsi_dev)
|
|||
if (scsi_dev->tagged_supported) {
|
||||
scsi_change_queue_depth(scsi_dev, SAS_DEF_QD);
|
||||
} else {
|
||||
SAS_DPRINTK("device %llx, LUN %llx doesn't support "
|
||||
"TCQ\n", SAS_ADDR(dev->sas_addr),
|
||||
scsi_dev->lun);
|
||||
pr_notice("device %llx, LUN %llx doesn't support TCQ\n",
|
||||
SAS_ADDR(dev->sas_addr), scsi_dev->lun);
|
||||
scsi_change_queue_depth(scsi_dev, 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -26,11 +26,8 @@ void sas_ssp_task_response(struct device *dev, struct sas_task *task,
|
|||
memcpy(tstat->buf, iu->sense_data, tstat->buf_valid_size);
|
||||
|
||||
if (iu->status != SAM_STAT_CHECK_CONDITION)
|
||||
dev_printk(KERN_WARNING, dev,
|
||||
"dev %llx sent sense data, but "
|
||||
"stat(%x) is not CHECK CONDITION\n",
|
||||
SAS_ADDR(task->dev->sas_addr),
|
||||
iu->status);
|
||||
dev_warn(dev, "dev %llx sent sense data, but stat(%x) is not CHECK CONDITION\n",
|
||||
SAS_ADDR(task->dev->sas_addr), iu->status);
|
||||
}
|
||||
else
|
||||
/* when datapres contains corrupt/unknown value... */
|
||||
|
|
Loading…
Reference in New Issue
Block a user