Page MenuHomePhabricator

Merge #13039: Add logging and error handling for file syncing
ClosedPublic

Authored by markblundeberg on Jul 7 2019, 20:21.

Details

Summary

PR13039 backport https://github.com/bitcoin/bitcoin/pull/13039/files
cf02779 Add logging and error handling for file syncing (Wladimir J. van der Laan)

Pull request description:

Add logging and error handling inside, and outside of FileCommit.
Functions such as fsync, fdatasync will return error in case of hardware I/O errors, and ignoring this means it can silently continue through data corruption.
(c.f. https://lwn.net/SubscriberLink/752063/12b232ab5039efbe/)

EINVAL is handled specially to avoid crashing out on (network, fuse) filesystems that don't handle `f[data]sync`.

I checked that the syncing inside leveldb is already generating an I/O error as appropriate.

Depends on D3582

Test Plan

make check

Diff Detail

Repository
rABC Bitcoin ABC
Branch
PR13039
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 6713
Build 11473: Bitcoin ABC Buildbot (legacy)
Build 11472: arc lint + arc unit

Event Timeline

markblundeberg created this revision.Jul 7 2019, 20:21
Herald added a reviewer: Restricted Project. · View Herald TranscriptJul 7 2019, 20:21
deadalnix requested changes to this revision.Jul 8 2019, 00:50

Why C style error handling is garbage illustrated. I'll do a proper review later on.

This revision now requires changes to proceed.Jul 8 2019, 00:50
markblundeberg requested review of this revision.Jul 9 2019, 14:37

I await your review, then :)

deadalnix accepted this revision.Jul 9 2019, 17:33
This revision is now accepted and ready to land.Jul 9 2019, 17:33