Commit 999a36b5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'bcachefs-2024-01-10' of https://evilpiepirate.org/git/bcachefs

Pull bcachefs updates from Kent Overstreet:

 - btree write buffer rewrite: instead of adding keys to the btree write
   buffer at transaction commit time, we now journal them with a
   different journal entry type and copy them from the journal to the
   write buffer just prior to journal write.

   This reduces the number of atomic operations on shared cachelines in
   the transaction commit path and is a signicant performance
   improvement on some workloads: multithreaded 4k random writes went
   from ~650k iops to ~850k iops.

 - Bring back optimistic spinning for six locks: the new implementation
   doesn't use osq locks; instead we add to the lock waitlist as normal,
   and then spin on the lock_acquired bit in the waitlist entry, _not_
   the lock itself.

 - New ioctls:

    - BCH_IOCTL_DEV_USAGE_V2, which allows for new data types

    - BCH_IOCTL_OFFLINE_FSCK, which runs the kernel implementation of
      fsck but without mounting: useful for transparently using the
      kernel version of fsck from 'bcachefs fsck' when the kernel
      version is a better match for the on disk filesystem.

    - BCH_IOCTL_ONLINE_FSCK: online fsck. Not all passes are supported
      yet, but the passes that are supported are fully featured - errors
      may be corrected as normal.

   The new ioctls use the new 'thread_with_file' abstraction for kicking
   off a kthread that's tied to a file descriptor returned to userspace
   via the ioctl.

 - btree_paths within a btree_trans are now dynamically growable,
   instead of being limited to 64. This is important for the
   check_directory_structure phase of fsck, and also fixes some issues
   we were having with btree path overflow in the reflink btree.

 - Trigger refactoring; prep work for the upcoming disk space accounting
   rewrite

 - Numerous bugfixes :)

* tag 'bcachefs-2024-01-10' of https://evilpiepirate.org/git/bcachefs: (226 commits)
  bcachefs: eytzinger0_find() search should be const
  bcachefs: move "ptrs not changing" optimization to bch2_trigger_extent()
  bcachefs: fix simulateously upgrading & downgrading
  bcachefs: Restart recovery passes more reliably
  bcachefs: bch2_dump_bset() doesn't choke on u64s == 0
  bcachefs: improve checksum error messages
  bcachefs: improve validate_bset_keys()
  bcachefs: print sb magic when relevant
  bcachefs: __bch2_sb_field_to_text()
  bcachefs: %pg is banished
  bcachefs: Improve would_deadlock trace event
  bcachefs: fsck_err()s don't need to manually check c->sb.version anymore
  bcachefs: Upgrades now specify errors to fix, like downgrades
  bcachefs: no thread_with_file in userspace
  bcachefs: Don't autofix errors we can't fix
  bcachefs: add missing bch2_latency_acct() call
  bcachefs: increase max_active on io_complete_wq
  bcachefs: add time_stats for btree_node_read_done()
  bcachefs: don't clear accessed bit in btree node fill
  bcachefs: Add an option to control btree node prefetching
  ...
parents 84e9a2d5 169de419
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3502,7 +3502,7 @@ F: drivers/net/hamradio/baycom*
BCACHE (BLOCK LAYER CACHE)
M:	Coly Li <colyli@suse.de>
M:	Kent Overstreet <kent.overstreet@gmail.com>
M:	Kent Overstreet <kent.overstreet@linux.dev>
L:	linux-bcache@vger.kernel.org
S:	Maintained
W:	http://bcache.evilpiepirate.org
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ EXPORT_SYMBOL_GPL(powerpc_firmware_features);

#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_KVM_GUEST)
DEFINE_STATIC_KEY_FALSE(kvm_guest);
EXPORT_SYMBOL_GPL(kvm_guest);

int __init check_kvm_guest(void)
{
	struct device_node *hyper_node;
+10 −8
Original line number Diff line number Diff line
@@ -50,14 +50,6 @@ config BCACHEFS_POSIX_ACL
	depends on BCACHEFS_FS
	select FS_POSIX_ACL

config BCACHEFS_DEBUG_TRANSACTIONS
	bool "bcachefs runtime info"
	depends on BCACHEFS_FS
	help
	This makes the list of running btree transactions available in debugfs.

	This is a highly useful debugging feature but does add a small amount of overhead.

config BCACHEFS_DEBUG
	bool "bcachefs debugging"
	depends on BCACHEFS_FS
@@ -85,6 +77,16 @@ config BCACHEFS_NO_LATENCY_ACCT
	help
	This disables device latency tracking and time stats, only for performance testing

config BCACHEFS_SIX_OPTIMISTIC_SPIN
	bool "Optimistic spinning for six locks"
	depends on BCACHEFS_FS
	depends on SMP
	default y
	help
	Instead of immediately sleeping when attempting to take a six lock that
	is held by another thread, spin for a short while, as long as the
	thread owning the lock is running.

config MEAN_AND_VARIANCE_UNIT_TEST
	tristate "mean_and_variance unit tests" if !KUNIT_ALL_TESTS
	depends on KUNIT
+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ bcachefs-y := \
	super-io.o		\
	sysfs.o			\
	tests.o			\
	thread_with_file.o	\
	trace.o			\
	two_state_shared_lock.o	\
	util.o			\
+271 −213

File changed.

Preview size limit exceeded, changes collapsed.

Loading