Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[SCSI] scsi_dh_rdac: Retry for NOT_READY(02/04/01) in rdac device handler

During device discovery read capacity fails with 0x020401 and sets the
device size to 0. As a reason any I/O submitted to this path gets
killed at sd_prep_fn with BLKPREP_KILL. This patch is to retry for
0x020401. NEED_RETRY in scsi_decide_disposition does not give
sufficient time for the device to become ready.

Signed-off-by: Vijay Chauhan <vijay.chauhan@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>

authored by

Chauhan, Vijay and committed by
James Bottomley
8f032263 fa858456

+6
+6
drivers/scsi/device_handler/scsi_dh_rdac.c
··· 561 561 struct rdac_dh_data *h = get_rdac_data(sdev); 562 562 switch (sense_hdr->sense_key) { 563 563 case NOT_READY: 564 + if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x01) 565 + /* LUN Not Ready - Logical Unit Not Ready and is in 566 + * the process of becoming ready 567 + * Just retry. 568 + */ 569 + return ADD_TO_MLQUEUE; 564 570 if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x81) 565 571 /* LUN Not Ready - Storage firmware incompatible 566 572 * Manual code synchonisation required.