[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>
This commit is contained in:
@@ -68,6 +68,7 @@ static ssize_t ecryptfs_read_update_atime(struct kiocb *iocb,
|
||||
}
|
||||
|
||||
struct ecryptfs_getdents_callback {
|
||||
struct dir_context ctx;
|
||||
void *dirent;
|
||||
struct dentry *dentry;
|
||||
filldir_t filldir;
|
||||
@@ -126,7 +127,8 @@ static int ecryptfs_readdir(struct file *file, void *dirent, filldir_t filldir)
|
||||
buf.filldir = filldir;
|
||||
buf.filldir_called = 0;
|
||||
buf.entries_written = 0;
|
||||
rc = vfs_readdir(lower_file, ecryptfs_filldir, (void *)&buf);
|
||||
buf.ctx.actor = ecryptfs_filldir;
|
||||
rc = iterate_dir(lower_file, &buf.ctx);
|
||||
file->f_pos = lower_file->f_pos;
|
||||
if (rc < 0)
|
||||
goto out;
|
||||
|
Reference in New Issue
Block a user