[lxc-devel] [PATCH 1/1] drop create= from mount options (v2)

Stéphane Graber stgraber at ubuntu.com
Tue Feb 18 19:07:27 UTC 2014


On Tue, Feb 18, 2014 at 12:56:29PM -0600, Serge Hallyn wrote:
> Otherwise mount may return -EINVAL if in-kernel super-block parser
> objects (as is the case with ext4).
> 
> Changelog v2:
> 	also drop 'optional'
> 	specifically drop create=dir, not create=*
> 	fix order of arguments for memmove
> 
> Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>

Acked-by: Stéphane Graber <stgraber at ubuntu.com>

> ---
>  src/lxc/conf.c | 35 ++++++++++++++++++++++++++++++++---
>  1 file changed, 32 insertions(+), 3 deletions(-)
> 
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index d40e3e0..483dff4 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -1881,7 +1881,32 @@ static int mount_entry(const char *fsname, const char *target,
>  	return 0;
>  }
>  
> -static inline int mount_entry_on_systemfs(const struct mntent *mntent)
> +/*
> + * Remove 'optional', 'create=dir', and 'create=file' from mntopt
> + */
> +static void cull_mntent_opt(struct mntent *mntent)
> +{
> +	int i;
> +	char *p, *p2;
> +	char *list[] = {"create=dir",
> +			"create=file",
> +			"optional",
> +			NULL };
> +
> +	for (i=0; list[i]; i++) {
> +		if (!(p = strstr(mntent->mnt_opts, list[i])))
> +			continue;
> +		p2 = strchr(p, ',');
> +		if (!p2) {
> +			/* no more mntopts, so just chop it here */
> +			*p = '\0';
> +			continue;
> +		}
> +		memmove(p, p2+1, strlen(p2+1)+1);
> +	}
> +}
> +
> +static inline int mount_entry_on_systemfs(struct mntent *mntent)
>  {
>  	unsigned long mntflags;
>  	char *mntdata;
> @@ -1911,6 +1936,8 @@ static inline int mount_entry_on_systemfs(const struct mntent *mntent)
>  			fclose(pathfile);
>  	}
>  
> +	cull_mntent_opt(mntent);
> +
>  	if (parse_mntopts(mntent->mnt_opts, &mntflags, &mntdata) < 0) {
>  		free(mntdata);
>  		return -1;
> @@ -1928,7 +1955,7 @@ static inline int mount_entry_on_systemfs(const struct mntent *mntent)
>  	return ret;
>  }
>  
> -static int mount_entry_on_absolute_rootfs(const struct mntent *mntent,
> +static int mount_entry_on_absolute_rootfs(struct mntent *mntent,
>  					  const struct lxc_rootfs *rootfs,
>  					  const char *lxc_name)
>  {
> @@ -1998,6 +2025,7 @@ skipabs:
>  		else
>  			fclose(pathfile);
>  	}
> +	cull_mntent_opt(mntent);
>  
>  	if (parse_mntopts(mntent->mnt_opts, &mntflags, &mntdata) < 0) {
>  		free(mntdata);
> @@ -2017,7 +2045,7 @@ out:
>  	return ret;
>  }
>  
> -static int mount_entry_on_relative_rootfs(const struct mntent *mntent,
> +static int mount_entry_on_relative_rootfs(struct mntent *mntent,
>  					  const char *rootfs)
>  {
>  	char path[MAXPATHLEN];
> @@ -2055,6 +2083,7 @@ static int mount_entry_on_relative_rootfs(const struct mntent *mntent,
>  		else
>  			fclose(pathfile);
>  	}
> +	cull_mntent_opt(mntent);
>  
>  	if (parse_mntopts(mntent->mnt_opts, &mntflags, &mntdata) < 0) {
>  		free(mntdata);
> -- 
> 1.9.rc1
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20140218/e821c163/attachment.pgp>


More information about the lxc-devel mailing list