Merge tag 'errseq-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/jlayton...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 30 Apr 2018 23:53:40 +0000 (16:53 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 30 Apr 2018 23:53:40 +0000 (16:53 -0700)
commitfff75eb2a08c2ac96404a2d79685668f3cf5a7a3
tree5a52f98e5f2247e1c348f31211c4e8b7230a5fa0
parent8188fc8bef8c677d28a9dbbd2db6deaee1644180
parentb4678df184b314a2bd47d2329feca2c2534aa12b
Merge tag 'errseq-v4.17' of git://git./linux/kernel/git/jlayton/linux

Pull errseq infrastructure fix from Jeff Layton:
 "The PostgreSQL developers recently had a spirited discussion about the
  writeback error handling in Linux, and reached out to us about a
  behavoir change to the code that bit them when the errseq_t changes
  were merged.

  When we changed to using errseq_t for tracking writeback errors, we
  lost the ability for an application to see a writeback error that
  occurred before the open on which the fsync was issued. This was
  problematic for PostgreSQL which offloads fsync calls to a completely
  separate process from the DB writers.

  This patch restores that ability. If the errseq_t value in the inode
  does not have the SEEN flag set, then we just return 0 for the sample.
  That ensures that any recorded error is always delivered at least
  once.

  Note that we might still lose the error if the inode gets evicted from
  the cache before anything can reopen it, but that was the case before
  errseq_t was merged. At LSF/MM we had some discussion about keeping
  inodes with unreported writeback errors around in the cache for longer
  (possibly indefinitely), but that's really a separate problem"

* tag 'errseq-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux:
  errseq: Always report a writeback error once