diff options
author | Bob Peterson <rpeterso@redhat.com> | 2018-10-04 10:21:07 -0500 |
---|---|---|
committer | Bob Peterson <rpeterso@redhat.com> | 2018-10-05 10:51:11 -0500 |
commit | b524abcc01483b2ac093cc6a8a2a7375558d2b64 (patch) | |
tree | 125fe18370d8aa5a59df22e167ed5b8efe1cf1f0 /fs/gfs2/log.c | |
parent | 4f36cb36c9d14340bb200d2ad9117b03ce992cfe (diff) |
gfs2: slow the deluge of io error messages
When an io error is hit, it calls gfs2_io_error_bh_i for every
journal buffer it can't write. Since we changed gfs2_io_error_bh_i
recently to withdraw later in the cycle, it sends a flood of
errors to the console. This patch checks for the file system already
being withdrawn, and if so, doesn't send more messages. It doesn't
stop the flood of messages, but it slows it down and keeps it more
reasonable.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Diffstat (limited to 'fs/gfs2/log.c')
-rw-r--r-- | fs/gfs2/log.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c index ee20ea42e7b5..96706a2bd2b6 100644 --- a/fs/gfs2/log.c +++ b/fs/gfs2/log.c @@ -108,7 +108,9 @@ __acquires(&sdp->sd_ail_lock) gfs2_assert(sdp, bd->bd_tr == tr); if (!buffer_busy(bh)) { - if (!buffer_uptodate(bh)) { + if (!buffer_uptodate(bh) && + !test_and_set_bit(SDF_AIL1_IO_ERROR, + &sdp->sd_flags)) { gfs2_io_error_bh(sdp, bh); *withdraw = true; } @@ -206,7 +208,8 @@ static void gfs2_ail1_empty_one(struct gfs2_sbd *sdp, struct gfs2_trans *tr, gfs2_assert(sdp, bd->bd_tr == tr); if (buffer_busy(bh)) continue; - if (!buffer_uptodate(bh)) { + if (!buffer_uptodate(bh) && + !test_and_set_bit(SDF_AIL1_IO_ERROR, &sdp->sd_flags)) { gfs2_io_error_bh(sdp, bh); *withdraw = true; } |