Page MenuHomeFreeBSD

D48843.diff
No OneTemporary

D48843.diff

diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c
--- a/sys/cam/scsi/scsi_da.c
+++ b/sys/cam/scsi/scsi_da.c
@@ -120,7 +120,8 @@
DA_FLAG_CAN_ATA_SUPCAP = 0x020000,
DA_FLAG_CAN_ATA_ZONE = 0x040000,
DA_FLAG_TUR_PENDING = 0x080000,
- DA_FLAG_UNMAPPEDIO = 0x100000
+ DA_FLAG_UNMAPPEDIO = 0x100000,
+ DA_FLAG_NO_READ_RETRY = 0x200000,
} da_flags;
#define DA_FLAG_STRING \
"\020" \
@@ -144,7 +145,8 @@
"\022CAN_ATA_SUPACP" \
"\023CAN_ATA_ZONE" \
"\024TUR_PENDING" \
- "\025UNMAPPEDIO"
+ "\025UNMAPPEDIO" \
+ "\026NO_READ_RETRY" \
typedef enum {
DA_Q_NONE = 0x00,
@@ -191,7 +193,8 @@
DA_CCB_PROBE_ATA_ZONE = 0x11,
DA_CCB_PROBE_WP = 0x12,
DA_CCB_TYPE_MASK = 0x1F,
- DA_CCB_RETRY_UA = 0x20
+ DA_CCB_RETRY_UA = 0x20,
+ DA_CCB_NO_RETRY = 0x40
} da_ccb_state;
/*
@@ -3511,6 +3514,9 @@
return;
}
start_ccb->ccb_h.ccb_state = DA_CCB_BUFFER_IO;
+ if ((softc->flags & DA_FLAG_NO_READ_RETRY) != 0 &&
+ bp->bio_cmd == BIO_READ)
+ start_ccb->ccb_h.ccb_state |= DA_CCB_NO_RETRY;
start_ccb->ccb_h.flags |= CAM_UNLOCKED;
start_ccb->ccb_h.softtimeout = sbttotv(da_default_softtimeout);
@@ -4595,6 +4601,8 @@
if ((csio->ccb_h.ccb_state & DA_CCB_RETRY_UA) != 0)
sf |= SF_RETRY_UA;
+ if ((csio->ccb_h.ccb_state & DA_CCB_NO_RETRY) != 0)
+ sf |= SF_NO_RETRY;
error = daerror(done_ccb, CAM_RETRY_SELTO, sf);
if (error == ERESTART) {

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 6, 1:39 AM (20 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16478874
Default Alt Text
D48843.diff (1 KB)

Event Timeline