diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 21d1d3d14e3b55c7d1c983fae653972309c4956c..90a88bfc1f610e92feeb463fd06d6a6f83568915 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -2149,12 +2149,13 @@ xfs_buf_delwri_submit_buffers( blk_start_plug(&plug); list_for_each_entry_safe(bp, n, buffer_list, b_list) { if (!wait_list) { + if (!xfs_buf_trylock(bp)) + continue; if (xfs_buf_ispinned(bp)) { + xfs_buf_unlock(bp); pinned++; continue; } - if (!xfs_buf_trylock(bp)) - continue; } else { xfs_buf_lock(bp); }