Quoting Christian Seiler (christ...@iwakd.de):
> Chane pinning mechanism: Use $rootfs/lxc.hold instead of $rootfs.hold
> (in case $rootfs is a mountpoint itself), but delete the file
> immediately after creating it (but keep it open). This will keep the
> root filesystem busy but does not leave any unnecessary files lying
> around.
> 
> Signed-off-by: Christian Seiler <christ...@iwakd.de>

Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com>

> ---
>  src/lxc/conf.c |   12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 5f9ae87..291ea6f 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -670,9 +670,10 @@ static int mount_rootfs_block(const char *rootfs, const 
> char *target)
>  
>  /*
>   * pin_rootfs
> - * if rootfs is a directory, then open ${rootfs}.hold for writing for the
> - * duration of the container run, to prevent the container from marking the
> - * underlying fs readonly on shutdown.
> + * if rootfs is a directory, then open ${rootfs}/lxc.hold for writing for
> + * the duration of the container run, to prevent the container from marking
> + * the underlying fs readonly on shutdown. unlink the file immediately so
> + * no name pollution is happens
>   * return -1 on error.
>   * return -2 if nothing needed to be pinned.
>   * return an open fd (>=0) if we pinned it.
> @@ -699,11 +700,14 @@ int pin_rootfs(const char *rootfs)
>       if (!S_ISDIR(s.st_mode))
>               return -2;
>  
> -     ret = snprintf(absrootfspin, MAXPATHLEN, "%s%s", absrootfs, ".hold");
> +     ret = snprintf(absrootfspin, MAXPATHLEN, "%s/lxc.hold", absrootfs);
>       if (ret >= MAXPATHLEN)
>               return -1;
>  
>       fd = open(absrootfspin, O_CREAT | O_RDWR, S_IWUSR|S_IRUSR);
> +     if (fd < 0)
> +             return fd;
> +     (void)unlink(absrootfspin);
>       return fd;
>  }
>  
> -- 
> 1.7.10.4
> 

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. Consolidate legacy IT systems to a single system of record for IT
2. Standardize and globalize service processes across IT
3. Implement zero-touch automation to replace manual, redundant tasks
http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to