* Do a lookup of a single name in a directory
* - just returns the FID the dentry name maps to if found
*/
- static int afs_do_lookup_one(struct inode *dir, struct dentry *dentry,
+ static int afs_do_lookup_one(struct inode *dir, const struct qstr *name,
- struct afs_fid *fid, struct key *key,
+ struct afs_fid *fid,
afs_dataversion_t *_dir_version)
{
struct afs_super_info *as = dir->i_sb->s_fs_info;
};
int ret;
- _enter("{%lu},%p{%pd},", dir->i_ino, dentry, dentry);
+ _enter("{%lu},{%.*s},", dir->i_ino, name->len, name->name);
/* search the directory */
- ret = afs_dir_iterate(dir, &cookie.ctx, key, _dir_version);
+ ret = afs_dir_iterate(dir, &cookie.ctx, NULL, _dir_version);
if (ret < 0) {
_leave(" = %d [iter]", ret);
return ret;
afs_stat_v(dir, n_reval);
/* search the directory for this vnode */
- ret = afs_do_lookup_one(&dir->netfs.inode, dentry, &fid, &dir_version);
- ret = afs_do_lookup_one(&dir->netfs.inode, name, &fid, key, &dir_version);
++ ret = afs_do_lookup_one(&dir->netfs.inode, name, &fid, &dir_version);
switch (ret) {
case 0:
/* the filename maps to something */
memset(outarg, 0, sizeof(struct fuse_entry_out));
args->opcode = FUSE_LOOKUP;
args->nodeid = nodeid;
-- args->in_numargs = 2;
- args->in_args[0].size = name->len;
- args->in_args[0].value = name->name;
- args->in_args[1].size = 1;
- args->in_args[1].value = "";
++ args->in_numargs = 3;
+ fuse_set_zero_arg0(args);
- args->in_args[1].size = name->len + 1;
++ args->in_args[1].size = name->len;
+ args->in_args[1].value = name->name;
++ args->in_args[2].size = 1;
++ args->in_args[2].value = "";
args->out_numargs = 1;
args->out_args[0].size = sizeof(struct fuse_entry_out);
args->out_args[0].value = outarg;