Messages in this thread | | | Date | Sat, 19 Mar 2016 19:03:25 -0700 | Subject | Re: aio openat Re: [PATCH 07/13] aio: enabled thread based async fsync | From | Linus Torvalds <> |
| |
On Sat, Mar 19, 2016 at 6:55 PM, Al Viro <viro@zeniv.linux.org.uk> wrote: > > What would make unlazy_walk() fail? And if it succeeds, you are not > in RCU mode anymore *without* restarting from scratch...
I don't see your point.
You don't want to be in RCU mode any more. You want to either succeed or fail with ECHILD/ESTALE. Then, in the failure case, you go to the thread.
What I meant by restarting was the restart that do_filp_open() does, and there it just restarts with "op->lookup_flags", which has RCU_LOOKUP still set, so it would just try to do the RCU lookup again.
But I actually notice now that Ben actually disabled that restart if LOOKUP_RCU was set, so that ends up not even happening.
Anyway, I'm not saying it's polished and pretty. I think the changes to do_filp_open() are a bit silly, and the code should just use path_openat() directly. Possibly using a new helper (ie perhaps just introduce a "rcu_filp_openat()" thing). But from a design perspective, I think this all looks fine.
Linus
| |