From: Kent Overstreet <koverstreet@google.com>
To: linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org,
dm-devel@redhat.com
Cc: tejun@google.com, agk@redhat.com
Subject: [Bcache v13 00/16]
Date: Wed, 9 May 2012 23:07:29 -0400 [thread overview]
Message-ID: <cover.1336619038.git.koverstreet@google.com> (raw)
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
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
next reply other threads:[~2012-05-10 3:07 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-10 3:07 Kent Overstreet [this message]
2012-05-10 3:09 ` [Bcache v13 05/16] Export get_random_int() Kent Overstreet
[not found] ` <5278ad493eb3ad441b2091b4c119d741e47f5c97.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-15 16:44 ` Tejun Heo
2012-05-10 3:09 ` [Bcache v13 07/16] Closures Kent Overstreet
[not found] ` <82f00ebb4ee0404788c5bd7fbfa1fe4969f28ba1.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-15 22:41 ` Tejun Heo
[not found] ` <20120515224137.GA15386-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-18 6:29 ` Kent Overstreet
[not found] ` <20120518062948.GA21163-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-18 10:02 ` Alan Cox
2012-05-21 19:40 ` Kent Overstreet
2012-05-10 3:10 ` [Bcache v13 08/16] bcache: Documentation, and changes to generic code Kent Overstreet
2012-05-10 3:10 ` [Bcache v13 09/16] Bcache: generic utility code Kent Overstreet
[not found] ` <c3f0ca2a499f532253d4c16a30837d43e237266a.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-10 19:35 ` Dan Williams
2012-05-10 21:42 ` Kent Overstreet
2012-05-22 21:17 ` Tejun Heo
2012-05-23 3:12 ` Kent Overstreet
[not found] ` <20120523031214.GA607-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 3:36 ` Joe Perches
2012-05-23 4:50 ` [PATCH] Add human-readable units modifier to vsnprintf() Kent Overstreet
[not found] ` <20120523045023.GE607-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 5:10 ` Joe Perches
2012-05-23 5:22 ` Kent Overstreet
[not found] ` <20120523052236.GA14312-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 5:42 ` Joe Perches
2012-05-23 6:04 ` Kent Overstreet
[not found] ` <20120523060435.GD14312-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 6:12 ` Joe Perches
2012-05-23 5:08 ` [Bcache v13 09/16] Bcache: generic utility code Tejun Heo
[not found] ` <20120523050808.GA29976-RcKxWJ4Cfj1J2suj2OqeGauc2jM2gXBXkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 5:54 ` Kent Overstreet
[not found] ` <20120523055402.GC14312-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 16:51 ` Tejun Heo
[not found] ` <20120522211706.GH14339-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-23 15:15 ` [dm-devel] " Vivek Goyal
[not found] ` <20120523151538.GJ14943-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-23 15:33 ` Kent Overstreet
2012-05-22 21:19 ` Tejun Heo
2012-05-10 3:10 ` [Bcache v13 10/16] bcache: Superblock/initialization/sysfs code Kent Overstreet
2012-05-10 3:10 ` [Bcache v13 11/16] bcache: Core btree code Kent Overstreet
[not found] ` <7f1de39b6d7040b3fe271500776f4b985b21ea82.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-22 22:12 ` Tejun Heo
[not found] ` <20120522221259.GJ14339-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-23 3:45 ` Kent Overstreet
[not found] ` <20120523034546.GB607-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 5:20 ` Tejun Heo
2012-05-23 5:34 ` Kent Overstreet
[not found] ` <20120523053403.GB14312-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 17:24 ` Tejun Heo
2012-05-22 22:40 ` Tejun Heo
2012-05-30 7:47 ` Tejun Heo
[not found] ` <20120530074708.GA32121-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-31 1:09 ` Kent Overstreet
2012-05-10 3:11 ` [Bcache v13 12/16] bcache: Bset code (lookups within a btree node) Kent Overstreet
[not found] ` <5b5998d7d09ec36377acdb5d15665d1e4e818521.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-22 22:39 ` Tejun Heo
[not found] ` <20120522223932.GK14339-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-23 4:21 ` Kent Overstreet
[not found] ` <20120523042114.GC607-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-23 17:55 ` Tejun Heo
[not found] ` <20120523175544.GC18143-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-23 20:49 ` Tejun Heo
[not found] ` <20120523204914.GC3933-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2012-05-24 18:11 ` Tejun Heo
2012-05-10 3:11 ` [Bcache v13 13/16] bcache: Journalling Kent Overstreet
2012-05-10 3:11 ` [Bcache v13 14/16] bcache: Request, io and allocation code Kent Overstreet
[not found] ` <9ea33658f2a71b3b9bd2ec10bee959bef146f23c.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-22 22:42 ` Tejun Heo
[not found] ` <20120522224255.GM14339-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-23 1:44 ` Kent Overstreet
2012-05-23 4:24 ` Kent Overstreet
2012-05-22 22:44 ` Tejun Heo
2012-05-30 7:23 ` Tejun Heo
[not found] ` <20120530072358.GB4854-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-31 0:52 ` Kent Overstreet
[not found] ` <20120531005224.GA5645-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-31 2:43 ` Tejun Heo
2012-05-31 5:13 ` Kent Overstreet
[not found] ` <20120531051321.GA12602-RcKxWJ4Cfj3IzGYXcIpNmNLIRw13R84JkQQo+JxHRPFibQn6LdNjmg@public.gmane.org>
2012-05-31 6:45 ` Tejun Heo
[not found] ` <20120531064515.GA18984-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2012-06-01 2:37 ` Tejun Heo
2012-05-31 2:45 ` Tejun Heo
2012-05-30 7:32 ` Tejun Heo
2012-05-10 3:11 ` [Bcache v13 15/16] bcache: Writeback Kent Overstreet
2012-05-10 13:54 ` [Bcache v13 00/16] Vivek Goyal
2012-05-10 15:03 ` [dm-devel] " Vivek Goyal
[not found] ` <20120510150353.GI23768-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-10 15:34 ` Kent Overstreet
[not found] ` <1188908028.170.1336674698865.JavaMail.mail@webmail09>
2012-05-10 18:49 ` [Bcache v13 11/16] bcache: Core btree code Joe Perches
2012-05-10 21:48 ` Kent Overstreet
[not found] ` <cover.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-10 3:08 ` [Bcache v13 01/16] Only clone bio vecs that are in use Kent Overstreet
[not found] ` <cb817596299fecd01ea36e4a80203f23165bda75.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-10 21:35 ` [dm-devel] " Vivek Goyal
[not found] ` <20120510213556.GO23768-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-10 21:42 ` Kent Overstreet
[not found] ` <CAH+dOxJ2Vi=8Oq1zDZLmqD9-a_wgM=co3+xemw4XBoiDkh_4zg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-11 13:29 ` Jeff Moyer
2012-05-11 20:29 ` Kent Overstreet
2012-05-15 16:19 ` Tejun Heo
2012-05-10 3:08 ` [Bcache v13 02/16] Bio pool freeing Kent Overstreet
[not found] ` <ba8ce9fcca87f192ff5f5d3a436eb8f4d0bcb006.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-10 21:32 ` [dm-devel] " Vivek Goyal
2012-05-10 21:39 ` Kent Overstreet
[not found] ` <CAH+dOxL7QwcyUm46cK-pF1qK+kHYC=67iAaQDDwUF2ssJwergA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-05-10 21:52 ` Vivek Goyal
[not found] ` <20120510215208.GC2613-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2012-05-10 21:53 ` Kent Overstreet
2012-05-15 16:24 ` Tejun Heo
2012-05-15 16:25 ` Tejun Heo
2012-05-10 3:08 ` [Bcache v13 03/16] Revert "rw_semaphore: remove up/down_read_non_owner" Kent Overstreet
[not found] ` <3f51ec3e69b8f471e2d1cc539f01504e2b903fed.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-15 16:37 ` Tejun Heo
2012-05-15 16:38 ` Tejun Heo
2012-05-10 3:09 ` [Bcache v13 04/16] Fix ratelimit macro to compile in c99 mode Kent Overstreet
[not found] ` <d7cfd6b70316efc3fe2ce575203d906a610e3670.1336619038.git.koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2012-05-15 16:43 ` Tejun Heo
2012-05-10 3:09 ` [Bcache v13 06/16] Export blk_fill_rwbs() Kent Overstreet
2012-05-10 3:11 ` [Bcache v13 16/16] bcache: Debug and tracing code Kent Overstreet
2012-05-10 18:34 ` [Bcache v13 00/16] Dan Williams
2012-05-18 10:06 ` Arnd Bergmann
2012-05-30 8:29 ` Tejun Heo
2012-05-30 8:54 ` Zhi Yong Wu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1336619038.git.koverstreet@google.com \
--to=koverstreet@google.com \
--cc=agk@redhat.com \
--cc=dm-devel@redhat.com \
--cc=linux-bcache@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tejun@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).