diff options
author | Dave Chinner <david@fromorbit.com> | 2016-01-18 16:28:36 -0500 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2016-01-18 16:28:36 -0500 |
commit | ee3804d9f94c5a391c66386b70b9fe5a58775507 (patch) | |
tree | 014d74ffa1cdda8f7db8e3fcd185ccb31e625724 /fs/xfs | |
parent | 4c931f770d327f4851917828a1682d030b53d021 (diff) | |
parent | 85bec5460ad8e05e0a8d70fb0f6750eb719ad092 (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.c | 10 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_ail.c | 1 |
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) |