diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index d953f8820464..3ce7805d1117 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -4192,7 +4192,6 @@ static int btrfs_real_readdir(struct file *filp, void *dirent, | |||
4192 | struct btrfs_path *path; | 4192 | struct btrfs_path *path; |
4193 | struct list_head ins_list; | 4193 | struct list_head ins_list; |
4194 | struct list_head del_list; | 4194 | struct list_head del_list; |
4195 | struct qstr q; | ||
4196 | int ret; | 4195 | int ret; |
4197 | struct extent_buffer *leaf; | 4196 | struct extent_buffer *leaf; |
4198 | int slot; | 4197 | int slot; |
@@ -4283,7 +4282,6 @@ static int btrfs_real_readdir(struct file *filp, void *dirent, | |||
4283 | 4282 | ||
4284 | while (di_cur < di_total) { | 4283 | while (di_cur < di_total) { |
4285 | struct btrfs_key location; | 4284 | struct btrfs_key location; |
4286 | struct dentry *tmp; | ||
4287 | 4285 | ||
4288 | if (verify_dir_item(root, leaf, di)) | 4286 | if (verify_dir_item(root, leaf, di)) |
4289 | break; | 4287 | break; |
@@ -4304,33 +4302,7 @@ static int btrfs_real_readdir(struct file *filp, void *dirent, | |||
4304 | d_type = btrfs_filetype_table[btrfs_dir_type(leaf, di)]; | 4302 | d_type = btrfs_filetype_table[btrfs_dir_type(leaf, di)]; |
4305 | btrfs_dir_item_key_to_cpu(leaf, di, &location); | 4303 | btrfs_dir_item_key_to_cpu(leaf, di, &location); |
4306 | 4304 | ||
4307 | q.name = name_ptr; | 4305 | |
4308 | q.len = name_len; | ||
4309 | q.hash = full_name_hash(q.name, q.len); | ||
4310 | tmp = d_lookup(filp->f_dentry, &q); | ||
4311 | if (!tmp) { | ||
4312 | struct btrfs_key *newkey; | ||
4313 | |||
4314 | newkey = kzalloc(sizeof(struct btrfs_key), | ||
4315 | GFP_NOFS); | ||
4316 | if (!newkey) | ||
4317 | goto no_dentry; | ||
4318 | tmp = d_alloc(filp->f_dentry, &q); | ||
4319 | if (!tmp) { | ||
4320 | kfree(newkey); | ||
4321 | dput(tmp); | ||
4322 | goto no_dentry; | ||
4323 | } | ||
4324 | memcpy(newkey, &location, | ||
4325 | sizeof(struct btrfs_key)); | ||
4326 | tmp->d_fsdata = newkey; | ||
4327 | tmp->d_flags |= DCACHE_NEED_LOOKUP; | ||
4328 | d_rehash(tmp); | ||
4329 | dput(tmp); | ||
4330 | } else { | ||
4331 | dput(tmp); | ||
4332 | } | ||
4333 | no_dentry: | ||
4334 | /* is this a reference to our own snapshot? If so | 4306 | /* is this a reference to our own snapshot? If so |
4335 | * skip it. | 4307 | * skip it. |
4336 | * | 4308 | * |