changes v4: - support automatic removal of stale object - refine the doc - test IO perf - drop slab implementation, use glibc malloc/free 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 recovery - auto checksumed snapshot objects - no stale objects that are found in Simple Store implementation, that will waste storage a lot. You can access the patches from farm branch at git://github.com/liuy/sheepdog-yuan.git todos: - consolidate snapshot feature. - more enchancements. Thanks, Yuan Liu Yuan (12): sheep: hide some minor store layout aware operations sheep: modify the Makefile.am to run farm. farm: add sha1_file operations farm: add trunk object farm: remove stale object in backend store 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 | 121 ++++++++++ include/sheep.h | 5 +- include/sheepdog_proto.h | 1 + sheep/Makefile.am | 6 +- sheep/farm.h | 85 +++++++ sheep/farm/farm.c | 559 ++++++++++++++++++++++++++++++++++++++++++++++ sheep/farm/sha1_file.c | 269 ++++++++++++++++++++++ sheep/farm/snap.c | 152 +++++++++++++ sheep/farm/trunk.c | 339 ++++++++++++++++++++++++++++ sheep/ops.c | 59 +++++ sheep/sheep_priv.h | 8 +- sheep/store.c | 71 +++++-- 14 files changed, 1812 insertions(+), 24 deletions(-) |