diff options
author | Lukas Czerner <lczerner@redhat.com> | 2013-04-10 23:32:52 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2013-04-10 23:32:52 -0400 |
commit | 0d14b098ce05c067e06eea5ed63d9b5c14656bdb (patch) | |
tree | 251da1c2ba46926a1fc2297f0303b97372cd8326 /fs/ext4/migrate.c | |
parent | d6a771056b32146da1280f7872f6936b0c7770ea (diff) |
ext4: move ext4_ind_migrate() into migrate.c
Move ext4_ind_migrate() into migrate.c file since it makes much more
sense and ext4_ext_migrate() is there as well.
Also fix tiny style problem - add spaces around "=" in "i=0".
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/migrate.c')
-rw-r--r-- | fs/ext4/migrate.c | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c index 480acf4a085f..d129a4dc16a7 100644 --- a/fs/ext4/migrate.c +++ b/fs/ext4/migrate.c | |||
@@ -426,7 +426,6 @@ static int free_ext_block(handle_t *handle, struct inode *inode) | |||
426 | return retval; | 426 | return retval; |
427 | } | 427 | } |
428 | return retval; | 428 | return retval; |
429 | |||
430 | } | 429 | } |
431 | 430 | ||
432 | int ext4_ext_migrate(struct inode *inode) | 431 | int ext4_ext_migrate(struct inode *inode) |
@@ -606,3 +605,60 @@ out: | |||
606 | 605 | ||
607 | return retval; | 606 | return retval; |
608 | } | 607 | } |
608 | |||
609 | /* | ||
610 | * Migrate a simple extent-based inode to use the i_blocks[] array | ||
611 | */ | ||
612 | int ext4_ind_migrate(struct inode *inode) | ||
613 | { | ||
614 | struct ext4_extent_header *eh; | ||
615 | struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es; | ||
616 | struct ext4_inode_info *ei = EXT4_I(inode); | ||
617 | struct ext4_extent *ex; | ||
618 | unsigned int i, len; | ||
619 | ext4_fsblk_t blk; | ||
620 | handle_t *handle; | ||
621 | int ret; | ||
622 | |||
623 | if (!EXT4_HAS_INCOMPAT_FEATURE(inode->i_sb, | ||
624 | EXT4_FEATURE_INCOMPAT_EXTENTS) || | ||
625 | (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) | ||
626 | return -EINVAL; | ||
627 | |||
628 | handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, 1); | ||
629 | if (IS_ERR(handle)) | ||
630 | return PTR_ERR(handle); | ||
631 | |||
632 | down_write(&EXT4_I(inode)->i_data_sem); | ||
633 | ret = ext4_ext_check_inode(inode); | ||
634 | if (ret) | ||
635 | goto errout; | ||
636 | |||
637 | eh = ext_inode_hdr(inode); | ||
638 | ex = EXT_FIRST_EXTENT(eh); | ||
639 | if (ext4_blocks_count(es) > EXT4_MAX_BLOCK_FILE_PHYS || | ||
640 | eh->eh_depth != 0 || le16_to_cpu(eh->eh_entries) > 1) { | ||
641 | ret = -EOPNOTSUPP; | ||
642 | goto errout; | ||
643 | } | ||
644 | if (eh->eh_entries == 0) | ||
645 | blk = len = 0; | ||
646 | else { | ||
647 | len = le16_to_cpu(ex->ee_len); | ||
648 | blk = ext4_ext_pblock(ex); | ||
649 | if (len > EXT4_NDIR_BLOCKS) { | ||
650 | ret = -EOPNOTSUPP; | ||
651 | goto errout; | ||
652 | } | ||
653 | } | ||
654 | |||
655 | ext4_clear_inode_flag(inode, EXT4_INODE_EXTENTS); | ||
656 | memset(ei->i_data, 0, sizeof(ei->i_data)); | ||
657 | for (i=0; i < len; i++) | ||
658 | ei->i_data[i] = cpu_to_le32(blk++); | ||
659 | ext4_mark_inode_dirty(handle, inode); | ||
660 | errout: | ||
661 | ext4_journal_stop(handle); | ||
662 | up_write(&EXT4_I(inode)->i_data_sem); | ||
663 | return ret; | ||
664 | } | ||