goto again;
}
-/*
- * Search for at least 1 mount point in the dentry's subdirs.
- * We descend to the next level whenever the d_subdirs
- * list is non-empty and continue searching.
- */
-
-static enum d_walk_ret check_mount(void *data, struct dentry *dentry)
-{
- int *ret = data;
- if (d_mountpoint(dentry)) {
- *ret = 1;
- return D_WALK_QUIT;
- }
- return D_WALK_CONTINUE;
-}
-
-/**
- * have_submounts - check for mounts over a dentry
- * @parent: dentry to check.
- *
- * Return true if the parent or its subdirectories contain
- * a mount point
- */
-int have_submounts(struct dentry *parent)
-{
- int ret = 0;
-
- d_walk(parent, &ret, check_mount, NULL);
-
- return ret;
-}
-EXPORT_SYMBOL(have_submounts);
-
struct check_mount {
struct vfsmount *mnt;
unsigned int mounted;
extern void d_prune_aliases(struct inode *);
/* test whether we have any submounts in a subdir tree */
-extern int have_submounts(struct dentry *);
extern int path_has_submounts(const struct path *);
/*