Skip to content

Commit

Permalink
xfs: remove buffers from the delwri list in xfs_buf_stale
Browse files Browse the repository at this point in the history
For each call to xfs_buf_stale we call xfs_buf_delwri_dequeue either
directly before or after it, or are guaranteed by the surrounding
conditionals that we are never called on delwri buffers.  Simply
this situation by moving the call to xfs_buf_delwri_dequeue into
xfs_buf_stale.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
  • Loading branch information
Christoph Hellwig authored and Alex Elder committed Oct 12, 2011
1 parent c867cb6 commit af5c4be
Show file tree
Hide file tree
Showing 5 changed files with 1 addition and 9 deletions.
1 change: 0 additions & 1 deletion fs/xfs/xfs_attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2169,7 +2169,6 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)
bp = xfs_incore(mp->m_ddev_targp, dblkno, blkcnt, XBF_TRYLOCK);
if (bp) {
xfs_buf_stale(bp);
xfs_buf_delwri_dequeue(bp);
xfs_buf_relse(bp);
bp = NULL;
}
Expand Down
3 changes: 1 addition & 2 deletions fs/xfs/xfs_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ xfs_buf_stale(
struct xfs_buf *bp)
{
bp->b_flags |= XBF_STALE;
xfs_buf_delwri_dequeue(bp);
atomic_set(&(bp)->b_lru_ref, 0);
if (!list_empty(&bp->b_lru)) {
struct xfs_buftarg *btp = bp->b_target;
Expand Down Expand Up @@ -1059,7 +1060,6 @@ xfs_bioerror(
* We're calling xfs_buf_ioend, so delete XBF_DONE flag.
*/
XFS_BUF_UNREAD(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_UNDONE(bp);
xfs_buf_stale(bp);

Expand Down Expand Up @@ -1088,7 +1088,6 @@ xfs_bioerror_relse(
* change that interface.
*/
XFS_BUF_UNREAD(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_DONE(bp);
xfs_buf_stale(bp);
bp->b_iodone = NULL;
Expand Down
2 changes: 0 additions & 2 deletions fs/xfs/xfs_buf_item.c
Original file line number Diff line number Diff line change
Expand Up @@ -967,7 +967,6 @@ xfs_buf_iodone_callbacks(
*/
if (XFS_FORCED_SHUTDOWN(mp)) {
xfs_buf_stale(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_DONE(bp);
trace_xfs_buf_item_iodone(bp, _RET_IP_);
goto do_callbacks;
Expand Down Expand Up @@ -1009,7 +1008,6 @@ xfs_buf_iodone_callbacks(
*/
xfs_buf_stale(bp);
XFS_BUF_DONE(bp);
xfs_buf_delwri_dequeue(bp);

trace_xfs_buf_error_relse(bp, _RET_IP_);

Expand Down
1 change: 0 additions & 1 deletion fs/xfs/xfs_rw.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,6 @@ xfs_read_buf(
}
if (bp) {
XFS_BUF_UNDONE(bp);
xfs_buf_delwri_dequeue(bp);
xfs_buf_stale(bp);
/*
* brelse clears B_ERROR and b_error
Expand Down
3 changes: 0 additions & 3 deletions fs/xfs/xfs_trans_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,6 @@ xfs_trans_get_buf(xfs_trans_t *tp,
ASSERT(xfs_buf_islocked(bp));
if (XFS_FORCED_SHUTDOWN(tp->t_mountp)) {
xfs_buf_stale(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_DONE(bp);
}

Expand Down Expand Up @@ -391,7 +390,6 @@ xfs_trans_read_buf(
if (bp->b_error) {
error = bp->b_error;
xfs_buf_stale(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_DONE(bp);
xfs_ioerror_alert("xfs_trans_read_buf", mp,
bp, blkno);
Expand Down Expand Up @@ -744,7 +742,6 @@ xfs_trans_binval(
* We set the stale bit in the buffer as well since we're getting
* rid of it.
*/
xfs_buf_delwri_dequeue(bp);
xfs_buf_stale(bp);
bip->bli_flags |= XFS_BLI_STALE;
bip->bli_flags &= ~(XFS_BLI_INODE_BUF | XFS_BLI_LOGGED | XFS_BLI_DIRTY);
Expand Down

0 comments on commit af5c4be

Please sign in to comment.