|
@@ -838,32 +838,32 @@ xfs_init_mount_workqueues(
|
|
struct xfs_mount *mp)
|
|
struct xfs_mount *mp)
|
|
{
|
|
{
|
|
mp->m_data_workqueue = alloc_workqueue("xfs-data/%s",
|
|
mp->m_data_workqueue = alloc_workqueue("xfs-data/%s",
|
|
- WQ_MEM_RECLAIM, 0, mp->m_fsname);
|
|
|
|
|
|
+ WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
|
|
if (!mp->m_data_workqueue)
|
|
if (!mp->m_data_workqueue)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
mp->m_unwritten_workqueue = alloc_workqueue("xfs-conv/%s",
|
|
mp->m_unwritten_workqueue = alloc_workqueue("xfs-conv/%s",
|
|
- WQ_MEM_RECLAIM, 0, mp->m_fsname);
|
|
|
|
|
|
+ WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
|
|
if (!mp->m_unwritten_workqueue)
|
|
if (!mp->m_unwritten_workqueue)
|
|
goto out_destroy_data_iodone_queue;
|
|
goto out_destroy_data_iodone_queue;
|
|
|
|
|
|
mp->m_cil_workqueue = alloc_workqueue("xfs-cil/%s",
|
|
mp->m_cil_workqueue = alloc_workqueue("xfs-cil/%s",
|
|
- WQ_MEM_RECLAIM, 0, mp->m_fsname);
|
|
|
|
|
|
+ WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_fsname);
|
|
if (!mp->m_cil_workqueue)
|
|
if (!mp->m_cil_workqueue)
|
|
goto out_destroy_unwritten;
|
|
goto out_destroy_unwritten;
|
|
|
|
|
|
mp->m_reclaim_workqueue = alloc_workqueue("xfs-reclaim/%s",
|
|
mp->m_reclaim_workqueue = alloc_workqueue("xfs-reclaim/%s",
|
|
- 0, 0, mp->m_fsname);
|
|
|
|
|
|
+ WQ_FREEZABLE, 0, mp->m_fsname);
|
|
if (!mp->m_reclaim_workqueue)
|
|
if (!mp->m_reclaim_workqueue)
|
|
goto out_destroy_cil;
|
|
goto out_destroy_cil;
|
|
|
|
|
|
mp->m_log_workqueue = alloc_workqueue("xfs-log/%s",
|
|
mp->m_log_workqueue = alloc_workqueue("xfs-log/%s",
|
|
- 0, 0, mp->m_fsname);
|
|
|
|
|
|
+ WQ_FREEZABLE, 0, mp->m_fsname);
|
|
if (!mp->m_log_workqueue)
|
|
if (!mp->m_log_workqueue)
|
|
goto out_destroy_reclaim;
|
|
goto out_destroy_reclaim;
|
|
|
|
|
|
mp->m_eofblocks_workqueue = alloc_workqueue("xfs-eofblocks/%s",
|
|
mp->m_eofblocks_workqueue = alloc_workqueue("xfs-eofblocks/%s",
|
|
- 0, 0, mp->m_fsname);
|
|
|
|
|
|
+ WQ_FREEZABLE, 0, mp->m_fsname);
|
|
if (!mp->m_eofblocks_workqueue)
|
|
if (!mp->m_eofblocks_workqueue)
|
|
goto out_destroy_log;
|
|
goto out_destroy_log;
|
|
|
|
|
|
@@ -1715,7 +1715,8 @@ xfs_init_workqueues(void)
|
|
* AGs in all the filesystems mounted. Hence use the default large
|
|
* AGs in all the filesystems mounted. Hence use the default large
|
|
* max_active value for this workqueue.
|
|
* max_active value for this workqueue.
|
|
*/
|
|
*/
|
|
- xfs_alloc_wq = alloc_workqueue("xfsalloc", WQ_MEM_RECLAIM, 0);
|
|
|
|
|
|
+ xfs_alloc_wq = alloc_workqueue("xfsalloc",
|
|
|
|
+ WQ_MEM_RECLAIM|WQ_FREEZABLE, 0);
|
|
if (!xfs_alloc_wq)
|
|
if (!xfs_alloc_wq)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|