[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