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