Commit 9e99c1ac authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'bcachefs-2025-04-17' of git://evilpiepirate.org/bcachefs

Pull bcachefs fixes from Kent Overstreet:
 "Usual set of small fixes/logging improvements.

  One bigger user reported fix, for inode <-> dirent inconsistencies
  reported in fsck, after moving a subvolume that had been snapshotted"

* tag 'bcachefs-2025-04-17' of git://evilpiepirate.org/bcachefs:
  bcachefs: Fix snapshotting a subvolume, then renaming it
  bcachefs: Add missing READ_ONCE() for metadata replicas
  bcachefs: snapshot_node_missing is now autofix
  bcachefs: Log message when incompat version requested but not enabled
  bcachefs: Print version_incompat_allowed on startup
  bcachefs: Silence extent_poisoned error messages
  bcachefs: btree_root_unreadable_and_scan_found_nothing now AUTOFIX
  bcachefs: fix bch2_dev_usage_full_read_fast()
  bcachefs: Don't print data read retry success on non-errors
  bcachefs: Add missing error handling
  bcachefs: Prevent granting write refs when filesystem is read-only
parents 399537be 261592ba
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -788,6 +788,8 @@ struct bch_fs {
		unsigned long	errors_silent[BITS_TO_LONGS(BCH_FSCK_ERR_MAX)];
		u64		btrees_lost_data;
	}			sb;
	DARRAY(enum bcachefs_metadata_version)
				incompat_versions_requested;

#ifdef CONFIG_UNICODE
	struct unicode_map	*cf_encoding;
+1 −1
Original line number Diff line number Diff line
@@ -1221,7 +1221,7 @@ bch2_btree_update_start(struct btree_trans *trans, struct btree_path *path,

	ret = bch2_disk_reservation_get(c, &as->disk_res,
			(nr_nodes[0] + nr_nodes[1]) * btree_sectors(c),
			c->opts.metadata_replicas,
			READ_ONCE(c->opts.metadata_replicas),
			disk_res_flags);
	if (ret)
		goto err;
+2 −1
Original line number Diff line number Diff line
@@ -37,7 +37,8 @@ void bch2_dev_usage_read_fast(struct bch_dev *ca, struct bch_dev_usage *usage)
void bch2_dev_usage_full_read_fast(struct bch_dev *ca, struct bch_dev_usage_full *usage)
{
	memset(usage, 0, sizeof(*usage));
	acc_u64s_percpu((u64 *) usage, (u64 __percpu *) ca->usage, dev_usage_u64s());
	acc_u64s_percpu((u64 *) usage, (u64 __percpu *) ca->usage,
			sizeof(struct bch_dev_usage_full) / sizeof(u64));
}

static u64 reserve_factor(u64 r)
+0 −5
Original line number Diff line number Diff line
@@ -242,11 +242,6 @@ static inline u64 dev_buckets_available(struct bch_dev *ca,

/* Filesystem usage: */

static inline unsigned dev_usage_u64s(void)
{
	return sizeof(struct bch_dev_usage) / sizeof(u64);
}

struct bch_fs_usage_short
bch2_fs_usage_read_short(struct bch_fs *);

+1 −1
Original line number Diff line number Diff line
@@ -287,7 +287,7 @@
	x(EIO,				mark_stripe)				\
	x(EIO,				stripe_reconstruct)			\
	x(EIO,				key_type_error)				\
	x(EIO,				extent_poisened)			\
	x(EIO,				extent_poisoned)			\
	x(EIO,				missing_indirect_extent)		\
	x(EIO,				invalidate_stripe_to_dev)		\
	x(EIO,				no_encryption_key)			\
Loading