summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/paths.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/paths.cpp')
-rw-r--r--src/mongo/db/storage/paths.cpp122
1 files changed, 61 insertions, 61 deletions
diff --git a/src/mongo/db/storage/paths.cpp b/src/mongo/db/storage/paths.cpp
index cb2913c6b06..2f6fb4d4a77 100644
--- a/src/mongo/db/storage/paths.cpp
+++ b/src/mongo/db/storage/paths.cpp
@@ -35,79 +35,79 @@
namespace mongo {
- /** from a full path */
- RelativePath RelativePath::fromFullPath(boost::filesystem::path dbp,
- boost::filesystem::path f) {
- // filesystem::path normalizes / and backslash
- std::string fullpath = f.string();
- std::string relative = str::after(fullpath, dbp.string());
- if( relative.empty() ) {
- log() << "warning file is not under db path? " << fullpath << ' ' << dbp.string();
- RelativePath rp;
- rp._p = fullpath;
- return rp;
- }
- if( str::startsWith(relative, "/") || str::startsWith(relative, "\\") ) {
- relative.erase(0, 1);
- }
+/** from a full path */
+RelativePath RelativePath::fromFullPath(boost::filesystem::path dbp, boost::filesystem::path f) {
+ // filesystem::path normalizes / and backslash
+ std::string fullpath = f.string();
+ std::string relative = str::after(fullpath, dbp.string());
+ if (relative.empty()) {
+ log() << "warning file is not under db path? " << fullpath << ' ' << dbp.string();
RelativePath rp;
- rp._p = relative;
+ rp._p = fullpath;
return rp;
}
+ if (str::startsWith(relative, "/") || str::startsWith(relative, "\\")) {
+ relative.erase(0, 1);
+ }
+ RelativePath rp;
+ rp._p = relative;
+ return rp;
+}
- dev_t getPartition(const std::string& path){
- struct stat stats;
-
- if (stat(path.c_str(), &stats) != 0){
- uasserted(13646, str::stream() << "stat() failed for file: " << path << " " << errnoWithDescription());
- }
+dev_t getPartition(const std::string& path) {
+ struct stat stats;
- return stats.st_dev;
+ if (stat(path.c_str(), &stats) != 0) {
+ uasserted(13646,
+ str::stream() << "stat() failed for file: " << path << " "
+ << errnoWithDescription());
}
- void flushMyDirectory(const boost::filesystem::path& file) {
-#ifdef __linux__ // this isn't needed elsewhere
- static bool _warnedAboutFilesystem = false;
- // if called without a fully qualified path it asserts; that makes mongoperf fail.
- // so make a warning. need a better solution longer term.
- // massert(13652, str::stream() << "Couldn't find parent dir for file: " << file.string(),);
- if (!file.has_branch_path()) {
- log() << "warning flushMyDirectory couldn't find parent dir for file: "
- << file.string();
- return;
- }
+ return stats.st_dev;
+}
+
+void flushMyDirectory(const boost::filesystem::path& file) {
+#ifdef __linux__ // this isn't needed elsewhere
+ static bool _warnedAboutFilesystem = false;
+ // if called without a fully qualified path it asserts; that makes mongoperf fail.
+ // so make a warning. need a better solution longer term.
+ // massert(13652, str::stream() << "Couldn't find parent dir for file: " << file.string(),);
+ if (!file.has_branch_path()) {
+ log() << "warning flushMyDirectory couldn't find parent dir for file: " << file.string();
+ return;
+ }
- boost::filesystem::path dir = file.branch_path(); // parent_path in new boosts
+ boost::filesystem::path dir = file.branch_path(); // parent_path in new boosts
- LOG(1) << "flushing directory " << dir.string();
+ LOG(1) << "flushing directory " << dir.string();
- int fd = ::open(dir.string().c_str(), O_RDONLY); // DO NOT THROW OR ASSERT BEFORE CLOSING
- massert(13650, str::stream() << "Couldn't open directory '" << dir.string()
- << "' for flushing: " << errnoWithDescription(),
- fd >= 0);
- if (fsync(fd) != 0) {
- int e = errno;
- if (e == EINVAL) { // indicates filesystem does not support synchronization
- if (!_warnedAboutFilesystem) {
- log() << "\tWARNING: This file system is not supported. For further information"
- << " see:"
- << startupWarningsLog;
- log() << "\t\t\thttp://dochub.mongodb.org/core/unsupported-filesystems"
- << startupWarningsLog;
- log() << "\t\tPlease notify MongoDB, Inc. if an unlisted filesystem generated "
- << "this warning." << startupWarningsLog;
- _warnedAboutFilesystem = true;
- }
- }
- else {
- close(fd);
- massert(13651, str::stream() << "Couldn't fsync directory '" << dir.string()
- << "': " << errnoWithDescription(e),
- false);
+ int fd = ::open(dir.string().c_str(), O_RDONLY); // DO NOT THROW OR ASSERT BEFORE CLOSING
+ massert(13650,
+ str::stream() << "Couldn't open directory '" << dir.string()
+ << "' for flushing: " << errnoWithDescription(),
+ fd >= 0);
+ if (fsync(fd) != 0) {
+ int e = errno;
+ if (e == EINVAL) { // indicates filesystem does not support synchronization
+ if (!_warnedAboutFilesystem) {
+ log() << "\tWARNING: This file system is not supported. For further information"
+ << " see:" << startupWarningsLog;
+ log() << "\t\t\thttp://dochub.mongodb.org/core/unsupported-filesystems"
+ << startupWarningsLog;
+ log() << "\t\tPlease notify MongoDB, Inc. if an unlisted filesystem generated "
+ << "this warning." << startupWarningsLog;
+ _warnedAboutFilesystem = true;
}
+ } else {
+ close(fd);
+ massert(13651,
+ str::stream() << "Couldn't fsync directory '" << dir.string()
+ << "': " << errnoWithDescription(e),
+ false);
}
- close(fd);
-#endif
}
+ close(fd);
+#endif
+}
}