[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