From: Liu Yuan <tailai...@taobao.com>

We need to notify underlying store when the recovery begins.

Signed-off-by: Liu Yuan <tailai...@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 0a25c7d..071b5ad 100644
--- a/sheep/sheep_priv.h
+++ b/sheep/sheep_priv.h
@@ -177,6 +177,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 struct list_head store_drivers;
diff --git a/sheep/store.c b/sheep/store.c
index f0ca2bc..101cb2b 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -1804,6 +1804,12 @@ int start_recovery(uint32_t epoch)
        rw->work.fn = do_recovery_work;
        rw->work.done = do_recover_main;
 
+       if (sd_store->begin_recover) {
+               struct siocb iocb = { 0 };
+               iocb.epoch = epoch;
+               sd_store->begin_recover(&iocb);
+       }
+
        if (recovering_work != NULL) {
                if (next_rw) {
                        /* skip the previous epoch recovery */
-- 
1.7.8.2

-- 
sheepdog mailing list
sheepdog@lists.wpkg.org
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to