diff --git a/pkg/util/mount/mount.go b/pkg/util/mount/mount.go index ffe9d2ee43..8eb761cb06 100644 --- a/pkg/util/mount/mount.go +++ b/pkg/util/mount/mount.go @@ -251,9 +251,14 @@ func GetDeviceNameFromMount(mounter Interface, mountPath string) (string, int, e // It is more extensive than IsLikelyNotMountPoint // and it detects bind mounts in linux func IsNotMountPoint(mounter Interface, file string) (bool, error) { + // Resolve any symlinks in file, kernel would do the same and use the resolved path in /proc/mounts + resolvedFile, err := mounter.EvalHostSymlinks(file) + if err != nil { + return true, err + } // IsLikelyNotMountPoint provides a quick check // to determine whether file IS A mountpoint - notMnt, notMntErr := mounter.IsLikelyNotMountPoint(file) + notMnt, notMntErr := mounter.IsLikelyNotMountPoint(resolvedFile) if notMntErr != nil && os.IsPermission(notMntErr) { // We were not allowed to do the simple stat() check, e.g. on NFS with // root_squash. Fall back to /proc/mounts check below. @@ -274,7 +279,7 @@ func IsNotMountPoint(mounter Interface, file string) (bool, error) { return notMnt, mountPointsErr } for _, mp := range mountPoints { - if mounter.IsMountPointMatch(mp, file) { + if mounter.IsMountPointMatch(mp, resolvedFile) { notMnt = false break }