OpenAFS Master Repository branch, master, updated. BP--openafs-stable-1_6_x-1220-g0284e65
Gerrit Code Review
gerrit@openafs.org
Thu, 2 Jun 2011 07:38:37 -0700 (PDT)
The following commit has been merged in the master branch:
commit 0284e65f97861e888d95576f22a93cd681813c39
Author: Simon Wilkinson <sxw@your-file-system.com>
Date: Wed Apr 27 14:24:56 2011 -0400
dir: Explicitly state buffer locations for data
DNew and DRead always returned directory page aligned pointers,
however the directory code further manipulates those pointers,
requiring the DRelease be able to fill a page when passed a pointer
to any address within that page. This is relatively straightforward
in the userspace implementation, but much more complex in the kernel,
where all of the directory pages are not necessarily contiguous.
Resolve this issue by making DNew, DRead and DRelease all return a
new structure, struct DirBuffer. This structure contains both a
pointer to the data, and an implementation specific private
pointer to data describing the page containing the address. The
directory code is free to play with the data pointer as it wishes,
as long as the private pointer to the page is passed through intact.
DRelease (and DVOffset) can then simply use the private pointer for
their operations, without having to walk page lists.
This new behaviour also requires changes to the directory functions
GetBlob, FindItem and FindFid which all return pointers to directory
data.
Change-Id: I8b8b003b789976b593a7c752969f47d55f4ee707
Reviewed-on: http://gerrit.openafs.org/4744
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/afs/LINUX/osi_vnodeops.c | 10 +-
src/afs/LINUX24/osi_vnodeops.c | 5 +-
src/afs/VNOPS/afs_vnop_lookup.c | 13 +-
src/afs/VNOPS/afs_vnop_readdir.c | 266 +++------------------------
src/afs/afs_buffer.c | 94 +++++-----
src/afs/afs_prototypes.h | 7 +-
src/dir/Makefile.in | 2 +-
src/dir/buffer.c | 71 ++++---
src/dir/dir.c | 379 +++++++++++++++++++++++---------------
src/dir/dir.h | 18 +-
src/dir/salvage.c | 114 +++++++-----
11 files changed, 429 insertions(+), 550 deletions(-)
--
OpenAFS Master Repository