On 03/16/12 12:55, Christoph Hellwig wrote:
Provide a variant of xlog_assign_tail_lsn that has the AIL lock already
held. By doing so we do an additional atomic_read + atomic_set under
the lock, which comes down to two instructions.
Switch xfs_trans_ail_update_bulk and xfs_trans_ail_delete_bulk to the
new version to reduce the number of lock roundtrips, and prepare for
a new addition that would require a third lock roundtrip in
xfs_trans_ail_delete_bulk. This addition is also the reason for
slightly rearranging the conditionals and relying on xfs_log_space_wake
for checking that the filesystem has been shut down internally.
Signed-off-by: Christoph Hellwig<hch@xxxxxx>
fs/xfs/xfs_log.c | 31 +++++++++++++++++++++++--------
fs/xfs/xfs_log.h | 1 +
fs/xfs/xfs_trans_ail.c | 22 +++++++++++++++-------
fs/xfs/xfs_trans_priv.h | 1 +
4 files changed, 40 insertions(+), 15 deletions(-)
--- xfs.orig/fs/xfs/xfs_log.c 2012-03-16 12:44:55.880363918 +0100
+++ xfs/fs/xfs/xfs_log.c 2012-03-16 12:50:24.040370003 +0100
@@ -915,27 +915,42 @@ xfs_log_need_covered(xfs_mount_t *mp)
* We may be holding the log iclog lock upon entering this routine.
Reviewed-by: Mark Tinguely <tinguely@xxxxxxx>