Bug 799852 - graph reconstruction needs to be enhanced
graph reconstruction needs to be enhanced
Product: GlusterFS
Classification: Community
Component: core (Show other bugs)
Unspecified Unspecified
medium Severity high
: ---
: ---
Assigned To: Kaushal
Depends On:
  Show dependency treegraph
Reported: 2012-03-05 04:04 EST by Pranith Kumar K
Modified: 2012-06-06 03:54 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2012-06-06 03:54:37 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Pranith Kumar K 2012-03-05 04:04:27 EST
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:
Actual results:

Expected results:

Additional info:
Comment 1 Kaushal 2012-06-06 03:54:37 EDT
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.

Note You need to log in before you can comment on or make changes to this bug.