Date: Thu, 13 Jul 2006 21:15:04 -0400 From: Jung-uk Kim <jkim@FreeBSD.org> To: freebsd-scsi@FreeBSD.org Subject: [PATCH] Be less verbose with removable da(4). Message-ID: <200607132115.09178.jkim@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
--Boundary-00=_dAvtEycNiuDyQgk Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch shuts up SCSI errors when there's no medium in the removable SCSI disk drive, e.g., flash card reader. We could completely shut it up with SF_NO_PRINT flag from dagetcapacity() like scsi_cd.c does but I decided to add another flag, i.e., SF_QUIET_NM, because we don't want to miss any other errors and it can be used in scsi_cd.c and others later. Thanks! Jung-uk Kim --Boundary-00=_dAvtEycNiuDyQgk Content-Type: text/plain; charset="iso-8859-1"; name="removable_da.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="removable_da.diff" Index: sys/cam/scsi/scsi_all.c =================================================================== RCS file: /home/ncvs/src/sys/cam/scsi/scsi_all.c,v retrieving revision 1.48 diff -u -r1.48 scsi_all.c --- sys/cam/scsi/scsi_all.c 14 Apr 2005 03:52:50 -0000 1.48 +++ sys/cam/scsi/scsi_all.c 14 Jul 2006 00:54:45 -0000 @@ -1706,6 +1706,9 @@ */ action &= ~(SS_MASK|SSQ_MASK|SS_ERRMASK); action |= SS_NOP|SSQ_PRINT_SENSE; + } else if (sense_key == SSD_KEY_NOT_READY) { + if ((sense_flags & SF_QUIET_NM) != 0 && asc == 0x3a) + action &= ~SSQ_PRINT_SENSE; } else if (sense_key == SSD_KEY_ILLEGAL_REQUEST) { if ((sense_flags & SF_QUIET_IR) != 0) action &= ~SSQ_PRINT_SENSE; Index: sys/cam/scsi/scsi_all.h =================================================================== RCS file: /home/ncvs/src/sys/cam/scsi/scsi_all.h,v retrieving revision 1.25 diff -u -r1.25 scsi_all.h --- sys/cam/scsi/scsi_all.h 30 May 2006 22:44:00 -0000 1.25 +++ sys/cam/scsi/scsi_all.h 14 Jul 2006 00:54:46 -0000 @@ -936,7 +936,7 @@ #define SF_NO_PRINT 0x02 #define SF_QUIET_IR 0x04 /* Be quiet about Illegal Request reponses */ #define SF_PRINT_ALWAYS 0x08 - +#define SF_QUIET_NM 0x10 /* Be quiet about Medium not present response */ const char * scsi_op_desc(u_int16_t opcode, struct scsi_inquiry_data *inq_data); Index: sys/cam/scsi/scsi_da.c =================================================================== RCS file: /home/ncvs/src/sys/cam/scsi/scsi_da.c,v retrieving revision 1.190 diff -u -r1.190 scsi_da.c --- sys/cam/scsi/scsi_da.c 18 Apr 2006 22:01:59 -0000 1.190 +++ sys/cam/scsi/scsi_da.c 14 Jul 2006 00:54:46 -0000 @@ -1751,12 +1751,15 @@ struct scsi_read_capacity_data_long *rcaplong; uint32_t block_len; uint64_t maxsector; - int error; + int error, sf; softc = (struct da_softc *)periph->softc; block_len = 0; maxsector = 0; error = 0; + sf = SF_RETRY_UA; + if (softc->flags & DA_FLAG_PACK_REMOVABLE) + sf |= SF_QUIET_NM; /* Do a read capacity */ rcap = (struct scsi_read_capacity_data *)malloc(sizeof(*rcaplong), @@ -1775,7 +1778,7 @@ error = cam_periph_runccb(ccb, daerror, /*cam_flags*/CAM_RETRY_SELTO, - /*sense_flags*/SF_RETRY_UA, + /*sense_flags*/sf, softc->disk->d_devstat); if ((ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) @@ -1810,7 +1813,7 @@ error = cam_periph_runccb(ccb, daerror, /*cam_flags*/CAM_RETRY_SELTO, - /*sense_flags*/SF_RETRY_UA, + /*sense_flags*/sf, softc->disk->d_devstat); if ((ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) Index: sys/geom/geom_disk.c =================================================================== RCS file: /home/ncvs/src/sys/geom/geom_disk.c,v retrieving revision 1.99 diff -u -r1.99 geom_disk.c --- sys/geom/geom_disk.c 10 Apr 2006 03:55:13 -0000 1.99 +++ sys/geom/geom_disk.c 14 Jul 2006 00:54:46 -0000 @@ -133,7 +133,7 @@ if (dp->d_open != NULL) { g_disk_lock_giant(dp); error = dp->d_open(dp); - if (error != 0) + if (error != 0 && bootverbose) printf("Opened disk %s -> %d\n", pp->name, error); g_disk_unlock_giant(dp); --Boundary-00=_dAvtEycNiuDyQgk--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607132115.09178.jkim>