<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/drivers/md/bcache, branch v3.15.2</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v3.15.2</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v3.15.2'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2014-03-18T19:39:28+00:00</updated>
<entry>
<title>bcache: remove nested function usage</title>
<updated>2014-03-18T19:39:28+00:00</updated>
<author>
<name>John Sheu</name>
<email>john.sheu@gmail.com</email>
</author>
<published>2014-03-18T06:13:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=cb85114956dc88b287afca2872658f562acbc302'/>
<id>urn:sha1:cb85114956dc88b287afca2872658f562acbc302</id>
<content type='text'>
Uninlined nested functions can cause crashes when using ftrace, as they don't
follow the normal calling convention and confuse the ftrace function graph
tracer as it examines the stack.

Also, nested functions are supported as a gcc extension, but may fail on other
compilers (e.g. llvm).

Signed-off-by: John Sheu &lt;john.sheu@gmail.com&gt;
</content>
</entry>
<entry>
<title>bcache: Kill bucket-&gt;gc_gen</title>
<updated>2014-03-18T19:24:54+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-02-28T01:51:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.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:36+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-03-17T23:55:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.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:35+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-03-18T00:15:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.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:35+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-01-23T09:44:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.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>
<entry>
<title>bcache: btree locking rework</title>
<updated>2014-03-18T19:23:35+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-03-05T00:42:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=2a285686c109816ba71a00b9278262cf02648258'/>
<id>urn:sha1:2a285686c109816ba71a00b9278262cf02648258</id>
<content type='text'>
Add a new lock, b-&gt;write_lock, which is required to actually modify - or write -
a btree node; this lock is only held for short durations.

This means we can write out a btree node without taking b-&gt;lock, which _is_ held
for long durations - solving a deadlock when btree_flush_write() (from the
journalling code) is called with a btree node locked.

Right now just occurs in bch_btree_set_root(), but with an upcoming journalling
rework is going to happen a lot more.

This also turns b-&gt;lock is now more of a read/intent lock instead of a
read/write lock - but not completely, since it still blocks readers. May turn it
into a real intent lock at some point in the future.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Fix a race when freeing btree nodes</title>
<updated>2014-03-18T19:23:34+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-03-18T01:22:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=05335cff9f01555b769ac97b7bacc472b7ed047a'/>
<id>urn:sha1:05335cff9f01555b769ac97b7bacc472b7ed047a</id>
<content type='text'>
This isn't a bulletproof fix; btree_node_free() -&gt; bch_bucket_free() puts the
bucket on the unused freelist, where it can be reused right away without any
ordering requirements. It would be better to wait on at least a journal write to
go down before reusing the bucket. bch_btree_set_root() does this, and inserting
into non leaf nodes is completely synchronous so we should be ok, but future
patches are just going to get rid of the unused freelist - it was needed in the
past for various reasons but shouldn't be anymore.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Add a real GC_MARK_RECLAIMABLE</title>
<updated>2014-03-18T19:22:36+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-03-13T20:46:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=4fe6a816707aace9e8e297b708411c5930537793'/>
<id>urn:sha1:4fe6a816707aace9e8e297b708411c5930537793</id>
<content type='text'>
This means the garbage collection code can better check for data and metadata
pointers to the same buckets.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Add bch_keylist_init_single()</title>
<updated>2014-03-18T19:22:36+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-01-09T05:22:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c13f3af9247db929fe1be86c0442ef161e615ac4'/>
<id>urn:sha1:c13f3af9247db929fe1be86c0442ef161e615ac4</id>
<content type='text'>
This will potentially save us an allocation when we've got inode/dirent bkeys
that don't fit in the keylist's inline keys.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
</content>
</entry>
<entry>
<title>bcache: Improve priority_stats</title>
<updated>2014-03-18T19:22:35+00:00</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2014-02-26T01:34:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=15754020524a56517df082799f07de880f4b29e2'/>
<id>urn:sha1:15754020524a56517df082799f07de880f4b29e2</id>
<content type='text'>
Break down data into clean data/dirty data/metadata.

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