<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/md/bcache, branch v3.12</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/md/bcache?h=v3.12</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/md/bcache?h=v3.12'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-10-23T06:55:36Z</updated>
<entry>
<title>bcache: Fixed incorrect order of arguments to bio_alloc_bioset()</title>
<updated>2013-10-23T06:55:36Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-10-22T22:35:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d4eddd42f592a0cf06818fae694a3d271f842e4d'/>
<id>urn:sha1:d4eddd42f592a0cf06818fae694a3d271f842e4d</id>
<content type='text'>
Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix a null ptr deref regression</title>
<updated>2013-10-11T01:17:39Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-10-11T00:31:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2fe80d3bbf1c8bd9efc5b8154207c8dd104e7306'/>
<id>urn:sha1:2fe80d3bbf1c8bd9efc5b8154207c8dd104e7306</id>
<content type='text'>
Commit c0f04d88e46d ("bcache: Fix flushes in writeback mode") was fixing
a reported data corruption bug, but it seems some last minute
refactoring or rebasing introduced a null pointer deref.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Reported-by: Gabriel de Perthuis &lt;g2p.code@gmail.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix flushes in writeback mode</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-09-24T06:17:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c0f04d88e46d14de51f4baebb6efafb7d59e9f96'/>
<id>urn:sha1:c0f04d88e46d14de51f4baebb6efafb7d59e9f96</id>
<content type='text'>
In writeback mode, when we get a cache flush we need to make sure we
issue a flush to the backing device.

The code for sending down an extra flush was wrong - by cloning the bio
we were probably getting flags that didn't make sense for a bare flush,
and also the old code was firing for FUA bios, for which we don't need
to send a flush to the backing device.

This was causing data corruption somehow - the mechanism was never
determined, but this patch fixes it for the users that were seeing it.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix for handling overlapping extents when reading in a btree node</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-09-24T06:17:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=84786438ed17978d72eeced580ab757e4da8830b'/>
<id>urn:sha1:84786438ed17978d72eeced580ab757e4da8830b</id>
<content type='text'>
btree_sort_fixup() was overly clever, because it was trying to avoid
pulling a key off the btree iterator in more than one place.

This led to a really obscure bug where we'd break early from the loop in
btree_sort_fixup() if the current key overlapped with keys in more than
one older set, and the next key it overlapped with was zero size.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix a shrinker deadlock</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-09-24T06:17:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a698e08c82dfb9771e0bac12c7337c706d729b6d'/>
<id>urn:sha1:a698e08c82dfb9771e0bac12c7337c706d729b6d</id>
<content type='text'>
GFP_NOIO means we could be getting called recursively - mca_alloc() -&gt;
mca_data_alloc() - definitely can't use mutex_lock(bucket_lock) then.
Whoops.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix a dumb CPU spinning bug in writeback</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-09-24T06:17:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=79e3dab90d9f826ceca67c7890e048ac9169de49'/>
<id>urn:sha1:79e3dab90d9f826ceca67c7890e048ac9169de49</id>
<content type='text'>
schedule_timeout() != schedule_timeout_uninterruptible()

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix a flush/fua performance bug</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-09-24T06:17:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1394d6761b6e9e15ee7c632a6d48791188727b40'/>
<id>urn:sha1:1394d6761b6e9e15ee7c632a6d48791188727b40</id>
<content type='text'>
bch_journal_meta() was missing the flush to make the journal write
actually go down (instead of waiting up to journal_delay_ms)...

Whoops

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix a writeback performance regression</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-09-24T06:17:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c2a4f3183a1248f615a695fbd8905da55ad11bba'/>
<id>urn:sha1:c2a4f3183a1248f615a695fbd8905da55ad11bba</id>
<content type='text'>
Background writeback works by scanning the btree for dirty data and
adding those keys into a fixed size buffer, then for each dirty key in
the keybuf writing it to the backing device.

When read_dirty() finishes and it's time to scan for more dirty data, we
need to wait for the outstanding writeback IO to finish - they still
take up slots in the keybuf (so that foreground writes can check for
them to avoid races) - without that wait, we'll continually rescan when
we'll be able to add at most a key or two to the keybuf, and that takes
locks that starves foreground IO.  Doh.

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Correct printf()-style format length modifier</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert@linux-m68k.org</email>
</author>
<published>2013-09-24T06:17:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=61cbd250f867f98bb4738000afc6002d6f2b14bd'/>
<id>urn:sha1:61cbd250f867f98bb4738000afc6002d6f2b14bd</id>
<content type='text'>
Fix

  drivers/md/bcache/btree.c: In function ‘bch_btree_node_read’:
  drivers/md/bcache/btree.c:259: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 3 has type ‘size_t’

Signed-off-by: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>bcache: Fix for when no journal entries are found</title>
<updated>2013-09-24T21:41:43Z</updated>
<author>
<name>Kent Overstreet</name>
<email>kmo@daterainc.com</email>
</author>
<published>2013-09-24T06:17:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c426c4fd46f709ade2bddd51c5738729c7ae1db5'/>
<id>urn:sha1:c426c4fd46f709ade2bddd51c5738729c7ae1db5</id>
<content type='text'>
The journal replay code didn't handle this case, causing it to go into
an infinite loop...

Signed-off-by: Kent Overstreet &lt;kmo@daterainc.com&gt;
Cc: linux-stable &lt;stable@vger.kernel.org&gt; # &gt;= v3.10
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
</feed>
