Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull bcachefs fixes from Kent Overstreet:

- two small syzbot fixes

- fix discard behaviour regression; we no longer wait until the number
of buckets needing discard is greater than the number of buckets
available before kicking off discards

- fix a fast_list leak when async object debugging is enabled

- fixes for casefolding when CONFIG_UTF8 != y

* tag 'bcachefs-2025-07-17' of git://evilpiepirate.org/bcachefs:
bcachefs: Fix bch2_maybe_casefold() when CONFIG_UTF8=n
bcachefs: Fix build when CONFIG_UNICODE=n
bcachefs: Fix reference to invalid bucket in copygc
bcachefs: Don't build aux search tree when still repairing node
bcachefs: Tweak threshold for allocator triggering discards
bcachefs: Fix triggering of discard by the journal path
bcachefs: io_read: remove from async obj list in rbio_done()

+24 -5
+2 -1
fs/bcachefs/alloc_foreground.c
··· 511 511 bch2_dev_usage_read_fast(ca, &req->usage); 512 512 avail = dev_buckets_free(ca, req->usage, req->watermark); 513 513 514 - if (req->usage.buckets[BCH_DATA_need_discard] > avail) 514 + if (req->usage.buckets[BCH_DATA_need_discard] > 515 + min(avail, ca->mi.nbuckets >> 7)) 515 516 bch2_dev_do_discards(ca); 516 517 517 518 if (req->usage.buckets[BCH_DATA_need_gc_gens] > avail)
+3 -3
fs/bcachefs/btree_io.c
··· 1295 1295 1296 1296 btree_bounce_free(c, btree_buf_bytes(b), used_mempool, sorted); 1297 1297 1298 - if (updated_range) 1299 - bch2_btree_node_drop_keys_outside_node(b); 1300 - 1301 1298 i = &b->data->keys; 1302 1299 for (k = i->start; k != vstruct_last(i);) { 1303 1300 struct bkey tmp; ··· 1331 1334 set_needs_whiteout(btree_bset_first(b), true); 1332 1335 1333 1336 btree_node_reset_sib_u64s(b); 1337 + 1338 + if (updated_range) 1339 + bch2_btree_node_drop_keys_outside_node(b); 1334 1340 1335 1341 /* 1336 1342 * XXX:
+4
fs/bcachefs/dirent.c
··· 13 13 14 14 #include <linux/dcache.h> 15 15 16 + #ifdef CONFIG_UNICODE 16 17 int bch2_casefold(struct btree_trans *trans, const struct bch_hash_info *info, 17 18 const struct qstr *str, struct qstr *out_cf) 18 19 { ··· 34 33 *out_cf = (struct qstr) QSTR_INIT(buf, ret); 35 34 return 0; 36 35 } 36 + #endif 37 37 38 38 static unsigned bch2_dirent_name_bytes(struct bkey_s_c_dirent d) 39 39 { ··· 256 254 if (!bch2_fs_casefold_enabled(c)) 257 255 return -EOPNOTSUPP; 258 256 257 + #ifdef CONFIG_UNICODE 259 258 memcpy(&dirent->v.d_cf_name_block.d_names[0], name->name, name->len); 260 259 261 260 char *cf_out = &dirent->v.d_cf_name_block.d_names[name->len]; ··· 282 279 dirent->v.d_cf_name_block.d_cf_name_len = cpu_to_le16(cf_len); 283 280 284 281 EBUG_ON(bch2_dirent_get_casefold_name(dirent_i_to_s_c(dirent)).len != cf_len); 282 + #endif 285 283 } 286 284 287 285 unsigned u64s = dirent_val_u64s(name->len, cf_len);
+8
fs/bcachefs/dirent.h
··· 23 23 struct bch_hash_info; 24 24 struct bch_inode_info; 25 25 26 + #ifdef CONFIG_UNICODE 26 27 int bch2_casefold(struct btree_trans *, const struct bch_hash_info *, 27 28 const struct qstr *, struct qstr *); 29 + #else 30 + static inline int bch2_casefold(struct btree_trans *trans, const struct bch_hash_info *info, 31 + const struct qstr *str, struct qstr *out_cf) 32 + { 33 + return -EOPNOTSUPP; 34 + } 35 + #endif 28 36 29 37 static inline int bch2_maybe_casefold(struct btree_trans *trans, 30 38 const struct bch_hash_info *info,
+5
fs/bcachefs/io_read.c
··· 166 166 BUG_ON(ret); 167 167 168 168 async_object_list_del(c, promote, op->list_idx); 169 + async_object_list_del(c, rbio, rbio->list_idx); 169 170 170 171 bch2_data_update_exit(&op->write); 171 172 ··· 457 456 if (rbio->start_time) 458 457 bch2_time_stats_update(&rbio->c->times[BCH_TIME_data_read], 459 458 rbio->start_time); 459 + #ifdef CONFIG_BCACHEFS_ASYNC_OBJECT_LISTS 460 + if (rbio->list_idx) 461 + async_object_list_del(rbio->c, rbio, rbio->list_idx); 462 + #endif 460 463 bio_endio(&rbio->bio); 461 464 } 462 465
+1
fs/bcachefs/journal_io.c
··· 1767 1767 1768 1768 closure_wake_up(&c->freelist_wait); 1769 1769 bch2_reset_alloc_cursors(c); 1770 + do_discards = true; 1770 1771 } 1771 1772 1772 1773 j->seq_ondisk = seq;
+1 -1
fs/bcachefs/movinggc.c
··· 71 71 if (ret) 72 72 return ret; 73 73 74 - struct bch_dev *ca = bch2_dev_tryget(c, k.k->p.inode); 74 + struct bch_dev *ca = bch2_dev_bucket_tryget(c, k.k->p); 75 75 if (!ca) 76 76 goto out; 77 77