[Sheepdog] [PATCH v6 0/17] add a new store named 'farm'

Liu Yuan namei.unix at gmail.com
Thu Jan 12 14:37:11 CET 2012


Hi Kazum,

	I think the core of the patch set is stable, farm is ready to be
merged.

changes v6:
 - address Kazum's comments. Thanks!
	- remove compressed feature for sha1_file.
	- use global config to remember backend store.
	- sending name of store instread of index 
	- fix a bug in restore operation.
	- use macros for patch check.

changes v5:
 - address Chirstoph Hellwig's comments. Thanks.
	- check path length at the set-up
	- error handling setxattr
	- use sys/xattr.h
	- rename __trunk_entry to trunk_entry_incore
	- remove unnecessary warppers
	- add comments in the files
	- check ret of strtoull for ULLONG_MAX
 - fix autoconfig as Dongsu Park suggests. Thanks.
 - fix some farm operations in recovery stage
 - support dynamic backend set when formatting
 - transfer backend store for newly joined nodes.
 - abstract out sys vdi bitmap set operation

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.

 - practically the same performance as Simple Store.
        A simple qemu-io test on my laptop shows that
                write           read
        farm    14.840 MB/s     11.211 MB/s
        simple  14.842 MB/s     11.245 MB/s

   You can access the patches from farm branch:
	$git checkout -b farm origin/farm

todos:
 - consolidate snapshot feature.
 - more enchancements.

Thanks,
Yuan

Liu Yuan (17):
      sheep: hide some minor store layout aware operations
      store: add dynamic mechanism to chain the available backend stores.
      sheep: transfer store backend for newly joined node
      sheep: modify the configures to run farm.
      sheep: check object directory path at start-up
      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
      farm: add format() support
      store: abstract VDI bitmap set-up

 collie/cluster.c         |  219 +++++++++++++++-
 collie/collie.c          |    3 +
 configure.ac             |   14 +
 doc/farm-internal.txt    |  121 +++++++++
 include/sheep.h          |   12 +-
 include/sheepdog_proto.h |   13 +
 sheep/Makefile.am        |    8 +-
 sheep/farm/farm.c        |  644 ++++++++++++++++++++++++++++++++++++++++++++++
 sheep/farm/farm.h        |   79 ++++++
 sheep/farm/sha1_file.c   |  259 +++++++++++++++++++
 sheep/farm/snap.c        |  169 ++++++++++++
 sheep/farm/trunk.c       |  380 +++++++++++++++++++++++++++
 sheep/group.c            |   17 ++-
 sheep/ops.c              |   97 +++++++-
 sheep/sheep_priv.h       |   36 +++-
 sheep/simple_store.c     |   76 +++++-
 sheep/store.c            |  249 +++++++++++-------
 17 files changed, 2273 insertions(+), 123 deletions(-)




More information about the sheepdog mailing list