mirror of https://github.com/k3s-io/k3s
Merge pull request #72624 from danielqsj/clean_unmount
Cleanup callers of deprecated functions in volume/utilpull/564/head
commit
cc1be28943
|
@ -25,14 +25,14 @@ import (
|
||||||
cadvisorapiv1 "github.com/google/cadvisor/info/v1"
|
cadvisorapiv1 "github.com/google/cadvisor/info/v1"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/config"
|
"k8s.io/kubernetes/pkg/kubelet/config"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
utilfile "k8s.io/kubernetes/pkg/util/file"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
utilnode "k8s.io/kubernetes/pkg/util/node"
|
utilnode "k8s.io/kubernetes/pkg/util/node"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// getRootDir returns the full path to the directory under which kubelet can
|
// getRootDir returns the full path to the directory under which kubelet can
|
||||||
|
@ -278,7 +278,7 @@ func (kl *Kubelet) getPodVolumePathListFromDisk(podUID types.UID) ([]string, err
|
||||||
volumes := []string{}
|
volumes := []string{}
|
||||||
podVolDir := kl.getPodVolumesDir(podUID)
|
podVolDir := kl.getPodVolumesDir(podUID)
|
||||||
|
|
||||||
if pathExists, pathErr := volumeutil.PathExists(podVolDir); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(podVolDir); pathErr != nil {
|
||||||
return volumes, fmt.Errorf("Error checking if path %q exists: %v", podVolDir, pathErr)
|
return volumes, fmt.Errorf("Error checking if path %q exists: %v", podVolDir, pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Path %q does not exist", podVolDir)
|
klog.Warningf("Path %q does not exist", podVolDir)
|
||||||
|
@ -327,7 +327,7 @@ func (kl *Kubelet) getMountedVolumePathListFromDisk(podUID types.UID) ([]string,
|
||||||
func (kl *Kubelet) podVolumeSubpathsDirExists(podUID types.UID) (bool, error) {
|
func (kl *Kubelet) podVolumeSubpathsDirExists(podUID types.UID) (bool, error) {
|
||||||
podVolDir := kl.getPodVolumeSubpathsDir(podUID)
|
podVolDir := kl.getPodVolumeSubpathsDir(podUID)
|
||||||
|
|
||||||
if pathExists, pathErr := volumeutil.PathExists(podVolDir); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(podVolDir); pathErr != nil {
|
||||||
return true, fmt.Errorf("Error checking if path %q exists: %v", podVolDir, pathErr)
|
return true, fmt.Errorf("Error checking if path %q exists: %v", podVolDir, pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
return false, nil
|
return false, nil
|
||||||
|
|
|
@ -274,7 +274,7 @@ func (detacher *awsElasticBlockStoreDetacher) Detach(volumeName string, nodeName
|
||||||
}
|
}
|
||||||
|
|
||||||
func (detacher *awsElasticBlockStoreDetacher) UnmountDevice(deviceMountPath string) error {
|
func (detacher *awsElasticBlockStoreDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
return mount.CleanupMountPoint(deviceMountPath, detacher.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setNodeDisk(
|
func setNodeDisk(
|
||||||
|
|
|
@ -490,7 +490,7 @@ func (c *awsElasticBlockStoreUnmounter) TearDown() error {
|
||||||
|
|
||||||
// Unmounts the bind mount
|
// Unmounts the bind mount
|
||||||
func (c *awsElasticBlockStoreUnmounter) TearDownAt(dir string) error {
|
func (c *awsElasticBlockStoreUnmounter) TearDownAt(dir string) error {
|
||||||
return util.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
type awsElasticBlockStoreDeleter struct {
|
type awsElasticBlockStoreDeleter struct {
|
||||||
|
|
|
@ -31,6 +31,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/aws"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
)
|
)
|
||||||
|
@ -189,7 +190,7 @@ func populateVolumeOptions(pluginName, pvcName string, capacityGB resource.Quant
|
||||||
// Returns the first path that exists, or empty string if none exist.
|
// Returns the first path that exists, or empty string if none exist.
|
||||||
func verifyDevicePath(devicePaths []string) (string, error) {
|
func verifyDevicePath(devicePaths []string) (string, error) {
|
||||||
for _, path := range devicePaths {
|
for _, path := range devicePaths {
|
||||||
if pathExists, err := volumeutil.PathExists(path); err != nil {
|
if pathExists, err := mount.PathExists(path); err != nil {
|
||||||
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
||||||
} else if pathExists {
|
} else if pathExists {
|
||||||
return path, nil
|
return path, nil
|
||||||
|
@ -203,7 +204,7 @@ func verifyDevicePath(devicePaths []string) (string, error) {
|
||||||
func verifyAllPathsRemoved(devicePaths []string) (bool, error) {
|
func verifyAllPathsRemoved(devicePaths []string) (bool, error) {
|
||||||
allPathsRemoved := true
|
allPathsRemoved := true
|
||||||
for _, path := range devicePaths {
|
for _, path := range devicePaths {
|
||||||
exists, err := volumeutil.PathExists(path)
|
exists, err := mount.PathExists(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Error checking if path exists: %v", err)
|
return false, fmt.Errorf("Error checking if path exists: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -309,7 +309,7 @@ func (d *azureDiskDetacher) Detach(diskURI string, nodeName types.NodeName) erro
|
||||||
|
|
||||||
// UnmountDevice unmounts the volume on the node
|
// UnmountDevice unmounts the volume on the node
|
||||||
func (detacher *azureDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
func (detacher *azureDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
err := util.UnmountPath(deviceMountPath, detacher.plugin.host.GetMounter(detacher.plugin.GetPluginName()))
|
err := mount.CleanupMountPoint(deviceMountPath, detacher.plugin.host.GetMounter(detacher.plugin.GetPluginName()), false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
klog.V(2).Infof("azureDisk - Device %s was unmounted", deviceMountPath)
|
klog.V(2).Infof("azureDisk - Device %s was unmounted", deviceMountPath)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -23,6 +23,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
"k8s.io/kubernetes/pkg/volume/util"
|
"k8s.io/kubernetes/pkg/volume/util"
|
||||||
)
|
)
|
||||||
|
@ -172,7 +173,7 @@ func (u *azureDiskUnmounter) TearDown() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *azureDiskUnmounter) TearDownAt(dir string) error {
|
func (u *azureDiskUnmounter) TearDownAt(dir string) error {
|
||||||
if pathExists, pathErr := util.PathExists(dir); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(dir); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
||||||
|
|
|
@ -325,7 +325,7 @@ func (c *azureFileUnmounter) TearDown() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *azureFileUnmounter) TearDownAt(dir string) error {
|
func (c *azureFileUnmounter) TearDownAt(dir string) error {
|
||||||
return volutil.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getVolumeSource(spec *volume.Spec) (string, bool, error) {
|
func getVolumeSource(spec *volume.Spec) (string, bool, error) {
|
||||||
|
|
|
@ -264,7 +264,7 @@ func (cephfsVolume *cephfsMounter) SetUpAt(dir string, fsGroup *int64) error {
|
||||||
err = cephfsVolume.execMount(dir)
|
err = cephfsVolume.execMount(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// cleanup upon failure.
|
// cleanup upon failure.
|
||||||
util.UnmountPath(dir, cephfsVolume.mounter)
|
mount.CleanupMountPoint(dir, cephfsVolume.mounter, false)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -283,7 +283,7 @@ func (cephfsVolume *cephfsUnmounter) TearDown() error {
|
||||||
|
|
||||||
// TearDownAt unmounts the bind mount
|
// TearDownAt unmounts the bind mount
|
||||||
func (cephfsVolume *cephfsUnmounter) TearDownAt(dir string) error {
|
func (cephfsVolume *cephfsUnmounter) TearDownAt(dir string) error {
|
||||||
return util.UnmountPath(dir, cephfsVolume.mounter)
|
return mount.CleanupMountPoint(dir, cephfsVolume.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPath creates global mount path
|
// GetPath creates global mount path
|
||||||
|
|
|
@ -237,7 +237,7 @@ func (attacher *cinderDiskAttacher) WaitForAttach(spec *volume.Spec, devicePath
|
||||||
// Using the Cinder volume ID, find the real device path (See Issue #33128)
|
// Using the Cinder volume ID, find the real device path (See Issue #33128)
|
||||||
devicePath = attacher.cinderProvider.GetDevicePath(volumeID)
|
devicePath = attacher.cinderProvider.GetDevicePath(volumeID)
|
||||||
}
|
}
|
||||||
exists, err := volumeutil.PathExists(devicePath)
|
exists, err := mount.PathExists(devicePath)
|
||||||
if exists && err == nil {
|
if exists && err == nil {
|
||||||
klog.Infof("Successfully found attached Cinder disk %q at %v.", volumeID, devicePath)
|
klog.Infof("Successfully found attached Cinder disk %q at %v.", volumeID, devicePath)
|
||||||
return devicePath, nil
|
return devicePath, nil
|
||||||
|
@ -403,7 +403,7 @@ func (detacher *cinderDiskDetacher) Detach(volumeName string, nodeName types.Nod
|
||||||
}
|
}
|
||||||
|
|
||||||
func (detacher *cinderDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
func (detacher *cinderDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
return mount.CleanupMountPoint(deviceMountPath, detacher.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (attacher *cinderDiskAttacher) nodeInstanceID(nodeName types.NodeName) (string, error) {
|
func (attacher *cinderDiskAttacher) nodeInstanceID(nodeName types.NodeName) (string, error) {
|
||||||
|
|
|
@ -459,7 +459,7 @@ func (c *cinderVolumeUnmounter) TearDown() error {
|
||||||
// Unmounts the bind mount, and detaches the disk only if the PD
|
// Unmounts the bind mount, and detaches the disk only if the PD
|
||||||
// resource was the last reference to that disk on the kubelet.
|
// resource was the last reference to that disk on the kubelet.
|
||||||
func (c *cinderVolumeUnmounter) TearDownAt(dir string) error {
|
func (c *cinderVolumeUnmounter) TearDownAt(dir string) error {
|
||||||
if pathExists, pathErr := util.PathExists(dir); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(dir); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
||||||
|
|
|
@ -371,7 +371,7 @@ func (ed *emptyDir) TearDown() error {
|
||||||
|
|
||||||
// TearDownAt simply discards everything in the directory.
|
// TearDownAt simply discards everything in the directory.
|
||||||
func (ed *emptyDir) TearDownAt(dir string) error {
|
func (ed *emptyDir) TearDownAt(dir string) error {
|
||||||
if pathExists, pathErr := volumeutil.PathExists(dir); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(dir); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
||||||
|
|
|
@ -162,7 +162,7 @@ func (detacher *fcDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Unmount for deviceMountPath(=globalPDPath)
|
// Unmount for deviceMountPath(=globalPDPath)
|
||||||
err = volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
err = mount.CleanupMountPoint(deviceMountPath, detacher.mounter, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("fc: failed to unmount: %s\nError: %v", deviceMountPath, err)
|
return fmt.Errorf("fc: failed to unmount: %s\nError: %v", deviceMountPath, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -431,7 +431,7 @@ func (c *fcDiskUnmounter) TearDown() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *fcDiskUnmounter) TearDownAt(dir string) error {
|
func (c *fcDiskUnmounter) TearDownAt(dir string) error {
|
||||||
return util.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Block Volumes Support
|
// Block Volumes Support
|
||||||
|
|
|
@ -28,6 +28,7 @@ import (
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
)
|
)
|
||||||
|
@ -375,7 +376,7 @@ func (util *fcUtil) DetachBlockFCDisk(c fcDiskUnmapper, mapPath, devicePath stri
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkPathExists(path string) (bool, error) {
|
func checkPathExists(path string) (bool, error) {
|
||||||
if pathExists, pathErr := volumeutil.PathExists(path); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(path); pathErr != nil {
|
||||||
return pathExists, fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return pathExists, fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmap skipped because path does not exist: %v", path)
|
klog.Warningf("Warning: Unmap skipped because path does not exist: %v", path)
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/volume/util"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
)
|
)
|
||||||
|
|
||||||
type detacherDefaults flexVolumeDetacher
|
type detacherDefaults flexVolumeDetacher
|
||||||
|
@ -41,5 +41,5 @@ func (d *detacherDefaults) WaitForDetach(devicePath string, timeout time.Duratio
|
||||||
// UnmountDevice is part of the volume.Detacher interface.
|
// UnmountDevice is part of the volume.Detacher interface.
|
||||||
func (d *detacherDefaults) UnmountDevice(deviceMountPath string) error {
|
func (d *detacherDefaults) UnmountDevice(deviceMountPath string) error {
|
||||||
klog.Warning(logPrefix(d.plugin.flexVolumePlugin), "using default UnmountDevice for device mount path ", deviceMountPath)
|
klog.Warning(logPrefix(d.plugin.flexVolumePlugin), "using default UnmountDevice for device mount path ", deviceMountPath)
|
||||||
return util.UnmountPath(deviceMountPath, d.plugin.host.GetMounter(d.plugin.GetPluginName()))
|
return mount.CleanupMountPoint(deviceMountPath, d.plugin.host.GetMounter(d.plugin.GetPluginName()), false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,8 @@ import (
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
"k8s.io/kubernetes/pkg/volume/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type flexVolumeDetacher struct {
|
type flexVolumeDetacher struct {
|
||||||
|
@ -51,18 +51,18 @@ func (d *flexVolumeDetacher) Detach(volumeName string, hostName types.NodeName)
|
||||||
// UnmountDevice is part of the volume.Detacher interface.
|
// UnmountDevice is part of the volume.Detacher interface.
|
||||||
func (d *flexVolumeDetacher) UnmountDevice(deviceMountPath string) error {
|
func (d *flexVolumeDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
|
|
||||||
pathExists, pathErr := util.PathExists(deviceMountPath)
|
pathExists, pathErr := mount.PathExists(deviceMountPath)
|
||||||
if !pathExists {
|
if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", deviceMountPath)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", deviceMountPath)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if pathErr != nil && !util.IsCorruptedMnt(pathErr) {
|
if pathErr != nil && !mount.IsCorruptedMnt(pathErr) {
|
||||||
return fmt.Errorf("Error checking path: %v", pathErr)
|
return fmt.Errorf("Error checking path: %v", pathErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
notmnt, err := isNotMounted(d.plugin.host.GetMounter(d.plugin.GetPluginName()), deviceMountPath)
|
notmnt, err := isNotMounted(d.plugin.host.GetMounter(d.plugin.GetPluginName()), deviceMountPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if util.IsCorruptedMnt(err) {
|
if mount.IsCorruptedMnt(err) {
|
||||||
notmnt = false // Corrupted error is assumed to be mounted.
|
notmnt = false // Corrupted error is assumed to be mounted.
|
||||||
} else {
|
} else {
|
||||||
return err
|
return err
|
||||||
|
@ -85,7 +85,7 @@ func (d *flexVolumeDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flexvolume driver may remove the directory. Ignore if it does.
|
// Flexvolume driver may remove the directory. Ignore if it does.
|
||||||
if pathExists, pathErr := util.PathExists(deviceMountPath); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(deviceMountPath); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -18,12 +18,12 @@ package flexvolume
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/volume/util"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
)
|
)
|
||||||
|
|
||||||
type unmounterDefaults flexVolumeUnmounter
|
type unmounterDefaults flexVolumeUnmounter
|
||||||
|
|
||||||
func (f *unmounterDefaults) TearDownAt(dir string) error {
|
func (f *unmounterDefaults) TearDownAt(dir string) error {
|
||||||
klog.Warning(logPrefix(f.plugin), "using default TearDownAt for ", dir)
|
klog.Warning(logPrefix(f.plugin), "using default TearDownAt for ", dir)
|
||||||
return util.UnmountPath(dir, f.mounter)
|
return mount.CleanupMountPoint(dir, f.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,8 +21,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
"k8s.io/kubernetes/pkg/volume/util"
|
|
||||||
"k8s.io/utils/exec"
|
"k8s.io/utils/exec"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,13 +43,13 @@ func (f *flexVolumeUnmounter) TearDown() error {
|
||||||
|
|
||||||
func (f *flexVolumeUnmounter) TearDownAt(dir string) error {
|
func (f *flexVolumeUnmounter) TearDownAt(dir string) error {
|
||||||
|
|
||||||
pathExists, pathErr := util.PathExists(dir)
|
pathExists, pathErr := mount.PathExists(dir)
|
||||||
if !pathExists {
|
if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if pathErr != nil && !util.IsCorruptedMnt(pathErr) {
|
if pathErr != nil && !mount.IsCorruptedMnt(pathErr) {
|
||||||
return fmt.Errorf("Error checking path: %v", pathErr)
|
return fmt.Errorf("Error checking path: %v", pathErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ func (f *flexVolumeUnmounter) TearDownAt(dir string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flexvolume driver may remove the directory. Ignore if it does.
|
// Flexvolume driver may remove the directory. Ignore if it does.
|
||||||
if pathExists, pathErr := util.PathExists(dir); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(dir); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -31,7 +31,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
|
|
||||||
flockerapi "github.com/clusterhq/flocker-go"
|
flockerapi "github.com/clusterhq/flocker-go"
|
||||||
"k8s.io/kubernetes/pkg/volume/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ProbeVolumePlugins is the primary entrypoint for volume plugins.
|
// ProbeVolumePlugins is the primary entrypoint for volume plugins.
|
||||||
|
@ -434,7 +433,7 @@ func (c *flockerVolumeUnmounter) TearDown() error {
|
||||||
|
|
||||||
// TearDownAt unmounts the bind mount
|
// TearDownAt unmounts the bind mount
|
||||||
func (c *flockerVolumeUnmounter) TearDownAt(dir string) error {
|
func (c *flockerVolumeUnmounter) TearDownAt(dir string) error {
|
||||||
return util.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *flockerPlugin) NewDeleter(spec *volume.Spec) (volume.Deleter, error) {
|
func (p *flockerPlugin) NewDeleter(spec *volume.Spec) (volume.Deleter, error) {
|
||||||
|
|
|
@ -29,6 +29,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
)
|
)
|
||||||
|
@ -285,5 +286,5 @@ func (detacher *gcePersistentDiskDetacher) Detach(volumeName string, nodeName ty
|
||||||
}
|
}
|
||||||
|
|
||||||
func (detacher *gcePersistentDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
func (detacher *gcePersistentDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
return volumeutil.UnmountPath(deviceMountPath, detacher.host.GetMounter(gcePersistentDiskPluginName))
|
return mount.CleanupMountPoint(deviceMountPath, detacher.host.GetMounter(gcePersistentDiskPluginName), false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -459,7 +459,7 @@ func (c *gcePersistentDiskUnmounter) TearDown() error {
|
||||||
|
|
||||||
// TearDownAt unmounts the bind mount
|
// TearDownAt unmounts the bind mount
|
||||||
func (c *gcePersistentDiskUnmounter) TearDownAt(dir string) error {
|
func (c *gcePersistentDiskUnmounter) TearDownAt(dir string) error {
|
||||||
return util.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
type gcePersistentDiskDeleter struct {
|
type gcePersistentDiskDeleter struct {
|
||||||
|
|
|
@ -33,6 +33,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/features"
|
"k8s.io/kubernetes/pkg/features"
|
||||||
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
|
kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
|
||||||
utilfile "k8s.io/kubernetes/pkg/util/file"
|
utilfile "k8s.io/kubernetes/pkg/util/file"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
"k8s.io/utils/exec"
|
"k8s.io/utils/exec"
|
||||||
|
@ -207,7 +208,7 @@ func verifyDevicePath(devicePaths []string, sdBeforeSet sets.String, diskName st
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, path := range devicePaths {
|
for _, path := range devicePaths {
|
||||||
if pathExists, err := volumeutil.PathExists(path); err != nil {
|
if pathExists, err := mount.PathExists(path); err != nil {
|
||||||
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
||||||
} else if pathExists {
|
} else if pathExists {
|
||||||
// validate that the path actually resolves to the correct disk
|
// validate that the path actually resolves to the correct disk
|
||||||
|
|
|
@ -295,7 +295,7 @@ func (b *glusterfsMounter) SetUpAt(dir string, fsGroup *int64) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cleanup upon failure.
|
// Cleanup upon failure.
|
||||||
volutil.UnmountPath(dir, b.mounter)
|
mount.CleanupMountPoint(dir, b.mounter, false)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ func (c *glusterfsUnmounter) TearDown() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *glusterfsUnmounter) TearDownAt(dir string) error {
|
func (c *glusterfsUnmounter) TearDownAt(dir string) error {
|
||||||
return volutil.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *glusterfsMounter) setUpAtInternal(dir string) error {
|
func (b *glusterfsMounter) setUpAtInternal(dir string) error {
|
||||||
|
|
|
@ -359,7 +359,7 @@ func (c *iscsiDiskUnmounter) TearDown() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *iscsiDiskUnmounter) TearDownAt(dir string) error {
|
func (c *iscsiDiskUnmounter) TearDownAt(dir string) error {
|
||||||
return ioutil.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Block Volumes Support
|
// Block Volumes Support
|
||||||
|
|
|
@ -590,7 +590,7 @@ func deleteDevices(c iscsiDiskUnmounter) error {
|
||||||
|
|
||||||
// DetachDisk unmounts and detaches a volume from node
|
// DetachDisk unmounts and detaches a volume from node
|
||||||
func (util *ISCSIUtil) DetachDisk(c iscsiDiskUnmounter, mntPath string) error {
|
func (util *ISCSIUtil) DetachDisk(c iscsiDiskUnmounter, mntPath string) error {
|
||||||
if pathExists, pathErr := volumeutil.PathExists(mntPath); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(mntPath); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", mntPath)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", mntPath)
|
||||||
|
@ -667,7 +667,7 @@ func (util *ISCSIUtil) DetachDisk(c iscsiDiskUnmounter, mntPath string) error {
|
||||||
|
|
||||||
// DetachBlockISCSIDisk removes loopback device for a volume and detaches a volume from node
|
// DetachBlockISCSIDisk removes loopback device for a volume and detaches a volume from node
|
||||||
func (util *ISCSIUtil) DetachBlockISCSIDisk(c iscsiDiskUnmapper, mapPath string) error {
|
func (util *ISCSIUtil) DetachBlockISCSIDisk(c iscsiDiskUnmapper, mapPath string) error {
|
||||||
if pathExists, pathErr := volumeutil.PathExists(mapPath); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(mapPath); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmap skipped because path does not exist: %v", mapPath)
|
klog.Warningf("Warning: Unmap skipped because path does not exist: %v", mapPath)
|
||||||
|
|
|
@ -371,7 +371,7 @@ func (dm *deviceMounter) UnmountDevice(deviceMountPath string) error {
|
||||||
// has base mount path: /var/lib/kubelet/plugins/kubernetes.io/local-volume/mounts
|
// has base mount path: /var/lib/kubelet/plugins/kubernetes.io/local-volume/mounts
|
||||||
basemountPath := dm.plugin.generateBlockDeviceBaseGlobalPath()
|
basemountPath := dm.plugin.generateBlockDeviceBaseGlobalPath()
|
||||||
if mount.PathWithinBase(deviceMountPath, basemountPath) {
|
if mount.PathWithinBase(deviceMountPath, basemountPath) {
|
||||||
return util.UnmountPath(deviceMountPath, dm.mounter)
|
return mount.CleanupMountPoint(deviceMountPath, dm.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -546,7 +546,7 @@ func (u *localVolumeUnmounter) TearDown() error {
|
||||||
// TearDownAt unmounts the bind mount
|
// TearDownAt unmounts the bind mount
|
||||||
func (u *localVolumeUnmounter) TearDownAt(dir string) error {
|
func (u *localVolumeUnmounter) TearDownAt(dir string) error {
|
||||||
klog.V(4).Infof("Unmounting volume %q at path %q\n", u.volName, dir)
|
klog.V(4).Infof("Unmounting volume %q at path %q\n", u.volName, dir)
|
||||||
return util.UnmountMountPoint(dir, u.mounter, true) /* extensiveMountPointCheck = true */
|
return mount.CleanupMountPoint(dir, u.mounter, true) /* extensiveMountPointCheck = true */
|
||||||
}
|
}
|
||||||
|
|
||||||
// localVolumeMapper implements the BlockVolumeMapper interface for local volumes.
|
// localVolumeMapper implements the BlockVolumeMapper interface for local volumes.
|
||||||
|
|
|
@ -298,7 +298,7 @@ func (c *nfsUnmounter) TearDownAt(dir string) error {
|
||||||
// Use extensiveMountPointCheck to consult /proc/mounts. We can't use faster
|
// Use extensiveMountPointCheck to consult /proc/mounts. We can't use faster
|
||||||
// IsLikelyNotMountPoint (lstat()), since there may be root_squash on the
|
// IsLikelyNotMountPoint (lstat()), since there may be root_squash on the
|
||||||
// NFS server and kubelet may not be able to do lstat/stat() there.
|
// NFS server and kubelet may not be able to do lstat/stat() there.
|
||||||
return util.UnmountMountPoint(dir, c.mounter, true /* extensiveMountPointCheck */)
|
return mount.CleanupMountPoint(dir, c.mounter, true /* extensiveMountPointCheck */)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getVolumeSource(spec *volume.Spec) (*v1.NFSVolumeSource, bool, error) {
|
func getVolumeSource(spec *volume.Spec) (*v1.NFSVolumeSource, bool, error) {
|
||||||
|
|
|
@ -293,7 +293,7 @@ func (detacher *photonPersistentDiskDetacher) WaitForDetach(devicePath string, t
|
||||||
select {
|
select {
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
klog.V(4).Infof("Checking device %q is detached.", devicePath)
|
klog.V(4).Infof("Checking device %q is detached.", devicePath)
|
||||||
if pathExists, err := volumeutil.PathExists(devicePath); err != nil {
|
if pathExists, err := mount.PathExists(devicePath); err != nil {
|
||||||
return fmt.Errorf("Error checking if device path exists: %v", err)
|
return fmt.Errorf("Error checking if device path exists: %v", err)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
return nil
|
return nil
|
||||||
|
@ -305,5 +305,5 @@ func (detacher *photonPersistentDiskDetacher) WaitForDetach(devicePath string, t
|
||||||
}
|
}
|
||||||
|
|
||||||
func (detacher *photonPersistentDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
func (detacher *photonPersistentDiskDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
return mount.CleanupMountPoint(deviceMountPath, detacher.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,7 +281,7 @@ func (c *photonPersistentDiskUnmounter) TearDown() error {
|
||||||
// Unmounts the bind mount, and detaches the disk only if the PD
|
// Unmounts the bind mount, and detaches the disk only if the PD
|
||||||
// resource was the last reference to that disk on the kubelet.
|
// resource was the last reference to that disk on the kubelet.
|
||||||
func (c *photonPersistentDiskUnmounter) TearDownAt(dir string) error {
|
func (c *photonPersistentDiskUnmounter) TearDownAt(dir string) error {
|
||||||
return util.UnmountPath(dir, c.mounter)
|
return mount.CleanupMountPoint(dir, c.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeGlobalPDPath(host volume.VolumeHost, devName string) string {
|
func makeGlobalPDPath(host volume.VolumeHost, devName string) string {
|
||||||
|
|
|
@ -27,6 +27,7 @@ import (
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/photon"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/photon"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
)
|
)
|
||||||
|
@ -69,7 +70,7 @@ func scsiHostScan() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func verifyDevicePath(path string) (string, error) {
|
func verifyDevicePath(path string) (string, error) {
|
||||||
if pathExists, err := volumeutil.PathExists(path); err != nil {
|
if pathExists, err := mount.PathExists(path); err != nil {
|
||||||
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
||||||
} else if pathExists {
|
} else if pathExists {
|
||||||
return path, nil
|
return path, nil
|
||||||
|
|
|
@ -197,7 +197,7 @@ var _ volume.DeviceUnmounter = &rbdDetacher{}
|
||||||
// - Remove the deviceMountPath at last.
|
// - Remove the deviceMountPath at last.
|
||||||
// This method is idempotent, callers are responsible for retrying on failure.
|
// This method is idempotent, callers are responsible for retrying on failure.
|
||||||
func (detacher *rbdDetacher) UnmountDevice(deviceMountPath string) error {
|
func (detacher *rbdDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
if pathExists, pathErr := volutil.PathExists(deviceMountPath); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(deviceMountPath); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", deviceMountPath)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", deviceMountPath)
|
||||||
|
|
|
@ -852,7 +852,7 @@ func (c *rbdUnmounter) TearDown() error {
|
||||||
|
|
||||||
func (c *rbdUnmounter) TearDownAt(dir string) error {
|
func (c *rbdUnmounter) TearDownAt(dir string) error {
|
||||||
klog.V(4).Infof("rbd: attempting to teardown at %s", dir)
|
klog.V(4).Infof("rbd: attempting to teardown at %s", dir)
|
||||||
if pathExists, pathErr := volutil.PathExists(dir); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(dir); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
klog.Warningf("Warning: Unmount skipped because path does not exist: %v", dir)
|
||||||
|
|
|
@ -363,7 +363,7 @@ func (util *RBDUtil) AttachDisk(b rbdMounter) (string, error) {
|
||||||
var output []byte
|
var output []byte
|
||||||
|
|
||||||
globalPDPath := util.MakeGlobalPDName(*b.rbd)
|
globalPDPath := util.MakeGlobalPDName(*b.rbd)
|
||||||
if pathExists, pathErr := volutil.PathExists(globalPDPath); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(globalPDPath); pathErr != nil {
|
||||||
return "", fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return "", fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
if err := os.MkdirAll(globalPDPath, 0750); err != nil {
|
if err := os.MkdirAll(globalPDPath, 0750); err != nil {
|
||||||
|
@ -505,7 +505,7 @@ func (util *RBDUtil) DetachDisk(plugin *rbdPlugin, deviceMountPath string, devic
|
||||||
// DetachBlockDisk detaches the disk from the node.
|
// DetachBlockDisk detaches the disk from the node.
|
||||||
func (util *RBDUtil) DetachBlockDisk(disk rbdDiskUnmapper, mapPath string) error {
|
func (util *RBDUtil) DetachBlockDisk(disk rbdDiskUnmapper, mapPath string) error {
|
||||||
|
|
||||||
if pathExists, pathErr := volutil.PathExists(mapPath); pathErr != nil {
|
if pathExists, pathErr := mount.PathExists(mapPath); pathErr != nil {
|
||||||
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
return fmt.Errorf("Error checking if path exists: %v", pathErr)
|
||||||
} else if !pathExists {
|
} else if !pathExists {
|
||||||
klog.Warningf("Warning: Unmap skipped because path does not exist: %v", mapPath)
|
klog.Warningf("Warning: Unmap skipped because path does not exist: %v", mapPath)
|
||||||
|
|
|
@ -193,7 +193,7 @@ func (v *sioVolume) TearDownAt(dir string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(4).Info(log("attempting to unmount %s", dir))
|
klog.V(4).Info(log("attempting to unmount %s", dir))
|
||||||
if err := util.UnmountPath(dir, mounter); err != nil {
|
if err := mount.CleanupMountPoint(dir, mounter, false); err != nil {
|
||||||
klog.Error(log("teardown failed while unmounting dir %s: %v ", dir, err))
|
klog.Error(log("teardown failed while unmounting dir %s: %v ", dir, err))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -533,7 +533,7 @@ func (b *storageosUnmounter) TearDown() error {
|
||||||
// Unmounts the bind mount, and detaches the disk only if the PD
|
// Unmounts the bind mount, and detaches the disk only if the PD
|
||||||
// resource was the last reference to that disk on the kubelet.
|
// resource was the last reference to that disk on the kubelet.
|
||||||
func (b *storageosUnmounter) TearDownAt(dir string) error {
|
func (b *storageosUnmounter) TearDownAt(dir string) error {
|
||||||
if err := util.UnmountPath(dir, b.mounter); err != nil {
|
if err := mount.CleanupMountPoint(dir, b.mounter, false); err != nil {
|
||||||
klog.V(4).Infof("Unmounted StorageOS volume %s failed with: %v", b.pvName, err)
|
klog.V(4).Infof("Unmounted StorageOS volume %s failed with: %v", b.pvName, err)
|
||||||
}
|
}
|
||||||
if err := b.manager.UnmountVolume(b); err != nil {
|
if err := b.manager.UnmountVolume(b); err != nil {
|
||||||
|
|
|
@ -125,35 +125,6 @@ func SetReady(dir string) {
|
||||||
file.Close()
|
file.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmountPath is a common unmount routine that unmounts the given path and
|
|
||||||
// deletes the remaining directory if successful.
|
|
||||||
// TODO: Remove this function and change callers to call mount pkg directly
|
|
||||||
func UnmountPath(mountPath string, mounter mount.Interface) error {
|
|
||||||
return mount.CleanupMountPoint(mountPath, mounter, false /* extensiveMountPointCheck */)
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmountMountPoint is a common unmount routine that unmounts the given path and
|
|
||||||
// deletes the remaining directory if successful.
|
|
||||||
// if extensiveMountPointCheck is true
|
|
||||||
// IsNotMountPoint will be called instead of IsLikelyNotMountPoint.
|
|
||||||
// IsNotMountPoint is more expensive but properly handles bind mounts.
|
|
||||||
// TODO: Change callers to call mount pkg directly
|
|
||||||
func UnmountMountPoint(mountPath string, mounter mount.Interface, extensiveMountPointCheck bool) error {
|
|
||||||
return mount.CleanupMountPoint(mountPath, mounter, extensiveMountPointCheck)
|
|
||||||
}
|
|
||||||
|
|
||||||
// PathExists returns true if the specified path exists.
|
|
||||||
// TODO: Change callers to call mount pkg directly
|
|
||||||
func PathExists(path string) (bool, error) {
|
|
||||||
return mount.PathExists(path)
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsCorruptedMnt return true if err is about corrupted mount point
|
|
||||||
// TODO: Change callers to call mount pkg directly
|
|
||||||
func IsCorruptedMnt(err error) bool {
|
|
||||||
return mount.IsCorruptedMnt(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSecretForPod locates secret by name in the pod's namespace and returns secret map
|
// GetSecretForPod locates secret by name in the pod's namespace and returns secret map
|
||||||
func GetSecretForPod(pod *v1.Pod, secretName string, kubeClient clientset.Interface) (map[string]string, error) {
|
func GetSecretForPod(pod *v1.Pod, secretName string, kubeClient clientset.Interface) (map[string]string, error) {
|
||||||
secret := make(map[string]string)
|
secret := make(map[string]string)
|
||||||
|
|
|
@ -292,7 +292,7 @@ func (detacher *vsphereVMDKDetacher) Detach(volumeName string, nodeName types.No
|
||||||
}
|
}
|
||||||
|
|
||||||
func (detacher *vsphereVMDKDetacher) UnmountDevice(deviceMountPath string) error {
|
func (detacher *vsphereVMDKDetacher) UnmountDevice(deviceMountPath string) error {
|
||||||
return volumeutil.UnmountPath(deviceMountPath, detacher.mounter)
|
return mount.CleanupMountPoint(deviceMountPath, detacher.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setNodeVolume(
|
func setNodeVolume(
|
||||||
|
|
|
@ -289,7 +289,7 @@ func (v *vsphereVolumeUnmounter) TearDown() error {
|
||||||
// Unmounts the bind mount, and detaches the disk only if the PD
|
// Unmounts the bind mount, and detaches the disk only if the PD
|
||||||
// resource was the last reference to that disk on the kubelet.
|
// resource was the last reference to that disk on the kubelet.
|
||||||
func (v *vsphereVolumeUnmounter) TearDownAt(dir string) error {
|
func (v *vsphereVolumeUnmounter) TearDownAt(dir string) error {
|
||||||
return util.UnmountPath(dir, v.mounter)
|
return mount.CleanupMountPoint(dir, v.mounter, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeGlobalPDPath(host volume.VolumeHost, devName string) string {
|
func makeGlobalPDPath(host volume.VolumeHost, devName string) string {
|
||||||
|
|
|
@ -28,6 +28,7 @@ import (
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
|
||||||
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
volumeutil "k8s.io/kubernetes/pkg/volume/util"
|
||||||
)
|
)
|
||||||
|
@ -73,7 +74,7 @@ type VolumeSpec struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func verifyDevicePath(path string) (string, error) {
|
func verifyDevicePath(path string) (string, error) {
|
||||||
if pathExists, err := volumeutil.PathExists(path); err != nil {
|
if pathExists, err := mount.PathExists(path); err != nil {
|
||||||
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
return "", fmt.Errorf("Error checking if path exists: %v", err)
|
||||||
} else if pathExists {
|
} else if pathExists {
|
||||||
return path, nil
|
return path, nil
|
||||||
|
|
Loading…
Reference in New Issue