Lines Matching refs:inode

28 static int finish_range(handle_t *handle, struct inode *inode,  in finish_range()  argument
43 down_write(&EXT4_I(inode)->i_data_sem); in finish_range()
44 path = ext4_find_extent(inode, lb->first_block, NULL, 0); in finish_range()
57 needed = ext4_ext_calc_credits_for_single_extent(inode, in finish_range()
65 up_write((&EXT4_I(inode)->i_data_sem)); in finish_range()
67 down_write((&EXT4_I(inode)->i_data_sem)); in finish_range()
76 up_write((&EXT4_I(inode)->i_data_sem)); in finish_range()
78 down_write((&EXT4_I(inode)->i_data_sem)); in finish_range()
83 retval = ext4_ext_insert_extent(handle, inode, &path, &newext, 0); in finish_range()
85 up_write((&EXT4_I(inode)->i_data_sem)); in finish_range()
92 static int update_extent_range(handle_t *handle, struct inode *inode, in update_extent_range() argument
110 retval = finish_range(handle, inode, lb); in update_extent_range()
117 static int update_ind_extent_range(handle_t *handle, struct inode *inode, in update_ind_extent_range() argument
124 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in update_ind_extent_range()
126 bh = sb_bread(inode->i_sb, pblock); in update_ind_extent_range()
133 retval = update_extent_range(handle, inode, in update_ind_extent_range()
146 static int update_dind_extent_range(handle_t *handle, struct inode *inode, in update_dind_extent_range() argument
153 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in update_dind_extent_range()
155 bh = sb_bread(inode->i_sb, pblock); in update_dind_extent_range()
162 retval = update_ind_extent_range(handle, inode, in update_dind_extent_range()
176 static int update_tind_extent_range(handle_t *handle, struct inode *inode, in update_tind_extent_range() argument
183 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in update_tind_extent_range()
185 bh = sb_bread(inode->i_sb, pblock); in update_tind_extent_range()
192 retval = update_dind_extent_range(handle, inode, in update_tind_extent_range()
206 static int extend_credit_for_blkdel(handle_t *handle, struct inode *inode) in extend_credit_for_blkdel() argument
218 needed = 3 + EXT4_MAXQUOTAS_TRANS_BLOCKS(inode->i_sb); in extend_credit_for_blkdel()
227 struct inode *inode, __le32 i_data) in free_dind_blocks() argument
232 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in free_dind_blocks()
234 bh = sb_bread(inode->i_sb, le32_to_cpu(i_data)); in free_dind_blocks()
241 extend_credit_for_blkdel(handle, inode); in free_dind_blocks()
242 ext4_free_blocks(handle, inode, NULL, in free_dind_blocks()
249 extend_credit_for_blkdel(handle, inode); in free_dind_blocks()
250 ext4_free_blocks(handle, inode, NULL, le32_to_cpu(i_data), 1, in free_dind_blocks()
257 struct inode *inode, __le32 i_data) in free_tind_blocks() argument
262 unsigned long max_entries = inode->i_sb->s_blocksize >> 2; in free_tind_blocks()
264 bh = sb_bread(inode->i_sb, le32_to_cpu(i_data)); in free_tind_blocks()
272 inode, tmp_idata[i]); in free_tind_blocks()
280 extend_credit_for_blkdel(handle, inode); in free_tind_blocks()
281 ext4_free_blocks(handle, inode, NULL, le32_to_cpu(i_data), 1, in free_tind_blocks()
287 static int free_ind_block(handle_t *handle, struct inode *inode, __le32 *i_data) in free_ind_block() argument
293 extend_credit_for_blkdel(handle, inode); in free_ind_block()
294 ext4_free_blocks(handle, inode, NULL, in free_ind_block()
302 retval = free_dind_blocks(handle, inode, i_data[1]); in free_ind_block()
309 retval = free_tind_blocks(handle, inode, i_data[2]); in free_ind_block()
316 static int ext4_ext_swap_inode_data(handle_t *handle, struct inode *inode, in ext4_ext_swap_inode_data() argument
317 struct inode *tmp_inode) in ext4_ext_swap_inode_data()
321 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_ext_swap_inode_data()
339 down_write(&EXT4_I(inode)->i_data_sem); in ext4_ext_swap_inode_data()
345 if (!ext4_test_inode_state(inode, EXT4_STATE_EXT_MIGRATE)) { in ext4_ext_swap_inode_data()
347 up_write(&EXT4_I(inode)->i_data_sem); in ext4_ext_swap_inode_data()
350 ext4_clear_inode_state(inode, EXT4_STATE_EXT_MIGRATE); in ext4_ext_swap_inode_data()
355 ext4_set_inode_flag(inode, EXT4_INODE_EXTENTS); in ext4_ext_swap_inode_data()
367 spin_lock(&inode->i_lock); in ext4_ext_swap_inode_data()
368 inode->i_blocks += tmp_inode->i_blocks; in ext4_ext_swap_inode_data()
369 spin_unlock(&inode->i_lock); in ext4_ext_swap_inode_data()
370 up_write(&EXT4_I(inode)->i_data_sem); in ext4_ext_swap_inode_data()
376 retval = free_ind_block(handle, inode, i_data); in ext4_ext_swap_inode_data()
377 ext4_mark_inode_dirty(handle, inode); in ext4_ext_swap_inode_data()
383 static int free_ext_idx(handle_t *handle, struct inode *inode, in free_ext_idx() argument
392 bh = sb_bread(inode->i_sb, block); in free_ext_idx()
400 retval = free_ext_idx(handle, inode, ix); in free_ext_idx()
406 extend_credit_for_blkdel(handle, inode); in free_ext_idx()
407 ext4_free_blocks(handle, inode, NULL, block, 1, in free_ext_idx()
415 static int free_ext_block(handle_t *handle, struct inode *inode) in free_ext_block() argument
418 struct ext4_inode_info *ei = EXT4_I(inode); in free_ext_block()
428 retval = free_ext_idx(handle, inode, ix); in free_ext_block()
435 int ext4_ext_migrate(struct inode *inode) in ext4_ext_migrate() argument
441 struct inode *tmp_inode = NULL; in ext4_ext_migrate()
451 if (!EXT4_HAS_INCOMPAT_FEATURE(inode->i_sb, in ext4_ext_migrate()
453 (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) in ext4_ext_migrate()
456 if (S_ISLNK(inode->i_mode) && inode->i_blocks == 0) in ext4_ext_migrate()
467 handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, in ext4_ext_migrate()
468 4 + EXT4_MAXQUOTAS_TRANS_BLOCKS(inode->i_sb)); in ext4_ext_migrate()
474 goal = (((inode->i_ino - 1) / EXT4_INODES_PER_GROUP(inode->i_sb)) * in ext4_ext_migrate()
475 EXT4_INODES_PER_GROUP(inode->i_sb)) + 1; in ext4_ext_migrate()
476 owner[0] = i_uid_read(inode); in ext4_ext_migrate()
477 owner[1] = i_gid_read(inode); in ext4_ext_migrate()
478 tmp_inode = ext4_new_inode(handle, d_inode(inode->i_sb->s_root), in ext4_ext_migrate()
485 i_size_write(tmp_inode, i_size_read(inode)); in ext4_ext_migrate()
512 down_read(&EXT4_I(inode)->i_data_sem); in ext4_ext_migrate()
513 ext4_set_inode_state(inode, EXT4_STATE_EXT_MIGRATE); in ext4_ext_migrate()
514 up_read((&EXT4_I(inode)->i_data_sem)); in ext4_ext_migrate()
516 handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, 1); in ext4_ext_migrate()
528 ei = EXT4_I(inode); in ext4_ext_migrate()
533 max_entries = inode->i_sb->s_blocksize >> 2; in ext4_ext_migrate()
575 retval = ext4_ext_swap_inode_data(handle, inode, tmp_inode); in ext4_ext_migrate()
616 int ext4_ind_migrate(struct inode *inode) in ext4_ind_migrate() argument
619 struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es; in ext4_ind_migrate()
620 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_ind_migrate()
628 if (!EXT4_HAS_INCOMPAT_FEATURE(inode->i_sb, in ext4_ind_migrate()
630 (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) in ext4_ind_migrate()
633 if (EXT4_HAS_RO_COMPAT_FEATURE(inode->i_sb, in ext4_ind_migrate()
642 if (test_opt(inode->i_sb, DELALLOC)) in ext4_ind_migrate()
643 ext4_alloc_da_blocks(inode); in ext4_ind_migrate()
645 handle = ext4_journal_start(inode, EXT4_HT_MIGRATE, 1); in ext4_ind_migrate()
649 down_write(&EXT4_I(inode)->i_data_sem); in ext4_ind_migrate()
650 ret = ext4_ext_check_inode(inode); in ext4_ind_migrate()
654 eh = ext_inode_hdr(inode); in ext4_ind_migrate()
674 ext4_clear_inode_flag(inode, EXT4_INODE_EXTENTS); in ext4_ind_migrate()
678 ext4_mark_inode_dirty(handle, inode); in ext4_ind_migrate()
681 up_write(&EXT4_I(inode)->i_data_sem); in ext4_ind_migrate()