From: Liu Yuan <tailai.ly at taobao.com> When we start up, the objects in .stale is useless. This patch also reworks the ->cleanup() interface to reflect the current implementation. Signed-off-by: Liu Yuan <tailai.ly at taobao.com> --- sheep/ops.c | 4 +--- sheep/plain_store.c | 5 ++++- sheep/sheep_priv.h | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sheep/ops.c b/sheep/ops.c index 0215312..f30b8ba 100644 --- a/sheep/ops.c +++ b/sheep/ops.c @@ -536,8 +536,6 @@ static int cluster_cleanup(const struct sd_req *req, struct sd_rsp *rsp, void *data) { int ret; - struct siocb iocb = { 0 }; - iocb.epoch = sys->epoch; if (node_in_recovery()) return SD_RES_NODE_IN_RECOVERY; @@ -546,7 +544,7 @@ static int cluster_cleanup(const struct sd_req *req, struct sd_rsp *rsp, return SD_RES_SUCCESS; if (sd_store->cleanup) - ret = sd_store->cleanup(&iocb); + ret = sd_store->cleanup(); else ret = SD_RES_NO_SUPPORT; diff --git a/sheep/plain_store.c b/sheep/plain_store.c index 4b322b4..0f946c9 100644 --- a/sheep/plain_store.c +++ b/sheep/plain_store.c @@ -132,7 +132,7 @@ out: return ret; } -int default_cleanup(struct siocb *iocb) +int default_cleanup(void) { rmdir_r(stale_dir); if (mkdir(stale_dir, 0755) < 0) { @@ -196,6 +196,9 @@ int default_init(char *p) } } + /* When we start up, the objects in .stale is useless */ + default_cleanup(); + return for_each_objects(init_objlist_and_vdi_bitmap); } diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h index bff3198..bbc1ee5 100644 --- a/sheep/sheep_priv.h +++ b/sheep/sheep_priv.h @@ -154,7 +154,7 @@ struct store_driver { int (*purge_obj)(void); /* Operations for snapshot */ int (*snapshot)(struct siocb *); - int (*cleanup)(struct siocb *); + int (*cleanup)(void); int (*restore)(struct siocb *); int (*get_snap_file)(struct siocb *); }; @@ -166,7 +166,7 @@ int default_read(uint64_t oid, struct siocb *iocb); int default_link(uint64_t oid, struct siocb *iocb, uint32_t tgt_epoch); int default_atomic_put(uint64_t oid, struct siocb *iocb); int default_end_recover(uint32_t old_epoch, struct vnode_info *old_vnode_info); -int default_cleanup(struct siocb *iocb); +int default_cleanup(void); int default_format(struct siocb *iocb); int default_remove_object(uint64_t oid); int default_purge_obj(void); -- 1.7.10.2 |