Whamcloud - gitweb
LU-4423 obdclass: use workqueue for zombie management 07/31707/5
authorDmitry Eremin <dmitry.eremin@intel.com>
Wed, 21 Mar 2018 16:56:06 +0000 (19:56 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Sat, 14 Apr 2018 12:15:16 +0000 (12:15 +0000)
commit135fea8fa986d7abf107953b5b9a57170a418eda
tree571d67b25f5946f53dbbc97437c9f5cedb7d3999
parent5c53c353fd823df93fbee07f4c62786899584ab2
LU-4423 obdclass: use workqueue for zombie management

obdclass currently maintains two lists of data structures (imports and
exports), and a kthread which will free anything on either list.  The
thread is woken whenever anything is added to either list.

This is exactly the sort of thing that workqueues exist for.

So discard the zombie kthread and the lists and locks, and create a
single workqueue.  Each obd_import and obd_export gets a work_struct to
attach to this workqueue.

This requires a small change to import_sec_validate_get() which was
testing if an obd_import was on the zombie list.  This cannot have every
safely found it to be on the list (as it could be freed asynchronously)
so it must be dead code.

We could use system_wq instead of creating a dedicated zombie_wq, but as
we occasionally want to flush all pending work, it is a little nicer to
only have to wait for our own work items.

Change-Id: I3d0fafcc4d3896ff8760d5d36d8cfa187f86bc7d
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-on: https://review.whamcloud.com/31707
Tested-by: Jenkins
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/include/lustre_compat.h
lustre/include/lustre_export.h
lustre/include/lustre_import.h
lustre/obdclass/genops.c
lustre/ptlrpc/sec.c