diff options
Diffstat (limited to 'fs/ext4/dir.c')
-rw-r--r-- | fs/ext4/dir.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/fs/ext4/dir.c b/fs/ext4/dir.c index 2bf0331ea194..d3d23d73c08b 100644 --- a/fs/ext4/dir.c +++ b/fs/ext4/dir.c | |||
@@ -129,7 +129,8 @@ static int ext4_readdir(struct file * filp, | |||
129 | struct buffer_head *bh = NULL; | 129 | struct buffer_head *bh = NULL; |
130 | 130 | ||
131 | map_bh.b_state = 0; | 131 | map_bh.b_state = 0; |
132 | err = ext4_get_blocks_wrap(NULL, inode, blk, 1, &map_bh, 0, 0); | 132 | err = ext4_get_blocks_wrap(NULL, inode, blk, 1, &map_bh, |
133 | 0, 0, 0); | ||
133 | if (err > 0) { | 134 | if (err > 0) { |
134 | pgoff_t index = map_bh.b_blocknr >> | 135 | pgoff_t index = map_bh.b_blocknr >> |
135 | (PAGE_CACHE_SHIFT - inode->i_blkbits); | 136 | (PAGE_CACHE_SHIFT - inode->i_blkbits); |
@@ -272,7 +273,7 @@ static void free_rb_tree_fname(struct rb_root *root) | |||
272 | 273 | ||
273 | while (n) { | 274 | while (n) { |
274 | /* Do the node's children first */ | 275 | /* Do the node's children first */ |
275 | if ((n)->rb_left) { | 276 | if (n->rb_left) { |
276 | n = n->rb_left; | 277 | n = n->rb_left; |
277 | continue; | 278 | continue; |
278 | } | 279 | } |
@@ -301,24 +302,18 @@ static void free_rb_tree_fname(struct rb_root *root) | |||
301 | parent->rb_right = NULL; | 302 | parent->rb_right = NULL; |
302 | n = parent; | 303 | n = parent; |
303 | } | 304 | } |
304 | root->rb_node = NULL; | ||
305 | } | 305 | } |
306 | 306 | ||
307 | 307 | ||
308 | static struct dir_private_info *create_dir_info(loff_t pos) | 308 | static struct dir_private_info *ext4_htree_create_dir_info(loff_t pos) |
309 | { | 309 | { |
310 | struct dir_private_info *p; | 310 | struct dir_private_info *p; |
311 | 311 | ||
312 | p = kmalloc(sizeof(struct dir_private_info), GFP_KERNEL); | 312 | p = kzalloc(sizeof(struct dir_private_info), GFP_KERNEL); |
313 | if (!p) | 313 | if (!p) |
314 | return NULL; | 314 | return NULL; |
315 | p->root.rb_node = NULL; | ||
316 | p->curr_node = NULL; | ||
317 | p->extra_fname = NULL; | ||
318 | p->last_pos = 0; | ||
319 | p->curr_hash = pos2maj_hash(pos); | 315 | p->curr_hash = pos2maj_hash(pos); |
320 | p->curr_minor_hash = pos2min_hash(pos); | 316 | p->curr_minor_hash = pos2min_hash(pos); |
321 | p->next_hash = 0; | ||
322 | return p; | 317 | return p; |
323 | } | 318 | } |
324 | 319 | ||
@@ -433,7 +428,7 @@ static int ext4_dx_readdir(struct file * filp, | |||
433 | int ret; | 428 | int ret; |
434 | 429 | ||
435 | if (!info) { | 430 | if (!info) { |
436 | info = create_dir_info(filp->f_pos); | 431 | info = ext4_htree_create_dir_info(filp->f_pos); |
437 | if (!info) | 432 | if (!info) |
438 | return -ENOMEM; | 433 | return -ENOMEM; |
439 | filp->private_data = info; | 434 | filp->private_data = info; |