]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/cifs/cifsfs.c
Merge branch 'for-next' of git://git.samba.org/sfrench/cifs-2.6
[mirror_ubuntu-artful-kernel.git] / fs / cifs / cifsfs.c
index d0d11b73b2afdd5c150e5394623c478bdf9bd824..9a1667e0e8d604ededf2a7ceb27ffcebf24b0ab9 100644 (file)
@@ -88,6 +88,7 @@ extern mempool_t *cifs_req_poolp;
 extern mempool_t *cifs_mid_poolp;
 
 struct workqueue_struct        *cifsiod_wq;
+struct workqueue_struct        *cifsoplockd_wq;
 __u32 cifs_lock_secret;
 
 /*
@@ -1375,9 +1376,16 @@ init_cifs(void)
                goto out_clean_proc;
        }
 
+       cifsoplockd_wq = alloc_workqueue("cifsoplockd",
+                                        WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
+       if (!cifsoplockd_wq) {
+               rc = -ENOMEM;
+               goto out_destroy_cifsiod_wq;
+       }
+
        rc = cifs_fscache_register();
        if (rc)
-               goto out_destroy_wq;
+               goto out_destroy_cifsoplockd_wq;
 
        rc = cifs_init_inodecache();
        if (rc)
@@ -1425,7 +1433,9 @@ out_destroy_inodecache:
        cifs_destroy_inodecache();
 out_unreg_fscache:
        cifs_fscache_unregister();
-out_destroy_wq:
+out_destroy_cifsoplockd_wq:
+       destroy_workqueue(cifsoplockd_wq);
+out_destroy_cifsiod_wq:
        destroy_workqueue(cifsiod_wq);
 out_clean_proc:
        cifs_proc_clean();
@@ -1448,6 +1458,7 @@ exit_cifs(void)
        cifs_destroy_mids();
        cifs_destroy_inodecache();
        cifs_fscache_unregister();
+       destroy_workqueue(cifsoplockd_wq);
        destroy_workqueue(cifsiod_wq);
        cifs_proc_clean();
 }