summaryrefslogtreecommitdiffstats
path: root/third_party/leveldatabase/env_chromium.cc
diff options
context:
space:
mode:
authordgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-05 14:30:46 +0000
committerdgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-05 14:30:46 +0000
commit290e182210614a19207a3b8e674803ba0b8264ec (patch)
tree25594a52d371682ea39d1f76ebef0a82fe2d1ca0 /third_party/leveldatabase/env_chromium.cc
parent97cf302c2ab7903de946a7bcc2a26f7c02b2e073 (diff)
downloadchromium_src-290e182210614a19207a3b8e674803ba0b8264ec.zip
chromium_src-290e182210614a19207a3b8e674803ba0b8264ec.tar.gz
chromium_src-290e182210614a19207a3b8e674803ba0b8264ec.tar.bz2
Record errno for SyncParent.
We weren't recording errors for SyncParent and it turns out to be the 2nd most common source of I/O errors on CrOS when opening a database. Review URL: https://chromiumcodereview.appspot.com/23681009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221420 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/leveldatabase/env_chromium.cc')
-rw-r--r--third_party/leveldatabase/env_chromium.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc
index 562929b..413f230 100644
--- a/third_party/leveldatabase/env_chromium.cc
+++ b/third_party/leveldatabase/env_chromium.cc
@@ -454,10 +454,15 @@ Status ChromiumWritableFile::SyncParent() {
int parent_fd =
HANDLE_EINTR(open(parent_dir_.c_str(), O_RDONLY));
- if (parent_fd < 0)
- return MakeIOError(parent_dir_, strerror(errno), kSyncParent);
+ if (parent_fd < 0) {
+ int saved_errno = errno;
+ return MakeIOError(
+ parent_dir_, strerror(saved_errno), kSyncParent, saved_errno);
+ }
if (HANDLE_EINTR(fsync(parent_fd)) != 0) {
- s = MakeIOError(parent_dir_, strerror(errno), kSyncParent);
+ int saved_errno = errno;
+ s = MakeIOError(
+ parent_dir_, strerror(saved_errno), kSyncParent, saved_errno);
};
HANDLE_EINTR(close(parent_fd));
#endif