We cannot wait in main thread, so we must call
get_vdi_bitmap_from_all() in __sd_deliver() instead of
__sd_deliver_done().

Signed-off-by: MORITA Kazutaka <[email protected]>
---
 sheep/group.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/sheep/group.c b/sheep/group.c
index cb693ff..67cde1c 100644
--- a/sheep/group.c
+++ b/sheep/group.c
@@ -632,7 +632,6 @@ out:
                        update_epoch_store(sys->epoch);
                }
                if (sys->status != SD_STATUS_OK) {
-                       get_vdi_bitmap_from_all();
                        set_global_nr_copies(sys->nr_sobjs);
                        set_cluster_ctime(msg->ctime);
                }
@@ -827,6 +826,17 @@ static void __sd_deliver(struct cpg_event *cevent)
                        break;
                }
        }
+
+       if (m->state == DM_FIN) {
+               switch (m->op) {
+               case SD_MSG_JOIN:
+                       if (((struct join_message *)m)->cluster_status == 
SD_STATUS_OK)
+                               if (sys->status != SD_STATUS_OK)
+                                       get_vdi_bitmap_from_all();
+                       break;
+               }
+       }
+
 }
 
 static void send_join_response(struct work_deliver *w)
-- 
1.7.2.5

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to