|
@@ -87,6 +87,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;
|
|
|
|
|
|
/*
|
|
@@ -1374,9 +1375,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)
|
|
@@ -1424,7 +1432,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();
|
|
@@ -1447,6 +1457,7 @@ exit_cifs(void)
|
|
|
cifs_destroy_mids();
|
|
|
cifs_destroy_inodecache();
|
|
|
cifs_fscache_unregister();
|
|
|
+ destroy_workqueue(cifsoplockd_wq);
|
|
|
destroy_workqueue(cifsiod_wq);
|
|
|
cifs_proc_clean();
|
|
|
}
|