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;

Reply via email to