From: Brian Foster Date: Fri, 27 Mar 2020 15:29:55 +0000 (-0700) Subject: xfs: return locked status of inode buffer on xfsaild push X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=d4bc4c5fd177066b38e3a39ac751399e8dff80cf;p=linux.git xfs: return locked status of inode buffer on xfsaild push If the inode buffer backing a particular inode is locked, xfs_iflush() returns -EAGAIN and xfs_inode_item_push() skips the inode. It still returns success to xfsaild, however, which bypasses the xfsaild backoff heuristic. Update xfs_inode_item_push() to return locked status if the inode buffer couldn't be locked. Signed-off-by: Brian Foster Reviewed-by: Christoph Hellwig Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong --- diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index a627cb951dc61..f779cca2346f3 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -552,7 +552,8 @@ xfs_inode_item_push( if (!xfs_buf_delwri_queue(bp, buffer_list)) rval = XFS_ITEM_FLUSHING; xfs_buf_relse(bp); - } + } else if (error == -EAGAIN) + rval = XFS_ITEM_LOCKED; spin_lock(&lip->li_ailp->ail_lock); out_unlock: