scsi_inquiry(9S) update [PSARC/2008/673 Self Review]
Garrett D'Amore
gdamore at sun.com
Sun Nov 2 21:26:15 PST 2008
+1
-- Garrett
Christopher Horne wrote:
> I am sponsoring the following fasttrack for myself. Micro/patch
> binding is requested. The proposal is a backwards compatible update
> scsi_inquiry(9S) data structures and man pages to support more recient
> versions SCSI standards. I believe the case qualifies for self review,
> and have filed it as Closed Approved Automatic. If there is a request,
> I'd be happy to convert it to a fasttrack and set the timer to enable
> further discussion.
>
> -Chris
>
> 1. Introduction
> 1.1 Project/Component Working Name:
> scsi_inquiry(9S) update
>
> 1.2 Name of Document Author/Supplier:
> Author: Chris Horne
>
> 1.3 Date of This Document:
> Thu Oct 23 2008
>
> 4. Technical Description
>
> 4.1 Summary
>
> This fasttrack proposes updates to the scsi_inquiry(9S) structure
> consistent with the evolution of SCSI standards.
>
> 4.2 Interfaces
>
> 4.2.1 Removed from man page:
>
> The following bits were specified in earlier versions of the
> ANSI standard, but generally unused - they have been removed
> from more recent versions of the ANSI standard. The proposal
> is to remove these fields from the scsi_inquiry(9S) man page,
> the definition in the header file will still be there (marked
> deprecated).
>
> ------------------------------------------------------------------
> Interface Name Comm.Lev. Comments
> ------------------------------------------------------------------
> inq_reladdr Obsolete Supports relative addressing
> inq_wbus32 " Supports 32 bit wide data xfers
>
> 4.2.2 New (already defined in header file):
>
> These definitions update the scsi_inquiry(9S) man page to
> reflect definitions that already exist in the header file.
>
> ------------------------------------------------------------------
> Interface Name Comm.Lev. Comments
> ------------------------------------------------------------------
> DTYPE_RBC Committed Simplified direct-access device
> DTYPE_OCRW " Optical card reader/writer device.
> DTYPE_BRIDGE " Bridge
> DTYPE_OSD " Object-based storage device.
>
> DPQ_MASK " Mask Peripheral Qualifier field.
>
>
> 4.2.3 NEW (Add to man page and header file):
>
> New fields in latest version of ANSI standard added to the man
> page and to the header file.
>
> ------------------------------------------------------------------
> Interface Name Comm.Lev. Comments
> ------------------------------------------------------------------
> inq_normaca Committed setting NACA bit supported
> inq_hisup " hierarchical addressing model
> inq_sccs " embedded storage array
> inq_tpgse " explicit asymmetric lun access
> inq_tpgsi " implicit asymmetric lun access
> inq_bque " basic queuing
> inq_encserv " embedded enclosure services
> inq_dualp " dual port device
> inq_mchngr " embedded/attached to medium chngr
> inq_addr16 " SPI: supports 16 bit wide SCSI addr
> inq_clk " SPI3 clocking
> inq_qas " SPI3: quick arb sel
> inq_ius " SPI3: information units
>
> 4.2.4 New (Add to the header file, no man page definition):
>
> New fields in latest version of ANSI standard added to the
> header file, but not being promoted to the man page at this
> time because of stability concerns.
>
> ------------------------------------------------------------------
> Interface Name Comm.Lev. Comments
> ------------------------------------------------------------------
> inq_acc Unstable access controls coordinator
> inq_3pc " third-party copy
> inq_protect " supports protection information
>
> 4.2.5 Bugs fixed in current man page:
>
> The definition of the following fields are corrected: inq_ecma,
> inq_ansi.
>
> The man page is reorganized for consistent presentation of
> field definitions, using ANSI standard and structure layout
> order.
>
> 4.2.6 Other changes
>
> In addition to the changes above, the following inquiry related
> implementation changes are being made:
>
> o The size of the scsi_inquiry(9S) structure is padded to 132
> bytes. This is being done so that the sd_inq will contain
> vendor unique information needed for some of the mpxio
> failover modules. The scsi_inquiry(9S) structure is not
> embedded in other structures, or used in kernel/user APIs -
> so this change should be safe.
>
> o The scsi_device(9S) 'sd_inq' information will now be scoped
> the same as the scsi_device(9S) structure itself (i.e.
> initchild - uninitchild), instead of by scsi_probe(9F) -
> scsi_unprobe(9F) (or scsi_slave(9F) - scsi_unslave(9F)).
> This change makes 'sd_inq' match the scope of a devinfo
> node's inquiry(9P) properties. By coupling 'sd_inq' more
> closely with the devinfo state model, we reduce bugs related
> to a failed detach operations (making HBA driver and SCSA
> framework use of 'sd_inq' safer). This change makes the SCSA
> framework implementation of scsi_unprobe(9F) and
> scsi_unslave(9F) noops.
>
> 4.3 Man page changes
>
> See below.
>
> 6. Resources and Schedule
>
> 6.4 Steering Committee requested information
>
> 6.4.1 Consolidation C-team Name:
> ON
>
> 6.5 ARC review type:
> FastTrack
>
> A.1 Proposed scsi_inquiry(9F) man page changes:
>
> --- scsi_inquiry.9s.orig Thu Jul 21 21:02:18 2005
> +++ scsi_inquiry.9s Tue Aug 2 16:00:49 2005
> @@ -1,3 +1,6 @@
> +NOTE: Lines that start with 'X' will be deleted before submission,
> + they are being classified as unstable at this time.
> +
> Data Structures for Drivers scsi_inquiry(9S)
>
> NAME
> @@ -21,15 +24,27 @@
> uchar_t inq_rmb :1; /* Removable media */
> uchar_t inq_qual :7; /* Device type qualifier */
> uchar_t inq_iso :2; /* ISO version */
> - uchar_t inq_ecma :3; /* ANSI version */
> + uchar_t inq_ecma :3; /* ECMA version */
> + uchar_t inq_ansi :3; /* ANSII version */
> uchar_t inq_aenc :1; /* Async event notification cap. */
> uchar_t inq_trmiop :1; /* Supports TERMINATE I/O PROC msg */
> + uchar_t inq_normaca :1; /* setting NACA bit supported */
> + uchar_t inq_hisup :1; /* hierarchical addressing model */
> uchar_t inq_rdf :4; /* Response data format */
> - uchar_t inq_len; /* Additional length */
> - uchar_t inq_reladdr :1; /* Supports relative addressing */
> - uchar_t inq_wbus32 :1; /* Supports 32 bit wide data xfers */
> - uchar_t inq_wbus16 :1; /* Supports 16 bit wide data xfers */
> - uchar_t inq_sync :1; /* Supports synchronous data xfers */
> + uchar_t inq_len /* Additional length */
> + uchar_t inq_sccs :1; /* embedded storage array */
> +X uchar_t inq_acc :1; /* access controls coordinator */
> + uchar_t inq_tpgse :1; /* explicit asymmetric lun access */
> + uchar_t inq_tpgsi :1; /* implicit asymmetric lun access */
> +X uchar_t inq_3pc :1; /* third-party copy */
> +X uchar_t inq_protect :1; /* supports protection information */
> + uchar_t inq_bque :1; /* basic queueing */
> + uchar_t inq_encserv :1; /* embedded enclosure services */
> + uchar_t inq_dualp :1; /* dual port device */
> + uchar_t inq_mchngr :1; /* embedded/attached to medium chngr */
> + uchar_t inq_addr16 :1; /* SPI: supports 16 bit wide SCSI addr */
> + uchar_t inq_wbus16 :1; /* SPI: Supports 16 bit wide data xfers */
> + uchar_t inq_sync :1; /* SPI: Supports synchronous data xfers */
> uchar_t inq_linked :1; /* Supports linked commands */
> uchar_t inq_cmd_que :1; /* Supports command queueing */
> uchar_t inq_sftre :1; /* Supports Soft Reset option */
> @@ -36,6 +51,9 @@
> char inq_vid[8]; /* Vendor ID */
> char inq_pid[16]; /* Product ID */
> char inq_revision[4]; /* Revision level */
> + uchar_t inq_clk :2; /* SPI3 clocking */
> + uchar_t inq_qas :1; /* SPI3: quick arb sel */
> + uchar_t inq_ius :1; /* SPI3: information units */
>
>
> inq_dtype identifies the type of device. Bits 0 - 4
> @@ -43,14 +61,9 @@
> represent the Peripheral Qualifier. The following values are
> appropriate for Peripheral Device Type field:
>
> - "small and bold">DTYPE_AArrayCcontroller device (for exam-
> - ple, RAID).
> -
> DTYPE_DIRECT Direct-access device (for example,
> magnetic disk).
>
> - DTYPE_ESI Enclosure services device.
> -
> DTYPE_SEQUENTIAL Sequential-access device (for exam-
> ple, magnetic tape).
>
> @@ -73,6 +86,19 @@
>
> DTYPE_COMM Communications device.
>
> + DTYPE_ARRAY_CTRL Array Controller device (for exam-
> + ple, RAID).
> +
> + DTYPE_ESI Enclosure services device.
> +
> + DTYPE_RBC Simplified direct-access device
> +
> + DTYPE_OCRW Optical card reader/writer device.
> +
> + DTYPE_BRDIGE Bridge
> +
> + DTYPE_OSD Object-based storage device.
> +
> DTYPE_UNKNOWN Unknown or no device type.
>
> DTYPE_MASK Mask to isolate Peripheral Device
> @@ -110,9 +136,9 @@
>
> DPQ_VUNIQ This is a vendor-unique qualifier.
>
> + DPQ_MASK Mask to isolate Peripheral Qualifier
> + field.
>
> -
> -
> DTYPE_NOTPRESENT is the peripheral qualifier DPQ_NEVER and
> the peripheral device type DTYPE_UNKNOWN combined.
>
> @@ -133,22 +159,58 @@
> inq_trmiop, if set, indicates that the device supports the
> TERMINATE I/O PROCESS message.
>
> - inq_rdf, if reset, indicates the INQUIRY data format is as
> - specified in SCSI-1.
> + inq_normaca, if set, indicates that the device supports
> + setting the NACA bit to 1 in CDB.
>
> - inq_inq_len is the additional length field that specifies
> - the length in bytes of the parameters.
> + inq_hisup, if set, indicates the SCSI target device uses
> + the hierarchical addressing model to assign LUNs to logical
> + units.
>
> - inq_reladdr, if set, indicates that the device supports the
> - relative addressing mode of this logical unit.
> + inq_rdf, indicates the INQUIRY data response data format:
> + RDF_LEVEL0 means that this structure complies with SCSI-1
> + spec, RDF_CCS means that this structure complies with CCS
> + pseudo-spec, and RDF_SCSI2 means that the structure
> + complies with the SCSI-2/3 spec.
>
> - inq_wbus32, if set, indicates that the device supports 32-
> - bit wide data transfers.
> + inq_inq_len is the additional length field that
> + specifies the length in bytes of the parameters.
>
> - inq_wbus16, if set, indicates that the device supports 16-
> - bit wide data transfers.
> + inq_sccs, if set, indicates the target device contains an
> + embedded storage array controller component.
>
> - inq_sync, if set, indicates that the device supports syn-
> +X inq_acc, if set, indicates that the logical unit contains
> +X an access controls coordinator.
> +
> + inq_tpgse, if set, indicates that implicit asymmetric
> + logical unit access is supported.
> +
> + inq_tpgsi, if set, indicates that explicit asymmetric
> + logical unit access is supported.
> +
> +X inq_3pc, if set, indicates that the SCSI target device
> +X supports third-party copy commands.
> +
> +X inq_protect, if set, that the logical unit supports protection
> +X information.
> +
> + inq_bque, if set, indicates that the logical unit supports
> + basic task management.
> +
> + inq_encserv, if set, indicates that the device contains an
> + embedded enclosure services component (ses(7d)).
> +
> + inq_dualp, if set, indicates the SCSI target device
> + supports two or more ports.
> +
> + inq_mchngr, if set, indicates the SCSI target device
> + supports commands to control an attached media changer.
> +
> + inq_addr16 device supports 16-bit wide SCSI addresses.
> +
> + inq_wbus16, if set, indicates that the device supports
> + 16-bit wide data transfers.
> +
> + inq_sync, if set, indicates that the device supports syn-
> chronous data transfers.
>
> inq_linked, if set, indicates that the device supports
> @@ -162,19 +224,28 @@
> this bit is set, this indicates that the device responds
> with the soft RESET alternative.
>
> - inq_vid contains eight bytes of ASCII data identifying the
> + inq_vid contains eight bytes of ASCII data identifying the
> vendor of the product.
>
> - inq_pid contains sixteen bytes of ASCII data as defined by
> - the vendor.
> -
> - inq_revision contains four bytes of ASCII data as defined
> + inq_pid contains sixteen bytes of ASCII data as defined
> by the vendor.
>
> + inq_revision contains four bytes of ASCII data as
> + defined by the vendor.
> +
> + inq_clk clocking of SPI3 target port.
> +
> + inq_qas SPI3 target port supports quick arbitration and
> + selection.
> +
> + inq_ius SPI3 target device supports information unit transfers.
> +
> SEE ALSO
> scsi_probe(9F), scsi_device(9S)
>
> ANSI Small Computer System Interface-2 (SCSI-2)
> + ANSII SCSI Primary Commands - 3 (SPC-3)
> + http://t10.org/drafts.htm#spc3
>
> Writing Device Drivers
>
More information about the opensolaris-arc
mailing list