Quoting Abin Shahab (asha...@altiscale.com):
> Bind mounts do not honor filesystem mount options. This change will remount 
> filesystems that are bind mounted if there are changes to filesystem mount 
> options, specifically if the mount is readonly.

hi,

Just to make sure I understand what you're saying,

'mount --bind -o ro /a /b' (when done through mount(2)) will not
actually make /b readonly, so we need to do a remount in that case
to get the -o ro to take effect at the vfsmount instead of the sb.
Is that right?

> Signed-off-by: Abin Shahab <asha...@altiscale.com>
> ---
>  src/lxc/conf.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 5938c3e..a3779de 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -1921,10 +1921,12 @@ static int mount_entry(const char *fsname, const char 
> *target,
>       if ((mountflags & MS_REMOUNT) || (mountflags & MS_BIND)) {
>               DEBUG("remounting %s on %s to respect bind or remount options",
>                     fsname ? fsname : "(none)", target ? target : "(none)");
> -
> +             unsigned long rqd_flags = 0;
> +             if (mountflags & MS_RDONLY)
> +                     rqd_flags |= MS_RDONLY;
>  #ifdef HAVE_STATVFS
>               if (statvfs(fsname, &sb) == 0) {
> -                     unsigned long required_flags = 0;
> +                     unsigned long required_flags = rqd_flags;
>                       if (sb.f_flag & MS_NOSUID)
>                               required_flags |= MS_NOSUID;
>                       if (sb.f_flag & MS_NODEV)
> @@ -1940,7 +1942,7 @@ static int mount_entry(const char *fsname, const char 
> *target,
>                        * mountflags, then skip the remount
>                        */
>                       if (!(mountflags & MS_REMOUNT)) {
> -                             if (!(required_flags & ~mountflags)) {
> +                             if (!(required_flags & ~mountflags) && 
> rqd_flags == 0) {
>                                       DEBUG("mountflags already was %lu, 
> skipping remount",
>                                               mountflags);
>                                       goto skipremount;
> -- 
> 2.1.0
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel@lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to