Lines Matching refs:inode

95 static int __btrfs_add_inode_defrag(struct inode *inode,  in __btrfs_add_inode_defrag()  argument
98 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_add_inode_defrag()
126 set_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags); in __btrfs_add_inode_defrag()
148 struct inode *inode) in btrfs_add_inode_defrag() argument
150 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_add_inode_defrag()
158 if (test_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags)) in btrfs_add_inode_defrag()
164 transid = BTRFS_I(inode)->root->last_trans; in btrfs_add_inode_defrag()
170 defrag->ino = btrfs_ino(inode); in btrfs_add_inode_defrag()
175 if (!test_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags)) { in btrfs_add_inode_defrag()
181 ret = __btrfs_add_inode_defrag(inode, defrag); in btrfs_add_inode_defrag()
196 static void btrfs_requeue_inode_defrag(struct inode *inode, in btrfs_requeue_inode_defrag() argument
199 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_requeue_inode_defrag()
210 ret = __btrfs_add_inode_defrag(inode, defrag); in btrfs_requeue_inode_defrag()
289 struct inode *inode; in __btrfs_run_defrag_inode() local
312 inode = btrfs_iget(fs_info->sb, &key, inode_root, NULL); in __btrfs_run_defrag_inode()
313 if (IS_ERR(inode)) { in __btrfs_run_defrag_inode()
314 ret = PTR_ERR(inode); in __btrfs_run_defrag_inode()
320 clear_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags); in __btrfs_run_defrag_inode()
326 num_defrag = btrfs_defrag_file(inode, NULL, &range, defrag->transid, in __btrfs_run_defrag_inode()
336 btrfs_requeue_inode_defrag(inode, defrag); in __btrfs_run_defrag_inode()
345 btrfs_requeue_inode_defrag(inode, defrag); in __btrfs_run_defrag_inode()
350 iput(inode); in __btrfs_run_defrag_inode()
488 int btrfs_dirty_pages(struct btrfs_root *root, struct inode *inode, in btrfs_dirty_pages() argument
499 loff_t isize = i_size_read(inode); in btrfs_dirty_pages()
505 err = btrfs_set_extent_delalloc(inode, start_pos, end_of_last_block, in btrfs_dirty_pages()
523 i_size_write(inode, end_pos); in btrfs_dirty_pages()
531 void btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, in btrfs_drop_extent_cache() argument
537 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in btrfs_drop_extent_cache()
692 struct btrfs_root *root, struct inode *inode, in __btrfs_drop_extents() argument
703 u64 ino = btrfs_ino(inode); in __btrfs_drop_extents()
720 btrfs_drop_extent_cache(inode, start, end - 1, 0); in __btrfs_drop_extents()
722 if (start >= BTRFS_I(inode)->disk_i_size && !replace_extent) in __btrfs_drop_extents()
883 inode_sub_bytes(inode, end - key.offset); in __btrfs_drop_extents()
903 inode_sub_bytes(inode, extent_end - start); in __btrfs_drop_extents()
927 inode_sub_bytes(inode, in __btrfs_drop_extents()
938 inode_sub_bytes(inode, in __btrfs_drop_extents()
1018 struct btrfs_root *root, struct inode *inode, u64 start, in btrfs_drop_extents() argument
1027 ret = __btrfs_drop_extents(trans, root, inode, path, start, end, NULL, in btrfs_drop_extents()
1074 struct inode *inode, u64 start, u64 end) in btrfs_mark_extent_written() argument
1076 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_mark_extent_written()
1093 u64 ino = btrfs_ino(inode); in btrfs_mark_extent_written()
1316 static noinline int prepare_pages(struct inode *inode, struct page **pages, in prepare_pages() argument
1322 gfp_t mask = btrfs_alloc_write_mask(inode->i_mapping); in prepare_pages()
1327 pages[i] = find_or_create_page(inode->i_mapping, index + i, in prepare_pages()
1371 lock_and_cleanup_extent_if_need(struct inode *inode, struct page **pages, in lock_and_cleanup_extent_if_need() argument
1384 if (start_pos < inode->i_size) { in lock_and_cleanup_extent_if_need()
1386 lock_extent_bits(&BTRFS_I(inode)->io_tree, in lock_and_cleanup_extent_if_need()
1388 ordered = btrfs_lookup_ordered_range(inode, start_pos, in lock_and_cleanup_extent_if_need()
1393 unlock_extent_cached(&BTRFS_I(inode)->io_tree, in lock_and_cleanup_extent_if_need()
1400 btrfs_start_ordered_extent(inode, ordered, 1); in lock_and_cleanup_extent_if_need()
1407 clear_extent_bit(&BTRFS_I(inode)->io_tree, start_pos, in lock_and_cleanup_extent_if_need()
1426 static noinline int check_can_nocow(struct inode *inode, loff_t pos, in check_can_nocow() argument
1429 struct btrfs_root *root = BTRFS_I(inode)->root; in check_can_nocow()
1443 lock_extent(&BTRFS_I(inode)->io_tree, lockstart, lockend); in check_can_nocow()
1444 ordered = btrfs_lookup_ordered_range(inode, lockstart, in check_can_nocow()
1449 unlock_extent(&BTRFS_I(inode)->io_tree, lockstart, lockend); in check_can_nocow()
1450 btrfs_start_ordered_extent(inode, ordered, 1); in check_can_nocow()
1455 ret = can_nocow_extent(inode, lockstart, &num_bytes, NULL, NULL, NULL); in check_can_nocow()
1464 unlock_extent(&BTRFS_I(inode)->io_tree, lockstart, lockend); in check_can_nocow()
1473 struct inode *inode = file_inode(file); in __btrfs_buffered_write() local
1474 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_buffered_write()
1521 ret = btrfs_check_data_free_space(inode, reserve_bytes, write_bytes); in __btrfs_buffered_write()
1523 (BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW | in __btrfs_buffered_write()
1525 ret = check_can_nocow(inode, pos, &write_bytes); in __btrfs_buffered_write()
1544 ret = btrfs_delalloc_reserve_metadata(inode, reserve_bytes); in __btrfs_buffered_write()
1547 btrfs_free_reserved_data_space(inode, in __btrfs_buffered_write()
1562 ret = prepare_pages(inode, pages, num_pages, in __btrfs_buffered_write()
1568 ret = lock_and_cleanup_extent_if_need(inode, pages, num_pages, in __btrfs_buffered_write()
1610 spin_lock(&BTRFS_I(inode)->lock); in __btrfs_buffered_write()
1611 BTRFS_I(inode)->outstanding_extents++; in __btrfs_buffered_write()
1612 spin_unlock(&BTRFS_I(inode)->lock); in __btrfs_buffered_write()
1615 btrfs_delalloc_release_metadata(inode, in __btrfs_buffered_write()
1618 btrfs_delalloc_release_space(inode, in __btrfs_buffered_write()
1625 ret = btrfs_dirty_pages(root, inode, pages, in __btrfs_buffered_write()
1629 unlock_extent_cached(&BTRFS_I(inode)->io_tree, in __btrfs_buffered_write()
1646 set_extent_bit(&BTRFS_I(inode)->io_tree, lockstart, in __btrfs_buffered_write()
1656 balance_dirty_pages_ratelimited(inode->i_mapping); in __btrfs_buffered_write()
1669 btrfs_delalloc_release_metadata(inode, release_bytes); in __btrfs_buffered_write()
1671 btrfs_delalloc_release_space(inode, release_bytes); in __btrfs_buffered_write()
1683 struct inode *inode = file_inode(file); in __btrfs_direct_write() local
1705 err = btrfs_fdatawrite_range(inode, pos, endbyte); in __btrfs_direct_write()
1708 err = filemap_fdatawait_range(inode->i_mapping, pos, endbyte); in __btrfs_direct_write()
1719 static void update_time_for_write(struct inode *inode) in update_time_for_write() argument
1723 if (IS_NOCMTIME(inode)) in update_time_for_write()
1726 now = current_fs_time(inode->i_sb); in update_time_for_write()
1727 if (!timespec_equal(&inode->i_mtime, &now)) in update_time_for_write()
1728 inode->i_mtime = now; in update_time_for_write()
1730 if (!timespec_equal(&inode->i_ctime, &now)) in update_time_for_write()
1731 inode->i_ctime = now; in update_time_for_write()
1733 if (IS_I_VERSION(inode)) in update_time_for_write()
1734 inode_inc_iversion(inode); in update_time_for_write()
1741 struct inode *inode = file_inode(file); in btrfs_file_write_iter() local
1742 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_file_write_iter()
1751 mutex_lock(&inode->i_mutex); in btrfs_file_write_iter()
1754 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1758 current->backing_dev_info = inode_to_bdi(inode); in btrfs_file_write_iter()
1761 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1772 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1783 update_time_for_write(inode); in btrfs_file_write_iter()
1788 if (start_pos > i_size_read(inode)) { in btrfs_file_write_iter()
1791 err = btrfs_cont_expand(inode, i_size_read(inode), end_pos); in btrfs_file_write_iter()
1793 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1799 atomic_inc(&BTRFS_I(inode)->sync_writers); in btrfs_file_write_iter()
1809 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1816 spin_lock(&BTRFS_I(inode)->lock); in btrfs_file_write_iter()
1817 BTRFS_I(inode)->last_sub_trans = root->log_transid; in btrfs_file_write_iter()
1818 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_file_write_iter()
1826 atomic_dec(&BTRFS_I(inode)->sync_writers); in btrfs_file_write_iter()
1832 int btrfs_release_file(struct inode *inode, struct file *filp) in btrfs_release_file() argument
1843 &BTRFS_I(inode)->runtime_flags)) in btrfs_release_file()
1844 filemap_flush(inode->i_mapping); in btrfs_release_file()
1848 static int start_ordered_ops(struct inode *inode, loff_t start, loff_t end) in start_ordered_ops() argument
1852 atomic_inc(&BTRFS_I(inode)->sync_writers); in start_ordered_ops()
1853 ret = btrfs_fdatawrite_range(inode, start, end); in start_ordered_ops()
1854 atomic_dec(&BTRFS_I(inode)->sync_writers); in start_ordered_ops()
1873 struct inode *inode = d_inode(dentry); in btrfs_sync_file() local
1874 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_sync_file()
1888 ret = start_ordered_ops(inode, start, end); in btrfs_sync_file()
1892 mutex_lock(&inode->i_mutex); in btrfs_sync_file()
1895 &BTRFS_I(inode)->runtime_flags); in btrfs_sync_file()
1907 ret = btrfs_wait_ordered_range(inode, start, end - start + 1); in btrfs_sync_file()
1941 ret = start_ordered_ops(inode, start, end); in btrfs_sync_file()
1944 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
1978 if (btrfs_inode_in_log(inode, root->fs_info->generation) || in btrfs_sync_file()
1979 (full_sync && BTRFS_I(inode)->last_trans <= in btrfs_sync_file()
1987 &BTRFS_I(inode)->runtime_flags); in btrfs_sync_file()
1988 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
2012 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
2035 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
2065 ret = btrfs_wait_ordered_range(inode, start, in btrfs_sync_file()
2099 static int hole_mergeable(struct inode *inode, struct extent_buffer *leaf, in hole_mergeable() argument
2109 if (key.objectid != btrfs_ino(inode) || in hole_mergeable()
2128 static int fill_holes(struct btrfs_trans_handle *trans, struct inode *inode, in fill_holes() argument
2131 struct btrfs_root *root = BTRFS_I(inode)->root; in fill_holes()
2135 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in fill_holes()
2142 key.objectid = btrfs_ino(inode); in fill_holes()
2152 if (hole_mergeable(inode, leaf, path->slots[0]-1, offset, end)) { in fill_holes()
2167 if (hole_mergeable(inode, leaf, path->slots[0], offset, end)) { in fill_holes()
2184 ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset, in fill_holes()
2195 btrfs_drop_extent_cache(inode, offset, end - 1, 0); in fill_holes()
2197 &BTRFS_I(inode)->runtime_flags); in fill_holes()
2212 btrfs_drop_extent_cache(inode, offset, end - 1, 0); in fill_holes()
2220 &BTRFS_I(inode)->runtime_flags); in fill_holes()
2232 static int find_first_non_hole(struct inode *inode, u64 *start, u64 *len) in find_first_non_hole() argument
2237 em = btrfs_get_extent(inode, NULL, 0, *start, *len, 0); in find_first_non_hole()
2257 static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len) in btrfs_punch_hole() argument
2259 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_punch_hole()
2281 ret = btrfs_wait_ordered_range(inode, offset, len); in btrfs_punch_hole()
2285 mutex_lock(&inode->i_mutex); in btrfs_punch_hole()
2286 ino_size = round_up(inode->i_size, PAGE_CACHE_SIZE); in btrfs_punch_hole()
2287 ret = find_first_non_hole(inode, &offset, &len); in btrfs_punch_hole()
2296 lockstart = round_up(offset, BTRFS_I(inode)->root->sectorsize); in btrfs_punch_hole()
2298 BTRFS_I(inode)->root->sectorsize) - 1; in btrfs_punch_hole()
2313 ret = btrfs_truncate_page(inode, offset, len, 0); in btrfs_punch_hole()
2323 ret = btrfs_truncate_page(inode, offset, 0, 0); in btrfs_punch_hole()
2325 mutex_unlock(&inode->i_mutex); in btrfs_punch_hole()
2338 ret = find_first_non_hole(inode, &offset, &len); in btrfs_punch_hole()
2352 ret = find_first_non_hole(inode, &tail_start, &tail_len); in btrfs_punch_hole()
2359 ret = btrfs_truncate_page(inode, in btrfs_punch_hole()
2375 truncate_pagecache_range(inode, lockstart, lockend); in btrfs_punch_hole()
2377 lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, in btrfs_punch_hole()
2379 ordered = btrfs_lookup_first_ordered_extent(inode, lockend); in btrfs_punch_hole()
2389 !btrfs_page_exists_in_range(inode, lockstart, lockend)) { in btrfs_punch_hole()
2396 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, in btrfs_punch_hole()
2398 ret = btrfs_wait_ordered_range(inode, lockstart, in btrfs_punch_hole()
2401 mutex_unlock(&inode->i_mutex); in btrfs_punch_hole()
2440 ret = __btrfs_drop_extents(trans, root, inode, path, in btrfs_punch_hole()
2449 ret = fill_holes(trans, inode, path, cur_offset, in btrfs_punch_hole()
2459 ret = btrfs_update_inode(trans, root, inode); in btrfs_punch_hole()
2480 ret = find_first_non_hole(inode, &cur_offset, &len); in btrfs_punch_hole()
2501 ret = fill_holes(trans, inode, path, cur_offset, drop_end); in btrfs_punch_hole()
2512 inode_inc_iversion(inode); in btrfs_punch_hole()
2513 inode->i_mtime = inode->i_ctime = CURRENT_TIME; in btrfs_punch_hole()
2516 ret = btrfs_update_inode(trans, root, inode); in btrfs_punch_hole()
2524 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend, in btrfs_punch_hole()
2539 err = btrfs_update_inode(trans, root, inode); in btrfs_punch_hole()
2543 mutex_unlock(&inode->i_mutex); in btrfs_punch_hole()
2552 struct inode *inode = file_inode(file); in btrfs_fallocate() local
2561 int blocksize = BTRFS_I(inode)->root->sectorsize; in btrfs_fallocate()
2572 return btrfs_punch_hole(inode, offset, len); in btrfs_fallocate()
2578 ret = btrfs_check_data_free_space(inode, alloc_end - alloc_start, alloc_end - alloc_start); in btrfs_fallocate()
2582 mutex_lock(&inode->i_mutex); in btrfs_fallocate()
2583 ret = inode_newsize_ok(inode, alloc_end); in btrfs_fallocate()
2587 if (alloc_start > inode->i_size) { in btrfs_fallocate()
2588 ret = btrfs_cont_expand(inode, i_size_read(inode), in btrfs_fallocate()
2598 ret = btrfs_truncate_page(inode, inode->i_size, 0, 0); in btrfs_fallocate()
2607 ret = btrfs_wait_ordered_range(inode, alloc_start, in btrfs_fallocate()
2619 lock_extent_bits(&BTRFS_I(inode)->io_tree, alloc_start, in btrfs_fallocate()
2621 ordered = btrfs_lookup_first_ordered_extent(inode, in btrfs_fallocate()
2627 unlock_extent_cached(&BTRFS_I(inode)->io_tree, in btrfs_fallocate()
2634 ret = btrfs_wait_ordered_range(inode, alloc_start, in btrfs_fallocate()
2649 em = btrfs_get_extent(inode, NULL, 0, cur_offset, in btrfs_fallocate()
2663 (cur_offset >= inode->i_size && in btrfs_fallocate()
2665 ret = btrfs_prealloc_file_range(inode, mode, cur_offset, in btrfs_fallocate()
2667 1 << inode->i_blkbits, in btrfs_fallocate()
2670 } else if (actual_end > inode->i_size && in btrfs_fallocate()
2673 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_fallocate()
2684 inode->i_ctime = CURRENT_TIME; in btrfs_fallocate()
2685 i_size_write(inode, actual_end); in btrfs_fallocate()
2686 btrfs_ordered_update_i_size(inode, actual_end, in btrfs_fallocate()
2688 ret = btrfs_update_inode(trans, root, inode); in btrfs_fallocate()
2706 unlock_extent_cached(&BTRFS_I(inode)->io_tree, alloc_start, locked_end, in btrfs_fallocate()
2709 mutex_unlock(&inode->i_mutex); in btrfs_fallocate()
2711 btrfs_free_reserved_data_space(inode, alloc_end - alloc_start); in btrfs_fallocate()
2715 static int find_desired_extent(struct inode *inode, loff_t *offset, int whence) in find_desired_extent() argument
2717 struct btrfs_root *root = BTRFS_I(inode)->root; in find_desired_extent()
2726 if (inode->i_size == 0) in find_desired_extent()
2736 lockend = round_up(i_size_read(inode), root->sectorsize); in find_desired_extent()
2742 lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, 0, in find_desired_extent()
2745 while (start < inode->i_size) { in find_desired_extent()
2746 em = btrfs_get_extent_fiemap(inode, NULL, 0, start, len, 0); in find_desired_extent()
2769 if (whence == SEEK_DATA && start >= inode->i_size) in find_desired_extent()
2772 *offset = min_t(loff_t, start, inode->i_size); in find_desired_extent()
2774 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend, in find_desired_extent()
2781 struct inode *inode = file->f_mapping->host; in btrfs_file_llseek() local
2784 mutex_lock(&inode->i_mutex); in btrfs_file_llseek()
2792 if (offset >= i_size_read(inode)) { in btrfs_file_llseek()
2793 mutex_unlock(&inode->i_mutex); in btrfs_file_llseek()
2797 ret = find_desired_extent(inode, &offset, whence); in btrfs_file_llseek()
2799 mutex_unlock(&inode->i_mutex); in btrfs_file_llseek()
2804 offset = vfs_setpos(file, offset, inode->i_sb->s_maxbytes); in btrfs_file_llseek()
2806 mutex_unlock(&inode->i_mutex); in btrfs_file_llseek()
2844 int btrfs_fdatawrite_range(struct inode *inode, loff_t start, loff_t end) in btrfs_fdatawrite_range() argument
2862 ret = filemap_fdatawrite_range(inode->i_mapping, start, end); in btrfs_fdatawrite_range()
2864 &BTRFS_I(inode)->runtime_flags)) in btrfs_fdatawrite_range()
2865 ret = filemap_fdatawrite_range(inode->i_mapping, start, end); in btrfs_fdatawrite_range()