[lustre-devel] Regression with delayed_work in sec_gc
NeilBrown
neilb at suse.com
Tue May 15 15:22:57 PDT 2018
On Tue, May 15 2018, James Simmons wrote:
> Dmitry has backported your upstream commit
>
> be3c64da248b1ada2bbcfc3855f07536d8087acb ( ptlrpc: use workqueue for
> pinger)
>
> and Sebastien tried out the change which can be seen at
> https://review.whamcloud.com/#/c/31724. Sebastien is having issues with
> unloading osc, mdc, ost or mdt kernel modules. He writes that he activated
> Kerberos for my file system, did some IOs, then tried to unmount the
> client and the targets. Unfortunately, on some occasions, while
> unmounting, the mdc module for instance has extra references (as shown by
> 'lsmod'), and cannot be unloaded. After a while, the extra references are
> dropped, and the module can be unloaded. It also happens on occasions on
> server side, for the mdt or ost modules. I tried destroy_workqueue but
> that made things worst :-( Do you know what is going on?
My guess is that ptlrpc_pinger_main() is looping, so
cancel_delayed_work_sync() is waiting an unusually long time for it.
This patch might fix the problem - it certainly makes the usage
of "this_ping" closer to the original code.
Thanks,
NeilBrown
diff --git a/drivers/staging/lustre/lustre/ptlrpc/pinger.c b/drivers/staging/lustre/lustre/ptlrpc/pinger.c
index 89eef8ec7df4..131b201541e8 100644
--- a/drivers/staging/lustre/lustre/ptlrpc/pinger.c
+++ b/drivers/staging/lustre/lustre/ptlrpc/pinger.c
@@ -222,12 +222,13 @@ static DECLARE_DELAYED_WORK(ping_work, ptlrpc_pinger_main);
static void ptlrpc_pinger_main(struct work_struct *ws)
{
- unsigned long this_ping = jiffies;
long time_to_next_wake;
struct timeout_item *item;
struct obd_import *imp;
do {
+ unsigned long this_ping = jiffies;
+
mutex_lock(&pinger_mutex);
list_for_each_entry(item, &timeout_list, ti_chain) {
item->ti_cb(item, item->ti_cb_data);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.lustre.org/pipermail/lustre-devel-lustre.org/attachments/20180516/4e6c8c37/attachment.sig>
More information about the lustre-devel
mailing list