diff options
| -rw-r--r-- | drivers/scsi/aha152x.c | 85 | ||||
| -rw-r--r-- | drivers/scsi/aha152x.h | 2 | ||||
| -rw-r--r-- | drivers/scsi/jazz_esp.c | 21 | ||||
| -rw-r--r-- | drivers/scsi/megaraid/megaraid_sas.c | 29 | ||||
| -rw-r--r-- | drivers/scsi/pcmcia/aha152x_stub.c | 4 | ||||
| -rw-r--r-- | drivers/scsi/scsi_error.c | 4 | ||||
| -rw-r--r-- | drivers/scsi/scsi_lib.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/scsi_scan.c | 16 | ||||
| -rw-r--r-- | drivers/scsi/scsi_transport_fc.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/sg.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/sym53c8xx_2/sym_hipd.c | 2 |
11 files changed, 90 insertions, 80 deletions
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index cb2ee25f213f..531a1f9ceb51 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c | |||
| @@ -1260,16 +1260,15 @@ static void free_hard_reset_SCs(struct Scsi_Host *shpnt, Scsi_Cmnd **SCs) | |||
| 1260 | * Reset the bus | 1260 | * Reset the bus |
| 1261 | * | 1261 | * |
| 1262 | */ | 1262 | */ |
| 1263 | static int aha152x_bus_reset(Scsi_Cmnd *SCpnt) | 1263 | static int aha152x_bus_reset_host(struct Scsi_Host *shpnt) |
| 1264 | { | 1264 | { |
| 1265 | struct Scsi_Host *shpnt = SCpnt->device->host; | ||
| 1266 | unsigned long flags; | 1265 | unsigned long flags; |
| 1267 | 1266 | ||
| 1268 | DO_LOCK(flags); | 1267 | DO_LOCK(flags); |
| 1269 | 1268 | ||
| 1270 | #if defined(AHA152X_DEBUG) | 1269 | #if defined(AHA152X_DEBUG) |
| 1271 | if(HOSTDATA(shpnt)->debug & debug_eh) { | 1270 | if(HOSTDATA(shpnt)->debug & debug_eh) { |
| 1272 | printk(DEBUG_LEAD "aha152x_bus_reset(%p)", CMDINFO(SCpnt), SCpnt); | 1271 | printk(KERN_DEBUG "scsi%d: bus reset", shpnt->host_no); |
| 1273 | show_queues(shpnt); | 1272 | show_queues(shpnt); |
| 1274 | } | 1273 | } |
| 1275 | #endif | 1274 | #endif |
| @@ -1277,14 +1276,14 @@ static int aha152x_bus_reset(Scsi_Cmnd *SCpnt) | |||
| 1277 | free_hard_reset_SCs(shpnt, &ISSUE_SC); | 1276 | free_hard_reset_SCs(shpnt, &ISSUE_SC); |
| 1278 | free_hard_reset_SCs(shpnt, &DISCONNECTED_SC); | 1277 | free_hard_reset_SCs(shpnt, &DISCONNECTED_SC); |
| 1279 | 1278 | ||
| 1280 | DPRINTK(debug_eh, DEBUG_LEAD "resetting bus\n", CMDINFO(SCpnt)); | 1279 | DPRINTK(debug_eh, KERN_DEBUG "scsi%d: resetting bus\n", shpnt->host_no); |
| 1281 | 1280 | ||
| 1282 | SETPORT(SCSISEQ, SCSIRSTO); | 1281 | SETPORT(SCSISEQ, SCSIRSTO); |
| 1283 | mdelay(256); | 1282 | mdelay(256); |
| 1284 | SETPORT(SCSISEQ, 0); | 1283 | SETPORT(SCSISEQ, 0); |
| 1285 | mdelay(DELAY); | 1284 | mdelay(DELAY); |
| 1286 | 1285 | ||
| 1287 | DPRINTK(debug_eh, DEBUG_LEAD "bus resetted\n", CMDINFO(SCpnt)); | 1286 | DPRINTK(debug_eh, KERN_DEBUG "scsi%d: bus resetted\n", shpnt->host_no); |
| 1288 | 1287 | ||
| 1289 | setup_expected_interrupts(shpnt); | 1288 | setup_expected_interrupts(shpnt); |
| 1290 | if(HOSTDATA(shpnt)->commands==0) | 1289 | if(HOSTDATA(shpnt)->commands==0) |
| @@ -1295,6 +1294,14 @@ static int aha152x_bus_reset(Scsi_Cmnd *SCpnt) | |||
| 1295 | return SUCCESS; | 1294 | return SUCCESS; |
| 1296 | } | 1295 | } |
| 1297 | 1296 | ||
| 1297 | /* | ||
| 1298 | * Reset the bus | ||
| 1299 | * | ||
| 1300 | */ | ||
| 1301 | static int aha152x_bus_reset(Scsi_Cmnd *SCpnt) | ||
| 1302 | { | ||
| 1303 | return aha152x_bus_reset_host(SCpnt->device->host); | ||
| 1304 | } | ||
| 1298 | 1305 | ||
| 1299 | /* | 1306 | /* |
| 1300 | * Restore default values to the AIC-6260 registers and reset the fifos | 1307 | * Restore default values to the AIC-6260 registers and reset the fifos |
| @@ -1337,23 +1344,28 @@ static void reset_ports(struct Scsi_Host *shpnt) | |||
| 1337 | * Reset the host (bus and controller) | 1344 | * Reset the host (bus and controller) |
| 1338 | * | 1345 | * |
| 1339 | */ | 1346 | */ |
| 1340 | int aha152x_host_reset(Scsi_Cmnd * SCpnt) | 1347 | int aha152x_host_reset_host(struct Scsi_Host *shpnt) |
| 1341 | { | 1348 | { |
| 1342 | #if defined(AHA152X_DEBUG) | 1349 | DPRINTK(debug_eh, KERN_DEBUG "scsi%d: host reset\n", shpnt->host_no); |
| 1343 | struct Scsi_Host *shpnt = SCpnt->device->host; | ||
| 1344 | #endif | ||
| 1345 | |||
| 1346 | DPRINTK(debug_eh, DEBUG_LEAD "aha152x_host_reset(%p)\n", CMDINFO(SCpnt), SCpnt); | ||
| 1347 | 1350 | ||
| 1348 | aha152x_bus_reset(SCpnt); | 1351 | aha152x_bus_reset_host(shpnt); |
| 1349 | 1352 | ||
| 1350 | DPRINTK(debug_eh, DEBUG_LEAD "resetting ports\n", CMDINFO(SCpnt)); | 1353 | DPRINTK(debug_eh, KERN_DEBUG "scsi%d: resetting ports\n", shpnt->host_no); |
| 1351 | reset_ports(SCpnt->device->host); | 1354 | reset_ports(shpnt); |
| 1352 | 1355 | ||
| 1353 | return SUCCESS; | 1356 | return SUCCESS; |
| 1354 | } | 1357 | } |
| 1355 | 1358 | ||
| 1356 | /* | 1359 | /* |
| 1360 | * Reset the host (bus and controller) | ||
| 1361 | * | ||
| 1362 | */ | ||
| 1363 | static int aha152x_host_reset(Scsi_Cmnd *SCpnt) | ||
| 1364 | { | ||
| 1365 | return aha152x_host_reset_host(SCpnt->device->host); | ||
| 1366 | } | ||
| 1367 | |||
| 1368 | /* | ||
| 1357 | * Return the "logical geometry" | 1369 | * Return the "logical geometry" |
| 1358 | * | 1370 | * |
| 1359 | */ | 1371 | */ |
| @@ -1431,22 +1443,18 @@ static void run(void) | |||
| 1431 | { | 1443 | { |
| 1432 | int i; | 1444 | int i; |
| 1433 | for (i = 0; i<ARRAY_SIZE(aha152x_host); i++) { | 1445 | for (i = 0; i<ARRAY_SIZE(aha152x_host); i++) { |
| 1434 | struct Scsi_Host *shpnt = aha152x_host[i]; | 1446 | is_complete(aha152x_host[i]); |
| 1435 | if (shpnt && HOSTDATA(shpnt)->service) { | ||
| 1436 | HOSTDATA(shpnt)->service=0; | ||
| 1437 | is_complete(shpnt); | ||
| 1438 | } | ||
| 1439 | } | 1447 | } |
| 1440 | } | 1448 | } |
| 1441 | 1449 | ||
| 1442 | /* | 1450 | /* |
| 1443 | * Interrupts handler | 1451 | * Interrupt handler |
| 1444 | * | 1452 | * |
| 1445 | */ | 1453 | */ |
| 1446 | |||
| 1447 | static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs) | 1454 | static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs) |
| 1448 | { | 1455 | { |
| 1449 | struct Scsi_Host *shpnt = lookup_irq(irqno); | 1456 | struct Scsi_Host *shpnt = lookup_irq(irqno); |
| 1457 | unsigned long flags; | ||
| 1450 | unsigned char rev, dmacntrl0; | 1458 | unsigned char rev, dmacntrl0; |
| 1451 | 1459 | ||
| 1452 | if (!shpnt) { | 1460 | if (!shpnt) { |
| @@ -1472,23 +1480,23 @@ static irqreturn_t intr(int irqno, void *dev_id, struct pt_regs *regs) | |||
| 1472 | if ((rev == 0xFF) && (dmacntrl0 == 0xFF)) | 1480 | if ((rev == 0xFF) && (dmacntrl0 == 0xFF)) |
| 1473 | return IRQ_NONE; | 1481 | return IRQ_NONE; |
| 1474 | 1482 | ||
| 1483 | if( TESTLO(DMASTAT, INTSTAT) ) | ||
| 1484 | return IRQ_NONE; | ||
| 1485 | |||
| 1475 | /* no more interrupts from the controller, while we're busy. | 1486 | /* no more interrupts from the controller, while we're busy. |
| 1476 | INTEN is restored by the BH handler */ | 1487 | INTEN is restored by the BH handler */ |
| 1477 | CLRBITS(DMACNTRL0, INTEN); | 1488 | CLRBITS(DMACNTRL0, INTEN); |
| 1478 | 1489 | ||
| 1479 | #if 0 | 1490 | DO_LOCK(flags); |
| 1480 | /* check if there is already something to be | 1491 | if( HOSTDATA(shpnt)->service==0 ) { |
| 1481 | serviced; should not happen */ | 1492 | HOSTDATA(shpnt)->service=1; |
| 1482 | if(HOSTDATA(shpnt)->service) { | 1493 | |
| 1483 | printk(KERN_ERR "aha152x%d: lost interrupt (%d)\n", HOSTNO, HOSTDATA(shpnt)->service); | 1494 | /* Poke the BH handler */ |
| 1484 | show_queues(shpnt); | 1495 | INIT_WORK(&aha152x_tq, (void *) run, NULL); |
| 1496 | schedule_work(&aha152x_tq); | ||
| 1485 | } | 1497 | } |
| 1486 | #endif | 1498 | DO_UNLOCK(flags); |
| 1487 | 1499 | ||
| 1488 | /* Poke the BH handler */ | ||
| 1489 | HOSTDATA(shpnt)->service++; | ||
| 1490 | INIT_WORK(&aha152x_tq, (void *) run, NULL); | ||
| 1491 | schedule_work(&aha152x_tq); | ||
| 1492 | return IRQ_HANDLED; | 1500 | return IRQ_HANDLED; |
| 1493 | } | 1501 | } |
| 1494 | 1502 | ||
| @@ -2527,7 +2535,18 @@ static void is_complete(struct Scsi_Host *shpnt) | |||
| 2527 | unsigned long flags; | 2535 | unsigned long flags; |
| 2528 | int pending; | 2536 | int pending; |
| 2529 | 2537 | ||
| 2538 | if(!shpnt) | ||
| 2539 | return; | ||
| 2540 | |||
| 2530 | DO_LOCK(flags); | 2541 | DO_LOCK(flags); |
| 2542 | |||
| 2543 | if( HOSTDATA(shpnt)->service==0 ) { | ||
| 2544 | DO_UNLOCK(flags); | ||
| 2545 | return; | ||
| 2546 | } | ||
| 2547 | |||
| 2548 | HOSTDATA(shpnt)->service = 0; | ||
| 2549 | |||
| 2531 | if(HOSTDATA(shpnt)->in_intr) { | 2550 | if(HOSTDATA(shpnt)->in_intr) { |
| 2532 | DO_UNLOCK(flags); | 2551 | DO_UNLOCK(flags); |
| 2533 | /* aha152x_error never returns.. */ | 2552 | /* aha152x_error never returns.. */ |
diff --git a/drivers/scsi/aha152x.h b/drivers/scsi/aha152x.h index d277613af29b..d2add24d02a3 100644 --- a/drivers/scsi/aha152x.h +++ b/drivers/scsi/aha152x.h | |||
| @@ -332,6 +332,6 @@ struct aha152x_setup { | |||
| 332 | 332 | ||
| 333 | struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *); | 333 | struct Scsi_Host *aha152x_probe_one(struct aha152x_setup *); |
| 334 | void aha152x_release(struct Scsi_Host *); | 334 | void aha152x_release(struct Scsi_Host *); |
| 335 | int aha152x_host_reset(Scsi_Cmnd *); | 335 | int aha152x_host_reset_host(struct Scsi_Host *); |
| 336 | 336 | ||
| 337 | #endif /* _AHA152X_H */ | 337 | #endif /* _AHA152X_H */ |
diff --git a/drivers/scsi/jazz_esp.c b/drivers/scsi/jazz_esp.c index 23728d1c980c..fcd304e11c26 100644 --- a/drivers/scsi/jazz_esp.c +++ b/drivers/scsi/jazz_esp.c | |||
| @@ -65,27 +65,6 @@ static int jazz_esp_release(struct Scsi_Host *shost) | |||
| 65 | return 0; | 65 | return 0; |
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | static struct scsi_host_template driver_template = { | ||
| 69 | .proc_name = "jazz_esp", | ||
| 70 | .proc_info = &esp_proc_info, | ||
| 71 | .name = "ESP 100/100a/200", | ||
| 72 | .detect = jazz_esp_detect, | ||
| 73 | .slave_alloc = esp_slave_alloc, | ||
| 74 | .slave_destroy = esp_slave_destroy, | ||
| 75 | .release = jazz_esp_release, | ||
| 76 | .info = esp_info, | ||
| 77 | .queuecommand = esp_queue, | ||
| 78 | .eh_abort_handler = esp_abort, | ||
| 79 | .eh_bus_reset_handler = esp_reset, | ||
| 80 | .can_queue = 7, | ||
| 81 | .this_id = 7, | ||
| 82 | .sg_tablesize = SG_ALL, | ||
| 83 | .cmd_per_lun = 1, | ||
| 84 | .use_clustering = DISABLE_CLUSTERING, | ||
| 85 | }; | ||
| 86 | |||
| 87 | #include "scsi_module.c" | ||
| 88 | |||
| 89 | /***************************************************************** Detection */ | 68 | /***************************************************************** Detection */ |
| 90 | static int jazz_esp_detect(struct scsi_host_template *tpnt) | 69 | static int jazz_esp_detect(struct scsi_host_template *tpnt) |
| 91 | { | 70 | { |
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c index 7de267e14458..4f39dd01936d 100644 --- a/drivers/scsi/megaraid/megaraid_sas.c +++ b/drivers/scsi/megaraid/megaraid_sas.c | |||
| @@ -793,6 +793,20 @@ megasas_queue_command(struct scsi_cmnd *scmd, void (*done) (struct scsi_cmnd *)) | |||
| 793 | return 0; | 793 | return 0; |
| 794 | } | 794 | } |
| 795 | 795 | ||
| 796 | static int megasas_slave_configure(struct scsi_device *sdev) | ||
| 797 | { | ||
| 798 | /* | ||
| 799 | * Don't export physical disk devices to the disk driver. | ||
| 800 | * | ||
| 801 | * FIXME: Currently we don't export them to the midlayer at all. | ||
| 802 | * That will be fixed once LSI engineers have audited the | ||
| 803 | * firmware for possible issues. | ||
| 804 | */ | ||
| 805 | if (sdev->channel < MEGASAS_MAX_PD_CHANNELS && sdev->type == TYPE_DISK) | ||
| 806 | return -ENXIO; | ||
| 807 | return 0; | ||
| 808 | } | ||
| 809 | |||
| 796 | /** | 810 | /** |
| 797 | * megasas_wait_for_outstanding - Wait for all outstanding cmds | 811 | * megasas_wait_for_outstanding - Wait for all outstanding cmds |
| 798 | * @instance: Adapter soft state | 812 | * @instance: Adapter soft state |
| @@ -943,6 +957,7 @@ static struct scsi_host_template megasas_template = { | |||
| 943 | .module = THIS_MODULE, | 957 | .module = THIS_MODULE, |
| 944 | .name = "LSI Logic SAS based MegaRAID driver", | 958 | .name = "LSI Logic SAS based MegaRAID driver", |
| 945 | .proc_name = "megaraid_sas", | 959 | .proc_name = "megaraid_sas", |
| 960 | .slave_configure = megasas_slave_configure, | ||
| 946 | .queuecommand = megasas_queue_command, | 961 | .queuecommand = megasas_queue_command, |
| 947 | .eh_device_reset_handler = megasas_reset_device, | 962 | .eh_device_reset_handler = megasas_reset_device, |
| 948 | .eh_bus_reset_handler = megasas_reset_bus_host, | 963 | .eh_bus_reset_handler = megasas_reset_bus_host, |
| @@ -1071,20 +1086,6 @@ megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd, | |||
| 1071 | break; | 1086 | break; |
| 1072 | } | 1087 | } |
| 1073 | 1088 | ||
| 1074 | /* | ||
| 1075 | * Don't export physical disk devices to mid-layer. | ||
| 1076 | */ | ||
| 1077 | if (!MEGASAS_IS_LOGICAL(cmd->scmd) && | ||
| 1078 | (hdr->cmd_status == MFI_STAT_OK) && | ||
| 1079 | (cmd->scmd->cmnd[0] == INQUIRY)) { | ||
| 1080 | |||
| 1081 | if (((*(u8 *) cmd->scmd->request_buffer) & 0x1F) == | ||
| 1082 | TYPE_DISK) { | ||
| 1083 | cmd->scmd->result = DID_BAD_TARGET << 16; | ||
| 1084 | exception = 1; | ||
| 1085 | } | ||
| 1086 | } | ||
| 1087 | |||
| 1088 | case MFI_CMD_LD_READ: | 1089 | case MFI_CMD_LD_READ: |
| 1089 | case MFI_CMD_LD_WRITE: | 1090 | case MFI_CMD_LD_WRITE: |
| 1090 | 1091 | ||
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c index 0c9edb7051f4..5609847e254a 100644 --- a/drivers/scsi/pcmcia/aha152x_stub.c +++ b/drivers/scsi/pcmcia/aha152x_stub.c | |||
| @@ -275,10 +275,8 @@ static int aha152x_resume(struct pcmcia_device *dev) | |||
| 275 | 275 | ||
| 276 | link->state &= ~DEV_SUSPEND; | 276 | link->state &= ~DEV_SUSPEND; |
| 277 | if (link->state & DEV_CONFIG) { | 277 | if (link->state & DEV_CONFIG) { |
| 278 | Scsi_Cmnd tmp; | ||
| 279 | pcmcia_request_configuration(link->handle, &link->conf); | 278 | pcmcia_request_configuration(link->handle, &link->conf); |
| 280 | tmp.device->host = info->host; | 279 | aha152x_host_reset_host(info->host); |
| 281 | aha152x_host_reset(&tmp); | ||
| 282 | } | 280 | } |
| 283 | 281 | ||
| 284 | return 0; | 282 | return 0; |
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 5cc97b721661..ff82ccfbb106 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
| @@ -1308,7 +1308,7 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd) | |||
| 1308 | * the request was not marked fast fail. Note that above, | 1308 | * the request was not marked fast fail. Note that above, |
| 1309 | * even if the request is marked fast fail, we still requeue | 1309 | * even if the request is marked fast fail, we still requeue |
| 1310 | * for queue congestion conditions (QUEUE_FULL or BUSY) */ | 1310 | * for queue congestion conditions (QUEUE_FULL or BUSY) */ |
| 1311 | if ((++scmd->retries) < scmd->allowed | 1311 | if ((++scmd->retries) <= scmd->allowed |
| 1312 | && !blk_noretry_request(scmd->request)) { | 1312 | && !blk_noretry_request(scmd->request)) { |
| 1313 | return NEEDS_RETRY; | 1313 | return NEEDS_RETRY; |
| 1314 | } else { | 1314 | } else { |
| @@ -1433,7 +1433,7 @@ static void scsi_eh_flush_done_q(struct list_head *done_q) | |||
| 1433 | list_del_init(&scmd->eh_entry); | 1433 | list_del_init(&scmd->eh_entry); |
| 1434 | if (scsi_device_online(scmd->device) && | 1434 | if (scsi_device_online(scmd->device) && |
| 1435 | !blk_noretry_request(scmd->request) && | 1435 | !blk_noretry_request(scmd->request) && |
| 1436 | (++scmd->retries < scmd->allowed)) { | 1436 | (++scmd->retries <= scmd->allowed)) { |
| 1437 | SCSI_LOG_ERROR_RECOVERY(3, printk("%s: flush" | 1437 | SCSI_LOG_ERROR_RECOVERY(3, printk("%s: flush" |
| 1438 | " retry cmd: %p\n", | 1438 | " retry cmd: %p\n", |
| 1439 | current->comm, | 1439 | current->comm, |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 4362dcde74af..701a328f7beb 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -1498,7 +1498,7 @@ static void scsi_kill_request(struct request *req, request_queue_t *q) | |||
| 1498 | static void scsi_softirq_done(struct request *rq) | 1498 | static void scsi_softirq_done(struct request *rq) |
| 1499 | { | 1499 | { |
| 1500 | struct scsi_cmnd *cmd = rq->completion_data; | 1500 | struct scsi_cmnd *cmd = rq->completion_data; |
| 1501 | unsigned long wait_for = cmd->allowed * cmd->timeout_per_command; | 1501 | unsigned long wait_for = (cmd->allowed + 1) * cmd->timeout_per_command; |
| 1502 | int disposition; | 1502 | int disposition; |
| 1503 | 1503 | ||
| 1504 | INIT_LIST_HEAD(&cmd->eh_entry); | 1504 | INIT_LIST_HEAD(&cmd->eh_entry); |
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 5acb83ca5ae5..f9ecc3dea7df 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c | |||
| @@ -752,8 +752,20 @@ static int scsi_add_lun(struct scsi_device *sdev, char *inq_result, int *bflags) | |||
| 752 | 752 | ||
| 753 | transport_configure_device(&sdev->sdev_gendev); | 753 | transport_configure_device(&sdev->sdev_gendev); |
| 754 | 754 | ||
| 755 | if (sdev->host->hostt->slave_configure) | 755 | if (sdev->host->hostt->slave_configure) { |
| 756 | sdev->host->hostt->slave_configure(sdev); | 756 | int ret = sdev->host->hostt->slave_configure(sdev); |
| 757 | if (ret) { | ||
| 758 | /* | ||
| 759 | * if LLDD reports slave not present, don't clutter | ||
| 760 | * console with alloc failure messages | ||
| 761 | */ | ||
| 762 | if (ret != -ENXIO) { | ||
| 763 | sdev_printk(KERN_ERR, sdev, | ||
| 764 | "failed to configure device\n"); | ||
| 765 | } | ||
| 766 | return SCSI_SCAN_NO_RESPONSE; | ||
| 767 | } | ||
| 768 | } | ||
| 757 | 769 | ||
| 758 | /* | 770 | /* |
| 759 | * Ok, the device is now all set up, we can | 771 | * Ok, the device is now all set up, we can |
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index f2c9acf11bd0..929032e370db 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
| @@ -1498,8 +1498,7 @@ fc_remote_port_add(struct Scsi_Host *shost, int channel, | |||
| 1498 | } | 1498 | } |
| 1499 | 1499 | ||
| 1500 | /* Search the bindings array */ | 1500 | /* Search the bindings array */ |
| 1501 | if (likely((ids->roles & FC_RPORT_ROLE_FCP_TARGET) && | 1501 | if (fc_host_tgtid_bind_type(shost) != FC_TGTID_BIND_NONE) { |
| 1502 | (fc_host_tgtid_bind_type(shost) != FC_TGTID_BIND_NONE))) { | ||
| 1503 | 1502 | ||
| 1504 | /* search for a matching consistent binding */ | 1503 | /* search for a matching consistent binding */ |
| 1505 | 1504 | ||
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 2a547538d444..5a0a19322d01 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
| @@ -2162,7 +2162,7 @@ sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size) | |||
| 2162 | 2162 | ||
| 2163 | srp->res_used = 1; | 2163 | srp->res_used = 1; |
| 2164 | SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size)); | 2164 | SCSI_LOG_TIMEOUT(4, printk("sg_link_reserve: size=%d\n", size)); |
| 2165 | rem = size = (size + 1) & (~1); /* round to even for aha1542 */ | 2165 | rem = size; |
| 2166 | 2166 | ||
| 2167 | for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) { | 2167 | for (k = 0; k < rsv_schp->k_use_sg; ++k, ++sg) { |
| 2168 | num = sg->length; | 2168 | num = sg->length; |
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c index f4854c33f48d..2627000ca653 100644 --- a/drivers/scsi/sym53c8xx_2/sym_hipd.c +++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c | |||
| @@ -919,6 +919,8 @@ static int sym_prepare_setting(struct Scsi_Host *shost, struct sym_hcb *np, stru | |||
| 919 | 919 | ||
| 920 | tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED); | 920 | tp->usrflags |= (SYM_DISC_ENABLED | SYM_TAGS_ENABLED); |
| 921 | tp->usrtags = SYM_SETUP_MAX_TAG; | 921 | tp->usrtags = SYM_SETUP_MAX_TAG; |
| 922 | tp->usr_width = np->maxwide; | ||
| 923 | tp->usr_period = 9; | ||
| 922 | 924 | ||
| 923 | sym_nvram_setup_target(tp, i, nvram); | 925 | sym_nvram_setup_target(tp, i, nvram); |
| 924 | 926 | ||
