With the Linux 6.17 merge window now open, Bcachefs file-system lead developer Kent Overstreet has submitted his planned changes for this next kernel version. But we await to see how Linus Torvalds will respond.
Linus Torvalds wrote on the Linux kernel mailing list one month ago that the upstream kernel and Bcachefs would be “parting ways” in Linux 6.17 after being upset with Bcachefs feature code being submitted routinely post-merge-window. Torvalds so far hasn’t clarified if he intends to remove the Bcachefs driver in Linux 6.17, push it behind the “BROKEN” Kconfig option, do another “time-out” cycle on new Bcachefs code, or how exactly he intends to part ways with this copy-on-write file-system.
But with the new merge window open, Overstreet today sent out the changes he would like to see land in Linux 6.17. He also started off the pull request by commenting that for the next cycle (Linux 6.18) he wants to drop the long-held “experimental” flag on Bcachefs:
“I’ve been digging through the bug tracker and polling users to see what bugs are still outstanding, and – it’s not much.
So, the experimental label is coming off in 6.18.”
Bcachefs declaring itself stable for Linux 6.18 would be nice especially with that kernel version likely to be this year’s LTS kernel.
As for the changes desired in Linux 6.17, he calls it no noteworthy features as the file-system is in a “hard freeze” but there are lots of bug fixes. The noted Bcachefs changes include:
“- Fix a major performance bug when deleting many files: this was caused by the key cache caching keys that had been deleted, causing certain lookups in the inode triggers to scan excessively.
– The “io_read_nopromote” counter has been broken out into sub-counters; these can be seen with ‘bcachefs fs top’ on a recent bcachefs-tools. This helps when diagnosing why reads aren’t coming from the cache.
– Congestion tracking is now a bit less aggressive (this controls when we decide to do a promote); this area still needs more work.
– Metadata writes are no longer throttled by writeback throttling
– Nocow writes can now be rebalanced (e.g. background_target, background_compression options)
– (Almost) all recovery passes now have progress indicators.
– Repair improvements: we’ll now reconstruct missing inodes if we find contents for that inode (more than one or two keys), not just if the inodes btree was damaged: similarly for ‘dirent to missing inode’.
– Btree node tracepoint improvements: they’ve been converted to more modern printbuf tracepoints, and include significantly more info.
– Fix in-memory accounting going out of sync with the accounting btree when doing accounting updates before going RW.
– BCH_MIN_NR_BUCKETS (minimum number of buckets per device) has been increased from 64 to 512. In the unlikely event that anyone anyone actually was using bcachefs on sub 128M filesystems and doesn’t want to lose access (modern tools will format these small filesystems with a more appropriate bucket size), please file a report or contact me. (This was just a syzbot issue, so far as I know).
– CLASS()/guard() conversion: a great deal of code has been converted to the new __cleanup based resource handling, and away from ‘goto err’ cleanup.”
Now we wait to see what Linus Torvalds does with the Bcachefs pull request.