ceph: fsc->*_wq's aren't used in memory reclaim path
Tejun Heo [Mon, 3 Jan 2011 13:49:45 +0000 (14:49 +0100)]
fsc->*_wq's aren't depended upon during memory reclaim.  Convert to
alloc_workqueue() w/o WQ_MEM_RECLAIM.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Sage Weil <sage@newdream.net>
Cc: ceph-devel@vger.kernel.org
Signed-off-by: Sage Weil <sage@newdream.net>

fs/ceph/super.c

index 1417f3f..bf6f0f3 100644 (file)
@@ -444,13 +444,17 @@ struct ceph_fs_client *create_fs_client(struct ceph_mount_options *fsopt,
                goto fail_client;
 
        err = -ENOMEM;
-       fsc->wb_wq = create_workqueue("ceph-writeback");
+       /*
+        * The number of concurrent works can be high but they don't need
+        * to be processed in parallel, limit concurrency.
+        */
+       fsc->wb_wq = alloc_workqueue("ceph-writeback", 0, 1);
        if (fsc->wb_wq == NULL)
                goto fail_bdi;
-       fsc->pg_inv_wq = create_singlethread_workqueue("ceph-pg-invalid");
+       fsc->pg_inv_wq = alloc_workqueue("ceph-pg-invalid", 0, 1);
        if (fsc->pg_inv_wq == NULL)
                goto fail_wb_wq;
-       fsc->trunc_wq = create_singlethread_workqueue("ceph-trunc");
+       fsc->trunc_wq = alloc_workqueue("ceph-trunc", 0, 1);
        if (fsc->trunc_wq == NULL)
                goto fail_pg_inv_wq;