From: Suparna Bhattacharya <suparna@in.ibm.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org,
Linux Filesystem Development <linux-fsdevel@vger.kernel.org>,
linux-aio@kvack.org
Subject: Re: [RFC] Add support for semaphore-like structure with support for asynchronous I/O
Date: Mon, 4 Apr 2005 21:22:45 +0530 [thread overview]
Message-ID: <20050404155245.GA4659@in.ibm.com> (raw)
In-Reply-To: <20050401141225.GA3707@in.ibm.com>
[cc'ing linux-aio]
The way I did this for semaphores was to modify the down routines to accept
an explicit wait queue entry parameter, so the caller could set it up to
be a synchronous waiter or a callback as appropriate. Of course, in the
AIO case, the callback was setup to restart the iocb operation to continue
rest of its processing, which was when it acquired the lock. So, the
callback in itself didn't need to remember the lock. The only grey area
that I didn't resolve to satisfaction
And oh yes, even though this was a really small change, having to
update and verify those umpteen different arch specific pieces was not
entirely an exciting prospect - I got as far as x86, x86_64 and ppc64
... but stopped after that. It so happened that i_sem contention
didn't show up as a major latency issue even without async semaphores
in the kinds of workloads we were working with then.
Your approach looks reasonable and simple enough. It'd be useful if I
could visualize the caller side of things as in the NFS client stream
as you mention - do you plan to post that soon ?
I'm tempted to think about the possibility of using your iosems
with retry-based AIO.
Regards
Suparna
On Fri, Apr 01, 2005 at 07:42:25PM +0530, Suparna Bhattacharya wrote:
> On Thu, Mar 31, 2005 at 08:22:17PM -0500, Trond Myklebust wrote:
> > to den 31.03.2005 Klokka 16:13 (-0800) skreiv Andrew Morton:
> > > Trond Myklebust <trondmy@trondhjem.org> wrote:
> > > >
> > > > on den 30.03.2005 Klokka 18:17 (-0500) skreiv Trond Myklebust:
> > > > > > Or have I misunderstood the intent? Some /* comments */ would be appropriate..
> > > > >
> > > > > Will do.
> > > >
> > > > OK. Plenty of comments added that will hopefully clarify what is going
> > > > on and how to use the API. Also some cleanups of the code.
> > >
> > > Ah, so that's what it does ;)
> > >
> > > I guess once we have a caller in-tree we could merge this. I wonder if
> > > there's other existing code which should be converted to iosems.
> >
> > I can put it into the NFS client stream which feeds into the -mm kernel.
> > That will enable me to queue up the NFSv4 patches that depend on it
> > too...
> >
> > > You chose to not use the aio kernel threads?
> >
> > I thought I'd do that in a separate patch since the aio workqueue is
> > currently statically defined in aio.c.
>
> I'll take a look at the patch over the weekend. I had a patch
> for aio semaphores a long while back, but I need to spend some time
> to understand how different this is.
>
> Regards
> Suparna
>
> >
> > > Does iosem_lock_and_schedule_function() need locking? It nonatomically
> > > alters *lk_state.
> >
> > iosem_lock_and_schedule_function() will always be called with the
> > iosem->wait.lock held, since it is a waitqueue notification function.
> >
> > In practice it is called by iosem_unlock(). The call to wake_up_locked()
> > will trigger a call to __wake_up_common() which again tries the
> > notification function of each waiter on the queue until it finds one
> > that succeeds.
> >
> > Cheers,
> > Trond
> >
> > --
> > Trond Myklebust <trond.myklebust@fys.uio.no>
> >
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> --
> Suparna Bhattacharya (suparna@in.ibm.com)
> Linux Technology Center
> IBM Software Lab, India
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Lab, India
--
To unsubscribe, send a message with 'unsubscribe linux-aio' in
the body to majordomo@kvack.org. For more info on Linux AIO,
see: http://www.kvack.org/aio/
Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
next prev parent reply other threads:[~2005-04-04 15:52 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-30 21:51 [RFC] Add support for semaphore-like structure with support for asynchronous I/O Trond Myklebust
2005-03-30 22:34 ` Andrew Morton
2005-03-30 23:17 ` Trond Myklebust
2005-03-30 23:44 ` Andrew Morton
2005-03-31 0:02 ` Trond Myklebust
2005-03-31 22:53 ` Trond Myklebust
2005-04-01 0:13 ` Andrew Morton
2005-04-01 1:22 ` Trond Myklebust
2005-04-01 14:12 ` Suparna Bhattacharya
2005-04-04 15:52 ` Suparna Bhattacharya [this message]
2005-04-04 16:22 ` Benjamin LaHaise
2005-04-04 17:56 ` Trond Myklebust
2005-04-05 15:46 ` Benjamin LaHaise
2005-04-06 1:20 ` Trond Myklebust
2005-04-06 5:17 ` Bill Huey
2005-04-06 5:01 ` Suparna Bhattacharya
2005-04-07 11:43 ` Christoph Hellwig
2005-04-08 22:39 ` Benjamin LaHaise
2005-04-08 23:31 ` Trond Myklebust
2005-04-10 14:08 ` Suparna Bhattacharya
2005-04-15 16:13 ` David Howells
2005-04-15 22:42 ` Trond Myklebust
2005-04-15 23:42 ` Benjamin LaHaise
2005-04-16 11:12 ` David Howells
2005-04-16 11:06 ` David Howells
2005-04-04 16:39 ` Trond Myklebust
2005-03-31 8:02 ` Nikita Danilov
2005-03-31 12:31 ` Trond Myklebust
2005-03-31 17:09 ` Nikita Danilov
2005-03-31 17:22 ` Trond Myklebust
2005-03-31 17:32 ` Trond Myklebust
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050404155245.GA4659@in.ibm.com \
--to=suparna@in.ibm.com \
--cc=akpm@osdl.org \
--cc=linux-aio@kvack.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=trond.myklebust@fys.uio.no \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).