Index: third_party/leveldatabase/env_chromium.cc |
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc |
index 1d2a74e2c6f68cf1eb86d42c94bacbd0bef36bb1..71a5c88077b9bb312173f2be6e235b8b14c922a1 100644 |
--- a/third_party/leveldatabase/env_chromium.cc |
+++ b/third_party/leveldatabase/env_chromium.cc |
@@ -616,10 +616,14 @@ Status ChromiumEnv::DeleteFile(const std::string& fname) { |
Status ChromiumEnv::CreateDir(const std::string& name) { |
Status result; |
- if (!::file_util::CreateDirectory(CreateFilePath(name))) { |
- result = MakeIOError(name, "Could not create directory.", kCreateDir); |
- RecordErrorAt(kCreateDir); |
- } |
+ base::PlatformFileError error = base::PLATFORM_FILE_OK; |
+ Retrier retrier(kCreateDir, this); |
+ do { |
+ if (::file_util::CreateDirectoryAndGetError(CreateFilePath(name), &error)) |
+ return result; |
+ } while (retrier.ShouldKeepTrying(error)); |
+ result = MakeIOError(name, "Could not create directory.", kCreateDir); |
+ RecordErrorAt(kCreateDir); |
return result; |
} |