diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2011-03-06 03:58:25 (GMT) |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2011-03-14 13:15:26 (GMT) |
commit | fe2d35ff0d18a2c93993b0d7d46f846ff4331b72 (patch) | |
tree | 0a60fd245b1aff56a0b1470cadd6e242bfd4a2de /kernel/sched_stats.h | |
parent | 70e9b3571107b88674cd55ae4bed33f76261e7d3 (diff) | |
download | linux-fsl-qoriq-fe2d35ff0d18a2c93993b0d7d46f846ff4331b72.tar.xz |
switch non-create side of open() to use of do_last()
Instead of path_lookupat() doing trailing symlink resolution,
use the same scheme as on the O_CREAT side. Walk with
LOOKUP_PARENT, then (in do_last()) look the final component
up, then either open it or return error or, if it's a symlink,
give the symlink back to path_openat() to be resolved there.
The really messy complication here is RCU. We don't want to drop
out of RCU mode before the final lookup, since we don't want to
bounce parent directory ->d_count without a good reason.
Result is _not_ pretty; later in the series we'll clean it up.
For now we are roughly back where we'd been before the revert
done by Nick's series - top-level logics of path_openat() is
cleaned up, do_last() does actual opening, symlink resolution is
done uniformly.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'kernel/sched_stats.h')
0 files changed, 0 insertions, 0 deletions