linux-stable/fs/bcachefs
Kent Overstreet 7f5c5d20f0 bcachefs: Redo data_update interface
This patch significantly cleans up and simplifies the data_update
interface. Instead of only being able to specify a single pointer by
device to rewrite, we're now able to specify any or all of the pointers
in the original extent to be rewrited, as a bitmask.

data_cmd is no more: the various pred functions now just return true if
the extent should be moved/updated. All the data_update path does is
rewrite existing replicas, or add new ones.

This fixes a bug where with background compression on replicated
filesystems, where rebalance -> data_update would incorrectly drop the
wrong old replica, and keep trying to recompress an extent pointer and
each time failing to drop the right replica. Oops.

Now, the data update path doesn't look at the io options to decide which
pointers to keep and which to drop - it only goes off of the
data_update_options passed to it.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2023-10-22 17:09:34 -04:00
..
acl.c bcachefs: bch2_assert_pos_locked() 2023-10-22 17:09:16 -04:00
acl.h bcachefs: Plumb through subvolume id 2023-10-22 17:09:12 -04:00
alloc_background.c bcachefs: Fix bch2_check_alloc_key() 2023-10-22 17:09:34 -04:00
alloc_background.h bcachefs: Plumb btree_id & level to trans_mark 2023-10-22 17:09:32 -04:00
alloc_foreground.c bcachefs: Split out dev_buckets_free() 2023-10-22 17:09:34 -04:00
alloc_foreground.h bcachefs: Kill allocator threads & freelists 2023-10-22 17:09:29 -04:00
alloc_types.h bcachefs: Fold bucket_state in to BCH_DATA_TYPES() 2023-10-22 17:09:30 -04:00
bcachefs.h bcachefs: Go RW before bch2_check_lrus() 2023-10-22 17:09:32 -04:00
bcachefs_format.h bcachefs: Add a persistent counter for bucket discards 2023-10-22 17:09:33 -04:00
bcachefs_ioctl.h bcachefs: Fold bucket_state in to BCH_DATA_TYPES() 2023-10-22 17:09:30 -04:00
bkey.c bcachefs: Heap allocate printbufs 2023-10-22 17:09:25 -04:00
bkey.h bcachefs: Whiteouts for snapshots 2023-10-22 17:09:12 -04:00
bkey_buf.h bcachefs: Reduce/kill BKEY_PADDED use 2023-10-22 17:08:50 -04:00
bkey_methods.c bcachefs: Improve an error message 2023-10-22 17:09:34 -04:00
bkey_methods.h bcachefs: Plumb btree_id & level to trans_mark 2023-10-22 17:09:32 -04:00
bkey_sort.c bcachefs: Don't call bch2_bkey_transform() unnecessarily 2023-10-22 17:09:19 -04:00
bkey_sort.h bcachefs: Kill bch2_sort_repack_merge() 2023-10-22 17:09:19 -04:00
bset.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
bset.h bcachefs: Kill bch2_bset_fix_invalidated_key() 2023-10-22 17:09:21 -04:00
btree_cache.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
btree_cache.h bcachefs: Fix usage of six lock's percpu mode 2023-10-22 17:09:26 -04:00
btree_gc.c bcachefs: Always descend to leaf nodes it btree_gc 2023-10-22 17:09:34 -04:00
btree_gc.h bcachefs: Fix a null ptr deref 2023-10-22 17:09:31 -04:00
btree_io.c bcachefs: Fix btree node read retries 2023-10-22 17:09:33 -04:00
btree_io.h bcachefs: Shutdown path improvements 2023-10-22 17:09:32 -04:00
btree_iter.c bcachefs: Improve an error message 2023-10-22 17:09:34 -04:00
btree_iter.h bcachefs: Improve an error message 2023-10-22 17:09:34 -04:00
btree_key_cache.c bcachefs: btree key cache pcpu freedlist 2023-10-22 17:09:34 -04:00
btree_key_cache.h bcachefs: Btree key cache coherency 2023-10-22 17:09:23 -04:00
btree_locking.h bcachefs: Also show when blocked on write locks 2023-10-22 17:09:23 -04:00
btree_types.h bcachefs: btree key cache pcpu freedlist 2023-10-22 17:09:34 -04:00
btree_update.h bcachefs: bch2_trans_reset_updates() 2023-10-22 17:09:33 -04:00
btree_update_interior.c bcachefs: Always use percpu_ref_tryget_live() on c->writes 2023-10-22 17:09:34 -04:00
btree_update_interior.h bcachefs: Shutdown path improvements 2023-10-22 17:09:32 -04:00
btree_update_leaf.c bcachefs: Always use percpu_ref_tryget_live() on c->writes 2023-10-22 17:09:34 -04:00
buckets.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
buckets.h bcachefs: fix __dev_available(). 2023-10-22 17:09:34 -04:00
buckets_types.h bcachefs: Fold bucket_state in to BCH_DATA_TYPES() 2023-10-22 17:09:30 -04:00
buckets_waiting_for_journal.c bcachefs: New data structure for buckets waiting on journal commit 2023-10-22 17:09:22 -04:00
buckets_waiting_for_journal.h bcachefs: New data structure for buckets waiting on journal commit 2023-10-22 17:09:22 -04:00
buckets_waiting_for_journal_types.h bcachefs: New data structure for buckets waiting on journal commit 2023-10-22 17:09:22 -04:00
chardev.c bcachefs: Fold bucket_state in to BCH_DATA_TYPES() 2023-10-22 17:09:30 -04:00
chardev.h
checksum.c bcachefs: Improve checksum error messages 2023-10-22 17:09:34 -04:00
checksum.h bcachefs: Check for errors from crypto_skcipher_encrypt() 2023-10-22 17:09:24 -04:00
clock.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
clock.h bcachefs: Convert various code to printbuf 2023-10-22 17:08:43 -04:00
clock_types.h bcachefs: Persist 64 bit io clocks 2023-10-22 17:08:52 -04:00
compress.c bcachefs: Turn encoded_extent_max into a regular option 2023-10-22 17:09:19 -04:00
compress.h
counters.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
counters.h bcachefs: Add persistent counters 2023-10-22 17:09:32 -04:00
darray.h bcachefs: darrays 2023-10-22 17:09:28 -04:00
data_update.c bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
data_update.h bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
debug.c bcachefs: Improve an error message 2023-10-22 17:09:34 -04:00
debug.h bcachefs: Update bch2_btree_verify() 2023-10-22 17:09:01 -04:00
dirent.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
dirent.h bcachefs: Add rw to .key_invalid() 2023-10-22 17:09:30 -04:00
disk_groups.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
disk_groups.h bcachefs: Convert bch2_sb_to_text to master option list 2023-10-22 17:09:27 -04:00
ec.c bcachefs: Always use percpu_ref_tryget_live() on c->writes 2023-10-22 17:09:34 -04:00
ec.h bcachefs: Pull out data_update.c 2023-10-22 17:09:34 -04:00
ec_types.h bcachefs: Split out struct gc_stripe from struct stripe 2023-10-22 17:09:18 -04:00
errcode.h bcachefs: Convert bucket_alloc_ret to negative error codes 2023-10-22 17:09:17 -04:00
error.c bcachefs: Log message improvements 2023-10-22 17:09:23 -04:00
error.h bcachefs: bch2_trans_inconsistent() 2023-10-22 17:09:27 -04:00
extent_update.c bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
extent_update.h bcachefs: Reduce iter->trans usage 2023-10-22 17:09:10 -04:00
extents.c bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
extents.h bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
extents_types.h
eytzinger.h bcachefs: Make eytzinger size parameter more conventional 2023-10-22 17:09:21 -04:00
fifo.h
fs-common.c bcachefs: Don't BUG_ON() inode link count underflow 2023-10-22 17:09:34 -04:00
fs-common.h bcachefs: Add BCH_SUBVOLUME_UNLINKED 2023-10-22 17:09:15 -04:00
fs-io.c bcachefs: Always use percpu_ref_tryget_live() on c->writes 2023-10-22 17:09:34 -04:00
fs-io.h bcachefs: Delete bch_writepage 2023-10-22 17:09:32 -04:00
fs-ioctl.c bcachefs: Add BCH_SUBVOLUME_UNLINKED 2023-10-22 17:09:15 -04:00
fs-ioctl.h
fs.c bcachefs: Delete bch_writepage 2023-10-22 17:09:32 -04:00
fs.h bcachefs: darrays 2023-10-22 17:09:28 -04:00
fsck.c bcachefs: Fix hash_check_key() 2023-10-22 17:09:32 -04:00
fsck.h bcachefs: Drop bch2_fsck_inode_nlink() 2023-10-22 17:08:59 -04:00
inode.c bcachefs: Don't BUG_ON() inode link count underflow 2023-10-22 17:09:34 -04:00
inode.h bcachefs: Don't BUG_ON() inode link count underflow 2023-10-22 17:09:34 -04:00
io.c bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
io.h bcachefs: Run btree updates after write out of write_point 2023-10-22 17:09:29 -04:00
io_types.h bcachefs: Run btree updates after write out of write_point 2023-10-22 17:09:29 -04:00
journal.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
journal.h bcachefs: Refactor journal entry adding 2023-10-22 17:09:33 -04:00
journal_io.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
journal_io.h bcachefs: Use a genradix for reading journal entries 2023-10-22 17:09:30 -04:00
journal_reclaim.c bcachefs: Tracepoint improvements 2023-10-22 17:09:32 -04:00
journal_reclaim.h bcachefs: Make sure to initialize j->last_flushed 2023-10-22 17:09:02 -04:00
journal_sb.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
journal_sb.h bcachefs: bch_sb_field_journal_v2 2023-10-22 17:09:29 -04:00
journal_seq_blacklist.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
journal_seq_blacklist.h Revert "bcachefs: Delete some obsolete journal_seq_blacklist code" 2023-10-22 17:09:21 -04:00
journal_types.h bcachefs: Introduce a separate journal watermark for copygc 2023-10-22 17:09:29 -04:00
Kconfig bcachefs: Split out CONFIG_BCACHEFS_DEBUG_TRANSACTIONS 2023-10-22 17:09:19 -04:00
keylist.c bcachefs: Fix bch2_verify_keylist_sorted 2023-10-22 17:09:02 -04:00
keylist.h
keylist_types.h
lru.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
lru.h bcachefs: LRU repair tweaks 2023-10-22 17:09:32 -04:00
Makefile bcachefs: Pull out data_update.c 2023-10-22 17:09:34 -04:00
migrate.c bcachefs: Shutdown path improvements 2023-10-22 17:09:32 -04:00
migrate.h
move.c bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
move.h bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
move_types.h bcachefs: add progress stats to sysfs 2023-10-22 17:09:10 -04:00
movinggc.c bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
movinggc.h bcachefs: Make copygc thread global 2023-10-22 17:08:42 -04:00
opts.c bcachefs: Improve an error message 2023-10-22 17:09:34 -04:00
opts.h bcachefs: Make verbose option settable at runtime 2023-10-22 17:09:34 -04:00
printbuf.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
printbuf.h bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
quota.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
quota.h bcachefs: Add rw to .key_invalid() 2023-10-22 17:09:30 -04:00
quota_types.h
rebalance.c bcachefs: Redo data_update interface 2023-10-22 17:09:34 -04:00
rebalance.h bcachefs: Convert various code to printbuf 2023-10-22 17:08:43 -04:00
rebalance_types.h bcachefs: add progress stats to sysfs 2023-10-22 17:09:10 -04:00
recovery.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
recovery.h bcachefs: Fix btree_and_journal_iter 2023-10-22 17:09:33 -04:00
reflink.c bcachefs: Always use percpu_ref_tryget_live() on c->writes 2023-10-22 17:09:34 -04:00
reflink.h bcachefs: Plumb btree_id & level to trans_mark 2023-10-22 17:09:32 -04:00
replicas.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
replicas.h bcachefs: Add .to_text() methods for all superblock sections 2023-10-22 17:09:24 -04:00
replicas_types.h
siphash.c
siphash.h
six.c
six.h
str_hash.h bcachefs: bch2_btree_iter_peek_upto() 2023-10-22 17:09:27 -04:00
subvolume.c bcachefs: Always use percpu_ref_tryget_live() on c->writes 2023-10-22 17:09:34 -04:00
subvolume.h bcachefs: Add rw to .key_invalid() 2023-10-22 17:09:30 -04:00
subvolume_types.h bcachefs: darrays 2023-10-22 17:09:28 -04:00
super-io.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
super-io.h bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
super.c bcachefs: Call bch2_do_invalidates() when going read write 2023-10-22 17:09:33 -04:00
super.h bcachefs: Fix assertion in bch2_dev_list_add_dev() 2023-10-22 17:09:34 -04:00
super_types.h bcachefs: Freespace, need_discard btrees 2023-10-22 17:09:29 -04:00
sysfs.c bcachefs: Always use percpu_ref_tryget_live() on c->writes 2023-10-22 17:09:34 -04:00
sysfs.h bcachefs: Add persistent counters 2023-10-22 17:09:32 -04:00
tests.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
tests.h bcachefs: Add error handling to unit & perf tests 2023-10-22 17:08:48 -04:00
trace.c
trace.h bcachefs: Bucket invalidate path improvements 2023-10-22 17:09:34 -04:00
util.c bcachefs: Improved human readable integer parsing 2023-10-22 17:09:33 -04:00
util.h bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
varint.c bcachefs: Add a valgrind memcheck hint 2023-10-22 17:09:13 -04:00
varint.h bcachefs: Add safe versions of varint encode/decode 2023-10-22 17:09:08 -04:00
vstructs.h bcachefs: Fix 32 bit build 2023-10-22 17:09:25 -04:00
xattr.c bcachefs: Printbuf rework 2023-10-22 17:09:33 -04:00
xattr.h bcachefs: Add rw to .key_invalid() 2023-10-22 17:09:30 -04:00