|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4 |
|
| #
4ede80a9 |
| 21-Apr-2025 |
Kent Overstreet <[email protected]> |
bcachefs: Allocator now copes with unaligned buckets
We had a buggy release of bcachefs-tools that wasn't properly aligning bucket sizes.
We can't ask users to reformat - and it's easy to teach the
bcachefs: Allocator now copes with unaligned buckets
We had a buggy release of bcachefs-tools that wasn't properly aligning bucket sizes.
We can't ask users to reformat - and it's easy to teach the allocator to make sure writes are properly aligned.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14 |
|
| #
8a9f3d05 |
| 20-Mar-2025 |
Kent Overstreet <[email protected]> |
bcachefs: EIO cleanup
Replace these with proper private error codes, so that when we get an error message we're not sifting through the entire codebase to see where it came from.
Signed-off-by: Ken
bcachefs: EIO cleanup
Replace these with proper private error codes, so that when we get an error message we're not sifting through the entire codebase to see where it came from.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc7, v6.14-rc6, v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13 |
|
| #
7e9ed60f |
| 19-Jan-2025 |
Kent Overstreet <[email protected]> |
bcachefs: Bail out early on alloc_nowait data updates
If a data update doesn't want to block on allocations (promotes, self healing on read error) - check if the allocation would fail before kicking
bcachefs: Bail out early on alloc_nowait data updates
If a data update doesn't want to block on allocations (promotes, self healing on read error) - check if the allocation would fail before kicking off the data update and calling into the write path.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3, v6.13-rc2 |
|
| #
47d6ee76 |
| 05-Dec-2024 |
Kent Overstreet <[email protected]> |
bcachefs: dev_alloc_list.devs -> dev_alloc_list.data
This lets us use darray macros on dev_alloc_list (and it will become a darray eventually, when we increase the maximum number of devices).
Signe
bcachefs: dev_alloc_list.devs -> dev_alloc_list.data
This lets us use darray macros on dev_alloc_list (and it will become a darray eventually, when we increase the maximum number of devices).
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.13-rc1 |
|
| #
828552ca |
| 25-Nov-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Kill bch2_bucket_alloc_new_fs()
The early-early allocation path, bch2_bucket_alloc_new_fs(), is no longer needed - and inconsistencies around new_fs_bucket_idx have been a frequent source
bcachefs: Kill bch2_bucket_alloc_new_fs()
The early-early allocation path, bch2_bucket_alloc_new_fs(), is no longer needed - and inconsistencies around new_fs_bucket_idx have been a frequent source of bugs.
Reported-by: [email protected] Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7 |
|
| #
2e95497e |
| 01-Sep-2024 |
Kent Overstreet <[email protected]> |
bcachefs: fix prototype to bch2_alloc_sectors_start_trans()
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.11-rc6, v6.11-rc5, v6.11-rc4, v6.11-rc3 |
|
| #
cecf7279 |
| 07-Aug-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Make allocator stuck timeout configurable, ratelimit messages
Limit these messages to once every 2 minutes to avoid spamming logs; with multiple devices the output can be quite significant
bcachefs: Make allocator stuck timeout configurable, ratelimit messages
Limit these messages to once every 2 minutes to avoid spamming logs; with multiple devices the output can be quite significant.
Also, up the default timeout to 30 seconds from 10 seconds.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
c1e44462 |
| 07-Aug-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Improved allocator debugging for ec
chasing down a device removal deadlock with erasure coding
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.11-rc2, v6.11-rc1, v6.10 |
|
| #
cdda2126 |
| 11-Jul-2024 |
Kent Overstreet <[email protected]> |
bcachefs: bch2_btree_reserve_cache_to_text()
Add a pretty printer so the btree reserve cache can be seen in sysfs; as it pins open_buckets we need it for tracking down open_buckets issues.
Signed-o
bcachefs: bch2_btree_reserve_cache_to_text()
Add a pretty printer so the btree reserve cache can be seen in sysfs; as it pins open_buckets we need it for tracking down open_buckets issues.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc7, v6.10-rc6, v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7 |
|
| #
8783856a |
| 01-May-2024 |
Kent Overstreet <[email protected]> |
bcachefs: ob_dev()
Wrapper around bch2_dev_have_ref() for open_buckets; we do guarantee that the device an open_bucket points to exists.
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
e98786ea |
| 03-May-2024 |
Kent Overstreet <[email protected]> |
bcachefs: bch2_print_allocator_stuck()
If we block on the allocator for more than 10 seconds, print out some useful debugging info.
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.9-rc6, v6.9-rc5 |
|
| #
e7f63c67 |
| 20-Apr-2024 |
Kent Overstreet <[email protected]> |
bcachefs: plumb data_type into bch2_bucket_alloc_trans()
prep work for making the allocator try to keep btree nodes within the existing member info btree allocated bitmap
Signed-off-by: Kent Overst
bcachefs: plumb data_type into bch2_bucket_alloc_trans()
prep work for making the allocator try to keep btree nodes within the existing member info btree allocated bitmap
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.9-rc4 |
|
| #
2f724563 |
| 12-Apr-2024 |
Kent Overstreet <[email protected]> |
bcachefs: member helper cleanups
Some renaming for better consistency
bch2_member_exists -> bch2_member_alive bch2_dev_exists -> bch2_member_exists bch2_dev_exsits2 -> bch2_dev_exists bch_dev_lock
bcachefs: member helper cleanups
Some renaming for better consistency
bch2_member_exists -> bch2_member_alive bch2_dev_exists -> bch2_member_exists bch2_dev_exsits2 -> bch2_dev_exists bch_dev_locked -> bch2_dev_locked bch_dev_bkey_exists -> bch2_dev_bkey_exists
new helper - bch2_dev_safe
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.9-rc3, v6.9-rc2, v6.9-rc1, v6.8, v6.8-rc7, v6.8-rc6, v6.8-rc5, v6.8-rc4, v6.8-rc3, v6.8-rc2, v6.8-rc1, v6.7, v6.7-rc8, v6.7-rc7, v6.7-rc6, v6.7-rc5, v6.7-rc4, v6.7-rc3, v6.7-rc2, v6.7-rc1, v6.6, v6.6-rc7, v6.6-rc6, v6.6-rc5, v6.6-rc4, v6.6-rc3, v6.6-rc2, v6.6-rc1, v6.5, v6.5-rc7, v6.5-rc6, v6.5-rc5 |
|
| #
fb8e5b4c |
| 05-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: sb-members.c
Split out a new file for bch_sb_field_members - we'll likely want to move more code here in the future.
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.5-rc4, v6.5-rc3, v6.5-rc2, v6.5-rc1, v6.4 |
|
| #
e53a961c |
| 24-Jun-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Rename enum alloc_reserve -> bch_watermark
This is prep work for consolidating with JOURNAL_WATERMARK.
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.4-rc7, v6.4-rc6, v6.4-rc5, v6.4-rc4, v6.4-rc3, v6.4-rc2, v6.4-rc1, v6.3, v6.3-rc7, v6.3-rc6, v6.3-rc5, v6.3-rc4, v6.3-rc3 |
|
| #
b40901b0 |
| 14-Mar-2023 |
Kent Overstreet <[email protected]> |
bcachefs: New erasure coding shutdown path
This implements a new shutdown path for erasure coding, which is needed for the upcoming BCH_WRITE_WAIT_FOR_EC write path.
The process is: - Cancel new s
bcachefs: New erasure coding shutdown path
This implements a new shutdown path for erasure coding, which is needed for the upcoming BCH_WRITE_WAIT_FOR_EC write path.
The process is: - Cancel new stripes being built up - Close out/cancel open buckets on write points or the partial list that are for stripes - Shutdown rebalance/copygc - Then wait for in flight new stripes to finish
With BCH_WRITE_WAIT_FOR_EC, move ops will be waiting on stripes to fill up before they complete; the new ec shutdown path is needed for shutting down copygc/rebalance without deadlocking.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.3-rc2, v6.3-rc1 |
|
| #
7635e1a6 |
| 25-Feb-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Rework open bucket partial list allocation
Now, any open_bucket can go on the partial list: allocating from the partial list has been moved to its own dedicated function, open_bucket_add_b
bcachefs: Rework open bucket partial list allocation
Now, any open_bucket can go on the partial list: allocating from the partial list has been moved to its own dedicated function, open_bucket_add_bucets() -> bucket_alloc_set_partial().
In particular, this means that erasure coded buckets can safely go on the partial list; the new location works with the "allocate an ec bucket first, then the rest" logic.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
2f4e9472 |
| 01-Mar-2023 |
Kent Overstreet <[email protected]> |
bcachefs: bch2_open_bucket_to_text()
Factor out a common helper
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.2 |
|
| #
2c7dd446 |
| 18-Feb-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Erasure coding now uses bch2_bucket_alloc_trans
This code predates plumbing btree_trans through the bucket allocation path: switching to it fixes a deadlock due to using multiple btree_tra
bcachefs: Erasure coding now uses bch2_bucket_alloc_trans
This code predates plumbing btree_trans through the bucket allocation path: switching to it fixes a deadlock due to using multiple btree_trans at the same time, which we never want to do.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.2-rc8, v6.2-rc7, v6.2-rc6, v6.2-rc5, v6.2-rc4, v6.2-rc3, v6.2-rc2, v6.2-rc1, v6.1, v6.1-rc8, v6.1-rc7 |
|
| #
393a1f68 |
| 24-Nov-2022 |
Kent Overstreet <[email protected]> |
bcachefs: Better inlining in core write path
Provide inline versions of some allocation functions - bch2_alloc_sectors_done_inlined() - bch2_alloc_sectors_append_ptrs_inlined()
and use them in th
bcachefs: Better inlining in core write path
Provide inline versions of some allocation functions - bch2_alloc_sectors_done_inlined() - bch2_alloc_sectors_append_ptrs_inlined()
and use them in the core IO path.
Also, inline bch2_extent_update_i_size_sectors() and bch2_bkey_append_ptr().
In the core write path, function call overhead matters - every function call is a jump to a new location and a potential cache miss.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.1-rc6, v6.1-rc5, v6.1-rc4 |
|
| #
07de1803 |
| 02-Nov-2022 |
Kent Overstreet <[email protected]> |
bcachefs: Kill bch2_alloc_sectors_start()
Only used in one place, just inline it there.
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.1-rc3, v6.1-rc2, v6.1-rc1, v6.0, v6.0-rc7, v6.0-rc6, v6.0-rc5, v6.0-rc4, v6.0-rc3, v6.0-rc2, v6.0-rc1, v5.19, v5.19-rc8, v5.19-rc7, v5.19-rc6, v5.19-rc5, v5.19-rc4, v5.19-rc3, v5.19-rc2, v5.19-rc1, v5.18, v5.18-rc7, v5.18-rc6, v5.18-rc5, v5.18-rc4, v5.18-rc3, v5.18-rc2, v5.18-rc1, v5.17, v5.17-rc8, v5.17-rc7, v5.17-rc6, v5.17-rc5, v5.17-rc4, v5.17-rc3, v5.17-rc2, v5.17-rc1 |
|
| #
f25d8215 |
| 10-Jan-2022 |
Kent Overstreet <[email protected]> |
bcachefs: Kill allocator threads & freelists
Now that we have new persistent data structures for the allocator, this patch converts the allocator to use them.
Now, foreground bucket allocation uses
bcachefs: Kill allocator threads & freelists
Now that we have new persistent data structures for the allocator, this patch converts the allocator to use them.
Now, foreground bucket allocation uses the freespace btree to find buckets to allocate, instead of popping buckets off the freelist.
The background allocator threads are no longer needed and are deleted, as well as the allocator freelists. Now we only need background tasks for invalidating buckets containing cached data (when we are low on empty buckets), and for issuing discards.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v5.16, v5.16-rc8, v5.16-rc7, v5.16-rc6, v5.16-rc5 |
|
| #
c6b2826c |
| 11-Dec-2021 |
Kent Overstreet <[email protected]> |
bcachefs: Freespace, need_discard btrees
This adds two new btrees for the upcoming allocator rewrite: an extents btree of free buckets, and a btree for buckets awaiting discards.
We also add a new
bcachefs: Freespace, need_discard btrees
This adds two new btrees for the upcoming allocator rewrite: an extents btree of free buckets, and a btree for buckets awaiting discards.
We also add a new trigger for alloc keys to keep the new btrees up to date, and a compatibility path to initialize them on existing filesystems.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
b17d3cec |
| 31-Oct-2022 |
Kent Overstreet <[email protected]> |
bcachefs: Run btree updates after write out of write_point
In the write path, after the write to the block device(s) complete we have to punt to process context to do the btree update.
Instead of u
bcachefs: Run btree updates after write out of write_point
In the write path, after the write to the block device(s) complete we have to punt to process context to do the btree update.
Instead of using the work item embedded in op->cl, this patch switches to a per write-point work item. This helps with two different issues:
- lock contention: btree updates to the same writepoint will (usually) be updating the same alloc keys - context switch overhead: when we're bottlenecked on btree updates, having a thread (running out of a work item) checking the write point for completed ops is cheaper than queueing up a new work item and waking up a kworker.
In an arbitrary benchmark, 4k random writes with fio running inside a VM, this patch resulted in a 10% improvement in total iops.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
3e154711 |
| 13-Mar-2022 |
Kent Overstreet <[email protected]> |
bcachefs: x-macroize alloc_reserve enum
This makes an array of strings available, like our other enums.
Signed-off-by: Kent Overstreet <[email protected]>
|