xp_refcnt should definitely never be negative.  We can probably handle 
it better in svc_vc_destroy_task(), but it's a big bug if it happens, 
and we'd expect things to break.
I took a quick look, and didn't see anything, but this is complicated 
code, and I'll have to look closer.  I may not be able to get to it 
before the new year, since we are shutdown starting Thursday until the 
4th.  I'll try to get time to look at it, but it may have to wait until 
then.
Daniel
On 12/21/20 11:07 AM, Chakra Divi wrote:
 Hi Daniel,
 
 Thanks for giving info to look into it. I have checked the logs and found that -
svc_destroy_task is running in a loop for two tasks - whose xp_refcnts are negative.
 
 Following the are the logs where refcnt became negative. I'm suspecting this could be
due to async call back.
 /**************************************************************/
 21/12/2020 T13:42:28.211691+0000 9399[none] [svc_32] 0 :rpc :svc_ioq_flushv:
0x7f19fa871f00 fd 13 returning Success (0)
 21/12/2020 T13:42:28.211705+0000 9399[none] [svc_32] 0 :rpc :svc_ioq_write:
0x7f19fa871f00 fd 13 COMPLETED
 21/12/2020 T13:42:28.211716+0000 9399[none] [svc_32] 0 :rpc :svc_ioq_write:
0x7f19fa871f00 fd 13 About to release
 21/12/2020 T13:42:28.211728+0000 9399[none] [svc_32] 0 :rpc :svc_release_it()
0x7f19fa871f00 fd 13 fd_send -1 xp_refcnt 1 af 10 port 874 @svc_ioq_write:399
 21/12/2020 T13:42:28.211739+0000 9399[none] [svc_32] 0 :rpc :xdr_ioq_destroy() xioq
0x7f19f140e180
 21/12/2020 T13:42:28.211755+0000 9399[none] [svc_32] 0 :rpc :Call uio_release
 21/12/2020 T13:42:28.211869+0000 9399[none] [svc_32] 0 :rpc :xdr_bytes_free:653 already
free
 21/12/2020 T13:42:28.211901+0000 9399[none] [svc_32] 0 :rpc :xdr_ioq_destroy() xioq
0x7f19f3410300
 21/12/2020 T13:42:28.211921+0000 9399[none] [svc_32] 0 :rpc :svc_release_it()
0x7f19fa871f00 fd 13 fd_send -1 xp_refcnt 0 af 10 port 874 @free_nfs_request:1402
 21/12/2020 T13:42:28.211934+0000 9399[none] [svc_32] 0 :rpc :svc_vc_destroy_it()
0x7f19fa871f00 fd 13 xp_refcnt 0 @free_nfs_request:1402
 21/12/2020 T13:42:28.211953+0000 9399[none] [svc_32] 0 :rpc :svc_release_it()
0x7f19fa871f00 fd 13 fd_send -1 xp_refcnt -1 af 10 port 874 @svc_resume_task:1247
 21/12/2020 T13:42:28.211968+0000 9399[none] [svc_32] 0 :rpc :WARNING! already
destroying!() 0x7f19fa871f00 fd 13 fd_send -1 xp_refcnt -1 af 10 port 874
@svc_resume_task:1247
 /**************************************************************/
 
 I found that in the function svc_vc_destroy_task() - when ref count is non-zero - task is
resubmitted to work_pool_thread and thus creating a loop when refcount is negative.  if
refcount is negative is this way its expected to execute ?
 
 Regards,
 Chakra
 _______________________________________________
 Devel mailing list -- devel(a)lists.nfs-ganesha.org
 To unsubscribe send an email to devel-leave(a)lists.nfs-ganesha.org