xfs: avoid repeated pointer dereferences
PATCH 2/5 xfs: avoid repeated pointer dereferences
In xlog_find_cycle_start() use a local variable for some repeated operations rather than constantly accessing the memory location whose address is passed in.
(This version drops an assertion that a pointer is non-null.)
--- fs/xfs/xfs_log_recover.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-)
fs/xfs/xfs_log_recover.c +13 -12
@@ -354,26 +354,27 @@ xlog_find_cycle_start( {xfs_caddr_t offset;xfs_daddr_t mid_blk; +xfs_daddr_t end_blk;uint mid_cycle;int error; - mid_blk =BLK_AVG (first_blk, *last_blk); -while (mid_blk != first_blk && mid_blk != *last_blk) { + end_blk = *last_blk; + mid_blk =BLK_AVG (first_blk, end_blk); +while (mid_blk != first_blk && mid_blk != end_blk) { error =xlog_bread (log, mid_blk,1 , bp, &offset);if (error)return error; mid_cycle =xlog_get_cycle (offset); -if (mid_cycle == cycle) { - *last_blk = mid_blk; -/* last_half_cycle == mid_cycle */ - }else { - first_blk = mid_blk; -/* first_half_cycle == mid_cycle */ - } - mid_blk =BLK_AVG (first_blk, *last_blk); +if (mid_cycle == cycle) + end_blk = mid_blk;/* last_half_cycle == mid_cycle */ +else + first_blk = mid_blk;/* first_half_cycle == mid_cycle */ + mid_blk =BLK_AVG (first_blk, end_blk); } -ASSERT ((mid_blk == first_blk && mid_blk+1 == *last_blk) || - (mid_blk == *last_blk && mid_blk-1 == first_blk)); +ASSERT ((mid_blk == first_blk && mid_blk+1 == end_blk) || + (mid_blk == end_blk && mid_blk-1 == first_blk)); + + *last_blk = end_blk;return 0 ; }
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 7 lines · Alex Elder
In
xlog_find_cycle_start()use a local variable for some repeated operations rather than constantly accessing the memory location whose address is passed in.(This version drops an assertion that a pointer is non-null.)
Signed-off-by Alex Elder <[email protected]>
I'm not entirely convinced about the need for this, but it at least looks correct, so:
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs