[lxc-devel] [PATCH] lxc-start-ephemeral: Fix broken mount logic
Serge Hallyn
serge.hallyn at ubuntu.com
Fri Oct 18 18:32:54 UTC 2013
Quoting Stéphane Graber (stgraber at ubuntu.com):
> This reworks the mount logic for lxc-start-ephemeral to be as follow:
> - Any real (non-bind) entry gets copied to the target fstab
> - Any bind-mount from a virtual fs gets copied to the target fstab
> - Any remaining bind-mount if confirmed to be valid gets setup as an
> overlay.
>
> Extra bind-mounts passed through the -b option are mounted by the
> pre-mount script and don't need processing by the fstab generator.
>
> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/lxc-start-ephemeral.in | 20 +++++++++++---------
> 1 file changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/src/lxc/lxc-start-ephemeral.in b/src/lxc/lxc-start-ephemeral.in
> index af8da80..0f0c398 100644
> --- a/src/lxc/lxc-start-ephemeral.in
> +++ b/src/lxc/lxc-start-ephemeral.in
> @@ -164,30 +164,32 @@ if orig.get_config_item("lxc.mount"):
> line.replace(orig.get_config_item("lxc.rootfs"),
> dest.get_config_item("lxc.rootfs"))
>
> - # Skip any line that's not a bind mount
> fields = line.split()
> +
> + # Skip invalid entries
> if len(fields) < 4:
> + continue
> +
> + # Non-bind mounts are kept as-is
> + if "bind" not in fields[3]:
> dest_fd.write("%s\n" % line)
> continue
>
> - if fields[2] != "bind" and "bind" not in fields[3]:
> + # Bind mounts of virtual filesystems are also kept as-is
> + src_path = fields[0].split("/")
> + if len(src_path) > 1 and src_path[1] in ("proc", "sys"):
> dest_fd.write("%s\n" % line)
> continue
>
> - # Process any remaining line
> + # Skip invalid mount points
> dest_mount = os.path.abspath(os.path.join("%s/rootfs/" % (
> dest_path), fields[1]))
>
> - if dest_mount == os.path.abspath("%s/rootfs/%s" % (
> - dest_path, args.bdir)):
> -
> - dest_fd.write("%s\n" % line)
> - continue
> -
> if "%s/rootfs/" % dest_path not in dest_mount:
> print(_("Skipping mount entry '%s' as it's outside "
> "of the container rootfs.") % line)
>
> + # Setup an overlay for anything remaining
> overlay_dirs += [(fields[0], dest_mount)]
>
> # Generate pre-mount script
> --
> 1.8.3.2
>
>
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
> _______________________________________________
> Lxc-devel mailing list
> Lxc-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel
More information about the lxc-devel
mailing list