Commit dd018c23 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'bcachefs-2024-07-22' of https://evilpiepirate.org/git/bcachefs

Pull bcachefs fixes from Kent Overstreet:

 - another fix for fsck getting stuck, from marcin

 - small syzbot fix

 - another undefined shift fix

* tag 'bcachefs-2024-07-22' of https://evilpiepirate.org/git/bcachefs:
  bcachefs: Fix printbuf usage while atomic
  bcachefs: More informative error message in reattach_inode()
  bcachefs: kill btree_trans_too_many_iters() in bch2_bucket_alloc_freelist()
  bcachefs: mean_and_variance: Avoid too-large shift amounts
parents 5ea6d724 737759fc
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -496,12 +496,6 @@ static struct open_bucket *bch2_bucket_alloc_freelist(struct btree_trans *trans,
		for (alloc_cursor = max(alloc_cursor, bkey_start_offset(k.k));
		     alloc_cursor < k.k->p.offset;
		     alloc_cursor++) {
			ret = btree_trans_too_many_iters(trans);
			if (ret) {
				ob = ERR_PTR(ret);
				break;
			}

			s->buckets_seen++;

			u64 bucket = alloc_cursor & ~(~0ULL << 56);
+5 −2
Original line number Diff line number Diff line
@@ -283,6 +283,7 @@ static int reattach_inode(struct btree_trans *trans,
			  struct bch_inode_unpacked *inode,
			  u32 inode_snapshot)
{
	struct bch_fs *c = trans->c;
	struct bch_hash_info dir_hash;
	struct bch_inode_unpacked lostfound;
	char name_buf[20];
@@ -317,7 +318,7 @@ static int reattach_inode(struct btree_trans *trans,
			return ret;
	}

	dir_hash = bch2_hash_info_init(trans->c, &lostfound);
	dir_hash = bch2_hash_info_init(c, &lostfound);

	name = (struct qstr) QSTR(name_buf);

@@ -330,8 +331,10 @@ static int reattach_inode(struct btree_trans *trans,
				inode->bi_subvol ?: inode->bi_inum,
				&dir_offset,
				STR_HASH_must_create);
	if (ret)
	if (ret) {
		bch_err_msg(c, ret, "error creating dirent");
		return ret;
	}

	inode->bi_dir		= lostfound.bi_inum;
	inode->bi_dir_offset	= dir_offset;
+1 −0
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ void bch2_journal_space_available(struct journal *j)

	if (nr_online < metadata_replicas_required(c)) {
		struct printbuf buf = PRINTBUF;
		buf.atomic++;
		prt_printf(&buf, "insufficient writeable journal devices available: have %u, need %u\n"
			   "rw journal devs:", nr_online, metadata_replicas_required(c));

+3 −3
Original line number Diff line number Diff line
@@ -111,11 +111,11 @@ static inline u128_u u128_shl(u128_u i, s8 shift)
{
	u128_u r;

	r.lo = i.lo << shift;
	r.lo = i.lo << (shift & 63);
	if (shift < 64)
		r.hi = (i.hi << shift) | (i.lo >> (64 - shift));
		r.hi = (i.hi << (shift & 63)) | (i.lo >> (-shift & 63));
	else {
		r.hi = i.lo << (shift - 64);
		r.hi = i.lo << (-shift & 63);
		r.lo = 0;
	}
	return r;