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 |