[Gluster-devel] Question about the synctask

Anand Avati anand.avati at gmail.com
Wed Sep 26 21:20:37 UTC 2012


On Wed, Sep 26, 2012 at 1:55 AM, Gustavo Bervian Brand
<gugabrand at gmail.com>wrote:

> Hello,
>
>   Some days ago when I mentioned I was using syncop_*() calls and Avati
> asked if I was triggering them from a synctask worker.
>
>   By what I can see the synctask_new will create a new thread each time,
> so if want a real syncronous execution from within a sequence of readv
> calls, creating a synctask at each readv doesn't seem a good way to go
> because the order of execution of these threads is not guaranteed to be
> sequential.
>
>   So, my question is why the syncop calls wouldn't be ok to be executed
> outside a synctask worker in this scenario (or any other)?
>   I didn't find any documentation about this, so that's why I am asking.
>
>
Synctasks use pre-running syncproc threads to schedule the task. The normal
FOPs are asynchronous in nature (i.e, a STACK_WIND return is only the
return of a submission, not the return of the operation). Syncops give you
a synchronous wrapper around the fundamentally asynchronous calls. For this
they either block the calling thread (which is very dangerous if the thread
calling syncop is the poll thread), or, when executed within a synctask (in
a syncenv), utilize setcontext/getcontext to give the "feeling" of a
blocked thread.


Avati
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://supercolony.gluster.org/pipermail/gluster-devel/attachments/20120926/e006c7fc/attachment-0001.html>


More information about the Gluster-devel mailing list