Rename IsMountPoint to IsLikelyNotMountPoint

IsLikelyNotMountPoint determines if a directory is not a mountpoint.
It is fast but not necessarily ALWAYS correct. If the path is in fact
a bind mount from one part of a mount to another it will not be detected.
mkdir /tmp/a /tmp/b; mount --bin /tmp/a /tmp/b; IsLikelyNotMountPoint("/tmp/b")
will return true. When in fact /tmp/b is a mount point. So this patch
renames the function and switches it from a positive to a negative (I
could think of a good positive name). This should make future users of
this function aware that it isn't quite perfect, but probably good
enough.
This commit is contained in:
Eric Paris
2015-04-16 19:49:53 -04:00
parent eed655a6e6
commit f125ad88ce
19 changed files with 116 additions and 109 deletions

View File

@@ -172,12 +172,12 @@ func (b *gcePersistentDiskBuilder) SetUp() error {
// SetUpAt attaches the disk and bind mounts to the volume path.
func (b *gcePersistentDiskBuilder) SetUpAt(dir string) error {
// TODO: handle failed mounts here.
mountpoint, err := b.mounter.IsMountPoint(dir)
glog.V(4).Infof("PersistentDisk set up: %s %v %v", dir, mountpoint, err)
notMnt, err := b.mounter.IsLikelyNotMountPoint(dir)
glog.V(4).Infof("PersistentDisk set up: %s %v %v", dir, !notMnt, err)
if err != nil && !os.IsNotExist(err) {
return err
}
if mountpoint {
if !notMnt {
return nil
}
@@ -199,22 +199,22 @@ func (b *gcePersistentDiskBuilder) SetUpAt(dir string) error {
}
err = b.mounter.Mount(globalPDPath, dir, "", options)
if err != nil {
mountpoint, mntErr := b.mounter.IsMountPoint(dir)
notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir)
if mntErr != nil {
glog.Errorf("isMountpoint check failed: %v", mntErr)
glog.Errorf("IsLikelyNotMountPoint check failed: %v", mntErr)
return err
}
if mountpoint {
if !notMnt {
if mntErr = b.mounter.Unmount(dir); mntErr != nil {
glog.Errorf("Failed to unmount: %v", mntErr)
return err
}
mountpoint, mntErr := b.mounter.IsMountPoint(dir)
notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir)
if mntErr != nil {
glog.Errorf("isMountpoint check failed: %v", mntErr)
glog.Errorf("IsLikelyNotMountPoint check failed: %v", mntErr)
return err
}
if mountpoint {
if !notMnt {
// This is very odd, we don't expect it. We'll try again next sync loop.
glog.Errorf("%s is still mounted, despite call to unmount(). Will try again next sync loop.", dir)
return err
@@ -257,11 +257,11 @@ func (c *gcePersistentDiskCleaner) TearDown() error {
// Unmounts the bind mount, and detaches the disk only if the PD
// resource was the last reference to that disk on the kubelet.
func (c *gcePersistentDiskCleaner) TearDownAt(dir string) error {
mountpoint, err := c.mounter.IsMountPoint(dir)
notMnt, err := c.mounter.IsLikelyNotMountPoint(dir)
if err != nil {
return err
}
if !mountpoint {
if notMnt {
return os.Remove(dir)
}
@@ -282,12 +282,12 @@ func (c *gcePersistentDiskCleaner) TearDownAt(dir string) error {
return err
}
}
mountpoint, mntErr := c.mounter.IsMountPoint(dir)
notMnt, mntErr := c.mounter.IsLikelyNotMountPoint(dir)
if mntErr != nil {
glog.Errorf("isMountpoint check failed: %v", mntErr)
glog.Errorf("IsLikelyNotMountPoint check failed: %v", mntErr)
return err
}
if !mountpoint {
if notMnt {
if err := os.Remove(dir); err != nil {
return err
}

View File

@@ -71,13 +71,13 @@ func (diskUtil *GCEDiskUtil) AttachAndMountDisk(b *gcePersistentDiskBuilder, glo
}
// Only mount the PD globally once.
mountpoint, err := b.mounter.IsMountPoint(globalPDPath)
notMnt, err := b.mounter.IsLikelyNotMountPoint(globalPDPath)
if err != nil {
if os.IsNotExist(err) {
if err := os.MkdirAll(globalPDPath, 0750); err != nil {
return err
}
mountpoint = false
notMnt = true
} else {
return err
}
@@ -86,7 +86,7 @@ func (diskUtil *GCEDiskUtil) AttachAndMountDisk(b *gcePersistentDiskBuilder, glo
if b.readOnly {
options = append(options, "ro")
}
if !mountpoint {
if notMnt {
err = b.diskMounter.Mount(devicePath, globalPDPath, b.fsType, options)
if err != nil {
os.Remove(globalPDPath)