Bug 799852

Summary: graph reconstruction needs to be enhanced
Product: [Community] GlusterFS Reporter: Pranith Kumar K <pkarampu>
Component: coreAssignee: Kaushal <kaushal>
Status: CLOSED UPSTREAM QA Contact:
Severity: high Docs Contact:
Priority: medium    
Version: pre-releaseCC: gluster-bugs
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-06 07:54:37 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:

Description Pranith Kumar K 2012-03-05 09:04:27 UTC
Description of problem:
The glusterfsd code does not handle volfiles greater than 128KB gracefully. This needs to be improved. Nfs, glustershd processes are per machine processes and hold the graphs of all the volumes present in the machine. They can cross the 128KB limit on the volfile.

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


How reproducible:


Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info:

Comment 1 Kaushal 2012-06-06 07:54:37 UTC
This has been solved by the introduction of variable sized iobufs.

The volfiles required by glusterfsd, when given the volfile server and id, are obtained by the getspec mechanism, which uses some rpc calls and xdr data structs. 

The memory required for the xdr structures used in rpc is allocated using iobufs. Earlier the iobuf size was limited to 128KB which would cause problems when volfiles were greater than 128KB. Since, iobuf of required size couldn't be allocated, the submission of the rpc reply would fail on glusterd, leading to failure of getspec on the client.

The usage of variable sized iobufs allows iobufs of size upto 1MB via predefined iobuf arenas and also allows creation of new arenas of greater size when required. This will allow volfiles of larger than 128KB size to be transferred during getspec successfully and be processed properly.