xfs: replace global xfslogd wq with per-mount wq
[firefly-linux-kernel-4.4.55.git] / fs / xfs / xfs_buf.c
index 24b4ebea0d4d114c924838c3d50614920c0a923d..c06d790a3000fa52ae4a9818785bddab94f8a764 100644 (file)
@@ -44,8 +44,6 @@
 
 static kmem_zone_t *xfs_buf_zone;
 
-static struct workqueue_struct *xfslogd_workqueue;
-
 #ifdef XFS_BUF_LOCK_TRACKING
 # define XB_SET_OWNER(bp)      ((bp)->b_last_holder = current->pid)
 # define XB_CLEAR_OWNER(bp)    ((bp)->b_last_holder = -1)
@@ -1053,7 +1051,7 @@ xfs_buf_ioend_async(
        struct xfs_buf  *bp)
 {
        INIT_WORK(&bp->b_iodone_work, xfs_buf_ioend_work);
-       queue_work(xfslogd_workqueue, &bp->b_iodone_work);
+       queue_work(bp->b_target->bt_mount->m_buf_workqueue, &bp->b_iodone_work);
 }
 
 void
@@ -1882,15 +1880,8 @@ xfs_buf_init(void)
        if (!xfs_buf_zone)
                goto out;
 
-       xfslogd_workqueue = alloc_workqueue("xfslogd",
-                               WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_FREEZABLE, 1);
-       if (!xfslogd_workqueue)
-               goto out_free_buf_zone;
-
        return 0;
 
- out_free_buf_zone:
-       kmem_zone_destroy(xfs_buf_zone);
  out:
        return -ENOMEM;
 }
@@ -1898,6 +1889,5 @@ xfs_buf_init(void)
 void
 xfs_buf_terminate(void)
 {
-       destroy_workqueue(xfslogd_workqueue);
        kmem_zone_destroy(xfs_buf_zone);
 }