Module Name:    src
Committed By:   palle
Date:           Sat Jun 22 10:07:46 UTC 2024

Modified Files:
        src/sys/dev/scsipi: cd.c scsipiconf.h

Log Message:
Add quirk for devices that does not handle READ_DISCINFO


To generate a diff of this commit:
cvs rdiff -u -r1.354 -r1.355 src/sys/dev/scsipi/cd.c
cvs rdiff -u -r1.130 -r1.131 src/sys/dev/scsipi/scsipiconf.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/scsipi/cd.c
diff -u src/sys/dev/scsipi/cd.c:1.354 src/sys/dev/scsipi/cd.c:1.355
--- src/sys/dev/scsipi/cd.c:1.354	Sun Jun 26 21:00:28 2022
+++ src/sys/dev/scsipi/cd.c	Sat Jun 22 10:07:46 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd.c,v 1.354 2022/06/26 21:00:28 andvar Exp $	*/
+/*	$NetBSD: cd.c,v 1.355 2024/06/22 10:07:46 palle Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001, 2003, 2004, 2005, 2008 The NetBSD Foundation,
@@ -50,7 +50,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.354 2022/06/26 21:00:28 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd.c,v 1.355 2024/06/22 10:07:46 palle Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1545,6 +1545,11 @@ read_cd_capacity(struct scsipi_periph *p
 		*blksize = 2048;	/* some drives lie ! */
 	}
 
+	/* If the device doesn't handle READ_DISCINFO properly, */
+	/* return the dummies */
+	if (periph->periph_quirks & PQUIRK_NOREADDISCINFO)
+		return 0;
+
 	/* recordables have READ_DISCINFO implemented */
 	flags = XS_CTL_DATA_IN | XS_CTL_SILENT;
 	memset(&di_cmd, 0, sizeof(di_cmd));
@@ -2414,11 +2419,12 @@ cd_setblksize(struct cd_softc *cd)
 	}
 
 	if (bsize == 0) {
-printf("cd_setblksize: trying to change bsize, but no blk_desc\n");
+		printf("cd_setblksize: trying to change bsize, but no blk_desc\n");
+		
 		return (EINVAL);
 	}
 	if (_3btol(bdesc->blklen) == 2048) {
-printf("cd_setblksize: trying to change bsize, but blk_desc is correct\n");
+		printf("cd_setblksize: trying to change bsize, but blk_desc is correct\n");
 		return (EINVAL);
 	}
 

Index: src/sys/dev/scsipi/scsipiconf.h
diff -u src/sys/dev/scsipi/scsipiconf.h:1.130 src/sys/dev/scsipi/scsipiconf.h:1.131
--- src/sys/dev/scsipi/scsipiconf.h:1.130	Thu Mar 28 10:44:29 2019
+++ src/sys/dev/scsipi/scsipiconf.h	Sat Jun 22 10:07:46 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: scsipiconf.h,v 1.130 2019/03/28 10:44:29 kardel Exp $	*/
+/*	$NetBSD: scsipiconf.h,v 1.131 2024/06/22 10:07:46 palle Exp $	*/
 
 /*-
  * Copyright (c) 1998, 1999, 2000, 2004 The NetBSD Foundation, Inc.
@@ -504,6 +504,8 @@ struct scsipi_periph {
 #define PQUIRK_NOREPSUPPOPC     0x01000000      /* does not grok
 						   REPORT SUPPORTED OPCODES
 						   to fetch device timeouts */
+#define PQUIRK_NOREADDISCINFO   0x02000000      /* device doesn't do
+						   READ_DISCINFO properly */
 /*
  * Error values an adapter driver may return
  */

Reply via email to