Re: Approaches to making io_submit not block

Jeremy Allison
2011-09-01T16:35:02Z

On Thu, Sep 01, 2011 at 09:31:07AM -0700, Jeremy Allison wrote:
> On Thu, Sep 01, 2011 at 12:23:37PM -0400, Christoph Hellwig wrote:
> > On Thu, Sep 01, 2011 at 09:15:31AM -0700, Jeremy Allison wrote:
> > > > We could easily give you an fcntl / dup3 flag to only release posix
> > > > locks on the final close of a struct file if that helps you.
> > >
> > > That would help us enormously - it'd be Linux only of course but
> > > we could easily add support for that.
> > >
> > > Can you propose the design here so we can run it past some of the
> > > Solaris/FreeBSD folks (it'd be nice if we could get broader adoption) ?
> >
> > Not sure there is all that much to discuss. The idea is to have locks
> > that behave like Posix locks, but only get release when the last duped
> > fd to them gets released.
> >
> > We'd define a new O_LOCKS_WHATEVER flag for it, which gets set either
> > using fcntl(..., F_SETFL, ...) or dup3. All in all that should be less
> > than 50 lines of code in the kernel.
>
> Ok, so it'd be set at open() time, say:
>
> O_CLOLOCK_PERSIST
>
> (to match the naming of something like O_CLOEXEC) and be available to set
> with F_SETFD via an fcntl and dup3 call ?

Ah, looking at fcntl - do you want to set/get this via F_SETFD/F_GETFD,
or via F_SETFL/F_GETFL ? i.e. is this a file descritor flag, or a status
flag ? I'd guess a file descriptor flag but I'm not sure of the difference
here..

Jeremy.