<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/md/bcache/btree.c, branch linux-4.0.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.0.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.0.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-08-04T22:23:04Z</updated>
<entry>
<title>bcache: try to set b-&gt;parent properly</title>
<updated>2014-08-04T22:23:04Z</updated>
<author>
<name>Slava Pestov</name>
</author>
<published>2014-07-12T07:22:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2452cc89063a2a6890368f185c4b6d7d8802179e'/>
<id>urn:sha1:2452cc89063a2a6890368f185c4b6d7d8802179e</id>
<content type='text'>
bcache_flash_dev.ktest would reliably crash with 8k and 16k bucket size
before; now it passes.

Change-Id: Ib542232235e39298c3a7548fe52b645cabb823d1
</content>
</entry>
<entry>
<title>bcache: fix use-after-free in btree_gc_coalesce()</title>
<updated>2014-08-04T22:23:04Z</updated>
<author>
<name>Slava Pestov</name>
</author>
<published>2014-07-13T04:53:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=400ffaa2acd72274e2c7293a9724382383bebf3e'/>
<id>urn:sha1:400ffaa2acd72274e2c7293a9724382383bebf3e</id>
<content type='text'>
If we goto out_nocoalesce after we free new_nodes[0], we end up freeing
new_nodes[0] again. This was generating a lockdep warning. The fix is
to set new_nodes[0] to NULL, since the out_nocoalesce path safely
ignores NULL entries in the new_nodes array.

This regression was introduced in 2d7f9531.

Change-Id: I76564d7257800583214376b4bacf236cda90c89c
</content>
</entry>
<entry>
<title>bcache: fix crash in bcache_btree_node_alloc_fail tracepoint</title>
<updated>2014-08-04T22:23:03Z</updated>
<author>
<name>Slava Pestov</name>
</author>
<published>2014-05-23T18:18:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=913dc33fb2720fb5f979011664294137ddd8b13b'/>
<id>urn:sha1:913dc33fb2720fb5f979011664294137ddd8b13b</id>
<content type='text'>
'b' was NULL.

Change-Id: Icac0fd04afa2d23f213d96d51afd53374e6dd0c0
</content>
</entry>
<entry>
<title>bcache: Allocate bounce buffers with GFP_NOWAIT</title>
<updated>2014-08-04T22:23:03Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2014-05-19T15:55:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=501d52a90cbe652b41336c206ff0e95799d5a9b5'/>
<id>urn:sha1:501d52a90cbe652b41336c206ff0e95799d5a9b5</id>
<content type='text'>
There's no point in blocking on these allocations, since our fallback paths will
probably go faster than blocking.

Change-Id: I733ca202c25cb36bde02607a0a60552229a4241c
</content>
</entry>
<entry>
<title>bcache: Make sure to pass GFP_WAIT to mempool_alloc()</title>
<updated>2014-08-04T22:23:03Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2014-05-19T15:57:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bcf090e0040e30f8409e6a535a01e6473afb096f'/>
<id>urn:sha1:bcf090e0040e30f8409e6a535a01e6473afb096f</id>
<content type='text'>
this was very wrong - mempool_alloc() only guarantees success with GFP_WAIT.
bcache uses GFP_NOWAIT in various other places where we have a fallback,
circuits must've gotten crossed when writing this code or something.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: wait for buckets when allocating new btree root</title>
<updated>2014-08-04T22:23:03Z</updated>
<author>
<name>Slava Pestov</name>
</author>
<published>2014-04-22T01:23:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c5aa4a3157b55bdca18dd2a9d9f43314470b6d32'/>
<id>urn:sha1:c5aa4a3157b55bdca18dd2a9d9f43314470b6d32</id>
<content type='text'>
Tested:
- sometimes bcache_tier test would hang on startup with a failure
  to allocate the btree root -- no longer seeing this

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Kill bucket-&gt;gc_gen</title>
<updated>2014-03-18T19:24:54Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2014-02-28T01:51:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3a2fd9d5090b83aab85378a846fa10f39b0b5aa7'/>
<id>urn:sha1:3a2fd9d5090b83aab85378a846fa10f39b0b5aa7</id>
<content type='text'>
gc_gen was a temporary used to recalculate last_gc, but since we only need
bucket-&gt;last_gc when gc isn't running (gc_mark_valid = 1), we can just update
last_gc directly.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Kill unused freelist</title>
<updated>2014-03-18T19:23:36Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2014-03-17T23:55:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2531d9ee61fa08a5a9ab8f002c50779888d232c7'/>
<id>urn:sha1:2531d9ee61fa08a5a9ab8f002c50779888d232c7</id>
<content type='text'>
This was originally added as at optimization that for various reasons isn't
needed anymore, but it does add a lot of nasty corner cases (and it was
responsible for some recently fixed bugs). Just get rid of it now.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Rework btree cache reserve handling</title>
<updated>2014-03-18T19:23:35Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2014-03-18T00:15:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0a63b66db566cffdf90182eb6e66fdd4d0479e63'/>
<id>urn:sha1:0a63b66db566cffdf90182eb6e66fdd4d0479e63</id>
<content type='text'>
This changes the bucket allocation reserves to use _real_ reserves - separate
freelists - instead of watermarks, which if nothing else makes the current code
saner to reason about and is going to be important in the future when we add
support for multiple btrees.

It also adds btree_check_reserve(), which checks (and locks) the reserves for
both bucket allocation and memory allocation for btree nodes; the old code just
kinda sorta assumed that since (e.g. for btree node splits) it had the root
locked and that meant no other threads could try to make use of the same
reserve; this technically should have been ok for memory allocation (we should
always have a reserve for memory allocation (the btree node cache is used as a
reserve and we preallocate it)), but multiple btrees will mean that locking the
root won't be sufficient anymore, and for the bucket allocation reserve it was
technically possible for the old code to deadlock.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Kill btree_io_wq</title>
<updated>2014-03-18T19:23:35Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2014-01-23T09:44:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=56b30770b27d54d68ad51eccc6d888282b568cee'/>
<id>urn:sha1:56b30770b27d54d68ad51eccc6d888282b568cee</id>
<content type='text'>
With the locking rework in the last patch, this shouldn't be needed anymore -
btree_node_write_work() only takes b-&gt;write_lock which is never held for very
long.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
</feed>
