kill-the-bkl/reiserfs: conditionaly release the write lock on fs_changed()
authorFrederic Weisbecker <fweisbec@gmail.com>
Thu, 7 May 2009 21:25:29 +0000 (23:25 +0200)
committerFrederic Weisbecker <fweisbec@gmail.com>
Mon, 14 Sep 2009 05:18:15 +0000 (07:18 +0200)
commitd663af807d8bb226394cb7e02f4665f6141a8140
tree56516a97cad01d589bb3da930459bfcd82c5d9d0
parente43d3f21c502dec786f2885a75e25859f18d6ffa
kill-the-bkl/reiserfs: conditionaly release the write lock on fs_changed()

The goal of fs_changed() is to check whether the tree changed during a
schedule(). This is a BKL legacy.

A recent patch added an explicit unconditional release/reacquire of the
write lock around the cond_resched() called inside fs_changed.

But it's wasteful to unconditionally do that, we are creating superfluous
lock contention in !TIF_NEED_RESCHED case.

This patch manage that by calling reiserfs_cond_resched() from fs_changed()
which only releases the lock if we are going to reschedule.

[ Impact: inject less lock contention and tree job retries ]

Cc: Jeff Mahoney <jeffm@suse.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
include/linux/reiserfs_fs.h