[Libguestfs] [PATCH 1/1] sparsify: support LUKS-encrypted partitions

Jan Synacek jsynacek at redhat.com
Wed Jan 22 10:52:31 UTC 2020


On Wed, Jan 22, 2020 at 10:54 AM Richard W.M. Jones <rjones at redhat.com>
wrote:

> On Wed, Jan 22, 2020 at 10:16:14AM +0100, Jan Synacek wrote:
> > From: Jan Synacek <jan.synacek at redhat.com>
> >
> > ---
> >  daemon/listfs.ml          | 19 ++++++++++++++++---
> >  daemon/luks.c             |  9 +++++----
> >  generator/actions_core.ml |  3 ++-
> >  gobject/Makefile.inc      |  2 ++
> >  inspector/inspector.c     |  2 +-
> >  sparsify/in_place.ml      |  2 +-
> >  6 files changed, 27 insertions(+), 10 deletions(-)
> >
> > diff --git a/daemon/listfs.ml b/daemon/listfs.ml
> > index bf4dca6d4..a618513e8 100644
> > --- a/daemon/listfs.ml
> > +++ b/daemon/listfs.ml
> > @@ -19,6 +19,7 @@
> >  open Printf
> >
> >  open Std_utils
> > +open Utils
> >
> >  (* Enumerate block devices (including MD, LVM, LDM and partitions) and
> use
> >   * vfs-type to check for filesystems on devices.  Some block devices
> cannot
> > @@ -30,6 +31,7 @@ let rec list_filesystems () =
> >
> >    (* Devices. *)
> >    let devices = Devsparts.list_devices () in
> > +
>
> Did you mean to add a blank line here?
>

No, I didn't notice. I'll fix it.

>
> >    let devices = List.filter is_not_partitioned_device devices in
> >    let ret = List.filter_map check_with_vfs_type devices in
> >
> > @@ -144,9 +146,20 @@ and check_with_vfs_type device =
> >    else if String.is_suffix vfs_type "_member" then
> >      None
> >
> > -  (* Ignore LUKS-encrypted partitions.  These are also containers, as
> above. *)
> > -  else if vfs_type = "crypto_LUKS" then
> > -    None
> > +  (* If a LUKS-encrypted partition had been opened, include the
> corresponding
> > +   * device mapper filesystem path. *)
> > +  else if vfs_type = "crypto_LUKS" then (
> > +    let out = command "lsblk" ["-n"; "-l"; "-o"; "NAME"; device] in
> > +      (* Example output: #lsblk -n -l -o NAME /dev/sda5
> > +       * sda5
> > +       * lukssda5
> > +       *)
> > +      match String.trimr @@ snd @@  String.split "\n" out with
> > +      | "" -> None
> > +      | part ->
> > +        let mnt = Mountable.of_path @@ "/dev/mapper/" ^ part in
> > +          Some [mnt, Blkid.vfs_type mnt]
>
> Now Some doesn't line up with let :-/
>

Will fix.


> >    { defaults with
> >      name = "luks_open"; added = (1, 5, 1);
> > -    style = RErr, [String (Device, "device"); String (Key, "key");
> String (PlainString, "mapname")], [];
> > +    style = RErr, [String (Device, "device"); String (Key, "key");
> String (PlainString, "mapname")], [OBool "allowdiscards"];
> > +    once_had_no_optargs = true;
> >      optional = Some "luks";
> >      shortdesc = "open a LUKS-encrypted block device";
> >      longdesc = "\
>
> This is fine.
>
> The rest of this patch is fine.
>
> I'm losing track of what order these patches would be applied
> in order to preserve git bisection.  Maybe submit the whole series
> in one go for version 2?
>

The first to apply should be the one that patches the common/ subrepo. I'll
submit them all at once next time.

And again, I'm sorry for the mess with the incorrect submissions. I didn't
notice that my patches had a wrong address in them.

Thank you for the review!
-- 
Jan Synacek
Software Engineer, Red Hat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20200122/2de55f48/attachment.htm>


More information about the Libguestfs mailing list