Bug 1694563

Summary: gfapi: do not block epoll thread for upcall notifications
Product: [Community] GlusterFS Reporter: Soumya Koduri <skoduri>
Component: libgfapiAssignee: bugs <bugs>
Status: CLOSED NEXTRELEASE QA Contact: bugs <bugs>
Severity: high Docs Contact:
Priority: unspecified    
Version: 4.1CC: bugs, hgowtham, pasik
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1693575 Environment:
Last Closed: 2019-04-08 14:01:26 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1693575, 1694565    
Bug Blocks: 1694561, 1694562    

Description Soumya Koduri 2019-04-01 05:59:50 UTC
+++ This bug was initially created as a clone of Bug #1693575 +++

Description of problem:

With https://review.gluster.org/#/c/glusterfs/+/21783/, we have made changes to offload processing upcall notifications to synctask so as not to block epoll threads. However seems like the purpose wasnt fully resolved. 

In "glfs_cbk_upcall_data" -> "synctask_new1" after creating synctask if there is no callback defined, the thread waits on synctask_join till the syncfn is finished. So that way even with those changes, epoll threads are blocked till the upcalls are processed.

Hence the right fix now is to define a callback function for that synctask "glfs_cbk_upcall_syncop" so as to unblock epoll/notify threads completely and the upcall processing can happen in parallel by synctask threads.

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

--- Additional comment from Soumya Koduri on 2019-03-28 09:28:58 UTC ---

Users have complained about nfs-ganesha process getting stuck here - https://github.com/nfs-ganesha/nfs-ganesha/issues/335

--- Additional comment from Worker Ant on 2019-03-28 09:34:11 UTC ---

REVIEW: https://review.gluster.org/22436 (gfapi: Unblock epoll thread for upcall processing) posted (#1) for review on master by soumya k

--- Additional comment from Worker Ant on 2019-03-29 07:25:10 UTC ---

REVIEW: https://review.gluster.org/22436 (gfapi: Unblock epoll thread for upcall processing) merged (#4) on master by Amar Tumballi

Comment 1 Worker Ant 2019-04-01 06:33:34 UTC
REVIEW: https://review.gluster.org/22461 (gfapi: Unblock epoll thread for upcall processing) posted (#1) for review on release-4.1 by soumya k

Comment 2 Worker Ant 2019-04-08 14:01:26 UTC
REVIEW: https://review.gluster.org/22461 (gfapi: Unblock epoll thread for upcall processing) merged (#2) on release-4.1 by Shyamsundar Ranganathan

Comment 3 hari gowtham 2019-07-11 09:05:42 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-4.1.9, please open a new bug report.

glusterfs-4.1.9 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] https://lists.gluster.org/pipermail/gluster-users/2019-June/036679.html
[2] https://www.gluster.org/pipermail/gluster-users/

Comment 4 Pasi Karkkainen 2019-07-11 11:40:54 UTC
Note that for this issue to be properly fixed the following patches need to be backported to glusterfs 4.1.x branch aswell:

"gfapi: fix incorrect initialization of upcall syncop arguments":
https://bugzilla.redhat.com/show_bug.cgi?id=1718316

"Upcall: Avoid sending upcalls for invalid Inode":
https://bugzilla.redhat.com/show_bug.cgi?id=1718338