GFS2: Withdraw for IO errors writing to the journal or statfs
authorBob Peterson <rpeterso@redhat.com>
Wed, 16 Aug 2017 16:30:06 +0000 (11:30 -0500)
committerBob Peterson <rpeterso@redhat.com>
Fri, 25 Aug 2017 15:59:09 +0000 (10:59 -0500)
commit942b0cddfbf66295effc9fd879ca85ae10638565
tree09af4106900fa8727cffab3e14d6ca859efe2fa0
parentcc1dfa8b7571ea16dec9a29e0f4c4cad90b2a761
GFS2: Withdraw for IO errors writing to the journal or statfs

Before this patch, if GFS2 encountered IO errors while writing to
the journal, it would not report the problem, so they would go
unnoticed, sometimes for many hours. Sometimes this would only be
noticed later, when recovery tried to do journal replay and failed
due to invalid metadata at the blocks that resulted in IO errors.

This patch makes GFS2's log daemon check for IO errors. If it
encounters one, it withdraws from the file system and reports
why in dmesg. A similar action is taken when IO errors occur when
writing to the system statfs file.

These errors are also reported back to any callers of fsync, since
that requires the journal to be flushed. Therefore, any IO errors
that would previously go unnoticed are now noticed and the file
system is withdrawn as early as possible, thus preventing further
file system damage.

Also note that this reintroduces superblock variable sd_log_error,
which Christoph removed with commit f729b66fca.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/incore.h
fs/gfs2/log.c
fs/gfs2/lops.c
fs/gfs2/quota.c
fs/gfs2/super.c