diff --git a/pkg/util/mount/mount_linux.go b/pkg/util/mount/mount_linux.go index 180de0ffed..1df073218f 100644 --- a/pkg/util/mount/mount_linux.go +++ b/pkg/util/mount/mount_linux.go @@ -1007,6 +1007,8 @@ func (mounter *Mounter) SafeMakeDir(subdir string, base string, perm os.FileMode func (mounter *Mounter) GetMountRefs(pathname string) ([]string, error) { if _, err := os.Stat(pathname); os.IsNotExist(err) { return []string{}, nil + } else if err != nil { + return nil, err } realpath, err := filepath.EvalSymlinks(pathname) if err != nil { diff --git a/pkg/util/mount/mount_linux_test.go b/pkg/util/mount/mount_linux_test.go index 530899d5ab..417592602d 100644 --- a/pkg/util/mount/mount_linux_test.go +++ b/pkg/util/mount/mount_linux_test.go @@ -110,6 +110,10 @@ func TestGetMountRefs(t *testing.T) { "/var/lib/kubelet/plugins/kubernetes.io/gce-pd/mounts/gce-pd2", }, }, + { + "/var/fake/directory/that/doesnt/exist", + []string{}, + }, } for i, test := range tests { diff --git a/pkg/util/mount/mount_windows.go b/pkg/util/mount/mount_windows.go index b3206d18c1..048e442c02 100644 --- a/pkg/util/mount/mount_windows.go +++ b/pkg/util/mount/mount_windows.go @@ -459,6 +459,11 @@ func getAllParentLinks(path string) ([]string, error) { } func (mounter *Mounter) GetMountRefs(pathname string) ([]string, error) { + if _, err := os.Stat(normalizeWindowsPath(pathname)); os.IsNotExist(err) { + return []string{}, nil + } else if err != nil { + return nil, err + } refs, err := getAllParentLinks(normalizeWindowsPath(pathname)) if err != nil { return nil, err diff --git a/pkg/util/mount/nsenter_mount.go b/pkg/util/mount/nsenter_mount.go index a798defe9b..d627a8f1fe 100644 --- a/pkg/util/mount/nsenter_mount.go +++ b/pkg/util/mount/nsenter_mount.go @@ -337,6 +337,13 @@ func (mounter *NsenterMounter) SafeMakeDir(subdir string, base string, perm os.F } func (mounter *NsenterMounter) GetMountRefs(pathname string) ([]string, error) { + exists, err := mounter.ExistsPath(pathname) + if err != nil { + return nil, err + } + if !exists { + return []string{}, nil + } hostpath, err := mounter.ne.EvalSymlinks(pathname, true /* mustExist */) if err != nil { return nil, err