• Matthew Wilcox's avatar
    errseq: Always report a writeback error once · b4678df1
    Matthew Wilcox authored
    The errseq_t infrastructure assumes that errors which occurred before
    the file descriptor was opened are of no interest to the application.
    This turns out to be a regression for some applications, notably Postgres.
    
    Before errseq_t, a writeback error would be reported exactly once (as
    long as the inode remained in memory), so Postgres could open a file,
    call fsync() and find out whether there had been a writeback error on
    that file from another process.
    
    This patch changes the errseq infrastructure to report errors to all
    file descriptors which are opened after the error occurred, but before
    it was reported to any file descriptor.  This restores the user-visible
    behaviour.
    
    Cc: stable@vger.kernel.org
    Fixes: 5660e13d ("fs: new infrastructure for writeback error handling and reporting")
    Signed-off-by: 's avatarMatthew Wilcox <mawilcox@microsoft.com>
    Reviewed-by: 's avatarJeff Layton <jlayton@kernel.org>
    Signed-off-by: 's avatarJeff Layton <jlayton@redhat.com>
    b4678df1
errseq.c 6.6 KB