aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
authorDave Chinner <david@fromorbit.com>2016-01-18 16:28:36 -0500
committerDave Chinner <david@fromorbit.com>2016-01-18 16:28:36 -0500
commitee3804d9f94c5a391c66386b70b9fe5a58775507 (patch)
tree014d74ffa1cdda8f7db8e3fcd185ccb31e625724 /fs/xfs
parent4c931f770d327f4851917828a1682d030b53d021 (diff)
parent85bec5460ad8e05e0a8d70fb0f6750eb719ad092 (diff)
Merge branch 'xfs-misc-fixes-for-4.5-3' into for-next
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/xfs_buf.c10
-rw-r--r--fs/xfs/xfs_trans_ail.c1
2 files changed, 10 insertions, 1 deletions
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index ae86b16f9025..e143c7b66e35 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -1527,6 +1527,16 @@ xfs_wait_buftarg(
1527 LIST_HEAD(dispose); 1527 LIST_HEAD(dispose);
1528 int loop = 0; 1528 int loop = 0;
1529 1529
1530 /*
1531 * We need to flush the buffer workqueue to ensure that all IO
1532 * completion processing is 100% done. Just waiting on buffer locks is
1533 * not sufficient for async IO as the reference count held over IO is
1534 * not released until after the buffer lock is dropped. Hence we need to
1535 * ensure here that all reference counts have been dropped before we
1536 * start walking the LRU list.
1537 */
1538 drain_workqueue(btp->bt_mount->m_buf_workqueue);
1539
1530 /* loop until there is nothing left on the lru list. */ 1540 /* loop until there is nothing left on the lru list. */
1531 while (list_lru_count(&btp->bt_lru)) { 1541 while (list_lru_count(&btp->bt_lru)) {
1532 list_lru_walk(&btp->bt_lru, xfs_buftarg_wait_rele, 1542 list_lru_walk(&btp->bt_lru, xfs_buftarg_wait_rele,
diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c
index aa67339b9537..4f18fd92ca13 100644
--- a/fs/xfs/xfs_trans_ail.c
+++ b/fs/xfs/xfs_trans_ail.c
@@ -497,7 +497,6 @@ xfsaild(
497 long tout = 0; /* milliseconds */ 497 long tout = 0; /* milliseconds */
498 498
499 current->flags |= PF_MEMALLOC; 499 current->flags |= PF_MEMALLOC;
500 set_freezable();
501 500
502 while (!kthread_should_stop()) { 501 while (!kthread_should_stop()) {
503 if (tout && tout <= 20) 502 if (tout && tout <= 20)