From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49815) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOMHA-0007O7-E4 for qemu-devel@nongnu.org; Mon, 01 Sep 2014 03:43:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XOMH2-0003ZL-UL for qemu-devel@nongnu.org; Mon, 01 Sep 2014 03:43:44 -0400 Received: from mail-pa0-x22f.google.com ([2607:f8b0:400e:c03::22f]:46343) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOMH2-0003YD-MS for qemu-devel@nongnu.org; Mon, 01 Sep 2014 03:43:36 -0400 Received: by mail-pa0-f47.google.com with SMTP id hz1so11558237pad.6 for ; Mon, 01 Sep 2014 00:43:35 -0700 (PDT) From: Liu Yuan Date: Mon, 1 Sep 2014 15:43:09 +0800 Message-Id: <1409557394-11853-4-git-send-email-namei.unix@gmail.com> In-Reply-To: <1409557394-11853-1-git-send-email-namei.unix@gmail.com> References: <1409557394-11853-1-git-send-email-namei.unix@gmail.com> Subject: [Qemu-devel] [PATCH 3/8] block/sheepdog: propagate disconnect/reconnect events to upper driver List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Benoit Canet , Stefan Hajnoczi This is the reference usage how we propagate connection state to upper tier. Cc: Eric Blake Cc: Benoit Canet Cc: Kevin Wolf Cc: Stefan Hajnoczi Signed-off-by: Liu Yuan --- 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); + } 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); + } } /* -- 1.9.1