diff options
author | Mike Anderson <andmike@linux.vnet.ibm.com> | 2008-08-12 15:11:57 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-08-29 10:13:51 -0400 |
commit | c7dbb627a2505f42b2e6b3581f3716d73453dd0c (patch) | |
tree | 15e1f8f906a9221b13c66b37ea2963e29b2bd888 | |
parent | 025270f0eaa2def673747ed6f77cca41f694f354 (diff) |
[SCSI] scsi_dh: make check_sense return ADD_TO_MLQUEUE
Change scsi_dh check_sense functions to return ADD_TO_MLQUEUE
to allow retries to occur without restriction of blk_noretry_request
check.
Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com>
Acked-by: Chandra Seetharaman <sekharan@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r-- | drivers/scsi/device_handler/scsi_dh_alua.c | 12 | ||||
-rw-r--r-- | drivers/scsi/device_handler/scsi_dh_emc.c | 4 | ||||
-rw-r--r-- | drivers/scsi/device_handler/scsi_dh_rdac.c | 4 |
3 files changed, 10 insertions, 10 deletions
diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index 994da56fffed..708e475896b9 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c | |||
@@ -425,7 +425,7 @@ static int alua_check_sense(struct scsi_device *sdev, | |||
425 | /* | 425 | /* |
426 | * LUN Not Accessible - ALUA state transition | 426 | * LUN Not Accessible - ALUA state transition |
427 | */ | 427 | */ |
428 | return NEEDS_RETRY; | 428 | return ADD_TO_MLQUEUE; |
429 | if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x0b) | 429 | if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x0b) |
430 | /* | 430 | /* |
431 | * LUN Not Accessible -- Target port in standby state | 431 | * LUN Not Accessible -- Target port in standby state |
@@ -447,18 +447,18 @@ static int alua_check_sense(struct scsi_device *sdev, | |||
447 | /* | 447 | /* |
448 | * Power On, Reset, or Bus Device Reset, just retry. | 448 | * Power On, Reset, or Bus Device Reset, just retry. |
449 | */ | 449 | */ |
450 | return NEEDS_RETRY; | 450 | return ADD_TO_MLQUEUE; |
451 | if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x06) { | 451 | if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x06) { |
452 | /* | 452 | /* |
453 | * ALUA state changed | 453 | * ALUA state changed |
454 | */ | 454 | */ |
455 | return NEEDS_RETRY; | 455 | return ADD_TO_MLQUEUE; |
456 | } | 456 | } |
457 | if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x07) { | 457 | if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x07) { |
458 | /* | 458 | /* |
459 | * Implicit ALUA state transition failed | 459 | * Implicit ALUA state transition failed |
460 | */ | 460 | */ |
461 | return NEEDS_RETRY; | 461 | return ADD_TO_MLQUEUE; |
462 | } | 462 | } |
463 | break; | 463 | break; |
464 | } | 464 | } |
@@ -490,7 +490,7 @@ static int alua_stpg(struct scsi_device *sdev, int state, | |||
490 | if (!err) | 490 | if (!err) |
491 | return SCSI_DH_IO; | 491 | return SCSI_DH_IO; |
492 | err = alua_check_sense(sdev, &sense_hdr); | 492 | err = alua_check_sense(sdev, &sense_hdr); |
493 | if (retry > 0 && err == NEEDS_RETRY) { | 493 | if (retry > 0 && err == ADD_TO_MLQUEUE) { |
494 | retry--; | 494 | retry--; |
495 | goto retry; | 495 | goto retry; |
496 | } | 496 | } |
@@ -535,7 +535,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h) | |||
535 | return SCSI_DH_IO; | 535 | return SCSI_DH_IO; |
536 | 536 | ||
537 | err = alua_check_sense(sdev, &sense_hdr); | 537 | err = alua_check_sense(sdev, &sense_hdr); |
538 | if (err == NEEDS_RETRY) | 538 | if (err == ADD_TO_MLQUEUE) |
539 | goto retry; | 539 | goto retry; |
540 | sdev_printk(KERN_INFO, sdev, | 540 | sdev_printk(KERN_INFO, sdev, |
541 | "%s: rtpg sense code %02x/%02x/%02x\n", | 541 | "%s: rtpg sense code %02x/%02x/%02x\n", |
diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c index b9d23e9e9a44..ef693e8412e9 100644 --- a/drivers/scsi/device_handler/scsi_dh_emc.c +++ b/drivers/scsi/device_handler/scsi_dh_emc.c | |||
@@ -439,7 +439,7 @@ static int clariion_check_sense(struct scsi_device *sdev, | |||
439 | * Unit Attention Code. This is the first IO | 439 | * Unit Attention Code. This is the first IO |
440 | * to the new path, so just retry. | 440 | * to the new path, so just retry. |
441 | */ | 441 | */ |
442 | return NEEDS_RETRY; | 442 | return ADD_TO_MLQUEUE; |
443 | break; | 443 | break; |
444 | } | 444 | } |
445 | 445 | ||
@@ -514,7 +514,7 @@ retry: | |||
514 | return SCSI_DH_IO; | 514 | return SCSI_DH_IO; |
515 | 515 | ||
516 | err = clariion_check_sense(sdev, &sshdr); | 516 | err = clariion_check_sense(sdev, &sshdr); |
517 | if (retry > 0 && err == NEEDS_RETRY) { | 517 | if (retry > 0 && err == ADD_TO_MLQUEUE) { |
518 | retry--; | 518 | retry--; |
519 | goto retry; | 519 | goto retry; |
520 | } | 520 | } |
diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c index 2dee69da35cf..6e2f130d56de 100644 --- a/drivers/scsi/device_handler/scsi_dh_rdac.c +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c | |||
@@ -551,7 +551,7 @@ static int rdac_check_sense(struct scsi_device *sdev, | |||
551 | * | 551 | * |
552 | * Just retry and wait. | 552 | * Just retry and wait. |
553 | */ | 553 | */ |
554 | return NEEDS_RETRY; | 554 | return ADD_TO_MLQUEUE; |
555 | break; | 555 | break; |
556 | case ILLEGAL_REQUEST: | 556 | case ILLEGAL_REQUEST: |
557 | if (sense_hdr->asc == 0x94 && sense_hdr->ascq == 0x01) { | 557 | if (sense_hdr->asc == 0x94 && sense_hdr->ascq == 0x01) { |
@@ -568,7 +568,7 @@ static int rdac_check_sense(struct scsi_device *sdev, | |||
568 | /* | 568 | /* |
569 | * Power On, Reset, or Bus Device Reset, just retry. | 569 | * Power On, Reset, or Bus Device Reset, just retry. |
570 | */ | 570 | */ |
571 | return NEEDS_RETRY; | 571 | return ADD_TO_MLQUEUE; |
572 | break; | 572 | break; |
573 | } | 573 | } |
574 | /* success just means we do not care what scsi-ml does */ | 574 | /* success just means we do not care what scsi-ml does */ |