Comments (6)
Refuse? No, then bees would never run. I'm pulling patches from v4.16 integration branches (two releases ahead of the current release as of this writing), and if bees refused to run due to any known bug, nobody who wasn't building their own kernels off git.kernel.org would be able to run bees at all.
I'm hesitant to add warnings because there is a lot of room for error.
It would be hard to know if the kernels had been patched based on the uts version strings alone. Old stable kernels get bug fixes sometimes years later, and I've used a v4.1 kernel for some time with a lot of patches backported as far as from v4.6). Even the LTS kernels are a roiling cauldron of random btrfs patches.
The extra testing required to keep the warning versions list accurate (with neither false positives nor negatives) would be a large time sink for me. It might not be a time sink for a contributor with access to a larger pool of test users/machines to collect data from, but I'd have to rely on such a contributor entirely. A distro maintainer could easily maintain a kernel version blacklist and put it in the bees startup scripts--they know what patches are in their kernels, and I have a (mostly) complete list of kernel bugs to look for.
There's diminishing value and increasing cost in maintaining support for older kernels. For kernels between v4.4 and v4.10, bees avoided kernel bugs with a delicate balance between the scan/dedup algorithm and thread behavior that is difficult to preserve without extensive testing feedback (master
is probably OK today with -c1
but it would take a few machine-weeks of testing to know).
These days I've already stopped testing on kernels before v4.11 (sadly that includes the LTS v4.9 as it is missing some performance bug fixes that don't meet -stable criteria). I am currently considering whether and when to drop support for kernels prior to v4.14 simply because v4.14 doesn't need the older-kernel workarounds any more. The fact that v4.14 also introduces LOGICAL_INO_V2
makes it even more attractive as a minimum kernel version.
I guess another thing I'm considering is adopting Linux kernel version numbers for bees as btrfs-tools does. That way I could say something like "if you're using kernel v4.7, use bees v4.7" and not have to worry as much about breaking older kernel versions in newer bees versions. (The obvious plan with this problem is that it hasn't really worked that way for btrfs-tools either).
from bees.
Okay, so I'd put a warning into the Gentoo ebuild script to either use the latest kernel or carefully read the README about known bugs.
But my request was more about grave bugs, like the README says "don't try to use with kernel older than 4.xy - it won't end well".
from bees.
Before v4.2 there are missing ioctls or the ioctls have restrictions that have since been removed. Bees will fail to do anything useful at all on kernels before v3.16, but it should be mostly inert. Bees will operate inefficiently (it won't be able to handle the last extent of files with non-4K-aligned EOF) until v4.2.
Data corruption and hangs happen from v4.2 to v4.11, except for backported fixes to v4.4 and v4.9. Some of these are related to dedup ioctls, but others are general btrfs problems (i.e. you should not run btrfs on these kernels with some combinations of features, e.g. compression and inline extents).
v4.11 to v4.13 have a crippling performance issue--a risk of temporary kernel CPU lockups for 20 minutes at a time every few days or weeks. Earlier kernels had this too but it was even worse.
v4.14 has thousands of WARN_ON(ref->count < 0) stack traces per day. The fix for those won't land in Linux until at least v4.16, so v4.15 will have the same problem.
Which kernel should be the cutoff? I'd say I'm still waiting for that kernel to appear.
from bees.
Okay, understood. That makes sense.
from bees.
4.14.29 has all but one known bug fixed. The last bug is data corruption on compressed data read near a hole (a new one, different from a similar bug that I fixed last year). bees can trigger it because bees punches a lot of holes, especially in MS Windows disk image dumps.
There are still crippling performance problems with many reflinks to the same extent even in recent kernels; however, the workarounds currently in place in bees seem to mitigate the problem adequately.
from bees.
Okay, let me see that I can add additional info to the Gentoo ebuild soon.
from bees.
Related Issues (20)
- System service enable problem HOT 6
- Enhancement: exporting live stats HOT 1
- Used size increased by ~400GB while defragmenting HOT 2
- Mount prevent second run HOT 1
- bees seemingly cannot catch up with snapper snapshot creation HOT 16
- Initial run of bees appears to have resulted in data corruption HOT 7
- bees breaks existing reflinks? HOT 4
- bees "--loadavg=3" option causes load crazy 20+ and OOM kill HOT 1
- beesd script can't handle BEESHOME on a non-btrfs filesystem HOT 4
- Stopping one of multiple beesd services removes the /run/bees directory HOT 4
- 执行bee run之后一直卡出不动 HOT 2
- Lookup root 256 ino xxx failed: Bad address HOT 1
- Documentation: modern Ubuntu install HOT 1
- [Feature Request] Unmount mount points if beesd exits.
- [Feature Request] Beesd to run a full dedup cycle and then end HOT 6
- How to remove? HOT 10
- cancelling with CTRL+C need to be followed by umount /run/bees/mnt/$UUID HOT 3
- build fails on Fedora 40
- Demystifying needed options with QubesOS pool in btrfs reflink (multiple cow snapshots rotating, beesd dedup and load avg hitting 65+ on 12 cores setup) HOT 4
- btrfs send size HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bees.