History log of /freebsd-current/sys/cam/scsi/scsi_enc.h
Revision Date Author Comments
# 71625ec9 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: one-line .c comment pattern

Remove /^/[*/]\s*\$FreeBSD\$.*\n/


# 4d846d26 10-May-2023 Warner Losh <imp@FreeBSD.org>

spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD

The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch
up to that fact and revert to their recommended match of BSD-2-Clause.

Discussed with: pfg
MFC After: 3 days
Sponsored by: Netflix


# 170a0a8e 25-Aug-2021 Alan Somers <asomers@FreeBSD.org>

ses: minor cleanup

* Prefer variables of small scope rather than large scope
* Remove a magic number
* style(9) for return statements
* Remove the get_enc_status method, which never did anything
* Fix a variable type in the handle_string method
* Proofread some comments

MFC after: 2 weeks
Sponsored by: Spectra Logic, Axcient
Reviewed by: ken, mav
Differential Revision: https://reviews.freebsd.org/D31686


# cc2d08d3 30-Aug-2021 Alan Somers <asomers@FreeBSD.org>

ses: Guard the elm_type_names declaration by _KERNEL

MFC after: 2 weeks
Sponsored by: Axcient


# 1fb52e43 30-Aug-2021 Alan Somers <asomers@FreeBSD.org>

ses: Correct spelling of "Temperature Sensor"

According to SES 4 revision 2 table 71, it should be singular.

MFC after: 2 weeks
Sponsored by: Axcient


# 53f5ac13 23-Jun-2019 Alexander Motin <mav@FreeBSD.org>

Improve AHCI Enclosure Management and SES interoperation.

Since SES specs do not define mechanism to map enclosure slots to SATA
disks, AHCI EM code I written many years ago appeared quite useless,
that always bugged me. I was thinking whether it was a good idea, but
if LSI HBAs do that, why I shouldn't?

This change introduces simple non-standard mechanism for the mapping
into both AHCI EM and SES code, that makes AHCI EM on capable controllers
(most of Intel's) a first-class SES citizen, allowing it to report disk
physical path to GEOM, show devices inserted into each enclosure slot in
`sesutil map` and `getencstat`, control locate and fault LEDs for specific
devices with `sesutil locate adaX on` and `sesutil fault adaX on`, etc.

I've successfully tested this on Supermicro X10DRH-i motherboard connected
with sideband cable of its S-SATA Mini-SAS connector to SAS815TQ backplane.
It can indicate with LEDs Locate, Fault and Rebuild/Remap SES statuses for
each disk identical to real SES of Supermicro SAS2 backplanes.

MFC after: 2 weeks


# f24882ec 16-Jan-2018 Pedro F. Giffuni <pfg@FreeBSD.org>

SPDX: finish tagging sys/cam.


# 6d2a1fbf 21-Nov-2015 Alexander Motin <mav@FreeBSD.org>

Add API to obtain primary enclosure name and ID for /dev/sesX devices.

sesX device number may change between reboots, so to properly identify
the instance we need more data. Name and ID reported here may mach ones
reported by SCSI device, but that is not really required by specs.

MFC after: 1 week
Sponsored by: iXsystems, Inc.


# f6ad3f23 24-May-2012 Alexander Motin <mav@FreeBSD.org>

MFprojects/zfsd:
Revamp the CAM enclosure services driver.
This updated driver uses an in-kernel daemon to track state changes and
publishes physical path location information\for disk elements into the
CAM device database.

Sponsored by: Spectra Logic Corporation
Sponsored by: iXsystems, Inc.
Submitted by: gibbs, will, mav


# 07e02081 15-May-2012 Alexander Motin <mav@FreeBSD.org>

Restore old API/ABI compatibility to make this code mergeable.


# 01acaa30 18-Jul-2011 Justin T. Gibbs <gibbs@FreeBSD.org>

Revamp the CAM enclosure services driver, renaming it to "enc" from "ses" in
the process. This updated driver uses an in-kernel daemon to track state
changes and publishes physical path location information for disk elements
into the CAM device database.

share/examples/ses/Makefile.inc:
share/examples/ses/srcs/eltsub.c:
share/examples/ses/srcs/sesd.c:
share/examples/ses/srcs/getencstat.c:
share/examples/ses/srcs/setobjstat.c:
share/examples/ses/srcs/inienc.c:
share/examples/ses/srcs/getobjstat.c:
share/examples/ses/srcs/getnobj.c:
share/examples/ses/srcs/getobjmap.c:
share/examples/ses/srcs/setencstat.c:
Update for changes in driver name and API. The ioctl interface
is largely unchanged and could use additional refinement. It
would be nice to be able to fetch the status of all elements in
a single ioctl call and to have the ioctls that return variable
length data allow you to query the necessary allocation size
by passing in a zero length buffer.

sys/sparc64/conf/GENERIC:
sys/ia64/conf/GENERIC:
sys/mips/conf/OCTEON1:
sys/pc98/conf/GENERIC:
sys/i386/conf/GENERIC:
sys/amd64/conf/GENERIC:
ses -> enc

sys/conf/files:
sys/modules/cam/Makefile:
sys/cam/scsi/scsi_enc_internal.h
sys/cam/scsi/scsi_enc_ses.c
sys/cam/scsi/scsi_enc_safte.c
sys/cam/scsi/scsi_ses.c
sys/cam/scsi/scsi_enc.c
Split the enc driver into a generic driver file and one file
each for the SES and SAF-TE personalities.

sys/cam/scsi/scsi_ses.h:
o Retain this header, but use it to only hold structures derived
from the T10 SES spec. The driver interface can be found in
scsi_enc.h.
o Add definitions for most SES pages.

sys/cam/scsi/scsi_enc.c
sys/cam/scsi/scsi_enc.h
o Use a function vector table to allow interaction between the
generic and protocol specific portions of this driver.
o Provide a generic mechanism allowing personalities to define a
finite state machine that is executed from a daemon thread context.
o Track CAM device arrival events and pass these on to personalities
that have registered an interest in them. These notifications are
used to trigger physical path updates in the CAM EDT.

sys/cam/scsi/scsi_enc_safte.c:
The SAF-TE personality. This module is largely untouched by this
update. To achieve the same level of support as we have for SES,
it will need to define an FSM and code to determine the physical
paths of elements within the enclosure.

sys/cam/scsi/scsi_enc_ses.c:
o Implement a state machine to fetch configuration, status, element
descriptors, and additional element status.
o Build a "element map" that indexes into the config and status
data retrieved from a SES device. Use this to simplify our
responses to ioctls.
o Add support for using SAS domain/phy WWN data to determine the
physical path (ence@<enc WWN>/type@<elm type>/slot@<slot #>)
of an element. Stubs are in place for FC, but both FC and SPI
will need additional work in order to be supported.

Sponsored by: Spectra Logic Corporation
Submitted by: gibbs, will