<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/bcachefs/btree_key_cache.c, branch linux-6.10.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.10.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.10.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2024-06-10T17:17:16Z</updated>
<entry>
<title>bcachefs: Leave a buffer in the btree key cache to avoid lock thrashing</title>
<updated>2024-06-10T17:17:16Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-06-07T18:25:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bf2b356afdcafa18db1b409f7039059d1fd6f25f'/>
<id>urn:sha1:bf2b356afdcafa18db1b409f7039059d1fd6f25f</id>
<content type='text'>
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Fix reporting of freed objects from key cache shrinker</title>
<updated>2024-06-10T17:17:16Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-06-07T00:01:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2760bfe38826f65b1806f1cc62744404b5917dea'/>
<id>urn:sha1:2760bfe38826f65b1806f1cc62744404b5917dea</id>
<content type='text'>
We count objects as freed when we move them to the srcu-pending lists
because we're doing the equivalent of a kfree_srcu(); the only
difference is managing the pending list ourself means we can allocate
from the pending list.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: increase key cache shrinker batch size</title>
<updated>2024-06-10T17:17:16Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-06-06T23:12:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bc65e98e68dac2c0b588e67ea75ee8674c208fc7'/>
<id>urn:sha1:bc65e98e68dac2c0b588e67ea75ee8674c208fc7</id>
<content type='text'>
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Enable automatic shrinking for rhashtables</title>
<updated>2024-06-10T17:17:16Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-06-06T22:56:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5ae67abcdfdfa49de84be00320ffe8a669ef674f'/>
<id>urn:sha1:5ae67abcdfdfa49de84be00320ffe8a669ef674f</id>
<content type='text'>
Since the key cache shrinker walks the rhashtable, a mostly empty
rhashtable leads to really nasty reclaim performance issues.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Fix locking assert</title>
<updated>2024-05-28T15:29:26Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-05-27T06:40:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=218e5e0c2a3acdb29ccbdfbfdd5e2def27d3aae2'/>
<id>urn:sha1:218e5e0c2a3acdb29ccbdfbfdd5e2def27d3aae2</id>
<content type='text'>
We now track whether a transaction is locked, and verify that we don't
have nodes locked when the transaction isn't locked; reorder relocks to
not pop the new assert.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: x-macroize journal flags enums</title>
<updated>2024-05-08T21:29:22Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-04-30T10:20:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b895c70326aa43b48d9b862e5e017de5fa83d844'/>
<id>urn:sha1:b895c70326aa43b48d9b862e5e017de5fa83d844</id>
<content type='text'>
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: uninline set_btree_iter_dontneed()</title>
<updated>2024-05-08T21:29:21Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-04-25T06:20:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c74954135353fac7c206ec15d71c95f981fd0e9d'/>
<id>urn:sha1:c74954135353fac7c206ec15d71c95f981fd0e9d</id>
<content type='text'>
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Fix format specifiers in bch2_btree_key_cache_to_text()</title>
<updated>2024-05-08T21:29:21Z</updated>
<author>
<name>Nathan Chancellor</name>
</author>
<published>2024-04-23T20:12:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8bb0eddbbcc99be5551521a089662f3b5b5a3204'/>
<id>urn:sha1:8bb0eddbbcc99be5551521a089662f3b5b5a3204</id>
<content type='text'>
When building for a 32-bit target, for which 'size_t' is 'unsigned int',
there are two warnings around mismatched format specifiers and argument
types:

  In file included from fs/bcachefs/vstructs.h:5,
                   from fs/bcachefs/bcachefs_format.h:79,
                   from fs/bcachefs/bcachefs.h:207,
                   from fs/bcachefs/btree_key_cache.c:3:
  fs/bcachefs/btree_key_cache.c: In function 'bch2_btree_key_cache_to_text':
  fs/bcachefs/btree_key_cache.c:1046:25: error: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'size_t' {aka 'unsigned int'} [-Werror=format=]
   1046 |         prt_printf(out, "nonpcpu freelist:\t%lu\r\n",   bc-&gt;nr_freed_nonpcpu);
        |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~
        |                                                           |
        |                                                           size_t {aka unsigned int}
  fs/bcachefs/util.h:192:63: note: in definition of macro 'prt_printf'
    192 | #define prt_printf(_out, ...)           bch2_prt_printf(_out, __VA_ARGS__)
        |                                                               ^~~~~~~~~~~
  fs/bcachefs/btree_key_cache.c:1046:47: note: format string is defined here
   1046 |         prt_printf(out, "nonpcpu freelist:\t%lu\r\n",   bc-&gt;nr_freed_nonpcpu);
        |                                             ~~^
        |                                               |
        |                                               long unsigned int
        |                                             %u
  fs/bcachefs/btree_key_cache.c:1047:25: error: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'size_t' {aka 'unsigned int'} [-Werror=format=]
   1047 |         prt_printf(out, "pcpu freelist:\t%lu\r\n",      bc-&gt;nr_freed_pcpu);
        |                         ^~~~~~~~~~~~~~~~~~~~~~~~~       ~~~~~~~~~~~~~~~~~
        |                                                           |
        |                                                           size_t {aka unsigned int}
  fs/bcachefs/util.h:192:63: note: in definition of macro 'prt_printf'
    192 | #define prt_printf(_out, ...)           bch2_prt_printf(_out, __VA_ARGS__)
        |                                                               ^~~~~~~~~~~
  fs/bcachefs/btree_key_cache.c:1047:44: note: format string is defined here
   1047 |         prt_printf(out, "pcpu freelist:\t%lu\r\n",      bc-&gt;nr_freed_pcpu);
        |                                          ~~^
        |                                            |
        |                                            long unsigned int
        |                                          %u
  cc1: all warnings being treated as error

Use the proper 'size_t' specifier, '%zu', to clear up the warnings for
these platforms.

Fixes: f2d47ec26af5 ("bcachefs: Btree key cache instrumentation")
Signed-off-by: Nathan Chancellor &lt;nathan@kernel.org&gt;
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Btree key cache instrumentation</title>
<updated>2024-05-08T21:29:20Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-04-20T18:49:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5147b9ae768758982b196d1b259e6372e328955e'/>
<id>urn:sha1:5147b9ae768758982b196d1b259e6372e328955e</id>
<content type='text'>
It turns out the btree key cache shrinker wasn't actually reclaiming
anything, prior to the previous patch. This adds instrumentation so that
if we have further issues we can see what's going on.

Specifically, sysfs internal/btree_key_cache is greatly expanded with
new counters, and the SRCU sequence numbers of the first 10 entries on
each pending freelist, and we also add trigger_btree_key_cache_shrink
for testing without having to prune all the system caches.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Use bch2_btree_path_upgrade() in key cache traverse</title>
<updated>2024-05-08T21:29:19Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2024-04-10T04:35:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4984faff5d42f8069ab9223dd80dabd4f73469f5'/>
<id>urn:sha1:4984faff5d42f8069ab9223dd80dabd4f73469f5</id>
<content type='text'>
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
</feed>
