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
*/