[SAGA-RG] blocking/nonblocking I/O on files?

Andre Merzky andre at merzky.net
Wed Aug 29 15:10:29 CDT 2007


Hi John, 

Quoting [John Shalf] (Aug 29 2007):
> 
> On Aug 29, 2007, at 11:19 AM, Andre Merzky wrote:
> >Hi,
> >Ole and Hartmut raised the point that the attribute
> >interface on files is actaully useless.
> >
> >Formerly, we had a number of attributes on files defined -
> >in the latest version of the spec, only one remaines:
> 
> Where did they all go?

I digged a little in CVS history, and as far as I can see,
more attribs were never specified on the file.  


> >'Blocking'.  That atgtribute however does not make much
> >sense, as we have explicit versions for sync and async file
> >I/O.
> 
> My original recollection of the "attributes" interface was that it  
> allowed us to smuggle in file behaviors that would otherwise be  
> accessed via the ioctl() and fcntl() interfaces.  Perhaps we haven't  
> found any ioctls that we really need right now, but you should keep  
> the attributes interface around so that you can add such capabilities  
> in an as-needed basis.

Right, that was the motivation I think.  However, we cleaned
a lot of placeholders over time which had no explicit use
cases - the API is big enough as it is...  If the need for
an IOCTL like interface arises, we can add them again in a
later version.

> That is certainly the case with ioctl()  (you  
> rarely use that interface, when when you need it, that capability is  
> essential).
> 
> >Yes, yes, sync/async and blocking/non-blocking is not
> >exactly the same, but (a) the difference is small for our
> >use cases AFAICS (thats different for streams), and (b) the
> >spec does not define the behaviour for blocking/non-blocking
> >files anyway.
> 
> I thought it was assumed that the POSIX spec for blocking/nonblocking  
> (which would be enabled via ioctl()) would be in effect.

That would basically only mean that 'EAGAIN' is returned if
no/not enough data are avialable on a non-blocking
read/write, right?

You can do that in SAGA with an async read, and then wait
a finite time for that.  Also, a sync read can legally
return less data then requested, which again is similar to
non-blocking reads.

Yes, I know, its not the same really, but seems ok for the
use cases we have.  IMHO, async I/O is much more useful in
remote systems than non-blocking I/O.  

Do you have use cases for remote file I/O which rely on the
ops beeing no-blocking?

Cheers, Andre.


-- 
"XML is like violence: if it does not help, use more."



More information about the saga-rg mailing list