One minor nit below

On Tue, Jun 20, 2017 at 18:28, Stanislav Kinsburskiy wrote:
> Call it on mount points tree building and abort in case NFS is overmounted.
> This logic replaces the old one, which was checking for unsupported NFS monut
> in validate_mounts. And the reason is that call to validate_mounts depends on
> user argument, which is unsuitable for this case.
> 
> Signed-off-by: Stanislav Kinsburskiy <[email protected]>
> ---
>  criu/mount.c |   35 ++++++++++++++++++++++-------------
>  1 file changed, 22 insertions(+), 13 deletions(-)
> 
> diff --git a/criu/mount.c b/criu/mount.c
> index cc54e68..46ad66c 100644
> --- a/criu/mount.c
> +++ b/criu/mount.c
> @@ -397,6 +397,25 @@ static bool mounts_equal(struct mount_info *a, struct 
> mount_info *b)
>   */
>  static char *mnt_roots;
>  
> +static bool nfs_mount(const struct mount_info *m)
> +{
> +     return !strcmp(m->fstype->name, "nfs") ||
> +            !strcmp(m->fstype->name, "nfs4");
> +
> +}
> +
> +static bool unsupported_mount(const struct mount_info *m)
> +{
> +     struct mount_info *parent = m->parent;
> +
> +     if (m->parent && nfs_mount(parent)) {

m->parent is already dereferenced, so you may use just "parent"
instead of it.

> +             pr_err("overmounted NFS (%s) is not supported yet:\n",
> +                             parent->mountpoint);
> +             return true;
> +     }
> +     return false;
> +}
> +
>  static struct mount_info *mnt_build_ids_tree(struct mount_info *list, struct 
> mount_info *yard_mount)
>  {
>       struct mount_info *m, *root = NULL;
> @@ -457,6 +476,9 @@ static struct mount_info *mnt_build_ids_tree(struct 
> mount_info *list, struct mou
>  
>               m->parent = parent;
>               list_add_tail(&m->siblings, &parent->children);
> +
> +             if (unsupported_mount(m))
> +                     return NULL;
>       }
>  
>       if (!root) {
> @@ -739,16 +761,6 @@ static bool mnt_is_external(struct mount_info *m)
>       return 0;
>  }
>  
> -static bool unsupported_nfs_mount(struct mount_info *m)
> -{
> -     if (!list_empty(&m->children)) {
> -             pr_err("overmounted NFS (%s) is not supported yet\n",
> -                             m->mountpoint);
> -             return true;
> -     }
> -     return false;
> -}
> -
>  static int validate_mounts(struct mount_info *info, bool for_dump)
>  {
>       struct mount_info *m, *t;
> @@ -819,9 +831,6 @@ skip_fstype:
>                                       m->mnt_id, m->mountpoint);
>                       return -1;
>               }
> -
> -             if (!strcmp(m->fstype->name, "nfs") && unsupported_nfs_mount(m))
> -                     return -1;
>       }
>  
>       return 0;
> 
> _______________________________________________
> Devel mailing list
> [email protected]
> https://lists.openvz.org/mailman/listinfo/devel
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to