diff options
author | dgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-05 14:30:46 +0000 |
---|---|---|
committer | dgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-05 14:30:46 +0000 |
commit | 290e182210614a19207a3b8e674803ba0b8264ec (patch) | |
tree | 25594a52d371682ea39d1f76ebef0a82fe2d1ca0 /third_party/leveldatabase/env_chromium.cc | |
parent | 97cf302c2ab7903de946a7bcc2a26f7c02b2e073 (diff) | |
download | chromium_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.cc | 11 |
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 |