[Libguestfs] [PATCH INCOMPLETE] daemon: Reimplement LVM filters using lvmdevices command
Richard W.M. Jones
rjones at redhat.com
Wed Jun 2 08:10:48 UTC 2021
On Wed, Jun 02, 2021 at 01:53:29AM +0300, Nir Soffer wrote:
> On Wed, Jun 2, 2021 at 12:23 AM Nir Soffer <nsoffer at redhat.com> wrote:
> >
> > On Tue, Jun 1, 2021 at 4:38 PM Richard W.M. Jones <rjones at redhat.com> wrote:
> > >
> > > LVM2 managed to break device filters. This patch attempts a fix.
> > >
> > > https://bugzilla.redhat.com/show_bug.cgi?id=1965941
> > >
> > > However it is not working, because the new "lvmdevices" command which
> > > is supposed to be used to set the new filters does not work for
> > > partitioned whole devices. As far as I can tell there is no way to
> > > emulate the old behaviour of filtering such a device. (Adding filters
> > > for each partition in the device is one possible workaround, but the
> > > filters will be out of date as soon as a new partition is created on
> > > the device.)
> >
> > The best way to use lvm filter is to use a filter that includes only
> > the devices you want lvm to use, and reject everything else:
> >
> > "a|^/dev/sda1$|", "r|.*|"
> >
> > With this there are never any surprises when someone adds a new
> > device or partition. You need to add the new device to the filter to
> > use it.
> >
> > This is how ovirt configures lvm filter on hosts so they use only the
> > devices needed by the host and cannot access the devices used by
> > guests, managed by ovirt.
> >
> > ovirt lvm commands override the host filter using:
> >
> > --config "device { filter = ["a|^/dev/sdb$|", "r|.*|"] }"
> >
> > So it can manage vgs used by ovirt to provide guest disks.
> >
> > With --config you don't need to modify the guest when you make changes.
>
> The modern way of this with new lvm is simply:
>
> --devices /dev/sdb,/dev/sde
>
> Right in the lvm command, so you don't need to manage the guest state unless
> the purpose of the command is to change the state in the guest.
Unfortunately this doesn't work if /dev/sdb is partitioned. You have
to list all the partitions explicitly.
This is a change (regression, really) over the existing behaviour
where it was possible to specify a regexp such as a|^/dev/sdb$|,
a|^/dev/sdb[0-9]| to mean either /dev/sdb or any current or future
partition of /dev/sdb.
This is what we baked into the libguestfs API and I'm trying to make
work again.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
More information about the Libguestfs
mailing list