EventLog: Loop fwrite if necessary during flush
authorBen Gamari <bgamari.foss@gmail.com>
Sun, 1 Nov 2015 18:06:09 +0000 (19:06 +0100)
committerBen Gamari <ben@smart-cactus.org>
Sun, 1 Nov 2015 18:34:50 +0000 (19:34 +0100)
commitf46f32b922d7ecbee2829937295521f5db1d7997
treead0355dcd4d77f3a4bb69f1c5b22d97b21b3714b
parent65f3c4c0a1304b8d00b46dc0e77ad93fc566ffb1
EventLog: Loop fwrite if necessary during flush

Previously the eventlog flush code would fail if `fwrite` wrote less
than the requested amount. Like all Unix stream I/O operations, however,
`fwrite` isn't guaranteed to write the entire buffer. Here we loop as
long as `fwrite` succeeds in writing anything.

Fixes #11041.

Test Plan: Validate with eventlog

Reviewers: austin, simonmar

Reviewed By: simonmar

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1415

GHC Trac Issues: #11041
rts/eventlog/EventLog.c