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()
1294 static int prepare_uptodate_page(struct inode *inode, in prepare_uptodate_page() argument
1310 if (page->mapping != inode->i_mapping) { in prepare_uptodate_page()
1321 static noinline int prepare_pages(struct inode *inode, struct page **pages, in prepare_pages() argument
1327 gfp_t mask = btrfs_alloc_write_mask(inode->i_mapping); in prepare_pages()
1333 pages[i] = find_or_create_page(inode->i_mapping, index + i, in prepare_pages()
1342 err = prepare_uptodate_page(inode, pages[i], pos, in prepare_pages()
1345 err = prepare_uptodate_page(inode, pages[i], in prepare_pages()
1381 lock_and_cleanup_extent_if_need(struct inode *inode, struct page **pages, in lock_and_cleanup_extent_if_need() argument
1394 if (start_pos < inode->i_size) { in lock_and_cleanup_extent_if_need()
1396 lock_extent_bits(&BTRFS_I(inode)->io_tree, in lock_and_cleanup_extent_if_need()
1398 ordered = btrfs_lookup_ordered_range(inode, start_pos, in lock_and_cleanup_extent_if_need()
1403 unlock_extent_cached(&BTRFS_I(inode)->io_tree, in lock_and_cleanup_extent_if_need()
1410 btrfs_start_ordered_extent(inode, ordered, 1); in lock_and_cleanup_extent_if_need()
1417 clear_extent_bit(&BTRFS_I(inode)->io_tree, start_pos, in lock_and_cleanup_extent_if_need()
1436 static noinline int check_can_nocow(struct inode *inode, loff_t pos, in check_can_nocow() argument
1439 struct btrfs_root *root = BTRFS_I(inode)->root; in check_can_nocow()
1453 lock_extent(&BTRFS_I(inode)->io_tree, lockstart, lockend); in check_can_nocow()
1454 ordered = btrfs_lookup_ordered_range(inode, lockstart, in check_can_nocow()
1459 unlock_extent(&BTRFS_I(inode)->io_tree, lockstart, lockend); in check_can_nocow()
1460 btrfs_start_ordered_extent(inode, ordered, 1); in check_can_nocow()
1465 ret = can_nocow_extent(inode, lockstart, &num_bytes, NULL, NULL, NULL); in check_can_nocow()
1474 unlock_extent(&BTRFS_I(inode)->io_tree, lockstart, lockend); in check_can_nocow()
1483 struct inode *inode = file_inode(file); in __btrfs_buffered_write() local
1484 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_buffered_write()
1529 if (BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW | in __btrfs_buffered_write()
1531 ret = check_can_nocow(inode, pos, &write_bytes); in __btrfs_buffered_write()
1550 ret = btrfs_check_data_free_space(inode, pos, write_bytes); in __btrfs_buffered_write()
1555 ret = btrfs_delalloc_reserve_metadata(inode, reserve_bytes); in __btrfs_buffered_write()
1558 btrfs_free_reserved_data_space(inode, pos, in __btrfs_buffered_write()
1573 ret = prepare_pages(inode, pages, num_pages, in __btrfs_buffered_write()
1579 ret = lock_and_cleanup_extent_if_need(inode, pages, num_pages, in __btrfs_buffered_write()
1621 spin_lock(&BTRFS_I(inode)->lock); in __btrfs_buffered_write()
1622 BTRFS_I(inode)->outstanding_extents++; in __btrfs_buffered_write()
1623 spin_unlock(&BTRFS_I(inode)->lock); in __btrfs_buffered_write()
1626 btrfs_delalloc_release_metadata(inode, in __btrfs_buffered_write()
1633 btrfs_delalloc_release_space(inode, __pos, in __btrfs_buffered_write()
1641 ret = btrfs_dirty_pages(root, inode, pages, in __btrfs_buffered_write()
1645 unlock_extent_cached(&BTRFS_I(inode)->io_tree, in __btrfs_buffered_write()
1662 set_extent_bit(&BTRFS_I(inode)->io_tree, lockstart, in __btrfs_buffered_write()
1672 balance_dirty_pages_ratelimited(inode->i_mapping); in __btrfs_buffered_write()
1685 btrfs_delalloc_release_metadata(inode, release_bytes); in __btrfs_buffered_write()
1687 btrfs_delalloc_release_space(inode, pos, release_bytes); in __btrfs_buffered_write()
1699 struct inode *inode = file_inode(file); in __btrfs_direct_write() local
1721 err = btrfs_fdatawrite_range(inode, pos, endbyte); in __btrfs_direct_write()
1724 err = filemap_fdatawait_range(inode->i_mapping, pos, endbyte); in __btrfs_direct_write()
1735 static void update_time_for_write(struct inode *inode) in update_time_for_write() argument
1739 if (IS_NOCMTIME(inode)) in update_time_for_write()
1742 now = current_fs_time(inode->i_sb); in update_time_for_write()
1743 if (!timespec_equal(&inode->i_mtime, &now)) in update_time_for_write()
1744 inode->i_mtime = now; in update_time_for_write()
1746 if (!timespec_equal(&inode->i_ctime, &now)) in update_time_for_write()
1747 inode->i_ctime = now; in update_time_for_write()
1749 if (IS_I_VERSION(inode)) in update_time_for_write()
1750 inode_inc_iversion(inode); in update_time_for_write()
1757 struct inode *inode = file_inode(file); in btrfs_file_write_iter() local
1758 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_file_write_iter()
1767 mutex_lock(&inode->i_mutex); in btrfs_file_write_iter()
1770 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1774 current->backing_dev_info = inode_to_bdi(inode); in btrfs_file_write_iter()
1777 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1788 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1799 update_time_for_write(inode); in btrfs_file_write_iter()
1804 if (start_pos > i_size_read(inode)) { in btrfs_file_write_iter()
1807 err = btrfs_cont_expand(inode, i_size_read(inode), end_pos); in btrfs_file_write_iter()
1809 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1815 atomic_inc(&BTRFS_I(inode)->sync_writers); in btrfs_file_write_iter()
1825 mutex_unlock(&inode->i_mutex); in btrfs_file_write_iter()
1832 spin_lock(&BTRFS_I(inode)->lock); in btrfs_file_write_iter()
1833 BTRFS_I(inode)->last_sub_trans = root->log_transid; in btrfs_file_write_iter()
1834 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_file_write_iter()
1842 atomic_dec(&BTRFS_I(inode)->sync_writers); in btrfs_file_write_iter()
1848 int btrfs_release_file(struct inode *inode, struct file *filp) in btrfs_release_file() argument
1859 &BTRFS_I(inode)->runtime_flags)) in btrfs_release_file()
1860 filemap_flush(inode->i_mapping); in btrfs_release_file()
1864 static int start_ordered_ops(struct inode *inode, loff_t start, loff_t end) in start_ordered_ops() argument
1868 atomic_inc(&BTRFS_I(inode)->sync_writers); in start_ordered_ops()
1869 ret = btrfs_fdatawrite_range(inode, start, end); in start_ordered_ops()
1870 atomic_dec(&BTRFS_I(inode)->sync_writers); in start_ordered_ops()
1889 struct inode *inode = d_inode(dentry); in btrfs_sync_file() local
1890 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_sync_file()
1910 ret = start_ordered_ops(inode, start, end); in btrfs_sync_file()
1914 mutex_lock(&inode->i_mutex); in btrfs_sync_file()
1917 &BTRFS_I(inode)->runtime_flags); in btrfs_sync_file()
1929 ret = btrfs_wait_ordered_range(inode, start, len); in btrfs_sync_file()
1963 ret = start_ordered_ops(inode, start, end); in btrfs_sync_file()
1966 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
2000 if (btrfs_inode_in_log(inode, root->fs_info->generation) || in btrfs_sync_file()
2001 (BTRFS_I(inode)->last_trans <= in btrfs_sync_file()
2004 !btrfs_have_ordered_extents_in_range(inode, start, len)))) { in btrfs_sync_file()
2011 &BTRFS_I(inode)->runtime_flags); in btrfs_sync_file()
2012 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
2036 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
2059 mutex_unlock(&inode->i_mutex); in btrfs_sync_file()
2089 ret = btrfs_wait_ordered_range(inode, start, len); in btrfs_sync_file()
2122 static int hole_mergeable(struct inode *inode, struct extent_buffer *leaf, in hole_mergeable() argument
2132 if (key.objectid != btrfs_ino(inode) || in hole_mergeable()
2151 static int fill_holes(struct btrfs_trans_handle *trans, struct inode *inode, in fill_holes() argument
2154 struct btrfs_root *root = BTRFS_I(inode)->root; in fill_holes()
2158 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in fill_holes()
2165 key.objectid = btrfs_ino(inode); in fill_holes()
2175 if (hole_mergeable(inode, leaf, path->slots[0]-1, offset, end)) { in fill_holes()
2190 if (hole_mergeable(inode, leaf, path->slots[0], offset, end)) { in fill_holes()
2207 ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset, in fill_holes()
2218 btrfs_drop_extent_cache(inode, offset, end - 1, 0); in fill_holes()
2220 &BTRFS_I(inode)->runtime_flags); in fill_holes()
2235 btrfs_drop_extent_cache(inode, offset, end - 1, 0); in fill_holes()
2243 &BTRFS_I(inode)->runtime_flags); in fill_holes()
2255 static int find_first_non_hole(struct inode *inode, u64 *start, u64 *len) in find_first_non_hole() argument
2260 em = btrfs_get_extent(inode, NULL, 0, *start, *len, 0); in find_first_non_hole()
2280 static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len) in btrfs_punch_hole() argument
2282 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_punch_hole()
2304 ret = btrfs_wait_ordered_range(inode, offset, len); in btrfs_punch_hole()
2308 mutex_lock(&inode->i_mutex); in btrfs_punch_hole()
2309 ino_size = round_up(inode->i_size, PAGE_CACHE_SIZE); in btrfs_punch_hole()
2310 ret = find_first_non_hole(inode, &offset, &len); in btrfs_punch_hole()
2319 lockstart = round_up(offset, BTRFS_I(inode)->root->sectorsize); in btrfs_punch_hole()
2321 BTRFS_I(inode)->root->sectorsize) - 1; in btrfs_punch_hole()
2336 ret = btrfs_truncate_page(inode, offset, len, 0); in btrfs_punch_hole()
2346 ret = btrfs_truncate_page(inode, offset, 0, 0); in btrfs_punch_hole()
2348 mutex_unlock(&inode->i_mutex); in btrfs_punch_hole()
2361 ret = find_first_non_hole(inode, &offset, &len); in btrfs_punch_hole()
2375 ret = find_first_non_hole(inode, &tail_start, &tail_len); in btrfs_punch_hole()
2382 ret = btrfs_truncate_page(inode, in btrfs_punch_hole()
2398 truncate_pagecache_range(inode, lockstart, lockend); in btrfs_punch_hole()
2400 lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, in btrfs_punch_hole()
2402 ordered = btrfs_lookup_first_ordered_extent(inode, lockend); in btrfs_punch_hole()
2412 !btrfs_page_exists_in_range(inode, lockstart, lockend)) { in btrfs_punch_hole()
2419 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, in btrfs_punch_hole()
2421 ret = btrfs_wait_ordered_range(inode, lockstart, in btrfs_punch_hole()
2424 mutex_unlock(&inode->i_mutex); in btrfs_punch_hole()
2463 ret = __btrfs_drop_extents(trans, root, inode, path, in btrfs_punch_hole()
2472 ret = fill_holes(trans, inode, path, cur_offset, in btrfs_punch_hole()
2482 ret = btrfs_update_inode(trans, root, inode); in btrfs_punch_hole()
2503 ret = find_first_non_hole(inode, &cur_offset, &len); in btrfs_punch_hole()
2537 ret = fill_holes(trans, inode, path, cur_offset, drop_end); in btrfs_punch_hole()
2548 inode_inc_iversion(inode); in btrfs_punch_hole()
2549 inode->i_mtime = inode->i_ctime = CURRENT_TIME; in btrfs_punch_hole()
2552 ret = btrfs_update_inode(trans, root, inode); in btrfs_punch_hole()
2560 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend, in btrfs_punch_hole()
2575 err = btrfs_update_inode(trans, root, inode); in btrfs_punch_hole()
2579 mutex_unlock(&inode->i_mutex); in btrfs_punch_hole()
2628 struct inode *inode = file_inode(file); in btrfs_fallocate() local
2641 int blocksize = BTRFS_I(inode)->root->sectorsize; in btrfs_fallocate()
2652 return btrfs_punch_hole(inode, offset, len); in btrfs_fallocate()
2659 ret = btrfs_alloc_data_chunk_ondemand(inode, alloc_end - alloc_start); in btrfs_fallocate()
2663 mutex_lock(&inode->i_mutex); in btrfs_fallocate()
2664 ret = inode_newsize_ok(inode, alloc_end); in btrfs_fallocate()
2675 if (alloc_start > inode->i_size) { in btrfs_fallocate()
2676 ret = btrfs_cont_expand(inode, i_size_read(inode), in btrfs_fallocate()
2680 } else if (offset + len > inode->i_size) { in btrfs_fallocate()
2686 ret = btrfs_truncate_page(inode, inode->i_size, 0, 0); in btrfs_fallocate()
2695 ret = btrfs_wait_ordered_range(inode, alloc_start, in btrfs_fallocate()
2707 lock_extent_bits(&BTRFS_I(inode)->io_tree, alloc_start, in btrfs_fallocate()
2709 ordered = btrfs_lookup_first_ordered_extent(inode, in btrfs_fallocate()
2715 unlock_extent_cached(&BTRFS_I(inode)->io_tree, in btrfs_fallocate()
2722 ret = btrfs_wait_ordered_range(inode, alloc_start, in btrfs_fallocate()
2737 em = btrfs_get_extent(inode, NULL, 0, cur_offset, in btrfs_fallocate()
2750 (cur_offset >= inode->i_size && in btrfs_fallocate()
2758 ret = btrfs_qgroup_reserve_data(inode, cur_offset, in btrfs_fallocate()
2775 ret = btrfs_prealloc_file_range(inode, mode, in btrfs_fallocate()
2777 range->len, 1 << inode->i_blkbits, in btrfs_fallocate()
2785 if (actual_end > inode->i_size && in btrfs_fallocate()
2788 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_fallocate()
2799 inode->i_ctime = CURRENT_TIME; in btrfs_fallocate()
2800 i_size_write(inode, actual_end); in btrfs_fallocate()
2801 btrfs_ordered_update_i_size(inode, actual_end, NULL); in btrfs_fallocate()
2802 ret = btrfs_update_inode(trans, root, inode); in btrfs_fallocate()
2810 unlock_extent_cached(&BTRFS_I(inode)->io_tree, alloc_start, locked_end, in btrfs_fallocate()
2820 btrfs_qgroup_free_data(inode, alloc_start, alloc_end - alloc_start); in btrfs_fallocate()
2821 mutex_unlock(&inode->i_mutex); in btrfs_fallocate()
2823 btrfs_free_reserved_data_space(inode, alloc_start, in btrfs_fallocate()
2828 static int find_desired_extent(struct inode *inode, loff_t *offset, int whence) in find_desired_extent() argument
2830 struct btrfs_root *root = BTRFS_I(inode)->root; in find_desired_extent()
2839 if (inode->i_size == 0) in find_desired_extent()
2849 lockend = round_up(i_size_read(inode), root->sectorsize); in find_desired_extent()
2855 lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, 0, in find_desired_extent()
2858 while (start < inode->i_size) { in find_desired_extent()
2859 em = btrfs_get_extent_fiemap(inode, NULL, 0, start, len, 0); in find_desired_extent()
2882 if (whence == SEEK_DATA && start >= inode->i_size) in find_desired_extent()
2885 *offset = min_t(loff_t, start, inode->i_size); in find_desired_extent()
2887 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend, in find_desired_extent()
2894 struct inode *inode = file->f_mapping->host; in btrfs_file_llseek() local
2897 mutex_lock(&inode->i_mutex); in btrfs_file_llseek()
2905 if (offset >= i_size_read(inode)) { in btrfs_file_llseek()
2906 mutex_unlock(&inode->i_mutex); in btrfs_file_llseek()
2910 ret = find_desired_extent(inode, &offset, whence); in btrfs_file_llseek()
2912 mutex_unlock(&inode->i_mutex); in btrfs_file_llseek()
2917 offset = vfs_setpos(file, offset, inode->i_sb->s_maxbytes); in btrfs_file_llseek()
2919 mutex_unlock(&inode->i_mutex); in btrfs_file_llseek()
2957 int btrfs_fdatawrite_range(struct inode *inode, loff_t start, loff_t end) in btrfs_fdatawrite_range() argument
2975 ret = filemap_fdatawrite_range(inode->i_mapping, start, end); in btrfs_fdatawrite_range()
2977 &BTRFS_I(inode)->runtime_flags)) in btrfs_fdatawrite_range()
2978 ret = filemap_fdatawrite_range(inode->i_mapping, start, end); in btrfs_fdatawrite_range()