gfs2: Don't start unnecessary transactions during log flush
authorAndreas Gruenbacher <agruenba@redhat.com>
Fri, 28 Mar 2025 21:47:02 +0000 (22:47 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Thu, 22 May 2025 07:12:27 +0000 (09:12 +0200)
commit5a90f8d499225512a385585ffe3e28f687263d47
tree78f53bb8e170258c084a1387a0f8075d459702c0
parentd50a64e3c55e59e45e415c65531b0d76ad4cea36
gfs2: Don't start unnecessary transactions during log flush

Commit 8d391972ae2d ("gfs2: Remove __gfs2_writepage()") changed the log
flush code in gfs2_ail1_start_one() to call aops->writepages() instead
of aops->writepage().  For jdata inodes, this means that we will now try
to reserve log space and start a transaction before we can determine
that the pages in question have already been journaled.  When this
happens in the context of gfs2_logd(), it can now appear that not enough
log space is available for freeing up log space, and we will lock up.

Fix that by issuing journal writes directly instead of going through
aops->writepages() in the log flush code.

Fixes: 8d391972ae2d ("gfs2: Remove __gfs2_writepage()")
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/aops.c
fs/gfs2/aops.h
fs/gfs2/log.c