[readdir] introduce ->iterate(), ctx->pos, dir_emit()
New method - ->iterate(file, ctx). That's the replacement for ->readdir(); it takes callback from ctx->actor, uses ctx->pos instead of file->f_pos and calls dir_emit(ctx, ...) instead of filldir(data, ...). It does *not* update file->f_pos (or look at it, for that matter); iterate_dir() does the update. Note that dir_emit() takes the offset from ctx->pos (and eventually filldir_t will lose that argument). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -272,7 +272,7 @@ static int get_name(const struct path *path, char *name, struct dentry *child)
|
||||
goto out;
|
||||
|
||||
error = -EINVAL;
|
||||
if (!file->f_op->readdir)
|
||||
if (!file->f_op->readdir && !file->f_op->iterate)
|
||||
goto out_close;
|
||||
|
||||
buffer.name = name;
|
||||
|
Reference in New Issue
Block a user