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