ExposeDefaultLUs method of the MSISCSITARGET_ControllerConfigurationService class

Exposes a list of SCSI logical units, such as RAID volumes or tape drives, through a default view CIM_SCSIProtocolController (SPC) instance. A default view SPC exposes logical units to all initiators.

This method is inherited from the CIM_ControllerConfigurationService class.

Syntax

uint32 ExposeDefaultLUs(
  [out]     CIM_ConcreteJob Ref            Job,
  [in]      string                         LUNames[],
  [in]      string                         TargetPortIDs[],
  [in]      string                         DeviceNumbers[],
  [in]      uint16                         DeviceAccesses[],
  [in, out] CIM_SCSIProtocolController Ref ProtocolControllers[]
);

Parameters

Job [out]

On return contains a reference to the job if one is created. NULL if no job is created or it has completed.

LUNames [in]

Specifies the instance ID for the logical units to expose. The logical unit instances must already exist. The members of this array must match the Name property of CIM_LogicalDevice instances that represent SCSI logical units.

For more information on when this parameter may be NULL, see Remarks.

TargetPortIDs [in]

Specifies the IDs of the target ports to use. For more information on when this parameter may be NULL, see Remarks.

DeviceNumbers [in]

Specifies the logical unit numbers to assign to the corresponding logical unit in the LUNames parameter. If the LUNames parameter is NULL, then this parameter must be NULL. Otherwise, if this parameter is NULL, all logical unit numbers are assigned by the hardware or instrumentation. For more information on when this parameter may be NULL, see Remarks.

DeviceAccesses [in]

Specifies the permissions to assign to the corresponding logical unit in the LUNames parameter. This specifies the permission to assign within the context of the elements specified in the other parameters. Setting this to No Access assigns the device number for the associated initiators, but does not grant read or write access. For more information on when this parameter may be NULL, see Remarks.

Note

A value is required in this array for each element in the LUNames parameter. If LUNames is NULL then this parameter should be NULL.

The possible values are.

Unknown (0)

Read Write (2)

Read-Only (3)

No Access (4)

DMTF Reserved

5 15999

Vendor Reserved

16000 = *value*

ProtocolControllers [in, out]

Contains an array of references to CIM_SCSIProtocolController instances (SPCs).

On input, this can be NULL, or contain exactly one element. If NULL on input, the instrumentation will create one or more new SPC instances. If an SPC is specified, the instrumentation will attempt to add associations to one or more existing SPCs. If the first array element is a valid SPC reference and SCSI semantics can be preserved, the instrumentation must attach associations to the specified SPC.

On output, this is an array of references to SPCs created or modified as the result of processing the request. There may be multiple references on output.

Note

If this parameter contains multiple elements on input, the instrumentation must return an Invalid Parameter error.

Return value

This method returns one of the following values.

Success (0)

Not Supported (1)

Unspecified Error (2)

Timeout (3)

Failed (4)

Invalid Parameter (5)

DMTF Reserved (6 4095)

Method Parameters Checked - Job Started (4096)

Invalid logical unit ID (4097)

Invalid initiator port ID (4098)

Invalid target port ID (4099)

Invalid permission (4100)

Target/initiator combination already exposed (4101)

Requested logical unit number in use (4102)

Maximum Map Count Exceeded (4103)

Method Reserved (4104 32767)

Vendor Specific (32768 65535)

Remarks

There are two modes of operation, create and modify.

If the ProtocolControllers parameter is NULL then the implementation will attempt to create a new default view. If the CIM_ProtocolControllerMaskingCapabilities.PortsPerView is All Ports share the same view, then there is at most one default view SPC; otherwise, there may be multiple default view SPCs with different ports associated with each.

If the ProtocolControllers parameter contains an SPC, then the implementation attempts to add the new paths to the existing SPC. Depending upon the implementation capabilities, this may result in the creation of additional SPCs. The implementation may return an error if honoring this request would violate SCSI semantics.

For example:

  • An SPC may not be exposed through a particular host/target port pair that is in use by another SPC. That is, an SPC together with its associated logical units and ports correspond to the logical unit inventory provided by SCSI REPORT LUNS and INQUIRY commands.
  • Each logical device associated to an SPC must have a unique ProtocolControllerForUnit.DeviceNumber logical unit number.

When creating an SPC, some parameters are required depending on the value of specific CIM_ProtocolControllerMaskingCapabilities properties.

  • If the SPCAllowsNoLUs property is false, the LUNames parameter must contain at least one element. If it is True, the LUNames parameter is optional.
  • If the SPCAllowsNoTargets property is false the TargetPortIDs parameter must specify a list of IDs. If it is True, the TargetPortIDs parameter is optional.
  • If the ClientSelectableDeviceNumbers property is false, the LUNames parameter must be NULL. If it isTrue then the client may provide a list of device numbers (LUNs) in this parameter.

The LUNames, DeviceNumbers, and DeviceAccesses parameter arrays are indexed in parallel. Each element in DeviceNumbers or DeviceAccesses specifies a property relative to the logical device instance named in the corresponding element of LUNames.

DeviceAccesses must have the same number of elements as LUNames. DeviceNumbers must have the same number of elements as LUNames or must be NULL. You can specify all of them or none. The implementation will assign IDs if they are not specified. If these conditions are not met, this method must return an Invalid Parameter return code or a CIM_Error.

The implementation must support two scenarios for modifying an SPC. Other vendor-specific scenarios are allowed.

  • Add logical units to the default view.
    • The LUNames and DeviceAccesses parameters are required and cannot be NULL.
    • The TargetPortIDs parameter must be NULL.
    • The DeviceNumbers parameter may be NULL if the CIM_ProtocolControllerMaskingCapabilities.ClientSelectableDeviceNumbersproperty is false.
  • Add target port IDs to a view.
    • This scenario is only possible if the CIM_ProtocolControllerMaskingCapabilities.PortsPerView property has the value Multiple Ports Per View.
    • The LUNames, InitiatorPortIDs, DeviceNumbers, and DeviceAccesses parameters must be NULL.

Requirements

Minimum supported client
None supported
Minimum supported server
Windows Server 2012 R2
Namespace
Root\CIMv2\Storage\iScsiTarget
MOF
SmIscsiTarget.mof
DLL
SmIScsiTargetProv.dll

See also

MSISCSITARGET_ControllerConfigurationService

MSISCSITARGET_ConcreteJob

CIM_SCSIProtocolController

CIM_LogicalDevice