aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_buf.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2011-10-10 12:52:53 -0400
committerAlex Elder <aelder@sgi.com>2011-10-11 23:34:31 -0400
commit5a93a064d27b42e4af1772b0599b53e3241191ac (patch)
tree67d51441dba4fd8645ec9f5eaacb5d60c62049c7 /fs/xfs/xfs_buf.c
parenta9add83e5abd29bf2b7b3658311199eeabbdefc6 (diff)
xfs: do not flush data workqueues in xfs_flush_buftarg
When we call xfs_flush_buftarg (generally from sync or umount) it already is too late to flush the data workqueues, as I/O completion is signalled for them and we are thus already done with the data we would flush here. There are places where flushing them might be useful, but the current sync interface doesn't give us that opportunity. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_buf.c')
-rw-r--r--fs/xfs/xfs_buf.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index 6f615c259411..cf0ac056815f 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -1623,13 +1623,6 @@ xfs_buf_delwri_promote(
1623 spin_unlock(&btp->bt_delwri_lock); 1623 spin_unlock(&btp->bt_delwri_lock);
1624} 1624}
1625 1625
1626STATIC void
1627xfs_buf_runall_queues(
1628 struct workqueue_struct *queue)
1629{
1630 flush_workqueue(queue);
1631}
1632
1633/* 1626/*
1634 * Move as many buffers as specified to the supplied list 1627 * Move as many buffers as specified to the supplied list
1635 * idicating if we skipped any buffers to prevent deadlocks. 1628 * idicating if we skipped any buffers to prevent deadlocks.
@@ -1752,9 +1745,7 @@ xfs_flush_buftarg(
1752 LIST_HEAD(wait_list); 1745 LIST_HEAD(wait_list);
1753 struct blk_plug plug; 1746 struct blk_plug plug;
1754 1747
1755 xfs_buf_runall_queues(xfsconvertd_workqueue); 1748 flush_workqueue(xfslogd_workqueue);
1756 xfs_buf_runall_queues(xfsdatad_workqueue);
1757 xfs_buf_runall_queues(xfslogd_workqueue);
1758 1749
1759 set_bit(XBT_FORCE_FLUSH, &target->bt_flags); 1750 set_bit(XBT_FORCE_FLUSH, &target->bt_flags);
1760 pincount = xfs_buf_delwri_split(target, &tmp_list, 0); 1751 pincount = xfs_buf_delwri_split(target, &tmp_list, 0);