Lines Matching refs:inode

21 static int finish_range(handle_t *handle, struct inode *inode,  in finish_range()  argument
36 down_write(&EXT4_I(inode)->i_data_sem); in finish_range()
37 path = ext4_find_extent(inode, lb->first_block, NULL, 0); in finish_range()
49 needed = ext4_ext_calc_credits_for_single_extent(inode, in finish_range()
52 retval = ext4_datasem_ensure_credits(handle, inode, needed, needed, 0); in finish_range()
55 path = ext4_ext_insert_extent(handle, inode, path, &newext, 0); in finish_range()
59 up_write((&EXT4_I(inode)->i_data_sem)); in finish_range()
65 static int update_extent_range(handle_t *handle, struct inode *inode, in update_extent_range() argument
83 retval = finish_range(handle, inode, lb); in update_extent_range()
90 static int update_ind_extent_range(handle_t *handle, struct inode *inode, in update_ind_extent_range() argument
97 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in update_ind_extent_range()
99 bh = ext4_sb_bread(inode->i_sb, pblock, 0); in update_ind_extent_range()
106 retval = update_extent_range(handle, inode, in update_ind_extent_range()
119 static int update_dind_extent_range(handle_t *handle, struct inode *inode, in update_dind_extent_range() argument
126 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in update_dind_extent_range()
128 bh = ext4_sb_bread(inode->i_sb, pblock, 0); in update_dind_extent_range()
135 retval = update_ind_extent_range(handle, inode, in update_dind_extent_range()
149 static int update_tind_extent_range(handle_t *handle, struct inode *inode, in update_tind_extent_range() argument
156 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in update_tind_extent_range()
158 bh = ext4_sb_bread(inode->i_sb, pblock, 0); in update_tind_extent_range()
165 retval = update_dind_extent_range(handle, inode, in update_tind_extent_range()
180 struct inode *inode, __le32 i_data) in free_dind_blocks() argument
185 struct super_block *sb = inode->i_sb; in free_dind_blocks()
186 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in free_dind_blocks()
203 ext4_free_blocks(handle, inode, NULL, in free_dind_blocks()
214 ext4_free_blocks(handle, inode, NULL, le32_to_cpu(i_data), 1, in free_dind_blocks()
221 struct inode *inode, __le32 i_data) in free_tind_blocks() argument
226 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in free_tind_blocks()
228 bh = ext4_sb_bread(inode->i_sb, le32_to_cpu(i_data), 0); in free_tind_blocks()
236 inode, tmp_idata[i]); in free_tind_blocks()
245 ext4_free_metadata_revoke_credits(inode->i_sb, 1)); in free_tind_blocks()
248 ext4_free_blocks(handle, inode, NULL, le32_to_cpu(i_data), 1, in free_tind_blocks()
254 static int free_ind_block(handle_t *handle, struct inode *inode, __le32 *i_data) in free_ind_block() argument
262 ext4_free_metadata_revoke_credits(inode->i_sb, 1)); in free_ind_block()
265 ext4_free_blocks(handle, inode, NULL, in free_ind_block()
273 retval = free_dind_blocks(handle, inode, i_data[1]); in free_ind_block()
280 retval = free_tind_blocks(handle, inode, i_data[2]); in free_ind_block()
287 static int ext4_ext_swap_inode_data(handle_t *handle, struct inode *inode, in ext4_ext_swap_inode_data() argument
288 struct inode *tmp_inode) in ext4_ext_swap_inode_data()
292 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_ext_swap_inode_data()
307 down_write(&EXT4_I(inode)->i_data_sem); in ext4_ext_swap_inode_data()
313 if (!ext4_test_inode_state(inode, EXT4_STATE_EXT_MIGRATE)) { in ext4_ext_swap_inode_data()
315 up_write(&EXT4_I(inode)->i_data_sem); in ext4_ext_swap_inode_data()
318 ext4_clear_inode_state(inode, EXT4_STATE_EXT_MIGRATE); in ext4_ext_swap_inode_data()
323 ext4_set_inode_flag(inode, EXT4_INODE_EXTENTS); in ext4_ext_swap_inode_data()
335 spin_lock(&inode->i_lock); in ext4_ext_swap_inode_data()
336 inode->i_blocks += tmp_inode->i_blocks; in ext4_ext_swap_inode_data()
337 spin_unlock(&inode->i_lock); in ext4_ext_swap_inode_data()
338 up_write(&EXT4_I(inode)->i_data_sem); in ext4_ext_swap_inode_data()
344 retval = free_ind_block(handle, inode, i_data); in ext4_ext_swap_inode_data()
345 retval2 = ext4_mark_inode_dirty(handle, inode); in ext4_ext_swap_inode_data()
353 static int free_ext_idx(handle_t *handle, struct inode *inode, in free_ext_idx() argument
362 bh = ext4_sb_bread(inode->i_sb, block, 0); in free_ext_idx()
370 retval = free_ext_idx(handle, inode, ix); in free_ext_idx()
379 ext4_free_metadata_revoke_credits(inode->i_sb, 1)); in free_ext_idx()
382 ext4_free_blocks(handle, inode, NULL, block, 1, in free_ext_idx()
390 static int free_ext_block(handle_t *handle, struct inode *inode) in free_ext_block() argument
393 struct ext4_inode_info *ei = EXT4_I(inode); in free_ext_block()
403 retval = free_ext_idx(handle, inode, ix); in free_ext_block()
410 int ext4_ext_migrate(struct inode *inode) in ext4_ext_migrate() argument
416 struct inode *tmp_inode = NULL; in ext4_ext_migrate()
427 if (!ext4_has_feature_extents(inode->i_sb) || in ext4_ext_migrate()
428 ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS) || in ext4_ext_migrate()
429 ext4_has_inline_data(inode)) in ext4_ext_migrate()
432 if (S_ISLNK(inode->i_mode) && inode->i_blocks == 0) in ext4_ext_migrate()
438 alloc_ctx = ext4_writepages_down_write(inode->i_sb); in ext4_ext_migrate()
445 handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, in ext4_ext_migrate()
446 3 + EXT4_MAXQUOTAS_TRANS_BLOCKS(inode->i_sb)); in ext4_ext_migrate()
457 ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_MIGRATE, handle); in ext4_ext_migrate()
458 goal = ((((u32)inode->i_ino - 1) / EXT4_INODES_PER_GROUP(inode->i_sb)) * in ext4_ext_migrate()
459 EXT4_INODES_PER_GROUP(inode->i_sb)) + 1; in ext4_ext_migrate()
460 owner[0] = i_uid_read(inode); in ext4_ext_migrate()
461 owner[1] = i_gid_read(inode); in ext4_ext_migrate()
462 tmp_inode = ext4_new_inode(handle, d_inode(inode->i_sb->s_root), in ext4_ext_migrate()
475 ei = EXT4_I(inode); in ext4_ext_migrate()
478 i_size_write(tmp_inode, i_size_read(inode)); in ext4_ext_migrate()
504 down_read(&EXT4_I(inode)->i_data_sem); in ext4_ext_migrate()
505 ext4_set_inode_state(inode, EXT4_STATE_EXT_MIGRATE); in ext4_ext_migrate()
506 up_read((&EXT4_I(inode)->i_data_sem)); in ext4_ext_migrate()
508 handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, 1); in ext4_ext_migrate()
518 max_entries = inode->i_sb->s_blocksize >> 2; in ext4_ext_migrate()
560 retval = ext4_ext_swap_inode_data(handle, inode, tmp_inode); in ext4_ext_migrate()
596 ext4_writepages_up_write(inode->i_sb, alloc_ctx); in ext4_ext_migrate()
604 int ext4_ind_migrate(struct inode *inode) in ext4_ind_migrate() argument
607 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); in ext4_ind_migrate()
609 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_ind_migrate()
618 if (!ext4_has_feature_extents(inode->i_sb) || in ext4_ind_migrate()
619 (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) in ext4_ind_migrate()
622 if (ext4_has_feature_bigalloc(inode->i_sb)) in ext4_ind_migrate()
630 if (test_opt(inode->i_sb, DELALLOC)) in ext4_ind_migrate()
631 ext4_alloc_da_blocks(inode); in ext4_ind_migrate()
633 alloc_ctx = ext4_writepages_down_write(inode->i_sb); in ext4_ind_migrate()
635 handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, 1); in ext4_ind_migrate()
645 ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_MIGRATE, handle); in ext4_ind_migrate()
647 down_write(&EXT4_I(inode)->i_data_sem); in ext4_ind_migrate()
648 ret = ext4_ext_check_inode(inode); in ext4_ind_migrate()
652 eh = ext_inode_hdr(inode); in ext4_ind_migrate()
672 ext4_clear_inode_flag(inode, EXT4_INODE_EXTENTS); in ext4_ind_migrate()
676 ret2 = ext4_mark_inode_dirty(handle, inode); in ext4_ind_migrate()
680 up_write(&EXT4_I(inode)->i_data_sem); in ext4_ind_migrate()
683 ext4_writepages_up_write(inode->i_sb, alloc_ctx); in ext4_ind_migrate()