diff options
Diffstat (limited to 'fs/xfs/xfs_super.c')
-rw-r--r-- | fs/xfs/xfs_super.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 06d23b976f4c..5484888d39c4 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c | |||
@@ -1607,12 +1607,28 @@ xfs_init_workqueues(void) | |||
1607 | xfs_syncd_wq = alloc_workqueue("xfssyncd", WQ_NON_REENTRANT, 0); | 1607 | xfs_syncd_wq = alloc_workqueue("xfssyncd", WQ_NON_REENTRANT, 0); |
1608 | if (!xfs_syncd_wq) | 1608 | if (!xfs_syncd_wq) |
1609 | return -ENOMEM; | 1609 | return -ENOMEM; |
1610 | |||
1611 | /* | ||
1612 | * The allocation workqueue can be used in memory reclaim situations | ||
1613 | * (writepage path), and parallelism is only limited by the number of | ||
1614 | * AGs in all the filesystems mounted. Hence use the default large | ||
1615 | * max_active value for this workqueue. | ||
1616 | */ | ||
1617 | xfs_alloc_wq = alloc_workqueue("xfsalloc", WQ_MEM_RECLAIM, 0); | ||
1618 | if (!xfs_alloc_wq) | ||
1619 | goto out_destroy_syncd; | ||
1620 | |||
1610 | return 0; | 1621 | return 0; |
1622 | |||
1623 | out_destroy_syncd: | ||
1624 | destroy_workqueue(xfs_syncd_wq); | ||
1625 | return -ENOMEM; | ||
1611 | } | 1626 | } |
1612 | 1627 | ||
1613 | STATIC void | 1628 | STATIC void |
1614 | xfs_destroy_workqueues(void) | 1629 | xfs_destroy_workqueues(void) |
1615 | { | 1630 | { |
1631 | destroy_workqueue(xfs_alloc_wq); | ||
1616 | destroy_workqueue(xfs_syncd_wq); | 1632 | destroy_workqueue(xfs_syncd_wq); |
1617 | } | 1633 | } |
1618 | 1634 | ||