Re: a nfsd_file_free panic when shudown

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,


> On Thu, 2022-12-22 at 17:38 +0800, Wang Yugui wrote:
> > Hi, Jeff Layton 
> > 
> > > Hi,
> > > > a nfsd_file_free panic when shudown.
> > > > 
> > > > This is a kernel 6.1.1 with some nfsd 6.2 pathes.
> > > > It happened when os shutdown.
> > > > 
> > > > but the reproducer is yet not clear.
> > > > we just gather the info of the attachment file.
> > > 
> > > Now I can reproduce it.
> > > 1)  'tail -f xxx' to keep a file is open from nfs4 client
> > > 2) 'shutdow -r now' the nfs server.
> > > 
> > > more panic info in the attachment files (panic-2.txt/panic-3.txt)
> > > 
> > > > 
> > > > It happened just after 'Subject: nfsd: rework refcounting in filecache'
> > > > is added, so this patch maybe related.
> > 
> > It is confirmed that this panic is caused by the patch
> > 'nfsd: rework refcounting in filecache'.
> > 
> > the problem is 100% reproduced when this patch is applied.
> > the problem is yet not reproduced when this patch is not applied.
> > 
> > Best Regards
> > Wang Yugui (wangyugui@xxxxxxxxxxxx)
> > 2022/12/22
> > 
> 
> Thanks for the bug report! This patch seems to fix the problem for me.
> Can you test it and let me know whether it also fixes it for you? If so,
> I'll send this to Chuck and the list for inclusion soon.

This new patch fix the problem here too.  Thanks a lot.

Best Regards
Wang Yugui (wangyugui@xxxxxxxxxxxx)
2022/12/22


> 
> Thanks!
> --?
> Jeff Layton <jlayton@xxxxxxxxxx>
> 
> --------------------8<--------------------------
> 
> [PATCH] nfsd: shut down the NFSv4 state objects before the filecache
> 
> Currently, we shut down the filecache before trying to clean up the
> stateids that depend on it, which can lead to an oops at shutdown time
> due to a refcount imbalance. Change the shutdown procedures to bring
> down the state handling infrastructure prior to shutting down the
> filecache.
> 
> Reported-by: Wang Yugui <wangyugui@xxxxxxxxxxxx>
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> ---
>  fs/nfsd/nfssvc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
> index 56fba1cba3af..325d3d3f1211 100644
> --- a/fs/nfsd/nfssvc.c
> +++ b/fs/nfsd/nfssvc.c
> @@ -453,8 +453,8 @@ static void nfsd_shutdown_net(struct net *net)
>  {
>  	struct nfsd_net *nn = net_generic(net, nfsd_net_id);
>  
> -	nfsd_file_cache_shutdown_net(net);
>  	nfs4_state_shutdown_net(net);
> +	nfsd_file_cache_shutdown_net(net);
>  	if (nn->lockd_up) {
>  		lockd_down(net);
>  		nn->lockd_up = false;
> -- 
> 2.38.1
> 





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux