Loading fs/xfs/xfs_buf.c +10 −0 Original line number Diff line number Diff line Loading @@ -1527,6 +1527,16 @@ xfs_wait_buftarg( LIST_HEAD(dispose); int loop = 0; /* * We need to flush the buffer workqueue to ensure that all IO * completion processing is 100% done. Just waiting on buffer locks is * not sufficient for async IO as the reference count held over IO is * not released until after the buffer lock is dropped. Hence we need to * ensure here that all reference counts have been dropped before we * start walking the LRU list. */ drain_workqueue(btp->bt_mount->m_buf_workqueue); /* loop until there is nothing left on the lru list. */ while (list_lru_count(&btp->bt_lru)) { list_lru_walk(&btp->bt_lru, xfs_buftarg_wait_rele, Loading fs/xfs/xfs_trans_ail.c +0 −1 Original line number Diff line number Diff line Loading @@ -497,7 +497,6 @@ xfsaild( long tout = 0; /* milliseconds */ current->flags |= PF_MEMALLOC; set_freezable(); while (!kthread_should_stop()) { if (tout && tout <= 20) Loading Loading
fs/xfs/xfs_buf.c +10 −0 Original line number Diff line number Diff line Loading @@ -1527,6 +1527,16 @@ xfs_wait_buftarg( LIST_HEAD(dispose); int loop = 0; /* * We need to flush the buffer workqueue to ensure that all IO * completion processing is 100% done. Just waiting on buffer locks is * not sufficient for async IO as the reference count held over IO is * not released until after the buffer lock is dropped. Hence we need to * ensure here that all reference counts have been dropped before we * start walking the LRU list. */ drain_workqueue(btp->bt_mount->m_buf_workqueue); /* loop until there is nothing left on the lru list. */ while (list_lru_count(&btp->bt_lru)) { list_lru_walk(&btp->bt_lru, xfs_buftarg_wait_rele, Loading
fs/xfs/xfs_trans_ail.c +0 −1 Original line number Diff line number Diff line Loading @@ -497,7 +497,6 @@ xfsaild( long tout = 0; /* milliseconds */ current->flags |= PF_MEMALLOC; set_freezable(); while (!kthread_should_stop()) { if (tout && tout <= 20) Loading