Bug#648208: os-prober: blockdev --setro affects running kvm instances
>> Since version 1.45, os-prober instead uses grub-mount when it's
available
>> -- and if grub is installed to use os-prober, it will pull it in.
>
>> So unless another bootloader is also using os-prober, or someone
>> installs and uses it by hand, this won't happen in unstable/testing.
> It's not really the case.
I agree here with Jean Francois.
Here the problematic code in os-probes/common/50mounted-tests line 49,
simplified for better understanding
if type grub-mount && type grub-probe && grub-mount "$partition" ;
etc ...
else
blockdev --setro
done
fi
the problem here is that when using LVM what 50mounted-tests treats as a
$partition might very well be a disk image (512 first bytes will contain
a MBR)
In that case grub-mount will fail and pass the hand to ro_partition
which will be happily set the whole device as read only, causing the
file system errors in the guest
poking on the idea of Michael I was wondering it would be possible to
test before calling blockdev --setro if the block device we target has a
file descriptor pointing to it. This would indicate that
something/someone is actually doing something with the block device and
we should rather leave it alone.
in pseudo shell it would look like:
if ls -l /proc/*/fd | grep $(realpath $partition); then
debug "active file descriptor on $partition)
return
else
blockdev --setro
fi
I find this a bit hacky however.
What we also do would be simply to change the depency on os-prober from
"recommends" to "suggests" in os-prober, and add os-prober as a
dependency of the desktop task of the debian-installer (which is
selected by default) so that non-server users get it installed.
Reply to: