[Sheepdog] [PATCH v4 07/12] sheep: add begin_recover() hook to store.

Liu Yuan namei.unix at gmail.com
Sun Dec 25 16:42:53 CET 2011


From: Liu Yuan <tailai.ly at taobao.com>

We need to notify underlying store when the recovery begins.

Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
---
 sheep/sheep_priv.h |    1 +
 sheep/store.c      |    6 ++++++
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h
index 8a39d1b..aee865d 100644
--- a/sheep/sheep_priv.h
+++ b/sheep/sheep_priv.h
@@ -176,6 +176,7 @@ struct store_driver {
 	int (*get_objlist)(struct siocb *);
 	int (*link)(uint64_t oid, struct siocb *, int tgt_epoch);
 	int (*atomic_put)(uint64_t oid, struct siocb *);
+	int (*begin_recover)(struct siocb *);
 };
 
 extern void register_store_driver(struct store_driver *);
diff --git a/sheep/store.c b/sheep/store.c
index ac7f588..35b9851 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -1790,6 +1790,12 @@ int start_recovery(uint32_t epoch)
 	rw->work.fn = do_recovery_work;
 	rw->work.done = do_recover_main;
 
+	if (store.begin_recover) {
+		struct siocb iocb = { 0 };
+		iocb.epoch = epoch;
+		store.begin_recover(&iocb);
+	}
+
 	if (recovering_work != NULL) {
 		if (next_rw) {
 			/* skip the previous epoch recovery */
-- 
1.7.8.rc3




More information about the sheepdog mailing list