qemu-devel
[Top][All Lists]
Advanced

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

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


From: Liu Yuan
Subject: [Qemu-devel] [PATCH 3/8] block/sheepdog: propagate disconnect/reconnect events to upper driver
Date: Mon, 1 Sep 2014 15:43:09 +0800

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);
+    }
 
     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




reply via email to

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