This adds checks for gfs2_log_flush being stuck, similarly to the check
in gfs2_ail1_flush.

Signed-off-by: Bob Peterson <rpete...@redhat.com>
---
 fs/gfs2/log.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
index 1d51b4781bdd..636c82dda68b 100644
--- a/fs/gfs2/log.c
+++ b/fs/gfs2/log.c
@@ -145,9 +145,6 @@ static void dump_ail_list(struct gfs2_sbd *sdp)
        struct gfs2_bufdata *bd;
        struct buffer_head *bh;
 
-       fs_err(sdp, "Error: In gfs2_ail1_flush for ten minutes! t=%d\n",
-              current->journal_info ? 1 : 0);
-
        list_for_each_entry_reverse(tr, &sdp->sd_ail1_list, tr_list) {
                list_for_each_entry_reverse(bd, &tr->tr_ail1_list,
                                            bd_ail_st_list) {
@@ -197,6 +194,8 @@ void gfs2_ail1_flush(struct gfs2_sbd *sdp, struct 
writeback_control *wbc)
 restart:
        ret = 0;
        if (time_after(jiffies, flush_start + (HZ * 600))) {
+               fs_err(sdp, "Error: In gfs2_ail1_flush for ten minutes! "
+                      "t=%d\n", current->journal_info ? 1 : 0);
                dump_ail_list(sdp);
                goto out;
        }
@@ -970,7 +969,16 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct 
gfs2_glock *gl, u32 flags)
 
        if (!(flags & GFS2_LOG_HEAD_FLUSH_NORMAL)) {
                if (!sdp->sd_log_idle) {
+                       unsigned long start = jiffies;
+
                        for (;;) {
+                               if (time_after(jiffies, start + (HZ * 600))) {
+                                       fs_err(sdp, "Error: In gfs2_log_flush "
+                                              "for 10 minutes! t=%d\n",
+                                              current->journal_info ? 1 : 0);
+                                       dump_ail_list(sdp);
+                                       break;
+                               }
                                gfs2_ail1_start(sdp);
                                gfs2_ail1_wait(sdp);
                                if (gfs2_ail1_empty(sdp, 0))
-- 
2.26.2

Reply via email to