|
@@ -877,6 +877,7 @@ static int htree_dirblock_to_tree(struct file *dir_file,
|
|
|
struct buffer_head *bh;
|
|
|
struct ext4_dir_entry_2 *de, *top;
|
|
|
int err = 0, count = 0;
|
|
|
+ struct ext4_str tmp_str;
|
|
|
|
|
|
dxtrace(printk(KERN_INFO "In htree dirblock_to_tree: block %lu\n",
|
|
|
(unsigned long)block));
|
|
@@ -903,8 +904,11 @@ static int htree_dirblock_to_tree(struct file *dir_file,
|
|
|
continue;
|
|
|
if (de->inode == 0)
|
|
|
continue;
|
|
|
- if ((err = ext4_htree_store_dirent(dir_file,
|
|
|
- hinfo->hash, hinfo->minor_hash, de)) != 0) {
|
|
|
+ tmp_str.name = de->name;
|
|
|
+ tmp_str.len = de->name_len;
|
|
|
+ err = ext4_htree_store_dirent(dir_file,
|
|
|
+ hinfo->hash, hinfo->minor_hash, de, &tmp_str);
|
|
|
+ if (err != 0) {
|
|
|
brelse(bh);
|
|
|
return err;
|
|
|
}
|
|
@@ -934,6 +938,7 @@ int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash,
|
|
|
int count = 0;
|
|
|
int ret, err;
|
|
|
__u32 hashval;
|
|
|
+ struct ext4_str tmp_str;
|
|
|
|
|
|
dxtrace(printk(KERN_DEBUG "In htree_fill_tree, start hash: %x:%x\n",
|
|
|
start_hash, start_minor_hash));
|
|
@@ -969,14 +974,22 @@ int ext4_htree_fill_tree(struct file *dir_file, __u32 start_hash,
|
|
|
/* Add '.' and '..' from the htree header */
|
|
|
if (!start_hash && !start_minor_hash) {
|
|
|
de = (struct ext4_dir_entry_2 *) frames[0].bh->b_data;
|
|
|
- if ((err = ext4_htree_store_dirent(dir_file, 0, 0, de)) != 0)
|
|
|
+ tmp_str.name = de->name;
|
|
|
+ tmp_str.len = de->name_len;
|
|
|
+ err = ext4_htree_store_dirent(dir_file, 0, 0,
|
|
|
+ de, &tmp_str);
|
|
|
+ if (err != 0)
|
|
|
goto errout;
|
|
|
count++;
|
|
|
}
|
|
|
if (start_hash < 2 || (start_hash ==2 && start_minor_hash==0)) {
|
|
|
de = (struct ext4_dir_entry_2 *) frames[0].bh->b_data;
|
|
|
de = ext4_next_entry(de, dir->i_sb->s_blocksize);
|
|
|
- if ((err = ext4_htree_store_dirent(dir_file, 2, 0, de)) != 0)
|
|
|
+ tmp_str.name = de->name;
|
|
|
+ tmp_str.len = de->name_len;
|
|
|
+ err = ext4_htree_store_dirent(dir_file, 2, 0,
|
|
|
+ de, &tmp_str);
|
|
|
+ if (err != 0)
|
|
|
goto errout;
|
|
|
count++;
|
|
|
}
|