[sheepdog] [PATCH 3/6] sheep: wait for vdi copies to be updated in recovery process
MORITA Kazutaka
morita.kazutaka at lab.ntt.co.jp
Tue Sep 4 07:03:45 CEST 2012
If node membership changes between process_work and process_main of
SD_OP_NEW_VDI, we cannot get the vdi copies in recovery process. In
that case, we need to wait for post_cluster_new_vdi to finish.
Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
---
sheep/recovery.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/sheep/recovery.c b/sheep/recovery.c
index e5a41c3..4df5b66 100644
--- a/sheep/recovery.c
+++ b/sheep/recovery.c
@@ -548,11 +548,17 @@ static void screen_object_list(struct recovery_work *rw,
int i, j;
for (i = 0; i < nr_oids; i++) {
+again:
nr_objs = get_obj_copy_number(oids[i], rw->cur_vinfo->nr_zones);
if (!nr_objs) {
dprintf("can not find copy number for object %" PRIx64
"\n", oids[i]);
- continue;
+ dprintf("probably, vdi was created but "
+ "post_cluster_new_vdi() is not called yet\n");
+ /* FIXME: can we wait for post_cluster_new_vdi
+ * with a better way? */
+ sleep(1);
+ goto again;
}
oid_to_vnodes(rw->cur_vinfo->vnodes, rw->cur_vinfo->nr_vnodes,
oids[i], nr_objs, vnodes);
--
1.7.2.5
More information about the sheepdog
mailing list