[Midnightbsd-cvs] src [9484] trunk/sys/cam/scsi: Refactored scsi_xpt use of device_has_vpd

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Mar 5 15:02:49 EST 2017


Revision: 9484
          http://svnweb.midnightbsd.org/src/?rev=9484
Author:   laffer1
Date:     2017-03-05 15:02:49 -0500 (Sun, 05 Mar 2017)
Log Message:
-----------
Refactored scsi_xpt use of device_has_vpd

Modified Paths:
--------------
    trunk/sys/cam/scsi/scsi_all.c
    trunk/sys/cam/scsi/scsi_all.h
    trunk/sys/cam/scsi/scsi_xpt.c

Modified: trunk/sys/cam/scsi/scsi_all.c
===================================================================
--- trunk/sys/cam/scsi/scsi_all.c	2017-03-05 20:02:24 UTC (rev 9483)
+++ trunk/sys/cam/scsi/scsi_all.c	2017-03-05 20:02:49 UTC (rev 9484)
@@ -40,6 +40,9 @@
 #include <sys/systm.h>
 #include <sys/libkern.h>
 #include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/malloc.h>
+#include <sys/mutex.h>
 #include <sys/sysctl.h>
 #else
 #include <errno.h>
@@ -55,7 +58,13 @@
 #include <cam/scsi/scsi_all.h>
 #include <sys/ata.h>
 #include <sys/sbuf.h>
-#ifndef _KERNEL
+
+#ifdef _KERNEL
+#include <cam/cam_periph.h>
+#include <cam/cam_xpt_sim.h>
+#include <cam/cam_xpt_periph.h>
+#include <cam/cam_xpt_internal.h>
+#else
 #include <camlib.h>
 #include <stddef.h>
 
@@ -6252,6 +6261,28 @@
 }
 
 #ifdef _KERNEL
+int
+scsi_vpd_supported_page(struct cam_periph *periph, uint8_t page_id)
+{
+	struct cam_ed *device;
+	struct scsi_vpd_supported_pages *vpds;
+	int i, num_pages;
+
+	device = periph->path->device;
+	vpds = (struct scsi_vpd_supported_pages *)device->supported_vpds;
+
+	if (vpds != NULL) {
+		num_pages = device->supported_vpds_len -
+		    SVPD_SUPPORTED_PAGES_HDR_LEN;
+		for (i = 0; i < num_pages; i++) {
+			if (vpds->page_list[i] == page_id)
+				return (1);
+		}
+	}
+
+	return (0);
+}
+
 static void
 init_scsi_delay(void)
 {

Modified: trunk/sys/cam/scsi/scsi_all.h
===================================================================
--- trunk/sys/cam/scsi/scsi_all.h	2017-03-05 20:02:24 UTC (rev 9483)
+++ trunk/sys/cam/scsi/scsi_all.h	2017-03-05 20:02:49 UTC (rev 9484)
@@ -2257,6 +2257,8 @@
 char *		scsi_sense_string(struct ccb_scsiio *csio,
 				  char *str, int str_len);
 void		scsi_sense_print(struct ccb_scsiio *csio);
+int 		scsi_vpd_supported_page(struct cam_periph *periph,
+					uint8_t page_id);
 #else /* _KERNEL */
 int		scsi_command_string(struct cam_device *device,
 				    struct ccb_scsiio *csio, struct sbuf *sb);

Modified: trunk/sys/cam/scsi/scsi_xpt.c
===================================================================
--- trunk/sys/cam/scsi/scsi_xpt.c	2017-03-05 20:02:24 UTC (rev 9483)
+++ trunk/sys/cam/scsi/scsi_xpt.c	2017-03-05 20:02:49 UTC (rev 9484)
@@ -556,7 +556,6 @@
 static cam_status	proberegister(struct cam_periph *periph,
 				      void *arg);
 static void	 probeschedule(struct cam_periph *probe_periph);
-static int	 device_has_vpd(struct cam_ed *device, uint8_t page_id);
 static void	 probestart(struct cam_periph *periph, union ccb *start_ccb);
 static void	 proberequestdefaultnegotiation(struct cam_periph *periph);
 static int       proberequestbackoff(struct cam_periph *periph,
@@ -708,21 +707,6 @@
 	xpt_schedule(periph, CAM_PRIORITY_XPT);
 }
 
-static int
-device_has_vpd(struct cam_ed *device, uint8_t page_id)
-{
-	int i, num_pages;
-	struct scsi_vpd_supported_pages *vpds;
-
-	vpds = (struct scsi_vpd_supported_pages *)device->supported_vpds;
-	num_pages = device->supported_vpds_len - SVPD_SUPPORTED_PAGES_HDR_LEN;
-	for (i = 0;i < num_pages;i++)
-		if (vpds->page_list[i] == page_id)
-			return 1;
-
-	return 0;
-}
-
 static void
 probestart(struct cam_periph *periph, union ccb *start_ccb)
 {
@@ -910,11 +894,9 @@
 	case PROBE_DEVICE_ID:
 	{
 		struct scsi_vpd_device_id *devid;
-		struct cam_ed *device;
 
 		devid = NULL;
-		device = periph->path->device;
-		if (device_has_vpd(device, SVPD_DEVICE_ID))
+		if (scsi_vpd_supported_page(periph, SVPD_DEVICE_ID))
 			devid = malloc(SVPD_DEVICE_ID_MAX_SIZE, M_CAMXPT,
 			    M_NOWAIT | M_ZERO);
 
@@ -952,7 +934,7 @@
 			device->serial_num_len = 0;
 		}
 
-		if (device_has_vpd(device, SVPD_UNIT_SERIAL_NUMBER))
+		if (scsi_vpd_supported_page(periph, SVPD_UNIT_SERIAL_NUMBER))
 			serial_buf = (struct scsi_vpd_unit_serial_number *)
 				malloc(sizeof(*serial_buf), M_CAMXPT,
 				    M_NOWAIT|M_ZERO);



More information about the Midnightbsd-cvs mailing list