Re: [PATCH 4 of 4] Introduce aio system call submission and completion system calls

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Suparna Bhattacharya
Date: Thursday, February 1, 2007 - 4:13 am

On Wed, Jan 31, 2007 at 11:23:39AM -0800, Zach Brown wrote:

Wooo ...hold on ... I think this is swinging out of perspective :)

I have said some of this before, but let me try again.

As you already discovered when going down the fibril path, there are
two kinds of accesses to current-> state, (1) common state
for a given call chain (e.g. journal info etc), and (2) for 
various validations against the caller's process (uid, ulimit etc). 

(1) is not an issue when it comes to execution in background threads
(the VFS already uses background writeback for example).

As for (2), such checks need to happen upfront at the time of IO submission,
so again are not an issue.

This is aside from access to the caller's address space, a familiar
concept which the AIO threads use. If there is any state that
relates to address space access, then it belongs in the ->mm struct, rather
than in current (and we should fix that if we find anything which isn't
already there).

I don't see any other reason why IO paths should be assuming that they are
running in the original caller's context, midway through doing the IO. If
that were the case background writeouts and readaheads could be fragile as
well (or ptrace). The reason it isn't is because of this conceptual division of
responsibility.

Sure, having explicit separation of submission checks as an interface
would likely make this clearer and cleaner, but I'm just
pointing out that usage of current-> state isn't and shouldn't be arbitrary
when it comes to filesystem IO paths. We should be concerned in any case
if that starts happening.

Of course, this is fundamentally connected to the way filesystem IO is
designed to work, and may not necessarily apply to all syscal

When you want to make any and every syscall asynchronous, then indeed
the challenge is magnified and that is where it could get scary. But that
isn't the problem the current AIO code is trying to tackle.


This one is a better reason, and why I have thought of fibrils (or the
equivalent alternative of enhancing kernel theads to become even lighter)
as an interesting fallback option to implement AIO for cases which we
haven't (maybe some of which are too complicated) gotton around to
supporting natively. Especially if it could be coupled with some clever
tricks to keep stack space to be minimal (I have wondered whether any of
the ideas from similar user-level efforts like Cappricio, or laio would help).


BTW, I like the way you are approaching this with a cautiously
critical eye cognizant of lurking details/issues, despite the obvious
(and justified) excitement/eureka feeling.  AIO _is_ hard !

Regards
Suparna


-- 
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Lab, India

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Tue Jan 30, 1:39 pm)
[PATCH 1 of 4] Introduce per_call_chain(), Zach Brown, (Tue Jan 30, 1:39 pm)
[PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Tue Jan 30, 1:39 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Tue Jan 30, 2:58 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Tue Jan 30, 3:23 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Tue Jan 30, 3:40 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Tue Jan 30, 3:53 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Tue Jan 30, 3:53 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Tue Jan 30, 4:45 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Benjamin Herrenschmidt, (Tue Jan 30, 7:04 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Benjamin Herrenschmidt, (Tue Jan 30, 7:07 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Tue Jan 30, 7:46 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Tue Jan 30, 8:02 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Benjamin Herrenschmidt, (Tue Jan 30, 10:16 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Nick Piggin, (Tue Jan 30, 10:36 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Nick Piggin, (Tue Jan 30, 10:51 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Tue Jan 30, 11:06 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Ingo Molnar, (Wed Jan 31, 1:43 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Xavier Bestel, (Wed Jan 31, 3:50 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Wed Jan 31, 10:38 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Wed Jan 31, 10:47 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Benjamin LaHaise, (Wed Jan 31, 10:51 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Wed Jan 31, 10:59 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Wed Jan 31, 11:20 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Wed Jan 31, 12:25 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Wed Jan 31, 12:28 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Benjamin LaHaise, (Wed Jan 31, 1:05 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Joel Becker, (Wed Jan 31, 1:13 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Zach Brown, (Wed Jan 31, 1:41 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Thu Feb 1, 1:36 am)
Re: [PATCH 4 of 4] Introduce aio system call submission an ..., Suparna Bhattacharya, (Thu Feb 1, 4:13 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Thu Feb 1, 6:02 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Christoph Hellwig, (Thu Feb 1, 6:19 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Thu Feb 1, 6:52 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Mark Lord, (Thu Feb 1, 10:13 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Thu Feb 1, 11:02 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Thu Feb 1, 1:07 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Thu Feb 1, 2:52 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Benjamin LaHaise, (Thu Feb 1, 3:23 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Thu Feb 1, 3:37 pm)
Re: [PATCH 4 of 4] Introduce aio system call submission an ..., Suparna Bhattacharya, (Thu Feb 1, 8:35 pm)
Re: [PATCH 4 of 4] Introduce aio system call submission an ..., Suparna Bhattacharya, (Fri Feb 2, 12:19 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Fri Feb 2, 3:49 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Andi Kleen, (Fri Feb 2, 6:22 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Andi Kleen, (Fri Feb 2, 6:23 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 8:56 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 1:14 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Fri Feb 2, 1:58 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 2:09 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 2:30 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Fri Feb 2, 3:21 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Fri Feb 2, 3:42 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 3:49 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 4:01 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 4:17 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Fri Feb 2, 4:37 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Fri Feb 2, 4:55 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Fri Feb 2, 5:02 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, bert hubert, (Fri Feb 2, 5:23 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Fri Feb 2, 5:56 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Suparna Bhattacharya, (Sat Feb 3, 12:15 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Sat Feb 3, 1:23 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Matt Mackall, (Sat Feb 3, 2:25 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Ingo Molnar, (Sat Feb 3, 3:03 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Sat Feb 3, 10:12 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Davide Libenzi, (Sat Feb 3, 10:13 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Davide Libenzi, (Sun Feb 4, 1:00 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 9:44 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 10:02 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 10:12 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 10:44 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 10:54 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 11:24 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 11:52 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 12:20 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 12:26 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 12:38 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 12:41 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 1:10 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 1:21 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Mon Feb 5, 1:39 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Mon Feb 5, 1:42 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 2:09 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 2:21 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Kent Overstreet, (Mon Feb 5, 2:31 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, bert hubert, (Mon Feb 5, 2:36 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, David Miller, (Mon Feb 5, 2:44 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Mon Feb 5, 2:57 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, bert hubert, (Mon Feb 5, 3:07 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Mon Feb 5, 3:15 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 3:34 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 5:15 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Scot McKinley, (Mon Feb 5, 5:27 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Mon Feb 5, 5:32 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, David Miller, (Mon Feb 5, 5:48 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Joel Becker, (Mon Feb 5, 5:48 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Tue Feb 6, 1:25 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Tue Feb 6, 1:46 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, David Miller, (Tue Feb 6, 2:16 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Tue Feb 6, 2:28 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, David Miller, (Tue Feb 6, 2:31 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Eric Dumazet, (Tue Feb 6, 2:46 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Tue Feb 6, 2:50 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Zach Brown, (Tue Feb 6, 3:28 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Kent Overstreet, (Tue Feb 6, 3:45 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Linus Torvalds, (Tue Feb 6, 4:04 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Tue Feb 6, 4:23 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Joel Becker, (Tue Feb 6, 4:39 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Tue Feb 6, 4:56 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Joel Becker, (Tue Feb 6, 5:06 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Tue Feb 6, 5:23 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Joel Becker, (Tue Feb 6, 5:44 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Davide Libenzi, (Tue Feb 6, 6:15 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Kent Overstreet, (Tue Feb 6, 6:22 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Kent Overstreet, (Tue Feb 6, 6:24 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Joel Becker, (Tue Feb 6, 6:30 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Michael K. Edwards, (Tue Feb 6, 11:16 pm)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Michael K. Edwards, (Wed Feb 7, 2:17 am)
Re: [PATCH 2 of 4] Introduce i386 fibril scheduling, Michael K. Edwards, (Wed Feb 7, 2:37 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Fri Feb 9, 3:33 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Davide Libenzi, (Fri Feb 9, 4:11 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Fri Feb 9, 4:35 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Eric Dumazet, (Fri Feb 9, 5:04 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Fri Feb 9, 5:12 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, bert hubert, (Sat Feb 10, 3:47 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Davide Libenzi, (Sat Feb 10, 11:19 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Davide Libenzi, (Sat Feb 10, 11:45 am)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Sat Feb 10, 12:01 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Sat Feb 10, 12:35 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Davide Libenzi, (Sat Feb 10, 1:59 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, David Miller, (Sat Feb 10, 5:56 pm)
Re: [PATCH 0 of 4] Generic AIO by scheduling stacks, Linus Torvalds, (Sat Feb 10, 7:49 pm)