struct ext4_dir_entry_2 **res_dir,
                                        int *has_inline_data)
 {
+       struct ext4_xattr_ibody_find is = {
+               .s = { .not_found = -ENODATA, },
+       };
+       struct ext4_xattr_info i = {
+               .name_index = EXT4_XATTR_INDEX_SYSTEM,
+               .name = EXT4_XATTR_SYSTEM_DATA,
+       };
        int ret;
-       struct ext4_iloc iloc;
        void *inline_start;
        int inline_size;
 
-       ret = ext4_get_inode_loc(dir, &iloc);
+       ret = ext4_get_inode_loc(dir, &is.iloc);
        if (ret)
                return ERR_PTR(ret);
 
        down_read(&EXT4_I(dir)->xattr_sem);
+
+       ret = ext4_xattr_ibody_find(dir, &i, &is);
+       if (ret)
+               goto out;
+
        if (!ext4_has_inline_data(dir)) {
                *has_inline_data = 0;
                goto out;
        }
 
-       inline_start = (void *)ext4_raw_inode(&iloc)->i_block +
+       inline_start = (void *)ext4_raw_inode(&is.iloc)->i_block +
                                                EXT4_INLINE_DOTDOT_SIZE;
        inline_size = EXT4_MIN_INLINE_DATA_SIZE - EXT4_INLINE_DOTDOT_SIZE;
-       ret = ext4_search_dir(iloc.bh, inline_start, inline_size,
+       ret = ext4_search_dir(is.iloc.bh, inline_start, inline_size,
                              dir, fname, 0, res_dir);
        if (ret == 1)
                goto out_find;
        if (ext4_get_inline_size(dir) == EXT4_MIN_INLINE_DATA_SIZE)
                goto out;
 
-       inline_start = ext4_get_inline_xattr_pos(dir, &iloc);
+       inline_start = ext4_get_inline_xattr_pos(dir, &is.iloc);
        inline_size = ext4_get_inline_size(dir) - EXT4_MIN_INLINE_DATA_SIZE;
 
-       ret = ext4_search_dir(iloc.bh, inline_start, inline_size,
+       ret = ext4_search_dir(is.iloc.bh, inline_start, inline_size,
                              dir, fname, 0, res_dir);
        if (ret == 1)
                goto out_find;
 
 out:
-       brelse(iloc.bh);
+       brelse(is.iloc.bh);
        if (ret < 0)
-               iloc.bh = ERR_PTR(ret);
+               is.iloc.bh = ERR_PTR(ret);
        else
-               iloc.bh = NULL;
+               is.iloc.bh = NULL;
 out_find:
        up_read(&EXT4_I(dir)->xattr_sem);
-       return iloc.bh;
+       return is.iloc.bh;
 }
 
 int ext4_delete_inline_entry(handle_t *handle,