|
@@ -1273,39 +1273,6 @@ rename_retry:
|
|
goto again;
|
|
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 check_mount {
|
|
struct vfsmount *mnt;
|
|
struct vfsmount *mnt;
|
|
unsigned int mounted;
|
|
unsigned int mounted;
|