[Gluster-devel] Gluster internals

Jeff Darcy jdarcy at redhat.com
Mon May 21 12:24:30 UTC 2012

On 05/20/2012 02:12 AM, Ian Latter wrote:
> Hello,
>   Couple of questions that might help make my
> module a little more sane;
>     0) Is there any developer docco?  I've just done
>         another quick search and I can't see any.  Let
>         me know if there is and I'll try and answer the
>         below myself.

Your best bet right now (if I may say so) is the stuff I've posted on
hekafs.org - the "Translator 101" articles plus the API overview at


>     1) What is the difference between STACK_WIND
>         and STACK_WIND_COOKIE?  I.e. I've only
>         ever used STACK_WIND, when should I use
>         it versus the other?

I see Krishnan has already covered this.

>     2) Is there a way to write linearly within a single
>         function within Gluster (or is there a reason
>         why I wouldn't want to do that)?  

Any blocking ops would have to be built on top of async ops plus semaphores
etc. because (unlike e.g. an HTTP server) the underlying sockets etc. are
shared/multiplexed between users and activities.  Thus you'd get much more
context switching that way than if you stay within the async/continuation style.

Some day in the distant future, I'd like to work some more on a preprocessor
that turns linear code into async code so that it's easier to write but retains
the performance and resource-efficiency advantages of an essentially async
style.  I did some work (http://pl.atyp.us/ripper/UserGuide.html) in this area
several years ago, but it has probably bit-rotted to hell since then.  With
more recent versions of gcc and LLVM it should be possible to overcome some of
the limitations that version had.

More information about the Gluster-devel mailing list