<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/bcachefs, branch linux-6.15.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.15.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.15.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2025-06-10T11:17:09Z</updated>
<entry>
<title>bcachefs: Fix subvol to missing root repair</title>
<updated>2025-06-10T11:17:09Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-06-02T23:48:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=379dd295019c9e11d19f660a857170ee1bd74f63'/>
<id>urn:sha1:379dd295019c9e11d19f660a857170ee1bd74f63</id>
<content type='text'>
commit 29cc6fb7c068c773049d3bde14b939033893eff4 upstream.

We had a bug where the root inode of a subvolume was erronously deleted:
bch2_evict_inode() called bch2_inode_rm(), meaning the VFS inode's
i_nlink was somehow set to 0 when it shouldn't have - the inode in the
btree indicated it clearly was not unlinked.

This has been addressed with additional safety checks in
bch2_inode_rm() - pulling in the safety checks we already were doing
when deleting unlinked inodes in recovery - but the really disastrous
bug was in check_subvols(), which on finding a dangling subvol (subvol
with a missing root inode) would delete the subvolume.

I assume this bug dates from early check_directory_structure() code,
which originally handled subvolumes and normal paths - the idea being
that still live contents of the subvolume would get reattached
somewhere.

But that's incorrect, and disastrously so; deleting a subvolume triggers
deleting the snapshot ID it points to, deleting the entire contents.

The correct way to repair is to recreate the root inode if it's missing;
then any contents will get reattached under that subvolume's lost+found.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>bcachefs: Run may_delete_deleted_inode() checks in bch2_inode_rm()</title>
<updated>2025-06-10T11:17:09Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-06-02T21:43:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=00d26f3a47e44bd7662de33b89dd84a3837e2959'/>
<id>urn:sha1:00d26f3a47e44bd7662de33b89dd84a3837e2959</id>
<content type='text'>
commit 09fb85ae565645b982e9030dbb2ff6707f2cdddc upstream.

We had a bug where bch2_evict_inode() incorrectly called bch2_inode_rm()
- the journal clearly showed the inode was not unlinked.

We've got checks that we use in recovery when cleaning up deleted
inodes, lift them to bch2_inode_rm() as well.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>bcachefs: delete dead code from may_delete_deleted_inode()</title>
<updated>2025-06-10T11:17:09Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-06-02T22:26:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fd1b2ef7216a29ad6a27ed43c7298ed8e4a9a0e7'/>
<id>urn:sha1:fd1b2ef7216a29ad6a27ed43c7298ed8e4a9a0e7</id>
<content type='text'>
commit bb6689bbeebc6fb51f0f120b486bdcc9a38ffcf6 upstream.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>bcachefs: Repair code for directory i_size</title>
<updated>2025-06-10T11:17:09Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-05-31T15:58:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=66c36452163871360f15dc4042dd00612e42cd66'/>
<id>urn:sha1:66c36452163871360f15dc4042dd00612e42cd66</id>
<content type='text'>
commit 36a2fdf7c5c1ccae6ca16cd14067567096cebe17 upstream.

We had a bug due due to an incomplete revert of the patch implementing
directory i_size (summing up the size of the dirents), leading to
completely screwy i_size values that underflow.

Most userspace programs don't seem to care (e.g. du ignores it), but it
turns out this broke sshfs, so needs to be repaired.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>bcachefs: Kill un-reverted directory i_size code</title>
<updated>2025-06-10T11:17:09Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-05-31T22:32:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=deaead8247f3de0ae5e7c5dcea55343d4320bdc0'/>
<id>urn:sha1:deaead8247f3de0ae5e7c5dcea55343d4320bdc0</id>
<content type='text'>
commit 95fafc0f3407a6446082c11849df585bd3246571 upstream.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>bcachefs: Check for casefolded dirents in non casefolded dirs</title>
<updated>2025-05-22T00:13:14Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-05-21T04:38:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=010c89468134d1991b87122379f86feae23d512f'/>
<id>urn:sha1:010c89468134d1991b87122379f86feae23d512f</id>
<content type='text'>
Check for mismatches between casefold dirents and casefold directories.

A mismatch will cause lookups to fail, as we'll be doing the lookup with
the casefolded name, which won't match the non-casefolded dirent, and
vice versa.

Reported-by: Christopher Snowhill &lt;chris@kode54.net&gt;
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Fix bch2_dirent_create_snapshot() for casefolding</title>
<updated>2025-05-22T00:13:13Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-05-21T04:41:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ecd76c5f108eec3eea0a5b32007cda0dca6c92ac'/>
<id>urn:sha1:ecd76c5f108eec3eea0a5b32007cda0dca6c92ac</id>
<content type='text'>
bch2_dirent_create_snapshot(), used in fsck, neglected to create a
casefolded dirent.

Just move this into dirent_create_key().

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Fix casefold opt via xattr interface</title>
<updated>2025-05-22T00:13:09Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-05-21T00:05:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8d5ac187da10a8a5599b481588951470a2fb792b'/>
<id>urn:sha1:8d5ac187da10a8a5599b481588951470a2fb792b</id>
<content type='text'>
Changing the casefold option requires extra checks/work - factor out a
helper from bch2_fileattr_set() for the xattr code to use.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: mkwrite() now only dirties one page</title>
<updated>2025-05-19T12:28:41Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-05-15T01:32:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cbed8287e5789558cf947a7b4d47fdf3e25c29bf'/>
<id>urn:sha1:cbed8287e5789558cf947a7b4d47fdf3e25c29bf</id>
<content type='text'>
Don't dirty the whole folio - fixes write amplification with
applications doing mmaped writes.

https://www.reddit.com/r/bcachefs/comments/1klzcg1/incredible_amounts_of_write_amplification_when/

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: fix extent_has_stripe_ptr()</title>
<updated>2025-05-19T02:35:33Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2025-05-19T02:32:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=494d458cfa70d8c107de5a6b6fc941f31c886b12'/>
<id>urn:sha1:494d458cfa70d8c107de5a6b6fc941f31c886b12</id>
<content type='text'>
This wasn't checking indirect extents.

Fixes: https://github.com/koverstreet/bcachefs/issues/887
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
</feed>
