]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: fix the logspace waiting algorithm
authorChristoph Hellwig <hch@infradead.org>
Mon, 28 Nov 2011 08:17:36 +0000 (08:17 +0000)
committerBen Myers <bpm@sgi.com>
Tue, 6 Dec 2011 20:19:47 +0000 (14:19 -0600)
commitecc9043bdaeae64752e400e9eca2981b025a57f2
tree55a7dbf7422f4b18e32ba5e0f5378c959c4e12ba
parent3111a5acfc59a369ce2e5fc8d2c11c7dfd8048d0
xfs: fix the logspace waiting algorithm

Apply the scheme used in log_regrant_write_log_space to wake up any other
threads waiting for log space before the newly added one to
log_regrant_write_log_space as well, and factor the code into readable
helpers.  For each of the queues we have add two helpers:

 - one to try to wake up all waiting threads.  This helper will also be
   usable by xfs_log_move_tail once we remove the current opportunistic
   wakeups in it.
 - one to sleep on t_wait until enough log space is available, loosely
   modelled after Linux waitqueues.

And use them to reimplement the guts of log_regrant_write_log_space and
log_regrant_write_log_space.  These two function now use one and the same
algorithm for waiting on log space instead of subtly different ones before,
with an option to completely unify them in the near future.

Also move the filesystem shutdown handling to the common caller given
that we had to touch it anyway.

Based on hard debugging and an earlier patch from
Chandra Seetharaman <sekharan@us.ibm.com>.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chandra Seetharaman <sekharan@us.ibm.com>
Tested-by: Chandra Seetharaman <sekharan@us.ibm.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
fs/xfs/xfs_log.c
fs/xfs/xfs_trace.h