From: NeilBrown <neilb-l3A5Bk7waGM@public.gmane.org>
To: Kent Overstreet
<kent.overstreet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
rdunlap-/UHa2rfvQTnk1uMJSBkQmQ@public.gmane.org,
axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org
Subject: Re: [GIT] Bcache version 12
Date: Sun, 11 Sep 2011 08:18:54 +0200 [thread overview]
Message-ID: <20110911081854.2958fdc8@notabene.brown> (raw)
In-Reply-To: <20110910064531.GA32536@moria>
On Fri, 9 Sep 2011 23:45:31 -0700 Kent Overstreet <kent.overstreet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:
> bcache, n.: a cache for arbitrary block devices that uses an SSD
>
> It's probably past time I started poking people to see about getting
> this stuff in. It's synced up with mainline, the documentation is for
> once relatively up to date, and it looks just about production ready.
>
> Suggestions are more than welcome on how to make it easier to review -
> it's entirely too much code, I know (near 10k lines now). I'll be
> emailing the patches that touch other parts of the kernel separately.
>
> 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 to avoid a bunch
> of random memory accesses when doing binary searches in the btree. It
> does over 50k iops doing 4k random /writes/ without breaking a sweat,
> and would do many times that if I had faster hardware.
>
> It (configurably) tracks and skips sequential IO, so as to efficiently
> cache random IO. It's got more cool features than I can remember at this
> point. It's resilient, handling IO errors from the SSD when possible up
> to a configurable threshhold, then detaches the cache from the backing
> device even while you're still using it.
>
> The code is up at
> git://evilpiepirate.org/~kent/linux-bcache.git
In particular it is in the bcache-3.1 branch I assume.
The HEAD branch is old 2.6.34 code.
> git://evilpiepirate.org/~kent/bcache-tools.git
>
> The wiki is woefully out of date, but that might change one day:
> http://bcache.evilpiepirate.org
>
> The most up to date documentation is in the kernel tree -
> Documentation/bcache.txt
>
> Documentation/ABI/testing/sysfs-block-bcache | 156 +
> Documentation/bcache.txt | 265 +
> block/Kconfig | 36 +
> block/Makefile | 4 +
> block/bcache.c | 8479 ++++++++++++++++++++++++++
> block/bcache_util.c | 661 ++
> block/bcache_util.h | 555 ++
> fs/bio.c | 9 +-
Any change that a new driver needs to existing code much raise a big question
mark.
This change in bio.c looks like a bit of a hack. Could you just provide a
'front_pad' to bioset_create to give you space in each bio to store the
bio pool that the bio was allocated from. See use of
mddev_bio_destructor in drivers/md/md.c for an example.
> include/linux/blk_types.h | 2 +
> include/linux/sched.h | 4 +
Could we have a few words justifying the new fields in task_struct?
In general your commit logs are much much to brief (virtually non-existent).
It is much easier to review code if you also tell us what the purpose is :-)
> include/trace/events/bcache.h | 53 +
> kernel/fork.c | 3 +
Does this code even compile?
fork.c now has
+#ifdef CONFIG_BLK_CACHE
+ p->sequential_io = p->nr_ios = 0;
+#endif
but you have removed nr_ios from task_struct ??
> 12 files changed, 10225 insertions(+), 2 deletions(-)
Looking at bcache.txt....
To make bcache devices known to the kernel, echo them to /sys/fs/bcache/register
echo /dev/sdb > /sys/fs/bcache/register
echo /dev/sdc > /sys/fs/bcache/register
???
I know that /sys is heading the way of /proc and becoming a disorganised ad
hoc mess, but we don't need to actively encourage that.
So when you are created a new block device type, putting controls
under /sys/fs (where I believe 'fs' stands for "file system") seem ill
advised.
My personal preference would be to see this as configuring the module and us
/sys/modules/bcache/parameters/register
Alternately you could device a new 'bus' type for bcache and do some sort of
device-model magic to attach something as a new device of that type.
NeilBrown
next prev parent reply other threads:[~2011-09-11 6:18 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-10 6:45 [GIT] Bcache version 12 Kent Overstreet
2011-09-11 6:18 ` NeilBrown [this message]
2011-09-11 19:23 ` Kent Overstreet
[not found] ` <FD294A0B-7127-4ED1-89B8-3E3ADA796360@dilger.ca>
[not found] ` <FD294A0B-7127-4ED1-89B8-3E3ADA796360-m1MBpc4rdrD3fQ9qLvQP4Q@public.gmane.org>
2011-09-12 1:44 ` Kent Overstreet
2011-09-15 21:15 ` Dan Williams
[not found] ` <CAA9_cmeqevWoK=9WMD9c+csc8SbaYq0aK9j1qWr_0FEa6jWZEw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-09-15 21:33 ` Kent Overstreet
[not found] ` <CAC7rs0t_J+foaLZSuuw5BhpUAYfr-KY1iegFOxEBPCpbrkk1Dg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-09-19 7:16 ` NeilBrown
2011-09-21 2:54 ` Kent Overstreet
2011-09-29 23:38 ` Dan Williams
[not found] ` <CAA9_cmfOdv4ozkz7bd2QsbL5_VtAraMZMXoo0AAV0eCgNQr62Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-09-30 7:14 ` Kent Overstreet
2011-09-30 19:47 ` Williams, Dan J
2011-09-15 22:03 ` Dan Williams
2011-09-15 22:07 ` Kent Overstreet
2011-09-19 7:28 ` Pekka Enberg
[not found] ` <CAOJsxLFPODubVEB3Tjg54C7jDKM8H-RCM_u5kvO1D0kKyjUYXQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-09-21 2:55 ` Kent Overstreet
2011-09-21 5:33 ` Pekka Enberg
2011-09-21 5:42 ` Pekka Enberg
2011-09-21 5:57 ` Kent Overstreet
2011-10-06 17:58 ` Pavel Machek
2011-10-10 12:35 ` LuVar
2011-09-20 15:37 ` Arnd Bergmann
2011-09-21 3:44 ` Kent Overstreet
2011-09-21 9:19 ` Arnd Bergmann
2011-09-22 4:07 ` Kent Overstreet
[not found] <1280519620.12031317482084581.JavaMail.root@shiva>
2011-10-01 15:19 ` LuVar
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=20110911081854.2958fdc8@notabene.brown \
--to=neilb-l3a5bk7wagm@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org \
--cc=kent.overstreet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-bcache-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rdunlap-/UHa2rfvQTnk1uMJSBkQmQ@public.gmane.org \
/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).