ureadahead ignores all btrfs mountpoints
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ureadahead (Ubuntu) |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Binary package hint: ureadahead
ureadahead relies on stat()'ing files in order to retrieve the major/minor of a given filesystem, which is then looked up against /proc/self/
e.g. On my system, which has btrfs root on top of LVM2, on top of dm-crypt:
stat() of any file in / results in: 0:17.
ls -l of /dev/mapper reveals /dev/mapper/
/proc/self/
The same applies for my /home, which has a similar setup.
A related bug is bug #450260. However, the fix used there cannot apply to this bug as well, as ureadahead uses the major/minor for different purposes from Grub.
Somewhat related is that ureadahead cannot detect the rotationalness of the underlying device, due to its reliance on stat()'ing to get the major/minor numbers. However, it falls back on rotational=true, which is the same behaviour as filesystems on virtual devices, e.g. dm-crypt/LVM.
Related branches
Changed in ureadahead (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
I've just fixed (or maybe just worked around, depending on how you see it) this issue by making btrfs compare the devno of the stat()'d file with the devno stat()'d from each mount point found in /proc/self/ mountinfo. Attached is a patch, please do what you wish with it as you see fit. The patched ureadahead package can be found in my PPA (https:/ /launchpad. net/~hyperair/ +archive/ ppa) for testing.