<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/bcachefs/data_update.c, branch linux-6.7.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.7.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.7.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2023-12-27T00:31:11Z</updated>
<entry>
<title>bcachefs: Fix promotes</title>
<updated>2023-12-27T00:31:11Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-12-24T04:29:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7b474c77daddaf89bbb72594737538f4e0dce2fd'/>
<id>urn:sha1:7b474c77daddaf89bbb72594737538f4e0dce2fd</id>
<content type='text'>
The recent work to fix data moves w.r.t. durability broke promotes,
because the caused us to bail out when the extent minus pointers being
dropped still has enough pointers to satisfy the current number of
replicas.

Disable this check when we're adding cached replicas.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Fix nocow locks deadlock</title>
<updated>2023-12-12T01:43:11Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-12-11T23:40:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bedd6fe4d357f3cffb392f2153b52ef71f810259'/>
<id>urn:sha1:bedd6fe4d357f3cffb392f2153b52ef71f810259</id>
<content type='text'>
On trylock failure we were waiting for outstanding reads to complete -
but nocow locks need to be held until the whole move is finished.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Fix bch2_extent_drop_ptrs() call</title>
<updated>2023-12-04T21:04:55Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-12-02T07:43:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=131898b0cb4ac6598d3537eeeee2711dec129f51'/>
<id>urn:sha1:131898b0cb4ac6598d3537eeeee2711dec129f51</id>
<content type='text'>
Also, make bch2_extent_drop_ptrs() safer, so it works with extents and
non-extents iterators.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Data update path won't accidentaly grow replicas</title>
<updated>2023-11-26T02:48:42Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-11-25T02:51:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7d9f8468ff7589073981b3eb8b175945c7dcd13c'/>
<id>urn:sha1:7d9f8468ff7589073981b3eb8b175945c7dcd13c</id>
<content type='text'>
Previously, there was a bug where if an extent had greater durability
than required (because we needed to move a durability=1 pointer and
ended up putting it on a durability 2 device), we would submit a write
for replicas=2 - the durability of the pointer being rewritten - instead
of the number of replicas required to bring it back up to the
data_replicas option.

This, plus the allocation path sometimes allocating on a greater
durability device than requested, meant that extents could continue
having more and more replicas added as they were being rewritten.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Check for nonce offset inconsistency in data_update path</title>
<updated>2023-11-14T02:45:03Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-11-03T22:38:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=701ff57eb3d7c86c9a53de959e0c48fa8ca446d4'/>
<id>urn:sha1:701ff57eb3d7c86c9a53de959e0c48fa8ca446d4</id>
<content type='text'>
We've rarely been seeing a nonce offset inconsistency that doesn't show
up in tests: this adds some extra verification code to the data update
path that prints out more relevant info when it occurs.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: Don't downgrade locks on transaction restart</title>
<updated>2023-11-02T01:11:08Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-10-27T19:23:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=be9e782df3cb557715630a61dc79d9f966737859'/>
<id>urn:sha1:be9e782df3cb557715630a61dc79d9f966737859</id>
<content type='text'>
We should only be downgrading locks on success - otherwise, our
transaction restarts won't be getting the correct locks and we'll
livelock.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: rebalance_work</title>
<updated>2023-11-02T01:11:05Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-10-20T17:33:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fb3f57bb1177ae4d5550bbb431f90ebf277329e8'/>
<id>urn:sha1:fb3f57bb1177ae4d5550bbb431f90ebf277329e8</id>
<content type='text'>
This adds a new btree, rebalance_work, to eliminate scanning required
for finding extents that need work done on them in the background - i.e.
for the background_target and background_compression options.

rebalance_work is a bitset btree, where a KEY_TYPE_set corresponds to an
extent in the extents or reflink btree at the same pos.

A new extent field is added, bch_extent_rebalance, which indicates that
this extent has work that needs to be done in the background - and which
options to use. This allows per-inode options to be propagated to
indirect extents - at least in some circumstances. In this patch,
changing IO options on a file will not propagate the new options to
indirect extents pointed to by that file.

Updating (setting/clearing) the rebalance_work btree is done by the
extent trigger, which looks at the bch_extent_rebalance field.

Scanning is still requrired after changing IO path options - either just
for a given inode, or for the whole filesystem. We indicate that
scanning is required by adding a KEY_TYPE_cookie key to the
rebalance_work btree: the cookie counter is so that we can detect that
scanning is still required when an option has been flipped mid-way
through an existing scan.

Future possible work:
 - Propagate options to indirect extents when being changed
 - Add other IO path options - nr_replicas, ec, to rebalance_work so
   they can be applied in the background when they change
 - Add a counter, for bcachefs fs usage output, showing the pending
   amount of rebalance work: we'll probably want to do this after the
   disk space accounting rewrite (moving it to a new btree)

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: move: move_stats refactoring</title>
<updated>2023-10-31T16:18:38Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-10-23T20:21:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=96a363a7e68832054f2a93249335fd3efd870aa3'/>
<id>urn:sha1:96a363a7e68832054f2a93249335fd3efd870aa3</id>
<content type='text'>
data_progress_list is gone - it was redundant with moving_context_list

The upcoming rebalance rewrite is going to have it using two different
move_stats objects with the same moving_context, depending on whether
it's scanning or using the rebalance_work btree - this patch plumbs
stats around a bit differently so that will work.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: move: convert to bbpos</title>
<updated>2023-10-31T16:18:37Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-10-23T19:36:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d5eade93452bd1a892e2155e9bb723f04992bdac'/>
<id>urn:sha1:d5eade93452bd1a892e2155e9bb723f04992bdac</id>
<content type='text'>
Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
<entry>
<title>bcachefs: moving_context now owns a btree_trans</title>
<updated>2023-10-31T16:18:37Z</updated>
<author>
<name>Kent Overstreet</name>
</author>
<published>2023-10-20T17:32:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=633169035a7ccdfe3a9eba0202dc2135baa07c72'/>
<id>urn:sha1:633169035a7ccdfe3a9eba0202dc2135baa07c72</id>
<content type='text'>
btree_trans and moving_context are used together, and having the
moving_context owns the transaction object reduces some plumbing.

Signed-off-by: Kent Overstreet &lt;kent.overstreet@linux.dev&gt;
</content>
</entry>
</feed>
