xfs: force the log if we encounter pinned buffers in .iop_pushbuf
We need to check for pinned buffers even in .iop_pushbuf given that inode items flush into the same buffers that may be pinned directly due operations on the unlinked inode list operating directly on buffers. To do this add a return value to .iop_pushbuf that tells the AIL push about this and use the existing log force mechanisms to unpin it. Signed-off-by: Christoph Hellwig <hch@lst.de> Reported-by: Stefan Priebe <s.priebe@profihost.ag> Tested-by: Stefan Priebe <s.priebe@profihost.ag> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
committed by
Alex Elder
parent
bc6e588a89
commit
17b38471c3
@ -427,8 +427,13 @@ xfs_ail_worker(
|
||||
|
||||
case XFS_ITEM_PUSHBUF:
|
||||
XFS_STATS_INC(xs_push_ail_pushbuf);
|
||||
IOP_PUSHBUF(lip);
|
||||
ailp->xa_last_pushed_lsn = lsn;
|
||||
|
||||
if (!IOP_PUSHBUF(lip)) {
|
||||
stuck++;
|
||||
flush_log = 1;
|
||||
} else {
|
||||
ailp->xa_last_pushed_lsn = lsn;
|
||||
}
|
||||
push_xfsbufd = 1;
|
||||
break;
|
||||
|
||||
|
Reference in New Issue
Block a user