|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14 |
|
| #
4fcd4de0 |
| 20-Mar-2025 |
Kent Overstreet <[email protected]> |
bcachefs: fs-common.c -> namei.c
name <-> inode, code for managing the relationships between inodes and dirents.
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.14-rc7, v6.14-rc6, v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2 |
|
| #
baabeb49 |
| 06-Feb-2025 |
Kent Overstreet <[email protected]> |
bcachefs: Factor out progress.[ch]
the backpointers code has progress indicators; these aren't great, since they print to the dmesg console and we much prefer to have progress indicators reporting t
bcachefs: Factor out progress.[ch]
the backpointers code has progress indicators; these aren't great, since they print to the dmesg console and we much prefer to have progress indicators reporting to a specific userspace program so they're not spamming the system console.
But not all codepaths that need progress indicators support that yet, and we don't want users to think "this is hung".
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3, v6.13-rc2 |
|
| #
d4c9fc00 |
| 05-Dec-2024 |
Kent Overstreet <[email protected]> |
bcachefs: factor out str_hash.c
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.13-rc1, 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, v6.11-rc6, v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2, v6.11-rc1, v6.10, v6.10-rc7, v6.10-rc6, v6.10-rc5, v6.10-rc4 |
|
| #
8e973a4f |
| 11-Jun-2024 |
Kent Overstreet <[email protected]> |
bcachefs: rcu_pending
Generic data structure for explicitly tracking pending RCU items, allowing items to be dequeued (i.e. allocate from items pending freeing). Works with conventional RCU and SRCU
bcachefs: rcu_pending
Generic data structure for explicitly tracking pending RCU items, allowing items to be dequeued (i.e. allocate from items pending freeing). Works with conventional RCU and SRCU, and possibly other RCU flavors in the future, meaning this can serve as a more generic replacement for SLAB_TYPESAFE_BY_RCU.
Pending items are tracked in radix trees; if memory allocation fails, we fall back to linked lists.
A rcu_pending is initialized with a callback, which is invoked when pending items's grace periods have expired. Two types of callback processing are handled specially:
- RCU_PENDING_KVFREE_FN
New backend for kvfree_rcu(). Slightly faster, and eliminates the synchronize_rcu() slowpath in kvfree_rcu_mightsleep() - instead, an rcu_head is allocated if we don't have one and can't use the radix tree
TODO: - add a shrinker (as in the existing kvfree_rcu implementation) so that memory reclaim can free expired objects if callback processing isn't keeping up, and to expedite a grace period if we're under memory pressure and too much memory is stranded by RCU
- add a counter for amount of memory pending
- RCU_PENDING_CALL_RCU_FN
Accelerated backend for call_rcu() - pending callbacks are tracked in a radix tree to eliminate linked list overhead.
to serve as replacement backends for kvfree_rcu() and call_rcu(); these may be of interest to other uses (e.g. SLAB_TYPESAFE_BY_RCU users).
Note:
Internally, we're using a single rearming call_rcu() callback for notifications from the core RCU subsystem for notifications when objects are ready to be processed.
Ideally we would be getting a callback every time a grace period completes for which we have objects, but that would require multiple rcu_heads in flight, and since the number of gp sequence numbers with uncompleted callbacks is not bounded, we can't do that yet.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6, v6.9-rc5, v6.9-rc4, 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 |
|
| #
2744e5c9 |
| 27-Dec-2023 |
Kent Overstreet <[email protected]> |
bcachefs: KEY_TYPE_accounting
New key type for the disk space accounting rewrite.
- Holds a variable sized array of u64s (may be more than one for accounting e.g. compressed and uncompressed si
bcachefs: KEY_TYPE_accounting
New key type for the disk space accounting rewrite.
- Holds a variable sized array of u64s (may be more than one for accounting e.g. compressed and uncompressed size, or buckets and sectors for a given data type)
- Updates are deltas, not new versions of the key: this means updates to accounting can happen via the btree write buffer, which we'll be teaching to accumulate deltas.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
4409b808 |
| 12-Mar-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Repair pass for scanning for btree nodes
If a btree root or interior btree node goes bad, we're going to lose a lot of data, unless we can recover the nodes that it pointed to by scanning.
bcachefs: Repair pass for scanning for btree nodes
If a btree root or interior btree node goes bad, we're going to lose a lot of data, unless we can recover the nodes that it pointed to by scanning.
Fortunately btree node headers are fully self describing, and additionally the magic number is xored with the filesytem UUID, so we can do so safely.
This implements the scanning - next patch will rework topology repair to make use of the found nodes.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
ca1e02f7 |
| 22-Mar-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Etyzinger cleanups
Pull out eytzinger.c and kill eytzinger_cmp_fn. We now provide eytzinger0_sort and eytzinger0_sort_r, which use the standard cmp_func_t and cmp_r_func_t callbacks.
Sign
bcachefs: Etyzinger cleanups
Pull out eytzinger.c and kill eytzinger_cmp_fn. We now provide eytzinger0_sort and eytzinger0_sort_r, which use the standard cmp_func_t and cmp_r_func_t callbacks.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
d2554263 |
| 24-Mar-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Split out recovery_passes.c
We've grown a fair amount of code for managing recovery passes; tracking which ones we're running, which ones need to be run, and flagging in the superblock whi
bcachefs: Split out recovery_passes.c
We've grown a fair amount of code for managing recovery passes; tracking which ones we're running, which ones need to be run, and flagging in the superblock which ones need to be run on the next recovery.
So it's worth splitting out into its own file, this code is pretty different from the code in recovery.c.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
f1ca1abf |
| 14-Mar-2024 |
Kent Overstreet <[email protected]> |
bcachefs: pull out time_stats.[ch]
prep work for lifting out of fs/bcachefs/
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
c7cad231 |
| 19-Feb-2024 |
Calvin Owens <[email protected]> |
bcachefs: Silence gcc warnings about arm arch ABI drift
32-bit arm builds emit a lot of spam like this:
fs/bcachefs/backpointers.c: In function ‘extent_matches_bp’: fs/bcachefs/backpointers
bcachefs: Silence gcc warnings about arm arch ABI drift
32-bit arm builds emit a lot of spam like this:
fs/bcachefs/backpointers.c: In function ‘extent_matches_bp’: fs/bcachefs/backpointers.c:15:13: note: parameter passing for argument of type ‘struct bch_backpointer’ changed in GCC 9.1
Apply the change from commit ebcc5928c5d9 ("arm64: Silence gcc warnings about arch ABI drift") to fs/bcachefs/ to silence them.
Signed-off-by: Calvin Owens <[email protected]> Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
3a58dfbc |
| 21-Jan-2024 |
Kent Overstreet <[email protected]> |
bcachefs: counters.c -> sb-counters.c
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
96f37eab |
| 31-Dec-2023 |
Kent Overstreet <[email protected]> |
bcachefs: factor out thread_with_file, thread_with_stdio
thread_with_stdio now knows how to handle input - fsck can now prompt to fix errors.
Signed-off-by: Kent Overstreet <[email protected]
bcachefs: factor out thread_with_file, thread_with_stdio
thread_with_stdio now knows how to handle input - fsck can now prompt to fix errors.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
84f16387 |
| 29-Dec-2023 |
Kent Overstreet <[email protected]> |
bcachefs: bch_sb_field_downgrade
Add a new superblock section that contains a list of { minor version, recovery passes, errors_to_fix }
that is - a list of recovery passes that must be run when d
bcachefs: bch_sb_field_downgrade
Add a new superblock section that contains a list of { minor version, recovery passes, errors_to_fix }
that is - a list of recovery passes that must be run when downgrading past a given version, and a list of errors to silently fix.
The upcoming disk accounting rewrite is not going to be fully compatible: we're going to have to regenerate accounting both when upgrading to the new version, and also from downgrading from the new version, since the new method of doing disk space accounting is a completely different architecture based on deltas, and synchronizing them for every jounal entry write to maintain compatibility is going to be too expensive and impractical.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc7, v6.7-rc6, v6.7-rc5, v6.7-rc4, v6.7-rc3, v6.7-rc2, v6.7-rc1 |
|
| #
73ab9e03 |
| 08-Nov-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Factor out darray resize slowpath
Move the slowpath (actually growing the darray) to an out-of-line function; also, add some helpers for the upcoming btree write buffer rewrite.
Signed-of
bcachefs: Factor out darray resize slowpath
Move the slowpath (actually growing the darray) to an out-of-line function; also, add some helpers for the upcoming btree write buffer rewrite.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.6 |
|
| #
f5d26fa3 |
| 25-Oct-2023 |
Kent Overstreet <[email protected]> |
bcachefs: bch_sb_field_errors
Add a new superblock section to keep counts of errors seen since filesystem creation: we'll be addingcounters for every distinct fsck error.
The new superblock section
bcachefs: bch_sb_field_errors
Add a new superblock section to keep counts of errors seen since filesystem creation: we'll be addingcounters for every distinct fsck error.
The new superblock section has entries of the for [ id, count, time_of_last_error ]; this is intended to let us see what errors are occuring - and getting fixed - via show-super output.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.6-rc7, v6.6-rc6, v6.6-rc5, v6.6-rc4, v6.6-rc3, v6.6-rc2, v6.6-rc1 |
|
| #
aaad530a |
| 27-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: BTREE_ID_logged_ops
Add a new btree for long running logged operations - i.e. for logging operations that we can't do within a single btree transaction, so that they can be resumed if we c
bcachefs: BTREE_ID_logged_ops
Add a new btree for long running logged operations - i.e. for logging operations that we can't do within a single btree transaction, so that they can be resumed if we crash.
Keys in the logged operations btree will represent operations in progress, with the state of the operation stored in the value.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
1809b8cb |
| 10-Sep-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Break up io.c
More reorganization, this splits up io.c into - io_read.c - io_misc.c - fallocate, fpunch, truncate - io_write.c
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
a9a7bbab |
| 08-Sep-2023 |
Kent Overstreet <[email protected]> |
bcachefs: bch2_acl_to_text()
We can now print out acls from bch2_xattr_to_text(), when the xattr contains an acl.
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.5, v6.5-rc7 |
|
| #
8e877caa |
| 16-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Split out snapshot.c
subvolume.c has gotten a bit large, this splits out a separate file just for managing snapshot trees - BTREE_ID_snapshots.
Signed-off-by: Kent Overstreet <kent.overst
bcachefs: Split out snapshot.c
subvolume.c has gotten a bit large, this splits out a separate file just for managing snapshot trees - BTREE_ID_snapshots.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.5-rc6, v6.5-rc5 |
|
| #
401585fe |
| 05-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: btree_journal_iter.c
Split out a new file from recovery.c for managing the list of keys we read from the journal: before journal replay finishes the btree iterator code needs to be able to
bcachefs: btree_journal_iter.c
Split out a new file from recovery.c for managing the list of keys we read from the journal: before journal replay finishes the btree iterator code needs to be able to iterate over and return keys from the journal as well, so there's a fair bit of code here.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
a37ad1a3 |
| 05-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: sb-clean.c
Pull code for bch_sb_field_clean out into its own file.
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
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]>
|
| #
8079aab0 |
| 05-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Split up btree_update_leaf.c
We now have btree_trans_commit.c btree_update.c
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
dbbfca9f |
| 03-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Split up fs-io.[ch]
fs-io.c is too big - time for some reorganization - fs-dio.c: direct io - fs-pagecache.c: pagecache data structures (bch_folio), utility code
Signed-off-by: Kent Ove
bcachefs: Split up fs-io.[ch]
fs-io.c is too big - time for some reorganization - fs-dio.c: direct io - fs-pagecache.c: pagecache data structures (bch_folio), utility code
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.5-rc4, v6.5-rc3, v6.5-rc2, v6.5-rc1, v6.4, 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, v6.3-rc2, v6.3-rc1, v6.2, 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, v6.1-rc6, v6.1-rc5, v6.1-rc4 |
|
| #
a8b3a677 |
| 02-Nov-2022 |
Kent Overstreet <[email protected]> |
bcachefs: Nocow support
This adds support for nocow mode, where we do writes in-place when possible. Patch components:
- New boolean filesystem and inode option, nocow: note that when nocow is
bcachefs: Nocow support
This adds support for nocow mode, where we do writes in-place when possible. Patch components:
- New boolean filesystem and inode option, nocow: note that when nocow is enabled, data checksumming and compression are implicitly disabled
- To prevent in-place writes from racing with data moves (data_update.c) or bucket reuse (i.e. a bucket being reused and re-allocated while a nocow write is in flight, we have a new locking mechanism.
Buckets can be locked for either data update or data move, using a fixed size hash table of two_state_shared locks. We don't have any chaining, meaning updates and moves to different buckets that hash to the same lock will wait unnecessarily - we'll want to watch for this becoming an issue.
- The allocator path also needs to check for in-place writes in flight to a given bucket before giving it out: thus we add another counter to bucket_alloc_state so we can track this.
- Fsync now may need to issue cache flushes to block devices instead of flushing the journal. We add a device bitmask to bch_inode_info, ei_devs_need_flush, which tracks devices that need to have flushes issued - note that this will lead to unnecessary flushes when other codepaths have already issued flushes, we may want to replace this with a sequence number.
- New nocow write path: look up extents, and if they're writable write to them - otherwise fall back to the normal COW write path.
XXX: switch to sequence numbers instead of bitmask for devs needing journal flush
XXX: ei_quota_lock being a mutex means bch2_nocow_write_done() needs to run in process context - see if we can improve this
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|