Index: native_client_sdk/src/libraries/nacl_io/kernel_object.cc |
diff --git a/native_client_sdk/src/libraries/nacl_io/kernel_object.cc b/native_client_sdk/src/libraries/nacl_io/kernel_object.cc |
index 81e57297a7317059891e6632d29ebfacb838e8ca..69cd7ab213702669fd0d0a89f6eaf4418d62ad58 100644 |
--- a/native_client_sdk/src/libraries/nacl_io/kernel_object.cc |
+++ b/native_client_sdk/src/libraries/nacl_io/kernel_object.cc |
@@ -16,6 +16,7 @@ |
#include "nacl_io/filesystem.h" |
#include "nacl_io/kernel_handle.h" |
+#include "nacl_io/log.h" |
#include "nacl_io/node.h" |
#include "sdk_util/auto_lock.h" |
@@ -35,8 +36,10 @@ Error KernelObject::AttachFsAtPath(const ScopedFilesystem& fs, |
std::string abs_path = GetAbsParts(path).Join(); |
AUTO_LOCK(fs_lock_); |
- if (filesystems_.find(abs_path) != filesystems_.end()) |
+ if (filesystems_.find(abs_path) != filesystems_.end()) { |
+ LOG_ERROR("Can't mount at %s, it is already mounted.", path.c_str()); |
return EBUSY; |
+ } |
filesystems_[abs_path] = fs; |
return 0; |
@@ -48,12 +51,16 @@ Error KernelObject::DetachFsAtPath(const std::string& path, |
AUTO_LOCK(fs_lock_); |
FsMap_t::iterator it = filesystems_.find(abs_path); |
- if (filesystems_.end() == it) |
+ if (filesystems_.end() == it) { |
+ LOG_TRACE("Can't unmount at %s, nothing is mounted.", path.c_str()); |
return EINVAL; |
+ } |
// It is only legal to unmount if there are no open references |
- if (it->second->RefCount() != 1) |
+ if (it->second->RefCount() != 1) { |
+ LOG_TRACE("Can't unmount at %s, refcount is != 1.", path.c_str()); |
return EBUSY; |
+ } |
*out_fs = it->second; |