[lxc-devel] [PATCH] Don't trigger SYSERROR for optional mounts
Serge Hallyn
serge.hallyn at ubuntu.com
Sat Mar 8 00:03:57 UTC 2014
Quoting Stéphane Graber (stgraber at ubuntu.com):
> Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> ---
> src/lxc/conf.c | 41 +++++++++++++++++++++++------------------
> 1 file changed, 23 insertions(+), 18 deletions(-)
>
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 58a9b4f..4346585 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -1821,11 +1821,18 @@ int parse_mntopts(const char *mntopts, unsigned long *mntflags,
>
> static int mount_entry(const char *fsname, const char *target,
> const char *fstype, unsigned long mountflags,
> - const char *data)
> + const char *data, int optional)
> {
> if (mount(fsname, target, fstype, mountflags & ~MS_REMOUNT, data)) {
> - SYSERROR("failed to mount '%s' on '%s'", fsname, target);
> - return -1;
> + if (optional) {
> + INFO("failed to mount '%s' on '%s' (optional): %s", fsname,
> + target, strerror(errno));
> + return 0;
> + }
> + else {
> + SYSERROR("failed to mount '%s' on '%s'", fsname, target);
> + return -1;
> + }
> }
>
> if ((mountflags & MS_REMOUNT) || (mountflags & MS_BIND)) {
> @@ -1835,9 +1842,16 @@ static int mount_entry(const char *fsname, const char *target,
>
> if (mount(fsname, target, fstype,
> mountflags | MS_REMOUNT, data)) {
> - SYSERROR("failed to mount '%s' on '%s'",
> - fsname, target);
> - return -1;
> + if (optional) {
> + INFO("failed to mount '%s' on '%s' (optional): %s",
> + fsname, target, strerror(errno));
> + return 0;
> + }
> + else {
> + SYSERROR("failed to mount '%s' on '%s'",
> + fsname, target);
> + return -1;
> + }
> }
> }
>
> @@ -1910,10 +1924,7 @@ static inline int mount_entry_on_systemfs(struct mntent *mntent)
> }
>
> ret = mount_entry(mntent->mnt_fsname, mntent->mnt_dir,
> - mntent->mnt_type, mntflags, mntdata);
> -
> - if (optional)
> - ret = 0;
> + mntent->mnt_type, mntflags, mntdata, optional);
>
> free(pathdirname);
> free(mntdata);
> @@ -2000,13 +2011,10 @@ skipabs:
> }
>
> ret = mount_entry(mntent->mnt_fsname, path, mntent->mnt_type,
> - mntflags, mntdata);
> + mntflags, mntdata, optional);
>
> free(mntdata);
>
> - if (optional)
> - ret = 0;
> -
> out:
> free(pathdirname);
> return ret;
> @@ -2059,10 +2067,7 @@ static int mount_entry_on_relative_rootfs(struct mntent *mntent,
> }
>
> ret = mount_entry(mntent->mnt_fsname, path, mntent->mnt_type,
> - mntflags, mntdata);
> -
> - if (optional)
> - ret = 0;
> + mntflags, mntdata, optional);
>
> free(pathdirname);
> free(mntdata);
> --
> 1.9.0
>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list