asynchronous fsync()

View: New views
3 Messages — Rating Filter:   Alert me  

asynchronous fsync()

by Claus Assmann-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Is there any way to make fsync() asynchronous in the context of
statethreads? Currently a process that uses fsync() will block until
fsync() returns thus preventing any other operations from occuring.
Some OSs provide aio_fsync() but so far I have seen only aio_return()
to check for the status of an asynchronous I/O operation, not some
mechanism to get notified when the operation finished. SIGIO might
be another approach to the problem, but signals have their own
problems.

What I would like to see is some support in statethreads to make
fsync() a scheduling point, just like read()/write() for network
I/O. Any pointers/suggestions to accomplish this are welcome!

PS: I know I can use multiple processes to mitigate the problem,
but I am curious whether that limitation of statethreads can be
solved within the library itself (even if it's not portable but
only available for some OSs).


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
State-threads-devel mailing list
State-threads-devel@...
https://lists.sourceforge.net/lists/listinfo/state-threads-devel

Re: asynchronous fsync()

by Mike Abbott-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> Is there any way to make fsync() asynchronous

My first guess would be No, because ST requires non-blocking I/O and
descriptors to disk files can't be made non-blocking.  But I'll talk
with Gene about it.  You mentioned async I/O but that's its own can of
worms.  I've never relied on SIGIO; let me know how it works for you :).

If I were faced with this I would do the typical ST thing and spawn a
persistent helper process.


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
State-threads-devel mailing list
State-threads-devel@...
https://lists.sourceforge.net/lists/listinfo/state-threads-devel

Re: asynchronous fsync()

by Alfred Perlstein-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

* Mike Abbott <mja63@...> [060307 09:04] wrote:
> > Is there any way to make fsync() asynchronous
>
> My first guess would be No, because ST requires non-blocking I/O and
> descriptors to disk files can't be made non-blocking.  But I'll talk
> with Gene about it.  You mentioned async I/O but that's its own can of
> worms.  I've never relied on SIGIO; let me know how it works for you :).
>
> If I were faced with this I would do the typical ST thing and spawn a
> persistent helper process.

You're right, you'd need a helper process to do this.

fsync(2) can not be made async.

--
- Alfred Perlstein
- CTO Okcupid.com / FreeBSD Hacker / All that jazz -


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
State-threads-devel mailing list
State-threads-devel@...
https://lists.sourceforge.net/lists/listinfo/state-threads-devel