GFS2: Wake up io waiters whenever a flush is done
authorBob Peterson <rpeterso@redhat.com>
Sat, 7 Jan 2017 03:14:28 +0000 (22:14 -0500)
committerBob Peterson <rpeterso@redhat.com>
Sat, 7 Jan 2017 03:14:28 +0000 (22:14 -0500)
commitb63f5e84826b3e1ae81e051a6a7c5a94b657aecb
tree1175b1dc2e02d148dbee7e1c941b15aadffb2982
parentf07b352021483a3a38f081dc284928400a9c1d2c
GFS2: Wake up io waiters whenever a flush is done

Before this patch, if a process called function gfs2_log_reserve to
reserve some journal blocks, but the journal not enough blocks were
free, it would call io_schedule. However, in the log flush daemon,
it woke up the waiters only if an gfs2_ail_flush was no longer
required. This resulted in situations where processes would wait
forever because the number of blocks required was so high that it
pushed the journal into a perpetual state of flush being required.

This patch changes the logd daemon so that it wakes up io waiters
every time the log is actually flushed.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/log.c