Re: [PATCH 12/18] shared mount handling: bind and rbind

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> +/*
> + * mount 'source_mnt' under the destination 'dest_mnt' at
> + * dentry 'dest_dentry'. And propagate that mount to
> + * all the peer and slave mounts of 'dest_mnt'.
> + * Link all the new mounts into a propagation tree headed at
> + * source_mnt. Also link all the new mounts using ->mnt_list
> + * headed at source_mnt's ->mnt_list
> + *
> + * @dest_mnt: destination mount.
> + * @dest_dentry: destination dentry.
> + * @source_mnt: source mount.
> + * @tree_list : list of heads of trees to be attached.
> + */
> +int propagate_mnt(struct vfsmount *dest_mnt, struct dentry *dest_dentry,
> +		    struct vfsmount *source_mnt, struct list_head *tree_list)
> +{
> +	struct vfsmount *m, *child;
> +	int ret = 0;
> +	struct vfsmount *prev_dest_mnt = dest_mnt;
> +	struct vfsmount *prev_src_mnt  = source_mnt;
> +	LIST_HEAD(tmp_list);
> +	LIST_HEAD(umount_list);
> +
> +	for (m = propagation_next(dest_mnt, dest_mnt); m;
> +			m = propagation_next(m, dest_mnt)) {
> +		int type = CL_PROPAGATION;
> +
> +		if (IS_MNT_NEW(m))
> +			continue;
> +
> +		if (IS_MNT_SHARED(m))
> +			type |= CL_MAKE_SHARED;
> +
> +		if (!(child = copy_tree(source_mnt, source_mnt->mnt_root,
> +						type))) {
> +			ret = -ENOMEM;
> +			list_splice(tree_list, tmp_list.prev);
> +			goto out;
> +		}
> +
> +		if (is_subdir(dest_dentry, m->mnt_root)) {

Shouldn't this check go before copy_tree()?  Not much point in copying
the tree if we are sure it won't be used.

> +			mnt_set_mountpoint(m, dest_dentry, child);
> +			list_add_tail(&child->mnt_hash, tree_list);
> +		} else {
> +			/*
> +			 * This can happen if the parent mount was bind mounted
> +			 * on some subdirectory of a shared/slave mount.
> +			 */

I can't grok this comment.  Shouldn't it read something like

  ... if 'm' is a result of a bind from a subdirectory of 'dest_dentry'


Miklos
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux