[Gluster-devel] Delay in establishing connection between client and server

Bharata B Rao bharata.rao at gmail.com
Wed Jun 20 08:43:59 UTC 2012


With the patches that add GlusterFS backend support to QEMU
I am seeing a problem where lookup and other routines fail since QEMU
ends up issuing posix calls (lookup, read etc) even before the
client-server connection is fully established.

To overcome this problem, I have put in a 1s sleep() after I do the
initialization and before any calls are issued to gluster backed. The
initialization involves setting up the gluster context, allocating the
required pools, generating and activating the xlator graph. If I don't
have this delay, the first lookup fails in client_lookup() as function
pointer table is still not set (in client_lookup(), conf->fops is
NULL). I see that this setting happens after the RPC communication is
established b/n client and the server. Things work with 1s delay when
I am using a simple volume file (with just the client xlator) and I
have had to resort to bigger delays when using full-blown volume

Using this arbitrary delay of 1s from QEMU backend driver is a hack
and I would like to know if there is a better and cleaner way solve
this problem. Note that in QEMU, we do gluster_init() and immediately
go ahead and do gluster_open() of the image file.

http://bharata.sulekha.com/blog/posts.htm, http://raobharata.wordpress.com/

More information about the Gluster-devel mailing list