diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2013-05-15 13:52:59 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-06-29 04:46:46 -0400 |
commit | 5c0ba4e0762e6dabd14a5c276652e2defec38de7 (patch) | |
tree | cc2c94d81a631b0656782e1f8299da3267871964 /arch/alpha/kernel/osf_sys.c | |
parent | 83a8761142cb38536e9e88dfc2432d331ea4e257 (diff) |
[readdir] introduce iterate_dir() and dir_context
iterate_dir(): new helper, replacing vfs_readdir().
struct dir_context: contains the readdir callback (and will get more stuff
in it), embedded into whatever data that callback wants to deal with;
eventually, we'll be passing it to ->readdir() replacement instead of
(data,filldir) pair.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/alpha/kernel/osf_sys.c')
-rw-r--r-- | arch/alpha/kernel/osf_sys.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index b9e37ad6fa19..ac19c7299d8e 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c | |||
@@ -96,6 +96,7 @@ struct osf_dirent { | |||
96 | }; | 96 | }; |
97 | 97 | ||
98 | struct osf_dirent_callback { | 98 | struct osf_dirent_callback { |
99 | struct dir_context ctx; | ||
99 | struct osf_dirent __user *dirent; | 100 | struct osf_dirent __user *dirent; |
100 | long __user *basep; | 101 | long __user *basep; |
101 | unsigned int count; | 102 | unsigned int count; |
@@ -155,8 +156,9 @@ SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd, | |||
155 | buf.basep = basep; | 156 | buf.basep = basep; |
156 | buf.count = count; | 157 | buf.count = count; |
157 | buf.error = 0; | 158 | buf.error = 0; |
159 | buf.ctx.actor = osf_filldir; | ||
158 | 160 | ||
159 | error = vfs_readdir(arg.file, osf_filldir, &buf); | 161 | error = iterate_dir(arg.file, &buf.ctx); |
160 | if (error >= 0) | 162 | if (error >= 0) |
161 | error = buf.error; | 163 | error = buf.error; |
162 | if (count != buf.count) | 164 | if (count != buf.count) |