static void dx_release(struct dx_lookup_info *info)
{
- struct ext2_dx_root_info *root;
int level;
for (level = 0; level < info->levels; level++) {
int count, limit;
int hash_alg;
int hash_flags = diri->i_flags & EXT4_CASEFOLD_FL;
- __u32 hash, minor_hash;
+ __u32 minor_hash;
struct dx_frame *frame;
errcode = alloc_dx_frame(fs, &(info->frames[0]));
unsigned int rec_len, min_rec_len, curr_rec_len;
int ret = 0;
int csum_size = 0;
- struct ext2_dir_entry_tail *t;
if (ls->done)
return DIRENT_ABORT;
- rec_len = EXT2_DIR_REC_LEN(ls->namelen);
+ rec_len = EXT2_DIR_NAME_LEN(ls->namelen);
ls->err = ext2fs_get_rec_len(ls->fs, dirent, &curr_rec_len);
if (ls->err)
* truncate it and return.
*/
if (dirent->inode) {
- min_rec_len = EXT2_DIR_REC_LEN(ext2fs_dirent_name_len(dirent));
+ min_rec_len = EXT2_DIR_REC_LEN(dirent);
if (curr_rec_len < (min_rec_len + rec_len))
return ret;
rec_len = curr_rec_len - min_rec_len;
ext2fs_dirent_set_name_len(dirent, ls->namelen);
strncpy(dirent->name, ls->name, ls->namelen);
if (ext2fs_has_feature_filetype(ls->sb))
- ext2fs_dirent_set_file_type(dirent, ls->flags & 0x7);
+ ext2fs_dirent_set_file_type(dirent, ls->flags & EXT2_FT_MASK);
ls->done++;
return DIRENT_ABORT|DIRENT_CHANGED;
{
struct ext2_dir_entry *de;
int i;
- int rec_len;
+ int rec_len = 0;
errcode_t retval;
int csum_size = 0;
void *base = to;
for (i = 0; i < count; i++) {
de = from + map[i].off;
- rec_len = EXT2_DIR_REC_LEN(ext2fs_dirent_name_len(de));
+ rec_len = EXT2_DIR_REC_LEN(de);
memcpy(to, de, rec_len);
retval = ext2fs_set_rec_len(fs, rec_len, to);
if (retval)
struct ext2_dir_entry *de;
void *buf2;
errcode_t retval = 0;
- int rec_len;
- int offset, move_size;
+ unsigned int rec_len;
+ unsigned int offset, move_size;
int i, count = 0;
struct dx_hash_map *map;
int continued;
ext2fs_le16_to_cpu(info->frames[i].head->limit))
break;
/* Need to grow tree depth? */
- if (i < 0 && info->levels > ext2_dir_htree_level(fs))
+ if (i < 0 && info->levels >= ext2_dir_htree_level(fs))
return EXT2_ET_DIR_NO_SPACE;
lblk = size / fs->blocksize;
size += fs->blocksize;
dx_info.namelen = strlen(name);
again:
retval = dx_lookup(fs, dir, diri, &dx_info);
- if (retval < 0)
+ if (retval)
goto free_buf;
retval = add_dirent_to_buf(fs,