Message ID | 20250217093207.3769550-5-hch@lst.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/4] xfs: reduce context switches for synchronous buffered I/O | expand |
On Mon, Feb 17, 2025 at 10:31:29AM +0100, Christoph Hellwig wrote: > xfs_buf_stale already set b_lru_ref to 0, and thus prevents the buffer > from moving to the LRU. Remove the duplicate check. > > Signed-off-by: Christoph Hellwig <hch@lst.de> I'd long wondered why that was necessary... Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --D > --- > fs/xfs/xfs_buf.c | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c > index f8efdee3c8b4..cf88b25fe3c5 100644 > --- a/fs/xfs/xfs_buf.c > +++ b/fs/xfs/xfs_buf.c > @@ -99,12 +99,6 @@ xfs_buf_stale( > */ > bp->b_flags &= ~_XBF_DELWRI_Q; > > - /* > - * Once the buffer is marked stale and unlocked, a subsequent lookup > - * could reset b_flags. There is no guarantee that the buffer is > - * unaccounted (released to LRU) before that occurs. Drop in-flight > - * status now to preserve accounting consistency. > - */ > spin_lock(&bp->b_lock); > atomic_set(&bp->b_lru_ref, 0); > if (!(bp->b_state & XFS_BSTATE_DISPOSE) && > @@ -1033,7 +1027,7 @@ xfs_buf_rele_cached( > } > > /* we are asked to drop the last reference */ > - if (!(bp->b_flags & XBF_STALE) && atomic_read(&bp->b_lru_ref)) { > + if (atomic_read(&bp->b_lru_ref)) { > /* > * If the buffer is added to the LRU, keep the reference to the > * buffer for the LRU and clear the (now stale) dispose list > -- > 2.45.2 > >
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index f8efdee3c8b4..cf88b25fe3c5 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -99,12 +99,6 @@ xfs_buf_stale( */ bp->b_flags &= ~_XBF_DELWRI_Q; - /* - * Once the buffer is marked stale and unlocked, a subsequent lookup - * could reset b_flags. There is no guarantee that the buffer is - * unaccounted (released to LRU) before that occurs. Drop in-flight - * status now to preserve accounting consistency. - */ spin_lock(&bp->b_lock); atomic_set(&bp->b_lru_ref, 0); if (!(bp->b_state & XFS_BSTATE_DISPOSE) && @@ -1033,7 +1027,7 @@ xfs_buf_rele_cached( } /* we are asked to drop the last reference */ - if (!(bp->b_flags & XBF_STALE) && atomic_read(&bp->b_lru_ref)) { + if (atomic_read(&bp->b_lru_ref)) { /* * If the buffer is added to the LRU, keep the reference to the * buffer for the LRU and clear the (now stale) dispose list
xfs_buf_stale already set b_lru_ref to 0, and thus prevents the buffer from moving to the LRU. Remove the duplicate check. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/xfs/xfs_buf.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)