Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions viostor/virtio_stor.c
Original file line number Diff line number Diff line change
Expand Up @@ -1282,28 +1282,29 @@ VirtIoResetBus(IN PVOID DeviceExtension, IN ULONG PathId)
SCSI_ADAPTER_CONTROL_STATUS
VirtIoAdapterControl(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
{
PADAPTER_EXTENSION adaptExt = (PADAPTER_EXTENSION)DeviceExtension;
PSCSI_SUPPORTED_CONTROL_TYPE_LIST ControlTypeList;
ULONG AdjustedMaxControlType;
ULONG Index;
PADAPTER_EXTENSION adaptExt;
ULONG list_idx;
SCSI_ADAPTER_CONTROL_STATUS status = ScsiAdapterControlUnsuccessful;
BOOLEAN SupportedControlTypes[5] = {TRUE, TRUE, TRUE, FALSE, FALSE};
BOOLEAN SupportedControlTypes[ScsiAdapterControlMax] = {FALSE};

adaptExt = (PADAPTER_EXTENSION)DeviceExtension;

RhelDbgPrint(TRACE_LEVEL_VERBOSE, " ControlType %d\n", ControlType);
SupportedControlTypes[ScsiQuerySupportedControlTypes] = TRUE;
SupportedControlTypes[ScsiStopAdapter] = TRUE;
SupportedControlTypes[ScsiRestartAdapter] = TRUE;
SupportedControlTypes[ScsiAdapterSurpriseRemoval] = TRUE;
Comment thread
benyamin-codez marked this conversation as resolved.

switch (ControlType)
{

case ScsiQuerySupportedControlTypes:
{
RhelDbgPrint(TRACE_LEVEL_VERBOSE, " ScsiQuerySupportedControlTypes\n");
ControlTypeList = (PSCSI_SUPPORTED_CONTROL_TYPE_LIST)Parameters;
AdjustedMaxControlType = (ControlTypeList->MaxControlType < 5) ? ControlTypeList->MaxControlType : 5;
for (Index = 0; Index < AdjustedMaxControlType; Index++)
AdjustedMaxControlType = (ControlTypeList->MaxControlType < ScsiAdapterControlMax) ? ControlTypeList->MaxControlType
: ScsiAdapterControlMax;
Comment thread
benyamin-codez marked this conversation as resolved.
for (list_idx = 0; list_idx < AdjustedMaxControlType; list_idx++)
{
ControlTypeList->SupportedTypeList[Index] = SupportedControlTypes[Index];
ControlTypeList->SupportedTypeList[list_idx] = SupportedControlTypes[list_idx];
}
status = ScsiAdapterControlSuccess;
break;
Expand Down Expand Up @@ -1340,7 +1341,15 @@ VirtIoAdapterControl(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE Cont
status = ScsiAdapterControlSuccess;
break;
}
case ScsiAdapterSurpriseRemoval:
{
RhelDbgPrint(TRACE_LEVEL_FATAL, " ScsiAdapterSurpriseRemoval\n");
adaptExt->removed = TRUE;
status = ScsiAdapterControlSuccess;
break;
}
default:
RhelDbgPrint(TRACE_LEVEL_ERROR, " Unsupported ControlType %d\n", ControlType);
break;
}

Expand Down