mirror of
https://github.com/SCST-project/scst.git
synced 2026-07-29 03:22:58 +00:00
Merge branch 'svn-trunk'
This commit is contained in:
@@ -158,6 +158,7 @@ qla2x00_store_tgt_enabled(struct device *dev,
|
||||
|
||||
if ((size > 1) && (buffer[1] == 'r')) {
|
||||
struct scsi_qla_host *base_vha = pci_get_drvdata(vha->hw->pdev);
|
||||
|
||||
set_bit(ISP_ABORT_NEEDED, &base_vha->dpc_flags);
|
||||
}
|
||||
|
||||
@@ -375,6 +376,7 @@ qla2x00_show_port_database(struct device *dev,
|
||||
|
||||
for (i = 0; (i < entries) && (size < max_size); ++i) {
|
||||
uint64_t *wwn = (uint64_t *)pmap24[i].port_name;
|
||||
|
||||
if (*wwn == 0)
|
||||
continue;
|
||||
size += scnprintf(buffer+size, max_size-size,
|
||||
|
||||
@@ -1801,6 +1801,7 @@ qla24xx_prep_ms_fm_iocb(scsi_qla_host_t *vha, uint32_t req_size,
|
||||
{
|
||||
struct ct_entry_24xx *ct_pkt;
|
||||
struct qla_hw_data *ha = vha->hw;
|
||||
|
||||
ct_pkt = (struct ct_entry_24xx *)ha->ms_iocb;
|
||||
memset(ct_pkt, 0, sizeof(struct ct_entry_24xx));
|
||||
|
||||
|
||||
+2
-1
@@ -109,6 +109,7 @@ qla2x00_async_iocb_timeout(void *data)
|
||||
fcport->flags &= ~FCF_ASYNC_SENT;
|
||||
if (sp->type == SRB_LOGIN_CMD) {
|
||||
struct srb_iocb *lio = &sp->u.iocb_cmd;
|
||||
|
||||
qla2x00_post_async_logout_work(fcport->vha, fcport, NULL);
|
||||
/* Retry as needed. */
|
||||
lio->u.logio.data[0] = MBS_COMMAND_ERROR;
|
||||
@@ -2027,7 +2028,7 @@ qla2x00_fw_ready(scsi_qla_host_t *vha)
|
||||
} while (1);
|
||||
|
||||
ql_dbg(ql_dbg_taskm, vha, 0x803a,
|
||||
"fw_state=%x (%x, %x, %x, %x) " "curr time=%lx.\n", state[0],
|
||||
"fw_state=%x (%x, %x, %x, %x) curr time=%lx.\n", state[0],
|
||||
state[1], state[2], state[3], state[4], jiffies);
|
||||
|
||||
out_not_ready:
|
||||
|
||||
+1
-1
@@ -1166,7 +1166,7 @@ qla24xx_walk_and_build_sglist(struct qla_hw_data *ha, srb_t *sp, uint32_t *dsd,
|
||||
}
|
||||
sle_dma = sg_dma_address(sg);
|
||||
ql_dbg(ql_dbg_io, vha, 0x300a,
|
||||
"sg entry %d - addr=0x%x 0x%x, " "len=%d for cmd=%p.\n",
|
||||
"sg entry %d - addr=0x%x 0x%x, len=%d for cmd=%p.\n",
|
||||
i, LSD(sle_dma), MSD(sle_dma), sg_dma_len(sg), cmd);
|
||||
*cur_dsd++ = cpu_to_le32(LSD(sle_dma));
|
||||
*cur_dsd++ = cpu_to_le32(MSD(sle_dma));
|
||||
|
||||
+1
-2
@@ -1232,8 +1232,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *vha, struct req_que *req,
|
||||
fw_sts_ptr = bsg_job_sense(bsg_job) +
|
||||
sizeof(struct fc_bsg_reply);
|
||||
memcpy(fw_sts_ptr, fw_status, sizeof(fw_status));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
ql_dbg(ql_dbg_user, vha, 0x5040,
|
||||
"ELS-CT pass-through-%s error hdl=%x comp_status-status=0x%x "
|
||||
"error subcode 1=0x%x error subcode 2=0x%x.\n",
|
||||
|
||||
@@ -1209,6 +1209,7 @@ qla2x00_init_firmware(scsi_qla_host_t *vha, uint16_t size)
|
||||
#if 0
|
||||
if (IS_FWI2_CAPABLE(ha)) {
|
||||
struct init_cb_24xx *icb = (struct init_cb_24xx *)ha->init_cb;
|
||||
|
||||
DEBUG5(printk(KERN_INFO "%s(): firmware_options_1 %x, "
|
||||
"firmware_options_2 %x, firmware_options_3 %x\n",
|
||||
__func__, icb->firmware_options_1,
|
||||
@@ -1217,6 +1218,7 @@ qla2x00_init_firmware(scsi_qla_host_t *vha, uint16_t size)
|
||||
DEBUG5(qla2x00_dump_buffer((uint8_t *)icb, sizeof(*icb)));
|
||||
} else {
|
||||
init_cb_t *icb = (init_cb_t *)ha->init_cb;
|
||||
|
||||
DEBUG5(printk(KERN_INFO "%s(): firmware_options[0] %x, "
|
||||
"firmware_options[1] %x, add_firmware_options[0] %x, "
|
||||
"add_firmware_options[1] %x\n", __func__,
|
||||
@@ -1266,6 +1268,7 @@ qla2x00_init_firmware(scsi_qla_host_t *vha, uint16_t size)
|
||||
|
||||
if (ha->flags.npiv_supported && (ha->num_vhosts > 0)) {
|
||||
scsi_qla_host_t *vha;
|
||||
|
||||
list_for_each_entry(vha, &ha->vp_list, list) {
|
||||
struct mid_conf_entry_24xx *vpe;
|
||||
|
||||
|
||||
@@ -3409,6 +3409,7 @@ int
|
||||
qla82xx_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr)
|
||||
{
|
||||
int rval;
|
||||
|
||||
rval = qla82xx_device_state_handler(vha);
|
||||
return rval;
|
||||
}
|
||||
|
||||
@@ -2285,6 +2285,7 @@ qla2xxx_add_targets(void)
|
||||
|
||||
for_each_mapped_vp_idx(base_vha, i) {
|
||||
scsi_qla_host_t *vha;
|
||||
|
||||
list_for_each_entry(vha, &base_vha->hw->vp_list, list) {
|
||||
if (i == vha->vp_idx) {
|
||||
qla_target.tgt_host_action(vha, ADD_TARGET);
|
||||
@@ -2316,6 +2317,7 @@ size_t qla2xxx_add_vtarget(u64 port_name, u64 node_name, u64 parent_host)
|
||||
mutex_lock(&qla_ha_list_mutex);
|
||||
list_for_each_entry(ha, &qla_ha_list, ha_list_entry) {
|
||||
scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
|
||||
|
||||
if (!memcmp(parent_wwn,
|
||||
base_vha->port_name_set ? base_vha->hw->orig_hw_port_name :
|
||||
base_vha->port_name,
|
||||
@@ -2355,6 +2357,7 @@ size_t qla2xxx_del_vtarget(u64 port_name)
|
||||
mutex_lock(&qla_ha_list_mutex);
|
||||
list_for_each_entry(ha, &qla_ha_list, ha_list_entry) {
|
||||
scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
|
||||
|
||||
shost = base_vha->host;
|
||||
fc_host = shost_to_fc_host(shost);
|
||||
spin_lock_irqsave(shost->host_lock, flags);
|
||||
|
||||
@@ -6621,6 +6621,7 @@ static void blockio_endio(struct bio *bio)
|
||||
#endif
|
||||
if (error == -ENOSPC) {
|
||||
struct scst_vdisk_dev *virt_dev = blockio_work->cmd->dev->dh_priv;
|
||||
|
||||
WARN_ON(!virt_dev->thin_provisioned);
|
||||
scst_set_cmd_error(blockio_work->cmd,
|
||||
SCST_LOAD_SENSE(scst_space_allocation_failed_write_protect));
|
||||
@@ -8025,6 +8026,7 @@ static void vdev_check_node(struct scst_vdisk_dev **pvirt_dev, int orig_nodeid)
|
||||
|
||||
if (virt_dev->numa_node_id != orig_nodeid) {
|
||||
struct scst_vdisk_dev *v;
|
||||
|
||||
TRACE_MEM("Realloc virt_dev %s on node %d", virt_dev->name, nodeid);
|
||||
/* It's read-mostly, so cache alignment isn't needed */
|
||||
v = kzalloc_node(sizeof(*v), GFP_KERNEL, nodeid);
|
||||
|
||||
@@ -14012,6 +14012,7 @@ int scst_get_max_lun_commands(struct scst_session *sess, uint64_t lun)
|
||||
|
||||
if (sess == NULL) {
|
||||
struct scst_device *dev;
|
||||
|
||||
list_for_each_entry(dev, &scst_dev_list, dev_list_entry) {
|
||||
if (dev->handler == &scst_null_devtype)
|
||||
continue;
|
||||
@@ -14027,6 +14028,7 @@ int scst_get_max_lun_commands(struct scst_session *sess, uint64_t lun)
|
||||
struct list_head *head =
|
||||
&sess->sess_tgt_dev_list[SESS_TGT_DEV_LIST_HASH_FN(lun)];
|
||||
struct scst_tgt_dev *tgt_dev;
|
||||
|
||||
list_for_each_entry(tgt_dev, head, sess_tgt_dev_list_entry) {
|
||||
if (tgt_dev->lun == lun) {
|
||||
res = tgt_dev->dev->max_tgt_dev_commands;
|
||||
@@ -14042,6 +14044,7 @@ int scst_get_max_lun_commands(struct scst_session *sess, uint64_t lun)
|
||||
for (i = 0; i < SESS_TGT_DEV_LIST_HASH_SIZE; i++) {
|
||||
struct list_head *head = &sess->sess_tgt_dev_list[i];
|
||||
struct scst_tgt_dev *tgt_dev;
|
||||
|
||||
list_for_each_entry(tgt_dev, head, sess_tgt_dev_list_entry) {
|
||||
if (res > tgt_dev->dev->max_tgt_dev_commands)
|
||||
res = tgt_dev->dev->max_tgt_dev_commands;
|
||||
@@ -15952,6 +15955,7 @@ void scst_update_lat_stats(struct scst_cmd *cmd)
|
||||
if (unlikely((scst_time < 0) || (tgt_time < 0) || (dev_time < 0))) {
|
||||
/* It might happen due to small difference in time between CPUs */
|
||||
static int q;
|
||||
|
||||
if (q++ < 20) {
|
||||
PRINT_WARNING("Ignoring max latency sample, because time is "
|
||||
"moving backward (cmd %p, scst %lld, tgt %lld, "
|
||||
|
||||
@@ -1792,6 +1792,7 @@ int scst_sgv_pools_init(unsigned long mem_hwmark, unsigned long mem_lwmark)
|
||||
|
||||
for (i = 0; i < NR_CPUS; i++) {
|
||||
char name[60];
|
||||
|
||||
if (!cpu_online(i))
|
||||
continue;
|
||||
scnprintf(name, sizeof(name), "sgv-%d", i);
|
||||
@@ -1803,6 +1804,7 @@ int scst_sgv_pools_init(unsigned long mem_hwmark, unsigned long mem_lwmark)
|
||||
|
||||
for (i = 0; i < NR_CPUS; i++) {
|
||||
char name[60];
|
||||
|
||||
if (!cpu_online(i))
|
||||
continue;
|
||||
scnprintf(name, sizeof(name), "sgv-clust-%d", i);
|
||||
@@ -1814,6 +1816,7 @@ int scst_sgv_pools_init(unsigned long mem_hwmark, unsigned long mem_lwmark)
|
||||
|
||||
for (i = 0; i < NR_CPUS; i++) {
|
||||
char name[60];
|
||||
|
||||
if (!cpu_online(i))
|
||||
continue;
|
||||
scnprintf(name, sizeof(name), "sgv-dma-%d", i);
|
||||
|
||||
@@ -4458,6 +4458,7 @@ again:
|
||||
}
|
||||
} else if (likely(cmd->tgt_dev != NULL)) {
|
||||
struct scst_order_data *order_data = cmd->cur_order_data;
|
||||
|
||||
if (unlikely(order_data->aca_tgt_dev != 0)) {
|
||||
if (!cmd->cmd_aca_allowed) {
|
||||
spin_lock_irq(&order_data->sn_lock);
|
||||
@@ -4494,6 +4495,7 @@ again:
|
||||
if (unlikely(cmd->queue_type == SCST_CMD_QUEUE_ACA) &&
|
||||
(cmd->tgt_dev != NULL)) {
|
||||
struct scst_order_data *order_data = cmd->cur_order_data;
|
||||
|
||||
spin_lock_irq(&order_data->sn_lock);
|
||||
if (order_data->aca_cmd == cmd) {
|
||||
TRACE_MGMT_DBG("ACA cmd %p finished", cmd);
|
||||
@@ -7208,6 +7210,7 @@ static void __scst_clear_aca(struct scst_tgt_dev *tgt_dev,
|
||||
aca_cmd = order_data->aca_cmd;
|
||||
if (aca_cmd != NULL) {
|
||||
unsigned long flags;
|
||||
|
||||
TRACE_MGMT_DBG("Aborting pending ACA cmd %p", aca_cmd);
|
||||
spin_lock_irqsave(&aca_cmd->sess->sess_list_lock, flags);
|
||||
scst_abort_cmd(aca_cmd, mcmd, other_ini, (mcmd != NULL));
|
||||
|
||||
Reference in New Issue
Block a user