changes v3: - add basic cluster-wide snapshot support - farm.c clean up and refactoring changes v2: - add a doc - let farm_link write atomically "farm" is suppoed be merged for .4.0, the new kv-store which will support - cluster wide snapshot. (both customized time and at the point of epoch change) - node-wide data sharing for snapshot objects with the same content. so snapshoting is very cheap operation. - support 'collie cluster restore snapshot' to restore fully to the state of customized snapshots. - faster nested recovery, that node failure happens at recovery stage - auto checksumed snapshot objects - no stale objects that are found in current implementation, that will waste storage a lot. You can access the patches from farm branch at git://github.com/liuy/sheepdog-yuan.git todos: - solidate snapshot feature. - more enchancements. - test slab is really needed. - better commit descriptions. Thanks, Yuan Liu Yuan (12): sheep: hide some minor store layout aware operations sheep: modify the Makefile.am to run farm. sheep: add a slab allocator farm: add sha1_file operations farm: add trunk object farm: add snapshot object sheep: add begin_recover() hook to store. sheep: add end_recover() hook to store. farm: the farm impelmentation proper farm: add a documentation for farm internals sheep: add cluster snapshot/restore support collie: enable cluster-wide snapshot command collie/cluster.c | 159 +++++++++++++ collie/collie.c | 2 + doc/farm-internal.txt | 95 ++++++++ include/sheep.h | 5 +- include/sheepdog_proto.h | 1 + sheep/Makefile.am | 8 +- sheep/farm.h | 84 +++++++ sheep/farm/farm.c | 559 ++++++++++++++++++++++++++++++++++++++++++++++ sheep/farm/sha1_file.c | 220 ++++++++++++++++++ sheep/farm/snap.c | 152 +++++++++++++ sheep/farm/trunk.c | 205 +++++++++++++++++ sheep/group.c | 2 + sheep/ops.c | 59 +++++ sheep/sheep.c | 2 + sheep/sheep_priv.h | 8 +- sheep/slabs.c | 239 ++++++++++++++++++++ sheep/slabs.h | 21 ++ sheep/store.c | 71 +++++-- 18 files changed, 1867 insertions(+), 25 deletions(-) |