Red Hat Bugzilla – Bug 799852
graph reconstruction needs to be enhanced
Last modified: 2012-06-06 03:54:37 EDT
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):
Steps to Reproduce:
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.