summaryrefslogtreecommitdiffstats
path: root/third_party/leveldatabase
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/leveldatabase')
-rw-r--r--third_party/leveldatabase/env_chromium.cc13
-rw-r--r--third_party/leveldatabase/env_chromium.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc
index f36d691..9cba729 100644
--- a/third_party/leveldatabase/env_chromium.cc
+++ b/third_party/leveldatabase/env_chromium.cc
@@ -379,6 +379,19 @@ ErrorParsingResult ParseMethodAndError(const char* string,
return NONE;
}
+bool IndicatesDiskFull(leveldb::Status status) {
+ if (status.ok())
+ return false;
+ leveldb_env::MethodID method;
+ int error = -1;
+ leveldb_env::ErrorParsingResult result = leveldb_env::ParseMethodAndError(
+ status.ToString().c_str(), &method, &error);
+ return (result == leveldb_env::METHOD_AND_PFE &&
+ static_cast<base::PlatformFileError>(error) ==
+ base::PLATFORM_FILE_ERROR_NO_SPACE) ||
+ (result == leveldb_env::METHOD_AND_ERRNO && error == ENOSPC);
+}
+
std::string FilePathToString(const base::FilePath& file_path) {
#if defined(OS_WIN)
return UTF16ToUTF8(file_path.value());
diff --git a/third_party/leveldatabase/env_chromium.h b/third_party/leveldatabase/env_chromium.h
index 168d180..e84fad7 100644
--- a/third_party/leveldatabase/env_chromium.h
+++ b/third_party/leveldatabase/env_chromium.h
@@ -65,6 +65,7 @@ enum ErrorParsingResult {
ErrorParsingResult ParseMethodAndError(const char* string,
MethodID* method,
int* error);
+bool IndicatesDiskFull(leveldb::Status status);
std::string FilePathToString(const base::FilePath& file_path);
class UMALogger {