On Wed, 26 Jul 2017, Pavel Machek wrote:This is only an issue if:
Hi!
Unfortunately, that would mean shifting 400GB data 8KB forward, and
compatibility problems. So I'd prefer adding bcache superblock into
the reserved space, so I can have caching _and_ compatibility with
grub2 etc (and avoid 400GB move):
The common way to do that is to move the beginning of the partition,
assuming your ext4 lives in a partition.
Well... if I move the partition, grub2 (etc) will be unable to access
data on it. (Plus I do not have free space before some of the
partitions I'd like to be cached).
Why not use dm-linear and prepend space for the bcache superblock? If
this is your boot device, then you would need to write a custom
initrd hook too.
Thanks for a pointer. That would actually work, but I'd have to be
very, very careful using it...
...because if I, or systemd or some kind of automounter sees the
underlying device (sda4) and writes to it (it is valid ext4 after
all), I'll have inconsistent base device and cache ... and that will
be asking for major problems (even in writethrough mode).
Sigh. Gone are the days when distributions would only mount filesystems
if you ask them to.
Nope, just those and what I mentioned above under 1 and 2.
If this is a desktop, then I'm not sure what to suggest. But for server
with no GUI, turn off the grub2 osprober (GRUB_DISABLE_OS_PROBER="true" in
/etc/sysconfig/grub). If this was LVM, then I would suggest also setting
global_filter in lvm.conf. If you find other places that need poked to
prevent automounting then please let me know!
In the case of ext4, you can use the MMP feature (with the associated minor overhead) to enforce this.
As for ext4 feature bits, can they be arbitrarily named? (I think they are
bits, so maybe not). Maybe propose a patch to ext4 to provide a
"disable_mount" feature. This would prevent mounting altogether, and you
would set/clear it when you care to. A strange feature indeed. Doing
this as an obscure feature on a single filesystem doesn't quite seem
right.
If it's not explicitly created as a mount unit, fstab entry, or automount entry, and you're not using a brain-dead desktop, and you're not using FS labels or UUID's to mount, it _really_ isn't an issue except on BTRFS, and for that this would provide _no_ benefit, because the issue there results from confusion over which device to use combined with the assumption that a UUID stored on the device is sufficient to uniquely identify a filesystem.
It might be better to have a block-layer device-mount mask so devices that
are allowed to be mounted can be whitelisted on the kernel cmdline or
something. blk.allow_mount=8:16,253:*,... or blk.disallow_mount=8:32 (or
probably both).
Just ideas, but it would be great to allow mounting only those
major/minors which are authorized, particularly with increasingly complex
block-device stacks.