Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 69baee06 authored by Shen Feng's avatar Shen Feng Committed by Theodore Ts'o
Browse files

ext4: improve some code in rb tree part of dir.c



* remove unnecessary code in free_rb_tree_fname

* rename free_rb_tree_fname to ext4_htree_create_dir_info
  since it and ext4_htree_free_dir_info are a pair

* replace kmalloc with kzalloc in ext4_htree_free_dir_info

All these make the code more readable and simple.
PS: this patch is also suitable for ext3.

Signed-off-by: default avatarShen Feng <shen@cn.fujitsu.com>
Signed-off-by: default avatarMingming Cao <cmm@us.ibm.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 91d99827
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -272,7 +272,7 @@ static void free_rb_tree_fname(struct rb_root *root)

	while (n) {
		/* Do the node's children first */
		if ((n)->rb_left) {
		if (n->rb_left) {
			n = n->rb_left;
			continue;
		}
@@ -301,24 +301,18 @@ static void free_rb_tree_fname(struct rb_root *root)
			parent->rb_right = NULL;
		n = parent;
	}
	root->rb_node = NULL;
}


static struct dir_private_info *create_dir_info(loff_t pos)
static struct dir_private_info *ext4_htree_create_dir_info(loff_t pos)
{
	struct dir_private_info *p;

	p = kmalloc(sizeof(struct dir_private_info), GFP_KERNEL);
	p = kzalloc(sizeof(struct dir_private_info), GFP_KERNEL);
	if (!p)
		return NULL;
	p->root.rb_node = NULL;
	p->curr_node = NULL;
	p->extra_fname = NULL;
	p->last_pos = 0;
	p->curr_hash = pos2maj_hash(pos);
	p->curr_minor_hash = pos2min_hash(pos);
	p->next_hash = 0;
	return p;
}

@@ -433,7 +427,7 @@ static int ext4_dx_readdir(struct file * filp,
	int	ret;

	if (!info) {
		info = create_dir_info(filp->f_pos);
		info = ext4_htree_create_dir_info(filp->f_pos);
		if (!info)
			return -ENOMEM;
		filp->private_data = info;