[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <511A10E0.1000604@parallels.com>
Date: Tue, 12 Feb 2013 13:52:32 +0400
From: Stanislav Kinsbursky <skinsbursky@...allels.com>
To: "J. Bruce Fields" <bfields@...ldses.org>
CC: <akpm@...ux-foundation.org>, <linux-nfs@...r.kernel.org>,
<Trond.Myklebust@...app.com>, <linux-kernel@...r.kernel.org>,
<devel@...nvz.org>
Subject: Re: [PATCH 0/2] NFSD: fix races in service per-net resources allocation
12.02.2013 00:58, J. Bruce Fields пишет:
<snip>
> void svc_close_net(struct svc_serv *serv, struct net *net)
> {
> - svc_close_list(serv, &serv->sv_tempsocks, net);
> - svc_close_list(serv, &serv->sv_permsocks, net);
> -
> - svc_clear_pools(serv, net);
> - /*
> - * At this point the sp_sockets lists will stay empty, since
> - * svc_xprt_enqueue will not add new entries without taking the
> - * sp_lock and checking XPT_BUSY.
> - */
> - svc_clear_list(serv, &serv->sv_tempsocks, net);
> - svc_clear_list(serv, &serv->sv_permsocks, net);
> + int closed;
> + int delay = 0;
> +
> +again:
> + closed = svc_close_list(serv, &serv->sv_permsocks, net);
> + closed += svc_close_list(serv, &serv->sv_tempsocks, net);
> + if (closed) {
> + svc_clean_up_xprts(serv, net);
> + msleep(delay++);
> + goto again;
> + }
Frankly, this hunk above makes me feel sick... :(
But I have no better idea right now...
Maybe make this hunk a bit less weird (this is from my POW only, of course), like this:
> + while (svc_close_list(serv, &serv->sv_permsocks, net) +
> + svc_close_list(serv, &serv->sv_tempsocks, net)) {
> + svc_clean_up_xprts(serv, net);
> + msleep(delay++);
> + }
?
Anyway, thanks!
Acked-by: Stanislav Kinsbursky <skinsbursky@...allels.com>
--
Best regards,
Stanislav Kinsbursky
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists