|
@@ -620,7 +620,7 @@ int ext4_ind_migrate(struct inode *inode)
|
|
|
struct ext4_inode_info *ei = EXT4_I(inode);
|
|
|
struct ext4_extent *ex;
|
|
|
unsigned int i, len;
|
|
|
- ext4_lblk_t end;
|
|
|
+ ext4_lblk_t start, end;
|
|
|
ext4_fsblk_t blk;
|
|
|
handle_t *handle;
|
|
|
int ret;
|
|
@@ -659,11 +659,12 @@ int ext4_ind_migrate(struct inode *inode)
|
|
|
goto errout;
|
|
|
}
|
|
|
if (eh->eh_entries == 0)
|
|
|
- blk = len = 0;
|
|
|
+ blk = len = start = end = 0;
|
|
|
else {
|
|
|
len = le16_to_cpu(ex->ee_len);
|
|
|
blk = ext4_ext_pblock(ex);
|
|
|
- end = le32_to_cpu(ex->ee_block) + len - 1;
|
|
|
+ start = le32_to_cpu(ex->ee_block);
|
|
|
+ end = start + len - 1;
|
|
|
if (end >= EXT4_NDIR_BLOCKS) {
|
|
|
ret = -EOPNOTSUPP;
|
|
|
goto errout;
|
|
@@ -672,7 +673,7 @@ int ext4_ind_migrate(struct inode *inode)
|
|
|
|
|
|
ext4_clear_inode_flag(inode, EXT4_INODE_EXTENTS);
|
|
|
memset(ei->i_data, 0, sizeof(ei->i_data));
|
|
|
- for (i=0; i < len; i++)
|
|
|
+ for (i = start; i <= end; i++)
|
|
|
ei->i_data[i] = cpu_to_le32(blk++);
|
|
|
ext4_mark_inode_dirty(handle, inode);
|
|
|
errout:
|