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

Re: [win-pv-devel] [PATCH v2 4/4] Attempt to process responses on the ring


  • To: Owen Smith <owen.smith@xxxxxxxxxx>, "win-pv-devel@xxxxxxxxxxxxxxxxxxxx" <win-pv-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Paul Durrant <Paul.Durrant@xxxxxxxxxx>
  • Date: Wed, 18 Sep 2019 15:53:11 +0000
  • Accept-language: en-GB, en-US
  • Authentication-results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=Paul.Durrant@xxxxxxxxxx; spf=Pass smtp.mailfrom=Paul.Durrant@xxxxxxxxxx; spf=None smtp.helo=postmaster@xxxxxxxxxxxxxxx
  • Cc: Owen Smith <owen.smith@xxxxxxxxxx>
  • Delivery-date: Wed, 18 Sep 2019 15:53:17 +0000
  • Ironport-sdr: PmgiUK2IJFjQ/Uq487vpWi54czpzcmSTo5baTXYGEJPNR/hxqSnvC12TLhKdQ8+1rT2O0QaeN8 FXwXSxRQucojgZVASLggeQTyhZixn3aWZvGCoSn5RVRDcljeTlnzwDgBG/YLk41sHoWfFyik7s 25H4xrMS+BJSgmH3NbjB9sQbBFbOEDw6zEnhMfsi7L0udEVz/QBAsFTl2gYiblvz8hdOIDVFQ6 6moUyA/cDSIndv2WZKfG/2myRo74UKWG/WNkV3+BfaGHeFNduO46DVhpnBdQ6QIEkuHkVK34uU Pec=
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>
  • Thread-index: AQHVbiSkLtEgh6dY90SdYO10zRpEJqcxleaA
  • Thread-topic: [win-pv-devel] [PATCH v2 4/4] Attempt to process responses on the ring

> -----Original Message-----
> From: win-pv-devel <win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of 
> Owen Smith
> Sent: 18 September 2019 14:25
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Owen Smith <owen.smith@xxxxxxxxxx>
> Subject: [win-pv-devel] [PATCH v2 4/4] Attempt to process responses on the 
> ring
> 
> When Disabling the ring, outstanding responses need to be completed.
> Poll the ring to complete outstanding responses if the backend is still
> connected and valid.
> 
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>

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

> ---
>  src/xenvbd/ring.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 46 insertions(+)
> 
> diff --git a/src/xenvbd/ring.c b/src/xenvbd/ring.c
> index 8dcdee3..4bb7475 100644
> --- a/src/xenvbd/ring.c
> +++ b/src/xenvbd/ring.c
> @@ -2044,11 +2044,57 @@ BlkifRingDisable(
>      IN  PXENVBD_BLKIF_RING  BlkifRing
>      )
>  {
> +    PXENVBD_RING            Ring;
> +    PCHAR                   Buffer;
> +    XenbusState             State;
> +    NTSTATUS                status;
> +
> +    Ring = BlkifRing->Ring;
> +
>      Trace("====> %u\n", BlkifRing->Index);
> 
>      __BlkifRingAcquireLock(BlkifRing);
>      ASSERT(BlkifRing->Enabled);
> 
> +    status = XENBUS_STORE(Read,
> +                          &Ring->StoreInterface,
> +                          NULL,
> +                          FrontendGetBackendPath(Ring->Frontend),
> +                          "state",
> +                          &Buffer);
> +    if (!NT_SUCCESS(status)) {
> +        State = XenbusStateUnknown;
> +    } else {
> +        State = (XenbusState) strtol(Buffer, NULL, 10);
> +
> +        XENBUS_STORE(Free,
> +                     &Ring->StoreInterface,
> +                     Buffer);
> +    }
> +
> +    if (State == XenbusStateConnected) {
> +        ULONG               Attempt;
> +
> +        Attempt = 0;
> +        ASSERT3U(BlkifRing->RequestsPushed, ==, BlkifRing->RequestsPosted);
> +        while (BlkifRing->ResponsesProcessed != BlkifRing->RequestsPushed) {
> +            Attempt++;
> +            if (Attempt > 100)
> +                break;
> +
> +            // Try to move things along
> +            __BlkifRingSend(BlkifRing);
> +            (VOID) BlkifRingPoll(BlkifRing);
> +
> +            // We are waiting for a watch event at DISPATCH_LEVEL so
> +            // it is our responsibility to poll the store ring.
> +            XENBUS_STORE(Poll,
> +                         &Ring->StoreInterface);
> +
> +            KeStallExecutionProcessor(1000);    // 1ms
> +        }
> +    }
> +
>      BlkifRing->Enabled = FALSE;
> 
>      while (!IsListEmpty(&BlkifRing->SubmittedList)) {
> --
> 2.16.2.windows.1
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/win-pv-devel

 


Rackspace

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