Lines Matching defs:path

621  * lookup_mnt - Return the first child mount mounted at path
636 struct vfsmount *lookup_mnt(const struct path *path)
645 child_mnt = __lookup_mnt(path->mnt, path->dentry);
1228 /* path_is_mountpoint() - Check if path is a mount in the current
1235 * checks if the passed in path is a mountpoint rather than the dentry
1238 bool path_is_mountpoint(const struct path *path)
1243 if (!d_mountpoint(path->dentry))
1249 res = __path_is_mountpoint(path);
1257 struct vfsmount *mnt_clone_internal(const struct path *path)
1260 p = clone_mnt(real_mount(path->mnt), path->dentry, CL_PRIVATE);
1659 * During unlink, rmdir, and d_drop it is possible to loose the path
1717 static int can_umount(const struct path *path, int flags)
1719 struct mount *mnt = real_mount(path->mnt);
1723 if (path->dentry != path->mnt->mnt_root)
1735 int path_umount(struct path *path, int flags)
1737 struct mount *mnt = real_mount(path->mnt);
1740 ret = can_umount(path, flags);
1745 dput(path->dentry);
1753 struct path path;
1762 ret = user_path_at(AT_FDCWD, name, lookup_flags, &path);
1765 return path_umount(&path, flags);
1882 struct vfsmount *collect_mounts(const struct path *path)
1886 if (!check_mnt(real_mount(path->mnt)))
1889 tree = copy_tree(real_mount(path->mnt), path->dentry,
1942 * clone_private_mount - create a private clone of a path
1944 * This creates a new vfsmount, which will be the clone of @path. The new will
1950 struct vfsmount *clone_private_mount(const struct path *path)
1952 struct mount *old_mnt = real_mount(path->mnt);
1962 if (has_locked_children(old_mnt, path->dentry))
1965 new_mnt = clone_mnt(old_mnt, path->dentry, CL_PRIVATE);
2225 static struct mountpoint *lock_mount(struct path *path)
2228 struct dentry *dentry = path->dentry;
2236 mnt = lookup_mnt(path);
2247 inode_unlock(path->dentry->d_inode);
2248 path_put(path);
2249 path->mnt = mnt;
2250 dentry = path->dentry = dget(mnt->mnt_root);
2298 static int do_change_type(struct path *path, int ms_flags)
2301 struct mount *mnt = real_mount(path->mnt);
2306 if (path->dentry != path->mnt->mnt_root)
2330 static struct mount *__do_loopback(struct path *old_path, int recurse)
2357 static int do_loopback(struct path *path, const char *old_name,
2360 struct path old_path;
2374 mp = lock_mount(path);
2380 parent = real_mount(path->mnt);
2403 static struct file *open_detached_copy(struct path *path, bool recursive)
2414 mnt = __do_loopback(path, recursive);
2432 mntput(path->mnt);
2433 path->mnt = &mnt->mnt;
2434 file = dentry_open(path, O_PATH, current_cred());
2436 dissolve_on_fput(path->mnt);
2445 struct path path;
2475 error = user_path_at(dfd, filename, lookup_flags, &path);
2480 file = open_detached_copy(&path, flags & AT_RECURSIVE);
2482 file = dentry_open(&path, O_PATH, current_cred());
2483 path_put(&path);
2552 static void mnt_warn_timestamp_expiry(struct path *mountpoint, struct vfsmount *mnt)
2579 static int do_reconfigure_mnt(struct path *path, unsigned int mnt_flags)
2581 struct super_block *sb = path->mnt->mnt_sb;
2582 struct mount *mnt = real_mount(path->mnt);
2588 if (path->dentry != mnt->mnt.mnt_root)
2600 mnt_warn_timestamp_expiry(path, &mnt->mnt);
2610 static int do_remount(struct path *path, int ms_flags, int sb_flags,
2614 struct super_block *sb = path->mnt->mnt_sb;
2615 struct mount *mnt = real_mount(path->mnt);
2621 if (path->dentry != path->mnt->mnt_root)
2627 fc = fs_context_for_reconfigure(path->dentry, sb_flags, MS_RMT_MASK);
2649 mnt_warn_timestamp_expiry(path, &mnt->mnt);
2687 static int do_move_mount(struct path *old_path, struct path *new_path)
2769 static int do_move_mount_old(struct path *path, const char *old_name)
2771 struct path old_path;
2781 err = do_move_mount(&old_path, path);
2790 struct path *path, int mnt_flags)
2792 struct mount *parent = real_mount(path->mnt);
2806 if (path->mnt->mnt_sb == newmnt->mnt.mnt_sb &&
2807 path->mnt->mnt_root == path->dentry)
2823 static int do_new_mount_fc(struct fs_context *fc, struct path *mountpoint,
2864 static int do_new_mount(struct path *path, const char *fstype, int sb_flags,
2913 err = do_new_mount_fc(fc, path, mnt_flags);
2919 int finish_automount(struct vfsmount *m, struct path *path)
2921 struct dentry *dentry = path->dentry;
2937 if (m->mnt_sb == path->mnt->mnt_sb &&
2955 if (unlikely(__lookup_mnt(path->mnt, dentry))) {
2967 err = do_add_mount(mnt, mp, path, path->mnt->mnt_flags | MNT_SHRINKABLE);
3166 int path_mount(const char *dev_name, struct path *path,
3183 ret = security_sb_mount(dev_name, path, type_page, flags, data_page);
3218 mnt_flags |= path->mnt->mnt_flags & MNT_ATIME_MASK;
3231 return do_reconfigure_mnt(path, mnt_flags);
3233 return do_remount(path, flags, sb_flags, mnt_flags, data_page);
3235 return do_loopback(path, dev_name, flags & MS_REC);
3237 return do_change_type(path, flags);
3239 return do_move_mount_old(path, dev_name);
3241 return do_new_mount(path, type_page, sb_flags, mnt_flags, dev_name,
3248 struct path path;
3251 ret = user_path_at(AT_FDCWD, dir_name, LOOKUP_FOLLOW, &path);
3254 ret = path_mount(dev_name, &path, type_page, flags, data_page);
3255 path_put(&path);
3407 struct path path;
3421 name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &path);
3429 s = path.mnt->mnt_sb;
3431 mntput(path.mnt);
3435 return path.dentry;
3483 struct path newmount;
3626 struct path from_path, to_path;
3672 * Return true if path is reachable from root
3677 const struct path *root)
3686 bool path_is_under(const struct path *path1, const struct path *path2)
3724 struct path new, old, root;
3825 struct path root;
3940 struct path ns_root;
3941 struct path fs_root;
4093 struct path root;