diff options
Diffstat (limited to 'fs/ext4/migrate.c')
| -rw-r--r-- | fs/ext4/migrate.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c index fe64d9f79852..313a50b39741 100644 --- a/fs/ext4/migrate.c +++ b/fs/ext4/migrate.c | |||
| @@ -458,6 +458,7 @@ int ext4_ext_migrate(struct inode *inode) | |||
| 458 | struct inode *tmp_inode = NULL; | 458 | struct inode *tmp_inode = NULL; |
| 459 | struct list_blocks_struct lb; | 459 | struct list_blocks_struct lb; |
| 460 | unsigned long max_entries; | 460 | unsigned long max_entries; |
| 461 | __u32 goal; | ||
| 461 | 462 | ||
| 462 | /* | 463 | /* |
| 463 | * If the filesystem does not support extents, or the inode | 464 | * If the filesystem does not support extents, or the inode |
| @@ -483,9 +484,10 @@ int ext4_ext_migrate(struct inode *inode) | |||
| 483 | retval = PTR_ERR(handle); | 484 | retval = PTR_ERR(handle); |
| 484 | return retval; | 485 | return retval; |
| 485 | } | 486 | } |
| 486 | tmp_inode = ext4_new_inode(handle, | 487 | goal = (((inode->i_ino - 1) / EXT4_INODES_PER_GROUP(inode->i_sb)) * |
| 487 | inode->i_sb->s_root->d_inode, | 488 | EXT4_INODES_PER_GROUP(inode->i_sb)) + 1; |
| 488 | S_IFREG); | 489 | tmp_inode = ext4_new_inode(handle, inode->i_sb->s_root->d_inode, |
| 490 | S_IFREG, 0, goal); | ||
| 489 | if (IS_ERR(tmp_inode)) { | 491 | if (IS_ERR(tmp_inode)) { |
| 490 | retval = -ENOMEM; | 492 | retval = -ENOMEM; |
| 491 | ext4_journal_stop(handle); | 493 | ext4_journal_stop(handle); |
