On Thu, May 10, 2012 at 11:07 AM, Kent Overstreet <koverstreet@xxxxxxxxxx> wrote: > bcache: a cache for arbitrary block devices using an SSD. > > Short overview: > Bcache does both writethrough and writeback caching. It presents itself as a > new block device, a bit like say md. You can cache an arbitrary number of > block devices with a single cache device, and attach and detach things at > runtime - it's quite flexible. > > It's very fast. It uses a b+ tree for the index, along with a journal to > coalesce index updates, and a bunch of other cool tricks like auxiliary binary > search trees with software floating point keys for searching within btree > nodes. > > Bcache is solid, production ready code. There are still bugs being found that > affect specific configurations, but there haven't been any major issues found > in awhile - it's well past time I started working on getting it into mainline. > > It's a lot of code - I tried to split it out so that it'd make some sort of > sense for reviewing. Let me know if there's anything else I can do to make This feature is so interesting; Do you have one clean public git tree about this patchset? So that i can pull it to play with it. > review easier. > > TODO/known issues: > > __up_write() needs to be exported for bcache to compile as a module - it's > used for bypassing lockdep when traversing the btree during garbage > collection. If someone else knows a better solution, please let me know. > > The userspace interface is going to change before it goes in. The general > consensus at LSF was that we don't want yet another interface for > probing/managing block devices, and dm exists so we may as well use that. I > don't think anyone's started on that yet, though. > > Documentation needs to be updated. That's being actively worked on, though. > > Kent Overstreet (16): > Only clone bio vecs that are in use > Bio pool freeing > Revert "rw_semaphore: remove up/down_read_non_owner" > Fix ratelimit macro to compile in c99 mode > Export get_random_int() > Export blk_fill_rwbs() > Closures > bcache: Documentation, and changes to generic code > Bcache: generic utility code > bcache: Superblock/initialization/sysfs code > bcache: Core btree code > bcache: Bset code (lookups within a btree node) > bcache: Journalling > bcache: Request, io and allocation code > bcache: Writeback > bcache: Debug and tracing code > > Documentation/ABI/testing/sysfs-block-bcache | 156 ++ > Documentation/bcache.txt | 255 +++ > block/blk-core.c | 2 +- > drivers/block/Kconfig | 2 + > drivers/block/Makefile | 1 + > drivers/block/bcache/Kconfig | 42 + > drivers/block/bcache/Makefile | 8 + > drivers/block/bcache/alloc.c | 591 +++++++ > drivers/block/bcache/bcache.h | 839 ++++++++++ > drivers/block/bcache/bset.c | 1149 +++++++++++++ > drivers/block/bcache/bset.h | 218 +++ > drivers/block/bcache/btree.c | 2249 ++++++++++++++++++++++++++ > drivers/block/bcache/btree.h | 272 ++++ > drivers/block/bcache/debug.c | 574 +++++++ > drivers/block/bcache/debug.h | 53 + > drivers/block/bcache/io.c | 198 +++ > drivers/block/bcache/journal.c | 722 +++++++++ > drivers/block/bcache/journal.h | 113 ++ > drivers/block/bcache/request.c | 1470 +++++++++++++++++ > drivers/block/bcache/request.h | 58 + > drivers/block/bcache/stats.c | 243 +++ > drivers/block/bcache/stats.h | 58 + > drivers/block/bcache/super.c | 2000 +++++++++++++++++++++++ > drivers/block/bcache/sysfs.c | 802 +++++++++ > drivers/block/bcache/sysfs.h | 99 ++ > drivers/block/bcache/trace.c | 26 + > drivers/block/bcache/util.c | 572 +++++++ > drivers/block/bcache/util.h | 657 ++++++++ > drivers/block/bcache/writeback.c | 518 ++++++ > drivers/block/rbd.c | 2 +- > drivers/char/random.c | 1 + > drivers/md/dm.c | 27 +- > drivers/md/md.c | 3 +- > fs/bio.c | 55 +- > include/linux/bio.h | 7 +- > include/linux/blk_types.h | 2 + > include/linux/cgroup_subsys.h | 6 + > include/linux/closure.h | 614 +++++++ > include/linux/ratelimit.h | 2 +- > include/linux/rwsem.h | 10 + > include/linux/sched.h | 4 + > include/trace/events/bcache.h | 257 +++ > kernel/fork.c | 4 + > kernel/rwsem.c | 16 + > kernel/trace/blktrace.c | 1 + > lib/Kconfig | 3 + > lib/Kconfig.debug | 9 + > lib/Makefile | 2 + > lib/closure.c | 363 +++++ > 49 files changed, 15288 insertions(+), 47 deletions(-) > create mode 100644 Documentation/ABI/testing/sysfs-block-bcache > create mode 100644 Documentation/bcache.txt > create mode 100644 drivers/block/bcache/Kconfig > create mode 100644 drivers/block/bcache/Makefile > create mode 100644 drivers/block/bcache/alloc.c > create mode 100644 drivers/block/bcache/bcache.h > create mode 100644 drivers/block/bcache/bset.c > create mode 100644 drivers/block/bcache/bset.h > create mode 100644 drivers/block/bcache/btree.c > create mode 100644 drivers/block/bcache/btree.h > create mode 100644 drivers/block/bcache/debug.c > create mode 100644 drivers/block/bcache/debug.h > create mode 100644 drivers/block/bcache/io.c > create mode 100644 drivers/block/bcache/journal.c > create mode 100644 drivers/block/bcache/journal.h > create mode 100644 drivers/block/bcache/request.c > create mode 100644 drivers/block/bcache/request.h > create mode 100644 drivers/block/bcache/stats.c > create mode 100644 drivers/block/bcache/stats.h > create mode 100644 drivers/block/bcache/super.c > create mode 100644 drivers/block/bcache/sysfs.c > create mode 100644 drivers/block/bcache/sysfs.h > create mode 100644 drivers/block/bcache/trace.c > create mode 100644 drivers/block/bcache/util.c > create mode 100644 drivers/block/bcache/util.h > create mode 100644 drivers/block/bcache/writeback.c > create mode 100644 include/linux/closure.h > create mode 100644 include/trace/events/bcache.h > create mode 100644 lib/closure.c > > -- > 1.7.9.rc2 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- Regards, Zhi Yong Wu -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel