qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 3/8] block/sheepdog: propagate disconnect/reconn


From: Benoît Canet
Subject: Re: [Qemu-devel] [PATCH 3/8] block/sheepdog: propagate disconnect/reconnect events to upper driver
Date: Mon, 1 Sep 2014 10:31:47 +0200
User-agent: Mutt/1.5.23 (2014-03-12)

The Monday 01 Sep 2014 à 15:43:09 (+0800), Liu Yuan wrote :
> This is the reference usage how we propagate connection state to upper tier.
> 
> Cc: Eric Blake <address@hidden>
> Cc: Benoit Canet <address@hidden>
> Cc: Kevin Wolf <address@hidden>
> Cc: Stefan Hajnoczi <address@hidden>
> Signed-off-by: Liu Yuan <address@hidden>
> ---
>  block/sheepdog.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/block/sheepdog.c b/block/sheepdog.c
> index 53c24d6..9c0fc49 100644
> --- a/block/sheepdog.c
> +++ b/block/sheepdog.c
> @@ -714,6 +714,11 @@ static coroutine_fn void reconnect_to_sdog(void *opaque)
>  {
>      BDRVSheepdogState *s = opaque;
>      AIOReq *aio_req, *next;
> +    BlockDriverState *bs = s->bs;
> +
> +    if (bs->drv_ops && bs->drv_ops->driver_disconnect) {
> +        bs->drv_ops->driver_disconnect(bs);
> +    }

Since this sequence will be strictly the same for all the implementation
could we create a bdrv_signal_disconnect(bs); in the block layer to make this
code generic ?

>  
>      aio_set_fd_handler(s->aio_context, s->fd, NULL, NULL, NULL);
>      close(s->fd);
> @@ -756,6 +761,10 @@ static coroutine_fn void reconnect_to_sdog(void *opaque)
>          QLIST_INSERT_HEAD(&s->inflight_aio_head, aio_req, aio_siblings);
>          resend_aioreq(s, aio_req);
>      }
> +
> +    if (bs->drv_ops && bs->drv_ops->driver_reconnect) {
> +        bs->drv_ops->driver_reconnect(bs);
> +    }

Same here bdrv_signal_reconnect(bs);

>  }
>  
>  /*
> -- 
> 1.9.1
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]