[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [win-pv-devel] [PATCH 02/10] Move StorPort*() calls to adapter.c



> -----Original Message-----
> From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On
> Behalf Of owen.smith@xxxxxxxxxx
> Sent: 23 June 2017 13:49
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Owen Smith <owen.smith@xxxxxxxxxx>
> Subject: [win-pv-devel] [PATCH 02/10] Move StorPort*() calls to adapter.c
> 
> From: Owen Smith <owen.smith@xxxxxxxxxx>
> 
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>

Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx>

> ---
>  src/xenvbd/adapter.c | 38 ++++++++++++++++++++++++++++++++------
>  src/xenvbd/adapter.h | 11 +++++++++++
>  src/xenvbd/target.c  | 19 ++++++-------------
>  3 files changed, 49 insertions(+), 19 deletions(-)
> 
> diff --git a/src/xenvbd/adapter.c b/src/xenvbd/adapter.c
> index 2e85f9f..ec6711a 100644
> --- a/src/xenvbd/adapter.c
> +++ b/src/xenvbd/adapter.c
> @@ -58,7 +58,8 @@
>  #include "debug.h"
>  #include "assert.h"
> 
> -#define MAXNAMELEN  128
> +#define XENVBD_MAX_QUEUE_DEPTH  254
> +#define MAXNAMELEN              128
>  #define ADAPTER_POOL_TAG        'adAX'
> 
>  struct _XENVBD_ADAPTER {
> @@ -498,9 +499,7 @@ __AdapterEnumerate(
>      }
> 
>      if (NeedInvalidate)
> -        StorPortNotification(BusChangeDetected,
> -                             Adapter,
> -                             NULL);
> +        AdapterTargetListChanged(Adapter);
>      if (NeedReboot)
>          DriverRequestReboot();
>  }
> @@ -1408,6 +1407,31 @@ AdapterCompleteSrb(
>      StorPortNotification(RequestComplete, Adapter, Srb);
>  }
> 
> +VOID
> +AdapterTargetListChanged(
> +    IN  PXENVBD_ADAPTER Adapter
> +    )
> +{
> +    StorPortNotification(BusChangeDetected,
> +                         Adapter,
> +                         NULL);
> +}
> +
> +VOID
> +AdapterSetDeviceQueueDepth(
> +    IN  PXENVBD_ADAPTER Adapter,
> +    IN  ULONG           TargetId
> +    )
> +{
> +    if (!StorPortSetDeviceQueueDepth(Adapter,
> +                                     0,
> +                                     (UCHAR)TargetId,
> +                                     0,
> +                                     XENVBD_MAX_QUEUE_DEPTH))
> +        Verbose("Target[%d] : Failed to set queue depth\n",
> +                TargetId);
> +}
> +
>  static VOID
>  AdapterUnplugRequest(
>      IN  PXENVBD_ADAPTER Adapter,
> @@ -1713,15 +1737,16 @@ AdapterHwBuildIo(
>          Srb->SrbStatus = SRB_STATUS_ABORT_FAILED;
>          break;
>      case SRB_FUNCTION_RESET_BUS:
> -        Srb->SrbStatus = SRB_STATUS_SUCCESS;
>          AdapterHwResetBus(Adapter, Srb->PathId);
> +        Srb->SrbStatus = SRB_STATUS_SUCCESS;
>          break;
> 
>      default:
> +        Srb->SrbStatus = SRB_STATUS_INVALID_REQUEST;
>          break;
>      }
> 
> -    StorPortNotification(RequestComplete, Adapter, Srb);
> +    AdapterCompleteSrb(Adapter, Srb);
>      return FALSE;
>  }
> 
> @@ -1747,6 +1772,7 @@ AdapterHwStartIo(
>      return TRUE;
> 
>  fail1:
> +    Srb->SrbStatus = SRB_STATUS_INVALID_TARGET_ID;
>      AdapterCompleteSrb(Adapter, Srb);
>      return TRUE;
>  }
> diff --git a/src/xenvbd/adapter.h b/src/xenvbd/adapter.h
> index 5dd2e62..b8706fd 100644
> --- a/src/xenvbd/adapter.h
> +++ b/src/xenvbd/adapter.h
> @@ -70,6 +70,17 @@ AdapterCompleteSrb(
>      IN  PSCSI_REQUEST_BLOCK Srb
>      );
> 
> +extern VOID
> +AdapterTargetListChanged(
> +    IN  PXENVBD_ADAPTER Adapter
> +    );
> +
> +extern VOID
> +AdapterSetDeviceQueueDepth(
> +    IN  PXENVBD_ADAPTER Adapter,
> +    IN  ULONG           TargetId
> +    );
> +
>  extern NTSTATUS
>  AdapterDispatchPnp(
>      IN  PXENVBD_ADAPTER Adapter,
> diff --git a/src/xenvbd/target.c b/src/xenvbd/target.c
> index c5dffa9..5bab440 100644
> --- a/src/xenvbd/target.c
> +++ b/src/xenvbd/target.c
> @@ -49,8 +49,6 @@
>  #include <suspend_interface.h>
>  #include <stdlib.h>
> 
> -#define XENVBD_MAX_QUEUE_DEPTH          (254)
> -
>  typedef struct _XENVBD_SG_LIST {
>      // SGList from SRB
>      PSTOR_SCATTER_GATHER_LIST   SGList;
> @@ -2021,13 +2019,8 @@ __TargetExecuteScsi(
>          break;
> 
>      case SCSIOP_INQUIRY:
> -        if (!StorPortSetDeviceQueueDepth(TargetGetAdapter(Target),
> -                                         0,
> -                                         (UCHAR)TargetGetTargetId(Target),
> -                                         0,
> -                                         XENVBD_MAX_QUEUE_DEPTH))
> -            Verbose("Target[%d] : Failed to set queue depth\n",
> -                    TargetGetTargetId(Target));
> +        AdapterSetDeviceQueueDepth(TargetGetAdapter(Target),
> +                                   TargetGetTargetId(Target));
>          PdoInquiry(TargetGetTargetId(Target), FrontendGetInquiry(Target-
> >Frontend), Srb);
>          break;
>      case SCSIOP_MODE_SENSE:
> @@ -2305,13 +2298,13 @@ __TargetRemoveDevice(
>      case SurpriseRemovePending:
>          TargetSetMissing(Target, "Surprise Remove");
>          TargetSetDevicePnpState(Target, Deleted);
> -        StorPortNotification(BusChangeDetected, TargetGetAdapter(Target),
> 0);
> +        AdapterTargetListChanged(TargetGetAdapter(Target));
>          break;
> 
>      default:
>          TargetSetMissing(Target, "Removed");
>          TargetSetDevicePnpState(Target, Deleted);
> -        StorPortNotification(BusChangeDetected, TargetGetAdapter(Target),
> 0);
> +        AdapterTargetListChanged(TargetGetAdapter(Target));
>          break;
>      }
>  }
> @@ -2323,7 +2316,7 @@ __TargetEject(
>  {
>      TargetSetMissing(Target, "Ejected");
>      TargetSetDevicePnpState(Target, Deleted);
> -    StorPortNotification(BusChangeDetected, TargetGetAdapter(Target), 0);
> +    AdapterTargetListChanged(TargetGetAdapter(Target));
>  }
> 
>  __checkReturn
> @@ -2417,7 +2410,7 @@ TargetIssueDeviceEject(
>          IoRequestDeviceEject(Target->DeviceObject);
>      } else {
>          Verbose("Target[%d] : Triggering BusChangeDetected to detect
> device\n", TargetGetTargetId(Target));
> -        StorPortNotification(BusChangeDetected, TargetGetAdapter(Target),
> 0);
> +        AdapterTargetListChanged(TargetGetAdapter(Target));
>      }
>  }
> 
> --
> 2.8.3
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.