hello, when using nfs with automount (umount every N secs), every mount creates "NFSv4 callback" process. after while these fills process table. https://lists.debian.org/debian-kernel/2017/05/msg00193.html https://bugzilla.redhat.com/show_bug.cgi?id=1427493 i have same problems. listed commits solved them. thanks for including patches. "Aurelien Jarno:" It seems the issues is fixed since 4.12-rc1 by the following set of commts: | commit ed6473ddc704a2005b9900ca08e236ebb2d8540a | Author: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> | Date: Wed Apr 26 11:55:27 2017 -0400 | | NFSv4: Fix callback server shutdown | | We want to use kthread_stop() in order to ensure the threads are | shut down before we tear down the nfs_callback_info in nfs_callback_down. | | Tested-and-reviewed-by: Kinglong Mee <kinglongmee@xxxxxxxxx> | Reported-by: Kinglong Mee <kinglongmee@xxxxxxxxx> | Fixes: bb6aeba736ba9 ("NFSv4.x: Switch to using svc_set_num_threads()...") | Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> | Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx> | | commit 9e0d87680d689f1758185851c3da6eafb16e71e1 | Author: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> | Date: Wed Apr 26 11:55:26 2017 -0400 | | SUNRPC: Refactor svc_set_num_threads() | | Refactor to separate out the functions of starting and stopping threads | so that they can be used in other helpers. | | Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> | Tested-and-reviewed-by: Kinglong Mee <kinglongmee@xxxxxxxxx> | Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx> | | commit df807fffaabde625fa9adb82e3e5b88cdaa5709a | Author: Kinglong Mee <kinglongmee@xxxxxxxxx> | Date: Thu Apr 27 11:13:38 2017 +0800 | | NFSv4.x/callback: Create the callback service through svc_create_pooled | | As the comments for svc_set_num_threads() said, | " Destroying threads relies on the service threads filling in | rqstp->rq_task, which only the nfs ones do. Assumes the serv | has been created using svc_create_pooled()." | | If creating service through svc_create(), the svc_pool_map_put() | will be called in svc_destroy(), but the pool map isn't used. | So that, the reference of pool map will be drop, the next using | of pool map will get a zero npools. -- S pozdravom / Yours sincerely Ing. Jan Hudoba
Attachment:
signature.asc
Description: OpenPGP digital signature