diff --git a/core/src/com/cloud/storage/JavaStorageLayer.java b/core/src/com/cloud/storage/JavaStorageLayer.java index 6b61ad058e4..2e5544c8c19 100644 --- a/core/src/com/cloud/storage/JavaStorageLayer.java +++ b/core/src/com/cloud/storage/JavaStorageLayer.java @@ -142,6 +142,20 @@ public class JavaStorageLayer implements StorageLayer { return paths; } + @Override + public List listMountPointsByMsHost(String path, long msHostId) { + List mountPaths = new ArrayList(); + File[] files = new File(path).listFiles(); + if (files == null) { + return mountPaths; + } + for (File file : files) { + if (file.getName().startsWith(String.valueOf(msHostId) + ".")) + mountPaths.add(file.getAbsolutePath()); + } + return mountPaths; + } + @Override public boolean mkdir(String path) { synchronized (path.intern()) { diff --git a/core/src/com/cloud/storage/StorageLayer.java b/core/src/com/cloud/storage/StorageLayer.java index 8daa392ef9e..8421aeb1285 100644 --- a/core/src/com/cloud/storage/StorageLayer.java +++ b/core/src/com/cloud/storage/StorageLayer.java @@ -21,6 +21,7 @@ package com.cloud.storage; import java.io.File; import java.io.IOException; +import java.util.List; import com.cloud.utils.component.Manager; @@ -149,4 +150,6 @@ public interface StorageLayer extends Manager { boolean setWorldReadableAndWriteable(File file); boolean deleteDir(String dir); + + List listMountPointsByMsHost(String path, long msHostId); } diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java index 0e67a85cd30..f6205d5e8b2 100755 --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java @@ -696,8 +696,8 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw long mshostId = ManagementServerNode.getManagementServerId(); // cleanup left-over NFS mounts from previous session - String[] mounts = _storage.listFiles(parent + File.separator + String.valueOf(mshostId) + ".*"); - if (mounts != null && mounts.length > 0) { + List mounts = _storage.listMountPointsByMsHost(parent, mshostId); + if (mounts != null && !mounts.isEmpty()) { for (String mountPoint : mounts) { s_logger.info("umount NFS mount from previous session: " + mountPoint);