Module Name: src
Committed By: palle
Date: Mon Jun 10 19:54:24 UTC 2024
Modified Files:
src/sys/arch/sparc64/dev: vdsk.c
Log Message:
sun4v: add incomplete implementation of the CD-specific READ_DISCINFO and
READ_TRACKINFO - probably needs some more work though...
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/sparc64/dev/vdsk.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/sparc64/dev/vdsk.c
diff -u src/sys/arch/sparc64/dev/vdsk.c:1.12 src/sys/arch/sparc64/dev/vdsk.c:1.13
--- src/sys/arch/sparc64/dev/vdsk.c:1.12 Sun Jun 9 19:13:54 2024
+++ src/sys/arch/sparc64/dev/vdsk.c Mon Jun 10 19:54:24 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: vdsk.c,v 1.12 2024/06/09 19:13:54 palle Exp $ */
+/* $NetBSD: vdsk.c,v 1.13 2024/06/10 19:54:24 palle Exp $ */
/* $OpenBSD: vdsk.c,v 1.46 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2009, 2011 Mark Kettenis
@@ -219,6 +219,8 @@ void vdsk_scsi_inquiry(struct vdsk_softc
void vdsk_scsi_capacity(struct vdsk_softc *sc, struct scsipi_xfer *);
void vdsk_scsi_capacity16(struct vdsk_softc *sc, struct scsipi_xfer *);
void vdsk_scsi_report_luns(struct vdsk_softc *sc, struct scsipi_xfer *);
+void vdsk_scsi_read_discinfo(struct vdsk_softc *sc, struct scsipi_xfer *);
+void vdsk_scsi_read_trackinfo(struct vdsk_softc *sc, struct scsipi_xfer *);
void vdsk_scsi_done(struct scsipi_xfer *, int);
int
@@ -1049,6 +1051,14 @@ vdsk_scsi_cmd(struct vdsk_softc *sc, str
vdsk_scsi_report_luns(sc, xs);
return;
+ case READ_DISCINFO:
+ vdsk_scsi_read_discinfo(sc, xs);
+ return;
+
+ case READ_TRACKINFO:
+ vdsk_scsi_read_trackinfo(sc, xs);
+ return;
+
case SCSI_TEST_UNIT_READY:
case START_STOP:
case SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL:
@@ -1340,6 +1350,32 @@ vdsk_scsi_report_luns(struct vdsk_softc
}
void
+vdsk_scsi_read_discinfo(struct vdsk_softc *sc, struct scsipi_xfer *xs)
+{
+ DPRINTF(("%s()\n", __FUNCTION__));
+
+ struct scsipi_read_discinfo_data read_discinfo_data;
+ bzero(&read_discinfo_data, sizeof(read_discinfo_data));
+
+ bcopy(&read_discinfo_data, xs->data, MIN(sizeof(read_discinfo_data), xs->datalen));
+
+ vdsk_scsi_done(xs, XS_NOERROR);
+}
+
+void
+vdsk_scsi_read_trackinfo(struct vdsk_softc *sc, struct scsipi_xfer *xs)
+{
+ DPRINTF(("%s()\n", __FUNCTION__));
+
+ struct scsipi_read_trackinfo_data read_trackinfo_data;
+ bzero(&read_trackinfo_data, sizeof(read_trackinfo_data));
+
+ bcopy(&read_trackinfo_data, xs->data, MIN(sizeof(read_trackinfo_data), xs->datalen));
+
+ vdsk_scsi_done(xs, XS_NOERROR);
+}
+
+void
vdsk_scsi_done(struct scsipi_xfer *xs, int error)
{
xs->error = error;