xfs: introduce new locks for the log grant ticket wait queues
authorDave Chinner <dchinner@redhat.com>
Tue, 21 Dec 2010 01:29:01 +0000 (12:29 +1100)
committerDave Chinner <david@fromorbit.com>
Tue, 21 Dec 2010 01:29:01 +0000 (12:29 +1100)
commit3f16b9850743b702380f098ab5e0308cd6af1792
tree6a39db2c6b750fab92e16865383f733e48aa96ed
parentc8a09ff8ca2235bccdaea8a52fbd5349646a8ba4
xfs: introduce new locks for the log grant ticket wait queues

The log grant ticket wait queues are currently protected by the log
grant lock.  However, the queues are functionally independent from
each other, and operations on them only require serialisation
against other queue operations now that all of the other log
variables they use are atomic values.

Hence, we can make them independent of the grant lock by introducing
new locks just to protect the lists operations. because the lists
are independent, we can use a lock per list and ensure that reserve
and write head queuing do not contend.

To ensure forced shutdowns work correctly in conjunction with the
new fast paths, ensure that we check whether the log has been shut
down in the grant functions once we hold the relevant spin locks but
before we go to sleep. This is needed to co-ordinate correctly with
the wakeups that are issued on the ticket queues so we don't leave
any processes sleeping on the queues during a shutdown.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/linux-2.6/xfs_trace.h
fs/xfs/xfs_log.c
fs/xfs/xfs_log_priv.h