Lines Matching refs:inode
97 static int btrfs_setsize(struct inode *inode, struct iattr *attr);
98 static int btrfs_truncate(struct inode *inode);
100 static noinline int cow_file_range(struct inode *inode,
104 static struct extent_map *create_pinned_em(struct inode *inode, u64 start,
110 static int btrfs_dirty_inode(struct inode *inode);
113 void btrfs_test_inode_set_ops(struct inode *inode) in btrfs_test_inode_set_ops() argument
115 BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops; in btrfs_test_inode_set_ops()
120 struct inode *inode, struct inode *dir, in btrfs_init_inode_security() argument
125 err = btrfs_init_acl(trans, inode, dir); in btrfs_init_inode_security()
127 err = btrfs_xattr_security_init(trans, inode, dir, qstr); in btrfs_init_inode_security()
138 struct btrfs_root *root, struct inode *inode, in insert_inline_extent() argument
156 inode_add_bytes(inode, size); in insert_inline_extent()
162 key.objectid = btrfs_ino(inode); in insert_inline_extent()
204 page = find_get_page(inode->i_mapping, in insert_inline_extent()
225 BTRFS_I(inode)->disk_i_size = inode->i_size; in insert_inline_extent()
226 ret = btrfs_update_inode(trans, root, inode); in insert_inline_extent()
240 struct inode *inode, u64 start, in cow_file_range_inline() argument
246 u64 isize = i_size_read(inode); in cow_file_range_inline()
287 ret = __btrfs_drop_extents(trans, root, inode, path, in cow_file_range_inline()
298 root, inode, start, in cow_file_range_inline()
309 set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &BTRFS_I(inode)->runtime_flags); in cow_file_range_inline()
310 btrfs_delalloc_release_metadata(inode, end + 1 - start); in cow_file_range_inline()
311 btrfs_drop_extent_cache(inode, start, aligned_end - 1, 0); in cow_file_range_inline()
319 btrfs_qgroup_free_data(inode, 0, PAGE_CACHE_SIZE); in cow_file_range_inline()
336 struct inode *inode; member
366 static inline int inode_need_compress(struct inode *inode) in inode_need_compress() argument
368 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_need_compress()
374 if (BTRFS_I(inode)->flags & BTRFS_INODE_NOCOMPRESS) in inode_need_compress()
377 BTRFS_I(inode)->flags & BTRFS_INODE_COMPRESS || in inode_need_compress()
378 BTRFS_I(inode)->force_compress) in inode_need_compress()
400 static noinline void compress_file_range(struct inode *inode, in compress_file_range() argument
406 struct btrfs_root *root = BTRFS_I(inode)->root; in compress_file_range()
410 u64 isize = i_size_read(inode); in compress_file_range()
426 (start > 0 || end + 1 < BTRFS_I(inode)->disk_i_size)) in compress_file_range()
427 btrfs_add_inode_defrag(NULL, inode); in compress_file_range()
455 (start > 0 || end + 1 < BTRFS_I(inode)->disk_i_size)) in compress_file_range()
479 if (inode_need_compress(inode)) { in compress_file_range()
487 if (BTRFS_I(inode)->force_compress) in compress_file_range()
488 compress_type = BTRFS_I(inode)->force_compress; in compress_file_range()
499 extent_range_clear_dirty_for_io(inode, start, end); in compress_file_range()
502 inode->i_mapping, start, in compress_file_range()
534 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
538 ret = cow_file_range_inline(root, inode, start, end, in compress_file_range()
555 extent_clear_unlock_delalloc(inode, start, end, NULL, in compress_file_range()
600 !(BTRFS_I(inode)->force_compress)) { in compress_file_range()
601 BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS; in compress_file_range()
636 extent_range_redirty_for_io(inode, start, end); in compress_file_range()
674 static noinline void submit_compressed_extents(struct inode *inode, in submit_compressed_extents() argument
681 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_compressed_extents()
682 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in submit_compressed_extents()
692 io_tree = &BTRFS_I(inode)->io_tree; in submit_compressed_extents()
705 ret = cow_file_range(inode, async_cow->locked_page, in submit_compressed_extents()
721 inode, async_extent->start, in submit_compressed_extents()
754 extent_range_redirty_for_io(inode, in submit_compressed_extents()
767 btrfs_drop_extent_cache(inode, async_extent->start, in submit_compressed_extents()
800 btrfs_drop_extent_cache(inode, async_extent->start, in submit_compressed_extents()
808 ret = btrfs_add_ordered_extent_compress(inode, in submit_compressed_extents()
816 btrfs_drop_extent_cache(inode, async_extent->start, in submit_compressed_extents()
825 extent_clear_unlock_delalloc(inode, async_extent->start, in submit_compressed_extents()
831 ret = btrfs_submit_compressed_write(inode, in submit_compressed_extents()
838 struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree; in submit_compressed_extents()
843 p->mapping = inode->i_mapping; in submit_compressed_extents()
847 extent_clear_unlock_delalloc(inode, start, end, NULL, 0, in submit_compressed_extents()
860 extent_clear_unlock_delalloc(inode, async_extent->start, in submit_compressed_extents()
873 static u64 get_extent_allocation_hint(struct inode *inode, u64 start, in get_extent_allocation_hint() argument
876 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in get_extent_allocation_hint()
918 static noinline int cow_file_range(struct inode *inode, in cow_file_range() argument
924 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range()
933 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in cow_file_range()
936 if (btrfs_is_free_space_inode(inode)) { in cow_file_range()
948 (start > 0 || end + 1 < BTRFS_I(inode)->disk_i_size)) in cow_file_range()
949 btrfs_add_inode_defrag(NULL, inode); in cow_file_range()
953 ret = cow_file_range_inline(root, inode, start, end, 0, 0, in cow_file_range()
956 extent_clear_unlock_delalloc(inode, start, end, NULL, in cow_file_range()
974 alloc_hint = get_extent_allocation_hint(inode, start, num_bytes); in cow_file_range()
975 btrfs_drop_extent_cache(inode, start, start + num_bytes - 1, 0); in cow_file_range()
1015 btrfs_drop_extent_cache(inode, start, in cow_file_range()
1022 ret = btrfs_add_ordered_extent(inode, start, ins.objectid, in cow_file_range()
1029 ret = btrfs_reloc_clone_csums(inode, start, in cow_file_range()
1048 extent_clear_unlock_delalloc(inode, start, in cow_file_range()
1061 btrfs_drop_extent_cache(inode, start, start + ram_size - 1, 0); in cow_file_range()
1065 extent_clear_unlock_delalloc(inode, start, end, locked_page, in cow_file_range()
1082 compress_file_range(async_cow->inode, async_cow->locked_page, in async_cow_start()
1086 btrfs_add_delayed_iput(async_cow->inode); in async_cow_start()
1087 async_cow->inode = NULL; in async_cow_start()
1114 if (async_cow->inode) in async_cow_submit()
1115 submit_compressed_extents(async_cow->inode, async_cow); in async_cow_submit()
1122 if (async_cow->inode) in async_cow_free()
1123 btrfs_add_delayed_iput(async_cow->inode); in async_cow_free()
1127 static int cow_file_range_async(struct inode *inode, struct page *locked_page, in cow_file_range_async() argument
1132 struct btrfs_root *root = BTRFS_I(inode)->root; in cow_file_range_async()
1137 clear_extent_bit(&BTRFS_I(inode)->io_tree, start, end, EXTENT_LOCKED, in cow_file_range_async()
1142 async_cow->inode = igrab(inode); in cow_file_range_async()
1147 if (BTRFS_I(inode)->flags & BTRFS_INODE_NOCOMPRESS && in cow_file_range_async()
1215 static noinline int run_delalloc_nocow(struct inode *inode, in run_delalloc_nocow() argument
1220 struct btrfs_root *root = BTRFS_I(inode)->root; in run_delalloc_nocow()
1240 u64 ino = btrfs_ino(inode); in run_delalloc_nocow()
1244 extent_clear_unlock_delalloc(inode, start, end, locked_page, in run_delalloc_nocow()
1254 nolock = btrfs_is_free_space_inode(inode); in run_delalloc_nocow()
1262 extent_clear_unlock_delalloc(inode, start, end, locked_page, in run_delalloc_nocow()
1402 ret = cow_file_range(inode, locked_page, in run_delalloc_nocow()
1416 em_tree = &BTRFS_I(inode)->extent_tree; in run_delalloc_nocow()
1440 btrfs_drop_extent_cache(inode, em->start, in run_delalloc_nocow()
1448 ret = btrfs_add_ordered_extent(inode, cur_offset, disk_bytenr, in run_delalloc_nocow()
1454 ret = btrfs_reloc_clone_csums(inode, cur_offset, in run_delalloc_nocow()
1463 extent_clear_unlock_delalloc(inode, cur_offset, in run_delalloc_nocow()
1482 ret = cow_file_range(inode, locked_page, cow_start, end, in run_delalloc_nocow()
1494 extent_clear_unlock_delalloc(inode, cur_offset, end, in run_delalloc_nocow()
1505 static inline int need_force_cow(struct inode *inode, u64 start, u64 end) in need_force_cow() argument
1508 if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW) && in need_force_cow()
1509 !(BTRFS_I(inode)->flags & BTRFS_INODE_PREALLOC)) in need_force_cow()
1517 if (BTRFS_I(inode)->defrag_bytes && in need_force_cow()
1518 test_range_bit(&BTRFS_I(inode)->io_tree, start, end, in need_force_cow()
1528 static int run_delalloc_range(struct inode *inode, struct page *locked_page, in run_delalloc_range() argument
1533 int force_cow = need_force_cow(inode, start, end); in run_delalloc_range()
1535 if (BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW && !force_cow) { in run_delalloc_range()
1536 ret = run_delalloc_nocow(inode, locked_page, start, end, in run_delalloc_range()
1538 } else if (BTRFS_I(inode)->flags & BTRFS_INODE_PREALLOC && !force_cow) { in run_delalloc_range()
1539 ret = run_delalloc_nocow(inode, locked_page, start, end, in run_delalloc_range()
1541 } else if (!inode_need_compress(inode)) { in run_delalloc_range()
1542 ret = cow_file_range(inode, locked_page, start, end, in run_delalloc_range()
1546 &BTRFS_I(inode)->runtime_flags); in run_delalloc_range()
1547 ret = cow_file_range_async(inode, locked_page, start, end, in run_delalloc_range()
1553 static void btrfs_split_extent_hook(struct inode *inode, in btrfs_split_extent_hook() argument
1582 spin_lock(&BTRFS_I(inode)->lock); in btrfs_split_extent_hook()
1583 BTRFS_I(inode)->outstanding_extents++; in btrfs_split_extent_hook()
1584 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_split_extent_hook()
1593 static void btrfs_merge_extent_hook(struct inode *inode, in btrfs_merge_extent_hook() argument
1611 spin_lock(&BTRFS_I(inode)->lock); in btrfs_merge_extent_hook()
1612 BTRFS_I(inode)->outstanding_extents--; in btrfs_merge_extent_hook()
1613 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_merge_extent_hook()
1646 spin_lock(&BTRFS_I(inode)->lock); in btrfs_merge_extent_hook()
1647 BTRFS_I(inode)->outstanding_extents--; in btrfs_merge_extent_hook()
1648 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_merge_extent_hook()
1652 struct inode *inode) in btrfs_add_delalloc_inodes() argument
1655 if (list_empty(&BTRFS_I(inode)->delalloc_inodes)) { in btrfs_add_delalloc_inodes()
1656 list_add_tail(&BTRFS_I(inode)->delalloc_inodes, in btrfs_add_delalloc_inodes()
1659 &BTRFS_I(inode)->runtime_flags); in btrfs_add_delalloc_inodes()
1673 struct inode *inode) in btrfs_del_delalloc_inode() argument
1676 if (!list_empty(&BTRFS_I(inode)->delalloc_inodes)) { in btrfs_del_delalloc_inode()
1677 list_del_init(&BTRFS_I(inode)->delalloc_inodes); in btrfs_del_delalloc_inode()
1679 &BTRFS_I(inode)->runtime_flags); in btrfs_del_delalloc_inode()
1696 static void btrfs_set_bit_hook(struct inode *inode, in btrfs_set_bit_hook() argument
1708 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_bit_hook()
1710 bool do_list = !btrfs_is_free_space_inode(inode); in btrfs_set_bit_hook()
1715 spin_lock(&BTRFS_I(inode)->lock); in btrfs_set_bit_hook()
1716 BTRFS_I(inode)->outstanding_extents++; in btrfs_set_bit_hook()
1717 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_set_bit_hook()
1726 spin_lock(&BTRFS_I(inode)->lock); in btrfs_set_bit_hook()
1727 BTRFS_I(inode)->delalloc_bytes += len; in btrfs_set_bit_hook()
1729 BTRFS_I(inode)->defrag_bytes += len; in btrfs_set_bit_hook()
1731 &BTRFS_I(inode)->runtime_flags)) in btrfs_set_bit_hook()
1732 btrfs_add_delalloc_inodes(root, inode); in btrfs_set_bit_hook()
1733 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_set_bit_hook()
1740 static void btrfs_clear_bit_hook(struct inode *inode, in btrfs_clear_bit_hook() argument
1748 spin_lock(&BTRFS_I(inode)->lock); in btrfs_clear_bit_hook()
1750 BTRFS_I(inode)->defrag_bytes -= len; in btrfs_clear_bit_hook()
1751 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_clear_bit_hook()
1759 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_clear_bit_hook()
1760 bool do_list = !btrfs_is_free_space_inode(inode); in btrfs_clear_bit_hook()
1765 spin_lock(&BTRFS_I(inode)->lock); in btrfs_clear_bit_hook()
1766 BTRFS_I(inode)->outstanding_extents -= num_extents; in btrfs_clear_bit_hook()
1767 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_clear_bit_hook()
1777 btrfs_delalloc_release_metadata(inode, len); in btrfs_clear_bit_hook()
1785 btrfs_free_reserved_data_space_noquota(inode, in btrfs_clear_bit_hook()
1790 spin_lock(&BTRFS_I(inode)->lock); in btrfs_clear_bit_hook()
1791 BTRFS_I(inode)->delalloc_bytes -= len; in btrfs_clear_bit_hook()
1792 if (do_list && BTRFS_I(inode)->delalloc_bytes == 0 && in btrfs_clear_bit_hook()
1794 &BTRFS_I(inode)->runtime_flags)) in btrfs_clear_bit_hook()
1795 btrfs_del_delalloc_inode(root, inode); in btrfs_clear_bit_hook()
1796 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_clear_bit_hook()
1836 static int __btrfs_submit_bio_start(struct inode *inode, int rw, in __btrfs_submit_bio_start() argument
1841 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start()
1844 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in __btrfs_submit_bio_start()
1857 static int __btrfs_submit_bio_done(struct inode *inode, int rw, struct bio *bio, in __btrfs_submit_bio_done() argument
1861 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_done()
1876 static int btrfs_submit_bio_hook(struct inode *inode, int rw, struct bio *bio, in btrfs_submit_bio_hook() argument
1880 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_bio_hook()
1884 int async = !atomic_read(&BTRFS_I(inode)->sync_writers); in btrfs_submit_bio_hook()
1886 skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM; in btrfs_submit_bio_hook()
1888 if (btrfs_is_free_space_inode(inode)) in btrfs_submit_bio_hook()
1897 ret = btrfs_submit_compressed_read(inode, bio, in btrfs_submit_bio_hook()
1902 ret = btrfs_lookup_bio_sums(root, inode, bio, NULL); in btrfs_submit_bio_hook()
1912 ret = btrfs_wq_submit_bio(BTRFS_I(inode)->root->fs_info, in btrfs_submit_bio_hook()
1913 inode, rw, bio, mirror_num, in btrfs_submit_bio_hook()
1919 ret = btrfs_csum_one_bio(root, inode, bio, 0, 0); in btrfs_submit_bio_hook()
1940 struct inode *inode, u64 file_offset, in add_pending_csums() argument
1948 BTRFS_I(inode)->root->fs_info->csum_root, sum); in add_pending_csums()
1954 int btrfs_set_extent_delalloc(struct inode *inode, u64 start, u64 end, in btrfs_set_extent_delalloc() argument
1958 return set_extent_delalloc(&BTRFS_I(inode)->io_tree, start, end, in btrfs_set_extent_delalloc()
1974 struct inode *inode; in btrfs_writepage_fixup_worker() local
1988 inode = page->mapping->host; in btrfs_writepage_fixup_worker()
1992 lock_extent_bits(&BTRFS_I(inode)->io_tree, page_start, page_end, 0, in btrfs_writepage_fixup_worker()
1999 ordered = btrfs_lookup_ordered_extent(inode, page_start); in btrfs_writepage_fixup_worker()
2001 unlock_extent_cached(&BTRFS_I(inode)->io_tree, page_start, in btrfs_writepage_fixup_worker()
2004 btrfs_start_ordered_extent(inode, ordered, 1); in btrfs_writepage_fixup_worker()
2009 ret = btrfs_delalloc_reserve_space(inode, page_start, in btrfs_writepage_fixup_worker()
2018 btrfs_set_extent_delalloc(inode, page_start, page_end, &cached_state); in btrfs_writepage_fixup_worker()
2022 unlock_extent_cached(&BTRFS_I(inode)->io_tree, page_start, page_end, in btrfs_writepage_fixup_worker()
2043 struct inode *inode = page->mapping->host; in btrfs_writepage_start_hook() local
2045 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_start_hook()
2068 struct inode *inode, u64 file_pos, in insert_reserved_file_extent() argument
2074 struct btrfs_root *root = BTRFS_I(inode)->root; in insert_reserved_file_extent()
2095 ret = __btrfs_drop_extents(trans, root, inode, path, file_pos, in insert_reserved_file_extent()
2102 ins.objectid = btrfs_ino(inode); in insert_reserved_file_extent()
2129 inode_add_bytes(inode, num_bytes); in insert_reserved_file_extent()
2136 btrfs_ino(inode), file_pos, in insert_reserved_file_extent()
2142 btrfs_qgroup_release_data(inode, file_pos, ram_bytes); in insert_reserved_file_extent()
2176 struct inode *inode; member
2255 struct inode *inode = new->inode; in record_one_backref() local
2261 if (BTRFS_I(inode)->root->root_key.objectid == root_id && in record_one_backref()
2262 inum == btrfs_ino(inode)) in record_one_backref()
2269 fs_info = BTRFS_I(inode)->root->fs_info; in record_one_backref()
2367 struct btrfs_fs_info *fs_info = BTRFS_I(new->inode)->root->fs_info; in record_extent_backrefs()
2431 struct inode *src_inode = new->inode; in relink_extent_backref()
2432 struct inode *inode; in relink_extent_backref() local
2473 inode = btrfs_iget(fs_info->sb, &key, root, NULL); in relink_extent_backref()
2474 if (IS_ERR(inode)) { in relink_extent_backref()
2484 lock_extent_bits(&BTRFS_I(inode)->io_tree, lock_start, lock_end, in relink_extent_backref()
2487 ordered = btrfs_lookup_first_ordered_extent(inode, lock_end); in relink_extent_backref()
2529 ret = btrfs_drop_extents(trans, root, inode, start, in relink_extent_backref()
2534 key.objectid = btrfs_ino(inode); in relink_extent_backref()
2561 inode_add_bytes(inode, len); in relink_extent_backref()
2594 inode_add_bytes(inode, len); in relink_extent_backref()
2612 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lock_start, lock_end, in relink_extent_backref()
2614 iput(inode); in relink_extent_backref()
2636 struct inode *inode; in relink_file_extents() local
2641 inode = new->inode; in relink_file_extents()
2642 root = BTRFS_I(inode)->root; in relink_file_extents()
2684 record_old_file_extents(struct inode *inode, in record_old_file_extents() argument
2687 struct btrfs_root *root = BTRFS_I(inode)->root; in record_old_file_extents()
2698 new->inode = inode; in record_old_file_extents()
2711 key.objectid = btrfs_ino(inode); in record_old_file_extents()
2746 if (key.objectid != btrfs_ino(inode)) in record_old_file_extents()
2817 struct inode *inode = ordered_extent->inode; in btrfs_finish_ordered_io() local
2818 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_finish_ordered_io()
2820 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in btrfs_finish_ordered_io()
2829 nolock = btrfs_is_free_space_inode(inode); in btrfs_finish_ordered_io()
2836 btrfs_free_io_failure_record(inode, ordered_extent->file_offset, in btrfs_finish_ordered_io()
2856 btrfs_qgroup_free_data(inode, ordered_extent->file_offset, in btrfs_finish_ordered_io()
2858 btrfs_ordered_update_i_size(inode, 0, ordered_extent); in btrfs_finish_ordered_io()
2869 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2884 if (0 && last_snapshot >= BTRFS_I(inode)->generation) in btrfs_finish_ordered_io()
2886 new = record_old_file_extents(inode, ordered_extent); in btrfs_finish_ordered_io()
2909 ret = btrfs_mark_extent_written(trans, inode, in btrfs_finish_ordered_io()
2915 ret = insert_reserved_file_extent(trans, inode, in btrfs_finish_ordered_io()
2927 unpin_extent_cache(&BTRFS_I(inode)->extent_tree, in btrfs_finish_ordered_io()
2935 add_pending_csums(trans, inode, ordered_extent->file_offset, in btrfs_finish_ordered_io()
2938 btrfs_ordered_update_i_size(inode, 0, ordered_extent); in btrfs_finish_ordered_io()
2939 ret = btrfs_update_inode_fallback(trans, root, inode); in btrfs_finish_ordered_io()
2951 btrfs_delalloc_release_metadata(inode, ordered_extent->len); in btrfs_finish_ordered_io()
2966 btrfs_drop_extent_cache(inode, start, end, 0); in btrfs_finish_ordered_io()
2986 btrfs_remove_ordered_extent(inode, ordered_extent); in btrfs_finish_ordered_io()
3016 struct inode *inode = page->mapping->host; in btrfs_writepage_end_io_hook() local
3017 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_writepage_end_io_hook()
3025 if (!btrfs_dec_test_ordered_pending(inode, &ordered_extent, start, in btrfs_writepage_end_io_hook()
3029 if (btrfs_is_free_space_inode(inode)) { in btrfs_writepage_end_io_hook()
3044 static int __readpage_endio_check(struct inode *inode, in __readpage_endio_check() argument
3064 btrfs_warn_rl(BTRFS_I(inode)->root->fs_info, in __readpage_endio_check()
3066 btrfs_ino(inode), start, csum, csum_expected); in __readpage_endio_check()
3085 struct inode *inode = page->mapping->host; in btrfs_readpage_end_io_hook() local
3086 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in btrfs_readpage_end_io_hook()
3087 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_readpage_end_io_hook()
3094 if (BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM) in btrfs_readpage_end_io_hook()
3104 phy_offset >>= inode->i_sb->s_blocksize_bits; in btrfs_readpage_end_io_hook()
3105 return __readpage_endio_check(inode, io_bio, phy_offset, page, offset, in btrfs_readpage_end_io_hook()
3111 struct inode *inode; member
3116 void btrfs_add_delayed_iput(struct inode *inode) in btrfs_add_delayed_iput() argument
3118 struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; in btrfs_add_delayed_iput()
3121 if (atomic_add_unless(&inode->i_count, -1, 1)) in btrfs_add_delayed_iput()
3125 delayed->inode = inode; in btrfs_add_delayed_iput()
3152 iput(delayed->inode); in btrfs_run_delayed_iputs()
3211 int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode) in btrfs_orphan_add() argument
3213 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_add()
3234 &BTRFS_I(inode)->runtime_flags)) { in btrfs_orphan_add()
3251 &BTRFS_I(inode)->runtime_flags)) in btrfs_orphan_add()
3257 ret = btrfs_orphan_reserve_metadata(trans, inode); in btrfs_orphan_add()
3263 ret = btrfs_insert_orphan_item(trans, root, btrfs_ino(inode)); in btrfs_orphan_add()
3268 &BTRFS_I(inode)->runtime_flags); in btrfs_orphan_add()
3269 btrfs_orphan_release_metadata(inode); in btrfs_orphan_add()
3273 &BTRFS_I(inode)->runtime_flags); in btrfs_orphan_add()
3298 struct inode *inode) in btrfs_orphan_del() argument
3300 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_orphan_del()
3307 &BTRFS_I(inode)->runtime_flags)) in btrfs_orphan_del()
3311 &BTRFS_I(inode)->runtime_flags)) in btrfs_orphan_del()
3319 btrfs_ino(inode)); in btrfs_orphan_del()
3323 btrfs_orphan_release_metadata(inode); in btrfs_orphan_del()
3338 struct inode *inode; in btrfs_orphan_cleanup() local
3404 inode = btrfs_iget(root->fs_info->sb, &found_key, root, NULL); in btrfs_orphan_cleanup()
3405 ret = PTR_ERR_OR_ZERO(inode); in btrfs_orphan_cleanup()
3466 &BTRFS_I(inode)->runtime_flags); in btrfs_orphan_cleanup()
3470 if (inode->i_nlink) { in btrfs_orphan_cleanup()
3471 if (WARN_ON(!S_ISREG(inode->i_mode))) { in btrfs_orphan_cleanup()
3472 iput(inode); in btrfs_orphan_cleanup()
3480 iput(inode); in btrfs_orphan_cleanup()
3484 ret = btrfs_orphan_add(trans, inode); in btrfs_orphan_cleanup()
3487 iput(inode); in btrfs_orphan_cleanup()
3491 ret = btrfs_truncate(inode); in btrfs_orphan_cleanup()
3493 btrfs_orphan_del(NULL, inode); in btrfs_orphan_cleanup()
3499 iput(inode); in btrfs_orphan_cleanup()
3604 static void btrfs_read_locked_inode(struct inode *inode) in btrfs_read_locked_inode() argument
3609 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_read_locked_inode()
3618 ret = btrfs_fill_inode(inode, &rdev); in btrfs_read_locked_inode()
3626 memcpy(&location, &BTRFS_I(inode)->location, sizeof(location)); in btrfs_read_locked_inode()
3639 inode->i_mode = btrfs_inode_mode(leaf, inode_item); in btrfs_read_locked_inode()
3640 set_nlink(inode, btrfs_inode_nlink(leaf, inode_item)); in btrfs_read_locked_inode()
3641 i_uid_write(inode, btrfs_inode_uid(leaf, inode_item)); in btrfs_read_locked_inode()
3642 i_gid_write(inode, btrfs_inode_gid(leaf, inode_item)); in btrfs_read_locked_inode()
3643 btrfs_i_size_write(inode, btrfs_inode_size(leaf, inode_item)); in btrfs_read_locked_inode()
3645 inode->i_atime.tv_sec = btrfs_timespec_sec(leaf, &inode_item->atime); in btrfs_read_locked_inode()
3646 inode->i_atime.tv_nsec = btrfs_timespec_nsec(leaf, &inode_item->atime); in btrfs_read_locked_inode()
3648 inode->i_mtime.tv_sec = btrfs_timespec_sec(leaf, &inode_item->mtime); in btrfs_read_locked_inode()
3649 inode->i_mtime.tv_nsec = btrfs_timespec_nsec(leaf, &inode_item->mtime); in btrfs_read_locked_inode()
3651 inode->i_ctime.tv_sec = btrfs_timespec_sec(leaf, &inode_item->ctime); in btrfs_read_locked_inode()
3652 inode->i_ctime.tv_nsec = btrfs_timespec_nsec(leaf, &inode_item->ctime); in btrfs_read_locked_inode()
3654 BTRFS_I(inode)->i_otime.tv_sec = in btrfs_read_locked_inode()
3656 BTRFS_I(inode)->i_otime.tv_nsec = in btrfs_read_locked_inode()
3659 inode_set_bytes(inode, btrfs_inode_nbytes(leaf, inode_item)); in btrfs_read_locked_inode()
3660 BTRFS_I(inode)->generation = btrfs_inode_generation(leaf, inode_item); in btrfs_read_locked_inode()
3661 BTRFS_I(inode)->last_trans = btrfs_inode_transid(leaf, inode_item); in btrfs_read_locked_inode()
3663 inode->i_version = btrfs_inode_sequence(leaf, inode_item); in btrfs_read_locked_inode()
3664 inode->i_generation = BTRFS_I(inode)->generation; in btrfs_read_locked_inode()
3665 inode->i_rdev = 0; in btrfs_read_locked_inode()
3668 BTRFS_I(inode)->index_cnt = (u64)-1; in btrfs_read_locked_inode()
3669 BTRFS_I(inode)->flags = btrfs_inode_flags(leaf, inode_item); in btrfs_read_locked_inode()
3681 if (BTRFS_I(inode)->last_trans == root->fs_info->generation) in btrfs_read_locked_inode()
3683 &BTRFS_I(inode)->runtime_flags); in btrfs_read_locked_inode()
3712 BTRFS_I(inode)->last_unlink_trans = BTRFS_I(inode)->last_trans; in btrfs_read_locked_inode()
3715 if (inode->i_nlink != 1 || in btrfs_read_locked_inode()
3720 if (location.objectid != btrfs_ino(inode)) in btrfs_read_locked_inode()
3728 BTRFS_I(inode)->dir_index = btrfs_inode_ref_index(leaf, ref); in btrfs_read_locked_inode()
3733 BTRFS_I(inode)->dir_index = btrfs_inode_extref_index(leaf, in btrfs_read_locked_inode()
3742 btrfs_ino(inode), &first_xattr_slot); in btrfs_read_locked_inode()
3745 ret = btrfs_load_inode_props(inode, path); in btrfs_read_locked_inode()
3749 btrfs_ino(inode), in btrfs_read_locked_inode()
3755 cache_no_acl(inode); in btrfs_read_locked_inode()
3757 switch (inode->i_mode & S_IFMT) { in btrfs_read_locked_inode()
3759 inode->i_mapping->a_ops = &btrfs_aops; in btrfs_read_locked_inode()
3760 BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops; in btrfs_read_locked_inode()
3761 inode->i_fop = &btrfs_file_operations; in btrfs_read_locked_inode()
3762 inode->i_op = &btrfs_file_inode_operations; in btrfs_read_locked_inode()
3765 inode->i_fop = &btrfs_dir_file_operations; in btrfs_read_locked_inode()
3767 inode->i_op = &btrfs_dir_ro_inode_operations; in btrfs_read_locked_inode()
3769 inode->i_op = &btrfs_dir_inode_operations; in btrfs_read_locked_inode()
3772 inode->i_op = &btrfs_symlink_inode_operations; in btrfs_read_locked_inode()
3773 inode->i_mapping->a_ops = &btrfs_symlink_aops; in btrfs_read_locked_inode()
3776 inode->i_op = &btrfs_special_inode_operations; in btrfs_read_locked_inode()
3777 init_special_inode(inode, inode->i_mode, rdev); in btrfs_read_locked_inode()
3781 btrfs_update_iflags(inode); in btrfs_read_locked_inode()
3786 make_bad_inode(inode); in btrfs_read_locked_inode()
3795 struct inode *inode) in fill_inode_item() argument
3801 btrfs_set_token_inode_uid(leaf, item, i_uid_read(inode), &token); in fill_inode_item()
3802 btrfs_set_token_inode_gid(leaf, item, i_gid_read(inode), &token); in fill_inode_item()
3803 btrfs_set_token_inode_size(leaf, item, BTRFS_I(inode)->disk_i_size, in fill_inode_item()
3805 btrfs_set_token_inode_mode(leaf, item, inode->i_mode, &token); in fill_inode_item()
3806 btrfs_set_token_inode_nlink(leaf, item, inode->i_nlink, &token); in fill_inode_item()
3809 inode->i_atime.tv_sec, &token); in fill_inode_item()
3811 inode->i_atime.tv_nsec, &token); in fill_inode_item()
3814 inode->i_mtime.tv_sec, &token); in fill_inode_item()
3816 inode->i_mtime.tv_nsec, &token); in fill_inode_item()
3819 inode->i_ctime.tv_sec, &token); in fill_inode_item()
3821 inode->i_ctime.tv_nsec, &token); in fill_inode_item()
3824 BTRFS_I(inode)->i_otime.tv_sec, &token); in fill_inode_item()
3826 BTRFS_I(inode)->i_otime.tv_nsec, &token); in fill_inode_item()
3828 btrfs_set_token_inode_nbytes(leaf, item, inode_get_bytes(inode), in fill_inode_item()
3830 btrfs_set_token_inode_generation(leaf, item, BTRFS_I(inode)->generation, in fill_inode_item()
3832 btrfs_set_token_inode_sequence(leaf, item, inode->i_version, &token); in fill_inode_item()
3834 btrfs_set_token_inode_rdev(leaf, item, inode->i_rdev, &token); in fill_inode_item()
3835 btrfs_set_token_inode_flags(leaf, item, BTRFS_I(inode)->flags, &token); in fill_inode_item()
3843 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode_item() argument
3855 ret = btrfs_lookup_inode(trans, root, path, &BTRFS_I(inode)->location, in btrfs_update_inode_item()
3867 fill_inode_item(trans, leaf, inode_item, inode); in btrfs_update_inode_item()
3869 btrfs_set_inode_last_trans(trans, inode); in btrfs_update_inode_item()
3880 struct btrfs_root *root, struct inode *inode) in btrfs_update_inode() argument
3891 if (!btrfs_is_free_space_inode(inode) in btrfs_update_inode()
3896 ret = btrfs_delayed_update_inode(trans, root, inode); in btrfs_update_inode()
3898 btrfs_set_inode_last_trans(trans, inode); in btrfs_update_inode()
3902 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode()
3907 struct inode *inode) in btrfs_update_inode_fallback() argument
3911 ret = btrfs_update_inode(trans, root, inode); in btrfs_update_inode_fallback()
3913 return btrfs_update_inode_item(trans, root, inode); in btrfs_update_inode_fallback()
3924 struct inode *dir, struct inode *inode, in __btrfs_unlink_inode() argument
3933 u64 ino = btrfs_ino(inode); in __btrfs_unlink_inode()
3970 if (BTRFS_I(inode)->dir_index) { in __btrfs_unlink_inode()
3971 ret = btrfs_delayed_delete_inode_ref(inode); in __btrfs_unlink_inode()
3973 index = BTRFS_I(inode)->dir_index; in __btrfs_unlink_inode()
3995 inode, dir_ino); in __btrfs_unlink_inode()
4013 inode_inc_iversion(inode); in __btrfs_unlink_inode()
4015 inode->i_ctime = dir->i_mtime = dir->i_ctime = CURRENT_TIME; in __btrfs_unlink_inode()
4023 struct inode *dir, struct inode *inode, in btrfs_unlink_inode() argument
4027 ret = __btrfs_unlink_inode(trans, root, dir, inode, name, name_len); in btrfs_unlink_inode()
4029 drop_nlink(inode); in btrfs_unlink_inode()
4030 ret = btrfs_update_inode(trans, root, inode); in btrfs_unlink_inode()
4043 static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir) in __unlink_start_trans()
4057 static int btrfs_unlink(struct inode *dir, struct dentry *dentry) in btrfs_unlink()
4061 struct inode *inode = d_inode(dentry); in btrfs_unlink() local
4075 if (inode->i_nlink == 0) { in btrfs_unlink()
4076 ret = btrfs_orphan_add(trans, inode); in btrfs_unlink()
4089 struct inode *dir, u64 objectid, in btrfs_unlink_subvol()
4167 static int btrfs_rmdir(struct inode *dir, struct dentry *dentry) in btrfs_rmdir()
4169 struct inode *inode = d_inode(dentry); in btrfs_rmdir() local
4174 if (inode->i_size > BTRFS_EMPTY_DIR_SIZE) in btrfs_rmdir()
4176 if (btrfs_ino(inode) == BTRFS_FIRST_FREE_OBJECTID) in btrfs_rmdir()
4183 if (unlikely(btrfs_ino(inode) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { in btrfs_rmdir()
4185 BTRFS_I(inode)->location.objectid, in btrfs_rmdir()
4191 err = btrfs_orphan_add(trans, inode); in btrfs_rmdir()
4199 btrfs_i_size_write(inode, 0); in btrfs_rmdir()
4222 static int truncate_inline_extent(struct inode *inode, in truncate_inline_extent() argument
4232 struct btrfs_root *root = BTRFS_I(inode)->root; in truncate_inline_extent()
4250 return btrfs_truncate_page(inode, offset, page_end - offset, 0); in truncate_inline_extent()
4258 inode_sub_bytes(inode, item_end + 1 - new_size); in truncate_inline_extent()
4276 struct inode *inode, in btrfs_truncate_inode_items() argument
4297 u64 ino = btrfs_ino(inode); in btrfs_truncate_inode_items()
4309 if (!btrfs_is_free_space_inode(inode) && in btrfs_truncate_inode_items()
4325 btrfs_drop_extent_cache(inode, ALIGN(new_size, in btrfs_truncate_inode_items()
4334 if (min_type == 0 && root == BTRFS_I(inode)->root) in btrfs_truncate_inode_items()
4335 btrfs_kill_delayed_inode_items(inode); in btrfs_truncate_inode_items()
4433 inode_sub_bytes(inode, num_dec); in btrfs_truncate_inode_items()
4448 inode_sub_bytes(inode, num_dec); in btrfs_truncate_inode_items()
4479 err = truncate_inline_extent(inode, path, in btrfs_truncate_inode_items()
4490 inode_sub_bytes(inode, item_end + 1 - new_size); in btrfs_truncate_inode_items()
4586 btrfs_ordered_update_i_size(inode, last_size, NULL); in btrfs_truncate_inode_items()
4613 int btrfs_truncate_page(struct inode *inode, loff_t from, loff_t len, in btrfs_truncate_page() argument
4616 struct address_space *mapping = inode->i_mapping; in btrfs_truncate_page()
4617 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate_page()
4618 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in btrfs_truncate_page()
4634 ret = btrfs_delalloc_reserve_space(inode, in btrfs_truncate_page()
4642 btrfs_delalloc_release_space(inode, in btrfs_truncate_page()
4670 ordered = btrfs_lookup_ordered_extent(inode, page_start); in btrfs_truncate_page()
4676 btrfs_start_ordered_extent(inode, ordered, 1); in btrfs_truncate_page()
4681 clear_extent_bit(&BTRFS_I(inode)->io_tree, page_start, page_end, in btrfs_truncate_page()
4686 ret = btrfs_set_extent_delalloc(inode, page_start, page_end, in btrfs_truncate_page()
4712 btrfs_delalloc_release_space(inode, page_start, in btrfs_truncate_page()
4720 static int maybe_insert_hole(struct btrfs_root *root, struct inode *inode, in maybe_insert_hole() argument
4731 BTRFS_I(inode)->last_trans = root->fs_info->generation; in maybe_insert_hole()
4732 BTRFS_I(inode)->last_sub_trans = root->log_transid; in maybe_insert_hole()
4733 BTRFS_I(inode)->last_log_commit = root->last_log_commit; in maybe_insert_hole()
4746 ret = btrfs_drop_extents(trans, root, inode, offset, offset + len, 1); in maybe_insert_hole()
4753 ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset, in maybe_insert_hole()
4758 btrfs_update_inode(trans, root, inode); in maybe_insert_hole()
4769 int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size) in btrfs_cont_expand() argument
4771 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_cont_expand()
4772 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in btrfs_cont_expand()
4775 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in btrfs_cont_expand()
4788 err = btrfs_truncate_page(inode, oldsize, 0, 0); in btrfs_cont_expand()
4800 ordered = btrfs_lookup_ordered_range(inode, hole_start, in btrfs_cont_expand()
4806 btrfs_start_ordered_extent(inode, ordered, 1); in btrfs_cont_expand()
4812 em = btrfs_get_extent(inode, NULL, 0, cur_offset, in btrfs_cont_expand()
4825 err = maybe_insert_hole(root, inode, cur_offset, in btrfs_cont_expand()
4829 btrfs_drop_extent_cache(inode, cur_offset, in btrfs_cont_expand()
4834 &BTRFS_I(inode)->runtime_flags); in btrfs_cont_expand()
4855 btrfs_drop_extent_cache(inode, cur_offset, in btrfs_cont_expand()
4894 static int btrfs_setsize(struct inode *inode, struct iattr *attr) in btrfs_setsize() argument
4896 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setsize()
4898 loff_t oldsize = i_size_read(inode); in btrfs_setsize()
4910 inode_inc_iversion(inode); in btrfs_setsize()
4912 inode->i_ctime = inode->i_mtime = in btrfs_setsize()
4913 current_fs_time(inode->i_sb); in btrfs_setsize()
4917 truncate_pagecache(inode, newsize); in btrfs_setsize()
4926 ret = btrfs_cont_expand(inode, oldsize, newsize); in btrfs_setsize()
4938 i_size_write(inode, newsize); in btrfs_setsize()
4939 btrfs_ordered_update_i_size(inode, i_size_read(inode), NULL); in btrfs_setsize()
4940 ret = btrfs_update_inode(trans, root, inode); in btrfs_setsize()
4952 &BTRFS_I(inode)->runtime_flags); in btrfs_setsize()
4972 ret = btrfs_orphan_add(trans, inode); in btrfs_setsize()
4978 truncate_setsize(inode, newsize); in btrfs_setsize()
4981 btrfs_inode_block_unlocked_dio(inode); in btrfs_setsize()
4982 inode_dio_wait(inode); in btrfs_setsize()
4983 btrfs_inode_resume_unlocked_dio(inode); in btrfs_setsize()
4985 ret = btrfs_truncate(inode); in btrfs_setsize()
4986 if (ret && inode->i_nlink) { in btrfs_setsize()
4997 btrfs_orphan_del(NULL, inode); in btrfs_setsize()
5000 i_size_write(inode, BTRFS_I(inode)->disk_i_size); in btrfs_setsize()
5001 err = btrfs_orphan_del(trans, inode); in btrfs_setsize()
5013 struct inode *inode = d_inode(dentry); in btrfs_setattr() local
5014 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_setattr()
5020 err = inode_change_ok(inode, attr); in btrfs_setattr()
5024 if (S_ISREG(inode->i_mode) && (attr->ia_valid & ATTR_SIZE)) { in btrfs_setattr()
5025 err = btrfs_setsize(inode, attr); in btrfs_setattr()
5031 setattr_copy(inode, attr); in btrfs_setattr()
5032 inode_inc_iversion(inode); in btrfs_setattr()
5033 err = btrfs_dirty_inode(inode); in btrfs_setattr()
5036 err = posix_acl_chmod(inode, inode->i_mode); in btrfs_setattr()
5054 static void evict_inode_truncate_pages(struct inode *inode) in evict_inode_truncate_pages() argument
5056 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in evict_inode_truncate_pages()
5057 struct extent_map_tree *map_tree = &BTRFS_I(inode)->extent_tree; in evict_inode_truncate_pages()
5060 ASSERT(inode->i_state & I_FREEING); in evict_inode_truncate_pages()
5061 truncate_inode_pages_final(&inode->i_data); in evict_inode_truncate_pages()
5121 btrfs_qgroup_free_data(inode, start, end - start + 1); in evict_inode_truncate_pages()
5135 void btrfs_evict_inode(struct inode *inode) in btrfs_evict_inode() argument
5138 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_evict_inode()
5144 trace_btrfs_inode_evict(inode); in btrfs_evict_inode()
5146 evict_inode_truncate_pages(inode); in btrfs_evict_inode()
5148 if (inode->i_nlink && in btrfs_evict_inode()
5151 btrfs_is_free_space_inode(inode))) in btrfs_evict_inode()
5154 if (is_bad_inode(inode)) { in btrfs_evict_inode()
5155 btrfs_orphan_del(NULL, inode); in btrfs_evict_inode()
5159 if (!special_file(inode->i_mode)) in btrfs_evict_inode()
5160 btrfs_wait_ordered_range(inode, 0, (u64)-1); in btrfs_evict_inode()
5162 btrfs_free_io_failure_record(inode, 0, (u64)-1); in btrfs_evict_inode()
5166 &BTRFS_I(inode)->runtime_flags)); in btrfs_evict_inode()
5170 if (inode->i_nlink > 0) { in btrfs_evict_inode()
5176 ret = btrfs_commit_inode_delayed_inode(inode); in btrfs_evict_inode()
5178 btrfs_orphan_del(NULL, inode); in btrfs_evict_inode()
5184 btrfs_orphan_del(NULL, inode); in btrfs_evict_inode()
5191 btrfs_i_size_write(inode, 0); in btrfs_evict_inode()
5226 btrfs_orphan_del(NULL, inode); in btrfs_evict_inode()
5233 btrfs_orphan_del(NULL, inode); in btrfs_evict_inode()
5259 btrfs_orphan_del(NULL, inode); in btrfs_evict_inode()
5270 ret = btrfs_truncate_inode_items(trans, root, inode, 0, 0); in btrfs_evict_inode()
5288 btrfs_orphan_del(trans, inode); in btrfs_evict_inode()
5290 btrfs_orphan_del(NULL, inode); in btrfs_evict_inode()
5296 btrfs_return_ino(root, btrfs_ino(inode)); in btrfs_evict_inode()
5301 btrfs_remove_delayed_node(inode); in btrfs_evict_inode()
5302 clear_inode(inode); in btrfs_evict_inode()
5310 static int btrfs_inode_by_name(struct inode *dir, struct dentry *dentry, in btrfs_inode_by_name()
5347 struct inode *dir, in fixup_tree_root_location()
5409 static void inode_tree_add(struct inode *inode) in inode_tree_add() argument
5411 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_add()
5415 struct rb_node *new = &BTRFS_I(inode)->rb_node; in inode_tree_add()
5416 u64 ino = btrfs_ino(inode); in inode_tree_add()
5418 if (inode_unhashed(inode)) in inode_tree_add()
5445 static void inode_tree_del(struct inode *inode) in inode_tree_del() argument
5447 struct btrfs_root *root = BTRFS_I(inode)->root; in inode_tree_del()
5451 if (!RB_EMPTY_NODE(&BTRFS_I(inode)->rb_node)) { in inode_tree_del()
5452 rb_erase(&BTRFS_I(inode)->rb_node, &root->inode_tree); in inode_tree_del()
5453 RB_CLEAR_NODE(&BTRFS_I(inode)->rb_node); in inode_tree_del()
5473 struct inode *inode; in btrfs_invalidate_inodes() local
5507 inode = igrab(&entry->vfs_inode); in btrfs_invalidate_inodes()
5508 if (inode) { in btrfs_invalidate_inodes()
5510 if (atomic_read(&inode->i_count) > 1) in btrfs_invalidate_inodes()
5511 d_prune_aliases(inode); in btrfs_invalidate_inodes()
5517 iput(inode); in btrfs_invalidate_inodes()
5531 static int btrfs_init_locked_inode(struct inode *inode, void *p) in btrfs_init_locked_inode() argument
5534 inode->i_ino = args->location->objectid; in btrfs_init_locked_inode()
5535 memcpy(&BTRFS_I(inode)->location, args->location, in btrfs_init_locked_inode()
5537 BTRFS_I(inode)->root = args->root; in btrfs_init_locked_inode()
5541 static int btrfs_find_actor(struct inode *inode, void *opaque) in btrfs_find_actor() argument
5544 return args->location->objectid == BTRFS_I(inode)->location.objectid && in btrfs_find_actor()
5545 args->root == BTRFS_I(inode)->root; in btrfs_find_actor()
5548 static struct inode *btrfs_iget_locked(struct super_block *s, in btrfs_iget_locked()
5552 struct inode *inode; in btrfs_iget_locked() local
5559 inode = iget5_locked(s, hashval, btrfs_find_actor, in btrfs_iget_locked()
5562 return inode; in btrfs_iget_locked()
5568 struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, in btrfs_iget()
5571 struct inode *inode; in btrfs_iget() local
5573 inode = btrfs_iget_locked(s, location, root); in btrfs_iget()
5574 if (!inode) in btrfs_iget()
5577 if (inode->i_state & I_NEW) { in btrfs_iget()
5578 btrfs_read_locked_inode(inode); in btrfs_iget()
5579 if (!is_bad_inode(inode)) { in btrfs_iget()
5580 inode_tree_add(inode); in btrfs_iget()
5581 unlock_new_inode(inode); in btrfs_iget()
5585 unlock_new_inode(inode); in btrfs_iget()
5586 iput(inode); in btrfs_iget()
5587 inode = ERR_PTR(-ESTALE); in btrfs_iget()
5591 return inode; in btrfs_iget()
5594 static struct inode *new_simple_dir(struct super_block *s, in new_simple_dir()
5598 struct inode *inode = new_inode(s); in new_simple_dir() local
5600 if (!inode) in new_simple_dir()
5603 BTRFS_I(inode)->root = root; in new_simple_dir()
5604 memcpy(&BTRFS_I(inode)->location, key, sizeof(*key)); in new_simple_dir()
5605 set_bit(BTRFS_INODE_DUMMY, &BTRFS_I(inode)->runtime_flags); in new_simple_dir()
5607 inode->i_ino = BTRFS_EMPTY_SUBVOL_DIR_OBJECTID; in new_simple_dir()
5608 inode->i_op = &btrfs_dir_ro_inode_operations; in new_simple_dir()
5609 inode->i_fop = &simple_dir_operations; in new_simple_dir()
5610 inode->i_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO; in new_simple_dir()
5611 inode->i_mtime = CURRENT_TIME; in new_simple_dir()
5612 inode->i_atime = inode->i_mtime; in new_simple_dir()
5613 inode->i_ctime = inode->i_mtime; in new_simple_dir()
5614 BTRFS_I(inode)->i_otime = inode->i_mtime; in new_simple_dir()
5616 return inode; in new_simple_dir()
5619 struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry) in btrfs_lookup_dentry()
5621 struct inode *inode; in btrfs_lookup_dentry() local
5639 inode = btrfs_iget(dir->i_sb, &location, root, NULL); in btrfs_lookup_dentry()
5640 return inode; in btrfs_lookup_dentry()
5650 inode = ERR_PTR(ret); in btrfs_lookup_dentry()
5652 inode = new_simple_dir(dir->i_sb, &location, sub_root); in btrfs_lookup_dentry()
5654 inode = btrfs_iget(dir->i_sb, &location, sub_root, NULL); in btrfs_lookup_dentry()
5658 if (!IS_ERR(inode) && root != sub_root) { in btrfs_lookup_dentry()
5660 if (!(inode->i_sb->s_flags & MS_RDONLY)) in btrfs_lookup_dentry()
5664 iput(inode); in btrfs_lookup_dentry()
5665 inode = ERR_PTR(ret); in btrfs_lookup_dentry()
5669 return inode; in btrfs_lookup_dentry()
5675 struct inode *inode = d_inode(dentry); in btrfs_dentry_delete() local
5677 if (!inode && !IS_ROOT(dentry)) in btrfs_dentry_delete()
5678 inode = d_inode(dentry->d_parent); in btrfs_dentry_delete()
5680 if (inode) { in btrfs_dentry_delete()
5681 root = BTRFS_I(inode)->root; in btrfs_dentry_delete()
5685 if (btrfs_ino(inode) == BTRFS_EMPTY_SUBVOL_DIR_OBJECTID) in btrfs_dentry_delete()
5696 static struct dentry *btrfs_lookup(struct inode *dir, struct dentry *dentry, in btrfs_lookup()
5699 struct inode *inode; in btrfs_lookup() local
5701 inode = btrfs_lookup_dentry(dir, dentry); in btrfs_lookup()
5702 if (IS_ERR(inode)) { in btrfs_lookup()
5703 if (PTR_ERR(inode) == -ENOENT) in btrfs_lookup()
5704 inode = NULL; in btrfs_lookup()
5706 return ERR_CAST(inode); in btrfs_lookup()
5709 return d_splice_alias(inode, dentry); in btrfs_lookup()
5718 struct inode *inode = file_inode(file); in btrfs_real_readdir() local
5719 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_real_readdir()
5758 btrfs_get_delayed_items(inode, &ins_list, &del_list); in btrfs_real_readdir()
5763 key.objectid = btrfs_ino(inode); in btrfs_real_readdir()
5911 int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc) in btrfs_write_inode() argument
5913 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_write_inode()
5918 if (test_bit(BTRFS_INODE_DUMMY, &BTRFS_I(inode)->runtime_flags)) in btrfs_write_inode()
5921 if (btrfs_fs_closing(root->fs_info) && btrfs_is_free_space_inode(inode)) in btrfs_write_inode()
5942 static int btrfs_dirty_inode(struct inode *inode) in btrfs_dirty_inode() argument
5944 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_dirty_inode()
5948 if (test_bit(BTRFS_INODE_DUMMY, &BTRFS_I(inode)->runtime_flags)) in btrfs_dirty_inode()
5955 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
5963 ret = btrfs_update_inode(trans, root, inode); in btrfs_dirty_inode()
5966 if (BTRFS_I(inode)->delayed_node) in btrfs_dirty_inode()
5976 static int btrfs_update_time(struct inode *inode, struct timespec *now, in btrfs_update_time() argument
5979 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_update_time()
5985 inode_inc_iversion(inode); in btrfs_update_time()
5987 inode->i_ctime = *now; in btrfs_update_time()
5989 inode->i_mtime = *now; in btrfs_update_time()
5991 inode->i_atime = *now; in btrfs_update_time()
5992 return btrfs_dirty_inode(inode); in btrfs_update_time()
6000 static int btrfs_set_inode_index_count(struct inode *inode) in btrfs_set_inode_index_count() argument
6002 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_set_inode_index_count()
6008 key.objectid = btrfs_ino(inode); in btrfs_set_inode_index_count()
6031 BTRFS_I(inode)->index_cnt = 2; in btrfs_set_inode_index_count()
6040 if (found_key.objectid != btrfs_ino(inode) || in btrfs_set_inode_index_count()
6042 BTRFS_I(inode)->index_cnt = 2; in btrfs_set_inode_index_count()
6046 BTRFS_I(inode)->index_cnt = found_key.offset + 1; in btrfs_set_inode_index_count()
6056 int btrfs_set_inode_index(struct inode *dir, u64 *index) in btrfs_set_inode_index()
6075 static int btrfs_insert_inode_locked(struct inode *inode) in btrfs_insert_inode_locked() argument
6078 args.location = &BTRFS_I(inode)->location; in btrfs_insert_inode_locked()
6079 args.root = BTRFS_I(inode)->root; in btrfs_insert_inode_locked()
6081 return insert_inode_locked4(inode, in btrfs_insert_inode_locked()
6082 btrfs_inode_hash(inode->i_ino, BTRFS_I(inode)->root), in btrfs_insert_inode_locked()
6086 static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans, in btrfs_new_inode()
6088 struct inode *dir, in btrfs_new_inode()
6093 struct inode *inode; in btrfs_new_inode() local
6108 inode = new_inode(root->fs_info->sb); in btrfs_new_inode()
6109 if (!inode) { in btrfs_new_inode()
6119 set_nlink(inode, 0); in btrfs_new_inode()
6125 inode->i_ino = objectid; in btrfs_new_inode()
6133 iput(inode); in btrfs_new_inode()
6144 BTRFS_I(inode)->index_cnt = 2; in btrfs_new_inode()
6145 BTRFS_I(inode)->dir_index = *index; in btrfs_new_inode()
6146 BTRFS_I(inode)->root = root; in btrfs_new_inode()
6147 BTRFS_I(inode)->generation = trans->transid; in btrfs_new_inode()
6148 inode->i_generation = BTRFS_I(inode)->generation; in btrfs_new_inode()
6156 set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &BTRFS_I(inode)->runtime_flags); in btrfs_new_inode()
6178 location = &BTRFS_I(inode)->location; in btrfs_new_inode()
6183 ret = btrfs_insert_inode_locked(inode); in btrfs_new_inode()
6192 inode_init_owner(inode, dir, mode); in btrfs_new_inode()
6193 inode_set_bytes(inode, 0); in btrfs_new_inode()
6195 inode->i_mtime = CURRENT_TIME; in btrfs_new_inode()
6196 inode->i_atime = inode->i_mtime; in btrfs_new_inode()
6197 inode->i_ctime = inode->i_mtime; in btrfs_new_inode()
6198 BTRFS_I(inode)->i_otime = inode->i_mtime; in btrfs_new_inode()
6204 fill_inode_item(trans, path->nodes[0], inode_item, inode); in btrfs_new_inode()
6218 btrfs_inherit_iflags(inode, dir); in btrfs_new_inode()
6222 BTRFS_I(inode)->flags |= BTRFS_INODE_NODATASUM; in btrfs_new_inode()
6224 BTRFS_I(inode)->flags |= BTRFS_INODE_NODATACOW | in btrfs_new_inode()
6228 inode_tree_add(inode); in btrfs_new_inode()
6230 trace_btrfs_inode_new(inode); in btrfs_new_inode()
6231 btrfs_set_inode_last_trans(trans, inode); in btrfs_new_inode()
6235 ret = btrfs_inode_inherit_props(trans, inode, dir); in btrfs_new_inode()
6239 btrfs_ino(inode), root->root_key.objectid, ret); in btrfs_new_inode()
6241 return inode; in btrfs_new_inode()
6244 unlock_new_inode(inode); in btrfs_new_inode()
6249 iput(inode); in btrfs_new_inode()
6253 static inline u8 btrfs_inode_type(struct inode *inode) in btrfs_inode_type() argument
6255 return btrfs_type_by_mode[(inode->i_mode & S_IFMT) >> S_SHIFT]; in btrfs_inode_type()
6265 struct inode *parent_inode, struct inode *inode, in btrfs_add_link() argument
6271 u64 ino = btrfs_ino(inode); in btrfs_add_link()
6275 memcpy(&key, &BTRFS_I(inode)->root->root_key, sizeof(key)); in btrfs_add_link()
6297 btrfs_inode_type(inode), index); in btrfs_add_link()
6333 struct inode *dir, struct dentry *dentry, in btrfs_add_nondir()
6334 struct inode *inode, int backref, u64 index) in btrfs_add_nondir() argument
6336 int err = btrfs_add_link(trans, dir, inode, in btrfs_add_nondir()
6344 static int btrfs_mknod(struct inode *dir, struct dentry *dentry, in btrfs_mknod()
6349 struct inode *inode = NULL; in btrfs_mknod() local
6368 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mknod()
6371 if (IS_ERR(inode)) { in btrfs_mknod()
6372 err = PTR_ERR(inode); in btrfs_mknod()
6382 inode->i_op = &btrfs_special_inode_operations; in btrfs_mknod()
6383 init_special_inode(inode, inode->i_mode, rdev); in btrfs_mknod()
6385 err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); in btrfs_mknod()
6389 err = btrfs_add_nondir(trans, dir, dentry, inode, 0, index); in btrfs_mknod()
6393 btrfs_update_inode(trans, root, inode); in btrfs_mknod()
6394 unlock_new_inode(inode); in btrfs_mknod()
6395 d_instantiate(dentry, inode); in btrfs_mknod()
6403 inode_dec_link_count(inode); in btrfs_mknod()
6404 iput(inode); in btrfs_mknod()
6410 unlock_new_inode(inode); in btrfs_mknod()
6415 static int btrfs_create(struct inode *dir, struct dentry *dentry, in btrfs_create()
6420 struct inode *inode = NULL; in btrfs_create() local
6439 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_create()
6442 if (IS_ERR(inode)) { in btrfs_create()
6443 err = PTR_ERR(inode); in btrfs_create()
6453 inode->i_fop = &btrfs_file_operations; in btrfs_create()
6454 inode->i_op = &btrfs_file_inode_operations; in btrfs_create()
6455 inode->i_mapping->a_ops = &btrfs_aops; in btrfs_create()
6457 err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); in btrfs_create()
6461 err = btrfs_update_inode(trans, root, inode); in btrfs_create()
6465 err = btrfs_add_nondir(trans, dir, dentry, inode, 0, index); in btrfs_create()
6469 BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops; in btrfs_create()
6470 unlock_new_inode(inode); in btrfs_create()
6471 d_instantiate(dentry, inode); in btrfs_create()
6476 inode_dec_link_count(inode); in btrfs_create()
6477 iput(inode); in btrfs_create()
6484 unlock_new_inode(inode); in btrfs_create()
6489 static int btrfs_link(struct dentry *old_dentry, struct inode *dir, in btrfs_link()
6494 struct inode *inode = d_inode(old_dentry); in btrfs_link() local
6500 if (root->objectid != BTRFS_I(inode)->root->objectid) in btrfs_link()
6503 if (inode->i_nlink >= BTRFS_LINK_MAX) in btrfs_link()
6523 BTRFS_I(inode)->dir_index = 0ULL; in btrfs_link()
6524 inc_nlink(inode); in btrfs_link()
6525 inode_inc_iversion(inode); in btrfs_link()
6526 inode->i_ctime = CURRENT_TIME; in btrfs_link()
6527 ihold(inode); in btrfs_link()
6528 set_bit(BTRFS_INODE_COPY_EVERYTHING, &BTRFS_I(inode)->runtime_flags); in btrfs_link()
6530 err = btrfs_add_nondir(trans, dir, dentry, inode, 1, index); in btrfs_link()
6536 err = btrfs_update_inode(trans, root, inode); in btrfs_link()
6539 if (inode->i_nlink == 1) { in btrfs_link()
6544 err = btrfs_orphan_del(trans, inode); in btrfs_link()
6548 d_instantiate(dentry, inode); in btrfs_link()
6549 btrfs_log_new_name(trans, inode, NULL, parent); in btrfs_link()
6557 inode_dec_link_count(inode); in btrfs_link()
6558 iput(inode); in btrfs_link()
6564 static int btrfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in btrfs_mkdir()
6566 struct inode *inode = NULL; in btrfs_mkdir() local
6587 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_mkdir()
6590 if (IS_ERR(inode)) { in btrfs_mkdir()
6591 err = PTR_ERR(inode); in btrfs_mkdir()
6597 inode->i_op = &btrfs_dir_inode_operations; in btrfs_mkdir()
6598 inode->i_fop = &btrfs_dir_file_operations; in btrfs_mkdir()
6600 err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); in btrfs_mkdir()
6604 btrfs_i_size_write(inode, 0); in btrfs_mkdir()
6605 err = btrfs_update_inode(trans, root, inode); in btrfs_mkdir()
6609 err = btrfs_add_link(trans, dir, inode, dentry->d_name.name, in btrfs_mkdir()
6614 d_instantiate(dentry, inode); in btrfs_mkdir()
6619 unlock_new_inode(inode); in btrfs_mkdir()
6625 inode_dec_link_count(inode); in btrfs_mkdir()
6626 iput(inode); in btrfs_mkdir()
6633 unlock_new_inode(inode); in btrfs_mkdir()
6700 struct inode *inode, struct page *page, in uncompress_inline() argument
6740 struct extent_map *btrfs_get_extent(struct inode *inode, struct page *page, in btrfs_get_extent() argument
6748 u64 objectid = btrfs_ino(inode); in btrfs_get_extent()
6751 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_extent()
6756 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in btrfs_get_extent()
6757 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in btrfs_get_extent()
6869 btrfs_extent_item_to_extent_map(inode, path, item, new_inline, em); in btrfs_get_extent()
6896 ret = uncompress_inline(path, inode, page, in btrfs_get_extent()
7010 struct extent_map *btrfs_get_extent_fiemap(struct inode *inode, struct page *page, in btrfs_get_extent_fiemap() argument
7022 em = btrfs_get_extent(inode, page, pg_offset, start, len, create); in btrfs_get_extent_fiemap()
7049 found = count_range_bits(&BTRFS_I(inode)->io_tree, &range_start, in btrfs_get_extent_fiemap()
7137 static struct extent_map *btrfs_new_extent_direct(struct inode *inode, in btrfs_new_extent_direct() argument
7140 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_new_extent_direct()
7146 alloc_hint = get_extent_allocation_hint(inode, start, len); in btrfs_new_extent_direct()
7152 em = create_pinned_em(inode, start, ins.offset, start, ins.objectid, in btrfs_new_extent_direct()
7159 ret = btrfs_add_ordered_extent_dio(inode, start, ins.objectid, in btrfs_new_extent_direct()
7174 noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len, in can_nocow_extent() argument
7182 struct btrfs_root *root = BTRFS_I(inode)->root; in can_nocow_extent()
7183 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in can_nocow_extent()
7192 bool nocow = (BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW); in can_nocow_extent()
7198 ret = btrfs_lookup_file_extent(NULL, root, path, btrfs_ino(inode), in can_nocow_extent()
7215 if (key.objectid != btrfs_ino(inode) || in can_nocow_extent()
7286 ret = btrfs_cross_ref_exist(trans, root, btrfs_ino(inode), in can_nocow_extent()
7315 bool btrfs_page_exists_in_range(struct inode *inode, loff_t start, loff_t end) in btrfs_page_exists_in_range() argument
7317 struct radix_tree_root *root = &inode->i_mapping->page_tree; in btrfs_page_exists_in_range()
7385 static int lock_extent_direct(struct inode *inode, u64 lockstart, u64 lockend, in lock_extent_direct() argument
7392 lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, in lock_extent_direct()
7399 ordered = btrfs_lookup_ordered_range(inode, lockstart, in lock_extent_direct()
7411 !btrfs_page_exists_in_range(inode, lockstart, lockend))) in lock_extent_direct()
7414 unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend, in lock_extent_direct()
7418 btrfs_start_ordered_extent(inode, ordered, 1); in lock_extent_direct()
7422 ret = btrfs_fdatawrite_range(inode, lockstart, lockend); in lock_extent_direct()
7425 ret = filemap_fdatawait_range(inode->i_mapping, in lock_extent_direct()
7435 ret = invalidate_inode_pages2_range(inode->i_mapping, in lock_extent_direct()
7448 static struct extent_map *create_pinned_em(struct inode *inode, u64 start, in create_pinned_em() argument
7456 struct btrfs_root *root = BTRFS_I(inode)->root; in create_pinned_em()
7459 em_tree = &BTRFS_I(inode)->extent_tree; in create_pinned_em()
7480 btrfs_drop_extent_cache(inode, em->start, in create_pinned_em()
7500 static void adjust_dio_outstanding_extents(struct inode *inode, in adjust_dio_outstanding_extents() argument
7516 spin_lock(&BTRFS_I(inode)->lock); in adjust_dio_outstanding_extents()
7517 BTRFS_I(inode)->outstanding_extents += num_extents; in adjust_dio_outstanding_extents()
7518 spin_unlock(&BTRFS_I(inode)->lock); in adjust_dio_outstanding_extents()
7522 static int btrfs_get_blocks_direct(struct inode *inode, sector_t iblock, in btrfs_get_blocks_direct() argument
7526 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_get_blocks_direct()
7529 u64 start = iblock << inode->i_blkbits; in btrfs_get_blocks_direct()
7557 if (lock_extent_direct(inode, lockstart, lockend, &cached_state, in btrfs_get_blocks_direct()
7563 em = btrfs_get_extent(inode, NULL, 0, start, len, 0); in btrfs_get_blocks_direct()
7613 ((BTRFS_I(inode)->flags & BTRFS_INODE_NODATACOW) && in btrfs_get_blocks_direct()
7625 if (can_nocow_extent(inode, start, &len, &orig_start, in btrfs_get_blocks_direct()
7629 em = create_pinned_em(inode, start, len, in btrfs_get_blocks_direct()
7640 ret = btrfs_add_ordered_extent_dio(inode, start, in btrfs_get_blocks_direct()
7656 em = btrfs_new_extent_direct(inode, start, len); in btrfs_get_blocks_direct()
7664 inode->i_blkbits; in btrfs_get_blocks_direct()
7676 if (start + len > i_size_read(inode)) in btrfs_get_blocks_direct()
7677 i_size_write(inode, start + len); in btrfs_get_blocks_direct()
7679 adjust_dio_outstanding_extents(inode, dio_data, len); in btrfs_get_blocks_direct()
7680 btrfs_free_reserved_data_space(inode, start, len); in btrfs_get_blocks_direct()
7692 clear_extent_bit(&BTRFS_I(inode)->io_tree, lockstart, in btrfs_get_blocks_direct()
7704 clear_extent_bit(&BTRFS_I(inode)->io_tree, lockstart, lockend, in btrfs_get_blocks_direct()
7715 adjust_dio_outstanding_extents(inode, dio_data, len); in btrfs_get_blocks_direct()
7720 static inline int submit_dio_repair_bio(struct inode *inode, struct bio *bio, in submit_dio_repair_bio() argument
7723 struct btrfs_root *root = BTRFS_I(inode)->root; in submit_dio_repair_bio()
7741 static int btrfs_check_dio_repairable(struct inode *inode, in btrfs_check_dio_repairable() argument
7748 num_copies = btrfs_num_copies(BTRFS_I(inode)->root->fs_info, in btrfs_check_dio_repairable()
7775 static int dio_read_error(struct inode *inode, struct bio *failed_bio, in dio_read_error() argument
7788 ret = btrfs_get_io_failure_record(inode, start, end, &failrec); in dio_read_error()
7792 ret = btrfs_check_dio_repairable(inode, failed_bio, failrec, in dio_read_error()
7795 free_io_failure(inode, failrec); in dio_read_error()
7805 isector >>= inode->i_sb->s_blocksize_bits; in dio_read_error()
7806 bio = btrfs_create_repair_bio(inode, failed_bio, failrec, page, in dio_read_error()
7809 free_io_failure(inode, failrec); in dio_read_error()
7813 btrfs_debug(BTRFS_I(inode)->root->fs_info, in dio_read_error()
7817 ret = submit_dio_repair_bio(inode, bio, read_mode, in dio_read_error()
7820 free_io_failure(inode, failrec); in dio_read_error()
7829 struct inode *inode; member
7845 clean_io_failure(done->inode, done->start, bvec->bv_page, 0); in btrfs_retry_endio_nocsum()
7851 static int __btrfs_correct_data_nocsum(struct inode *inode, in __btrfs_correct_data_nocsum() argument
7861 done.inode = inode; in __btrfs_correct_data_nocsum()
7869 ret = dio_read_error(inode, &io_bio->bio, bvec->bv_page, start, in __btrfs_correct_data_nocsum()
7903 ret = __readpage_endio_check(done->inode, io_bio, i, in btrfs_retry_endio()
7907 clean_io_failure(done->inode, done->start, in btrfs_retry_endio()
7919 static int __btrfs_subio_endio_read(struct inode *inode, in __btrfs_subio_endio_read() argument
7931 done.inode = inode; in __btrfs_subio_endio_read()
7934 ret = __readpage_endio_check(inode, io_bio, i, bvec->bv_page, in __btrfs_subio_endio_read()
7943 ret = dio_read_error(inode, &io_bio->bio, bvec->bv_page, start, in __btrfs_subio_endio_read()
7966 static int btrfs_subio_endio_read(struct inode *inode, in btrfs_subio_endio_read() argument
7969 bool skip_csum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM; in btrfs_subio_endio_read()
7973 return __btrfs_correct_data_nocsum(inode, io_bio); in btrfs_subio_endio_read()
7977 return __btrfs_subio_endio_read(inode, io_bio, err); in btrfs_subio_endio_read()
7984 struct inode *inode = dip->inode; in btrfs_endio_direct_read() local
7990 err = btrfs_subio_endio_read(inode, io_bio, err); in btrfs_endio_direct_read()
7992 unlock_extent(&BTRFS_I(inode)->io_tree, dip->logical_offset, in btrfs_endio_direct_read()
8009 struct inode *inode = dip->inode; in btrfs_endio_direct_write() local
8010 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_endio_direct_write()
8018 ret = btrfs_dec_test_first_ordered_pending(inode, &ordered, in btrfs_endio_direct_write()
8049 static int __btrfs_submit_bio_start_direct_io(struct inode *inode, int rw, in __btrfs_submit_bio_start_direct_io() argument
8054 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_bio_start_direct_io()
8055 ret = btrfs_csum_one_bio(root, inode, bio, offset, 1); in __btrfs_submit_bio_start_direct_io()
8066 btrfs_warn(BTRFS_I(dip->inode)->root->fs_info, in btrfs_end_dio_bio()
8068 btrfs_ino(dip->inode), bio->bi_rw, in btrfs_end_dio_bio()
8073 err = dip->subio_endio(dip->inode, btrfs_io_bio(bio), err); in btrfs_end_dio_bio()
8110 struct inode *inode, in btrfs_lookup_and_bind_dio_csum() argument
8125 ret = btrfs_lookup_bio_sums_dio(root, inode, dip->orig_bio, in btrfs_lookup_and_bind_dio_csum()
8135 file_offset >>= inode->i_sb->s_blocksize_bits; in btrfs_lookup_and_bind_dio_csum()
8141 static inline int __btrfs_submit_dio_bio(struct bio *bio, struct inode *inode, in __btrfs_submit_dio_bio() argument
8147 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_submit_dio_bio()
8151 async_submit = !atomic_read(&BTRFS_I(inode)->sync_writers); in __btrfs_submit_dio_bio()
8167 inode, rw, bio, 0, 0, in __btrfs_submit_dio_bio()
8177 ret = btrfs_csum_one_bio(root, inode, bio, file_offset, 1); in __btrfs_submit_dio_bio()
8181 ret = btrfs_lookup_and_bind_dio_csum(root, inode, dip, bio, in __btrfs_submit_dio_bio()
8196 struct inode *inode = dip->inode; in btrfs_submit_direct_hook() local
8197 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_submit_direct_hook()
8247 ret = __btrfs_submit_dio_bio(bio, inode, rw, in btrfs_submit_direct_hook()
8286 ret = __btrfs_submit_dio_bio(bio, inode, rw, file_offset, skip_sum, in btrfs_submit_direct_hook()
8307 struct inode *inode, loff_t file_offset) in btrfs_submit_direct() argument
8316 skip_sum = BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM; in btrfs_submit_direct()
8331 dip->inode = inode; in btrfs_submit_direct()
8380 ordered = btrfs_lookup_ordered_extent(inode, in btrfs_submit_direct()
8392 unlock_extent(&BTRFS_I(inode)->io_tree, file_offset, in btrfs_submit_direct()
8444 struct inode *inode = file->f_mapping->host; in btrfs_direct_IO() local
8445 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_direct_IO()
8453 if (check_direct_IO(BTRFS_I(inode)->root, iocb, iter, offset)) in btrfs_direct_IO()
8456 inode_dio_begin(inode); in btrfs_direct_IO()
8467 &BTRFS_I(inode)->runtime_flags)) in btrfs_direct_IO()
8468 filemap_fdatawrite_range(inode->i_mapping, offset, in btrfs_direct_IO()
8477 if (offset + count <= inode->i_size) { in btrfs_direct_IO()
8478 mutex_unlock(&inode->i_mutex); in btrfs_direct_IO()
8481 ret = btrfs_delalloc_reserve_space(inode, offset, count); in btrfs_direct_IO()
8496 &BTRFS_I(inode)->runtime_flags)) { in btrfs_direct_IO()
8497 inode_dio_end(inode); in btrfs_direct_IO()
8502 ret = __blockdev_direct_IO(iocb, inode, in btrfs_direct_IO()
8503 BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev, in btrfs_direct_IO()
8510 btrfs_delalloc_release_space(inode, offset, in btrfs_direct_IO()
8513 btrfs_delalloc_release_space(inode, offset, in btrfs_direct_IO()
8518 inode_dio_end(inode); in btrfs_direct_IO()
8520 mutex_lock(&inode->i_mutex); in btrfs_direct_IO()
8527 static int btrfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, in btrfs_fiemap() argument
8536 return extent_fiemap(inode, fieinfo, start, len, btrfs_get_extent_fiemap); in btrfs_fiemap()
8549 struct inode *inode = page->mapping->host; in btrfs_writepage() local
8563 if (!igrab(inode)) { in btrfs_writepage()
8569 btrfs_add_delayed_iput(inode); in btrfs_writepage()
8618 struct inode *inode = page->mapping->host; in btrfs_invalidatepage() local
8624 int inode_evicting = inode->i_state & I_FREEING; in btrfs_invalidatepage()
8635 tree = &BTRFS_I(inode)->io_tree; in btrfs_invalidatepage()
8643 ordered = btrfs_lookup_ordered_extent(inode, page_start); in btrfs_invalidatepage()
8663 tree = &BTRFS_I(inode)->ordered_tree; in btrfs_invalidatepage()
8672 if (btrfs_dec_test_ordered_pending(inode, &ordered, in btrfs_invalidatepage()
8696 btrfs_qgroup_free_data(inode, page_start, PAGE_CACHE_SIZE); in btrfs_invalidatepage()
8733 struct inode *inode = file_inode(vma->vm_file); in btrfs_page_mkwrite() local
8734 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_page_mkwrite()
8735 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; in btrfs_page_mkwrite()
8746 sb_start_pagefault(inode->i_sb); in btrfs_page_mkwrite()
8750 ret = btrfs_delalloc_reserve_space(inode, page_start, in btrfs_page_mkwrite()
8769 size = i_size_read(inode); in btrfs_page_mkwrite()
8771 if ((page->mapping != inode->i_mapping) || in btrfs_page_mkwrite()
8785 ordered = btrfs_lookup_ordered_extent(inode, page_start); in btrfs_page_mkwrite()
8790 btrfs_start_ordered_extent(inode, ordered, 1); in btrfs_page_mkwrite()
8802 clear_extent_bit(&BTRFS_I(inode)->io_tree, page_start, page_end, in btrfs_page_mkwrite()
8807 ret = btrfs_set_extent_delalloc(inode, page_start, page_end, in btrfs_page_mkwrite()
8833 BTRFS_I(inode)->last_trans = root->fs_info->generation; in btrfs_page_mkwrite()
8834 BTRFS_I(inode)->last_sub_trans = BTRFS_I(inode)->root->log_transid; in btrfs_page_mkwrite()
8835 BTRFS_I(inode)->last_log_commit = BTRFS_I(inode)->root->last_log_commit; in btrfs_page_mkwrite()
8841 sb_end_pagefault(inode->i_sb); in btrfs_page_mkwrite()
8846 btrfs_delalloc_release_space(inode, page_start, PAGE_CACHE_SIZE); in btrfs_page_mkwrite()
8848 sb_end_pagefault(inode->i_sb); in btrfs_page_mkwrite()
8852 static int btrfs_truncate(struct inode *inode) in btrfs_truncate() argument
8854 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_truncate()
8862 ret = btrfs_wait_ordered_range(inode, inode->i_size & (~mask), in btrfs_truncate()
8931 set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &BTRFS_I(inode)->runtime_flags); in btrfs_truncate()
8935 ret = btrfs_truncate_inode_items(trans, root, inode, in btrfs_truncate()
8936 inode->i_size, in btrfs_truncate()
8944 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
8966 if (ret == 0 && inode->i_nlink > 0) { in btrfs_truncate()
8968 ret = btrfs_orphan_del(trans, inode); in btrfs_truncate()
8975 ret = btrfs_update_inode(trans, root, inode); in btrfs_truncate()
9000 struct inode *inode; in btrfs_create_subvol_root() local
9004 inode = btrfs_new_inode(trans, new_root, NULL, "..", 2, in btrfs_create_subvol_root()
9008 if (IS_ERR(inode)) in btrfs_create_subvol_root()
9009 return PTR_ERR(inode); in btrfs_create_subvol_root()
9010 inode->i_op = &btrfs_dir_inode_operations; in btrfs_create_subvol_root()
9011 inode->i_fop = &btrfs_dir_file_operations; in btrfs_create_subvol_root()
9013 set_nlink(inode, 1); in btrfs_create_subvol_root()
9014 btrfs_i_size_write(inode, 0); in btrfs_create_subvol_root()
9015 unlock_new_inode(inode); in btrfs_create_subvol_root()
9023 err = btrfs_update_inode(trans, new_root, inode); in btrfs_create_subvol_root()
9025 iput(inode); in btrfs_create_subvol_root()
9029 struct inode *btrfs_alloc_inode(struct super_block *sb) in btrfs_alloc_inode()
9032 struct inode *inode; in btrfs_alloc_inode() local
9065 inode = &ei->vfs_inode; in btrfs_alloc_inode()
9067 extent_io_tree_init(&ei->io_tree, &inode->i_data); in btrfs_alloc_inode()
9068 extent_io_tree_init(&ei->io_failure_tree, &inode->i_data); in btrfs_alloc_inode()
9078 return inode; in btrfs_alloc_inode()
9082 void btrfs_test_destroy_inode(struct inode *inode) in btrfs_test_destroy_inode() argument
9084 btrfs_drop_extent_cache(inode, 0, (u64)-1, 0); in btrfs_test_destroy_inode()
9085 kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode)); in btrfs_test_destroy_inode()
9091 struct inode *inode = container_of(head, struct inode, i_rcu); in btrfs_i_callback() local
9092 kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode)); in btrfs_i_callback()
9095 void btrfs_destroy_inode(struct inode *inode) in btrfs_destroy_inode() argument
9098 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_destroy_inode()
9100 WARN_ON(!hlist_empty(&inode->i_dentry)); in btrfs_destroy_inode()
9101 WARN_ON(inode->i_data.nrpages); in btrfs_destroy_inode()
9102 WARN_ON(BTRFS_I(inode)->outstanding_extents); in btrfs_destroy_inode()
9103 WARN_ON(BTRFS_I(inode)->reserved_extents); in btrfs_destroy_inode()
9104 WARN_ON(BTRFS_I(inode)->delalloc_bytes); in btrfs_destroy_inode()
9105 WARN_ON(BTRFS_I(inode)->csum_bytes); in btrfs_destroy_inode()
9106 WARN_ON(BTRFS_I(inode)->defrag_bytes); in btrfs_destroy_inode()
9117 &BTRFS_I(inode)->runtime_flags)) { in btrfs_destroy_inode()
9119 btrfs_ino(inode)); in btrfs_destroy_inode()
9124 ordered = btrfs_lookup_first_ordered_extent(inode, (u64)-1); in btrfs_destroy_inode()
9130 btrfs_remove_ordered_extent(inode, ordered); in btrfs_destroy_inode()
9135 btrfs_qgroup_check_reserved_leak(inode); in btrfs_destroy_inode()
9136 inode_tree_del(inode); in btrfs_destroy_inode()
9137 btrfs_drop_extent_cache(inode, 0, (u64)-1, 0); in btrfs_destroy_inode()
9139 call_rcu(&inode->i_rcu, btrfs_i_callback); in btrfs_destroy_inode()
9142 int btrfs_drop_inode(struct inode *inode) in btrfs_drop_inode() argument
9144 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_drop_inode()
9153 return generic_drop_inode(inode); in btrfs_drop_inode()
9233 struct inode *inode = d_inode(dentry); in btrfs_getattr() local
9234 u32 blocksize = inode->i_sb->s_blocksize; in btrfs_getattr()
9236 generic_fillattr(inode, stat); in btrfs_getattr()
9237 stat->dev = BTRFS_I(inode)->root->anon_dev; in btrfs_getattr()
9240 spin_lock(&BTRFS_I(inode)->lock); in btrfs_getattr()
9241 delalloc_bytes = BTRFS_I(inode)->delalloc_bytes; in btrfs_getattr()
9242 spin_unlock(&BTRFS_I(inode)->lock); in btrfs_getattr()
9243 stat->blocks = (ALIGN(inode_get_bytes(inode), blocksize) + in btrfs_getattr()
9248 static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, in btrfs_rename()
9249 struct inode *new_dir, struct dentry *new_dentry) in btrfs_rename()
9254 struct inode *new_inode = d_inode(new_dentry); in btrfs_rename()
9255 struct inode *old_inode = d_inode(old_dentry); in btrfs_rename()
9428 static int btrfs_rename2(struct inode *old_dir, struct dentry *old_dentry, in btrfs_rename2()
9429 struct inode *new_dir, struct dentry *new_dentry, in btrfs_rename2()
9441 struct inode *inode; in btrfs_run_delalloc_work() local
9445 inode = delalloc_work->inode; in btrfs_run_delalloc_work()
9447 btrfs_wait_ordered_range(inode, 0, (u64)-1); in btrfs_run_delalloc_work()
9449 filemap_flush(inode->i_mapping); in btrfs_run_delalloc_work()
9451 &BTRFS_I(inode)->runtime_flags)) in btrfs_run_delalloc_work()
9452 filemap_flush(inode->i_mapping); in btrfs_run_delalloc_work()
9456 btrfs_add_delayed_iput(inode); in btrfs_run_delalloc_work()
9458 iput(inode); in btrfs_run_delalloc_work()
9462 struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode, in btrfs_alloc_delalloc_work() argument
9473 work->inode = inode; in btrfs_alloc_delalloc_work()
9476 WARN_ON_ONCE(!inode); in btrfs_alloc_delalloc_work()
9497 struct inode *inode; in __start_delalloc_inodes() local
9515 inode = igrab(&binode->vfs_inode); in __start_delalloc_inodes()
9516 if (!inode) { in __start_delalloc_inodes()
9522 work = btrfs_alloc_delalloc_work(inode, 0, delay_iput); in __start_delalloc_inodes()
9525 btrfs_add_delayed_iput(inode); in __start_delalloc_inodes()
9527 iput(inode); in __start_delalloc_inodes()
9639 static int btrfs_symlink(struct inode *dir, struct dentry *dentry, in btrfs_symlink()
9646 struct inode *inode = NULL; in btrfs_symlink() local
9676 inode = btrfs_new_inode(trans, root, dir, dentry->d_name.name, in btrfs_symlink()
9679 if (IS_ERR(inode)) { in btrfs_symlink()
9680 err = PTR_ERR(inode); in btrfs_symlink()
9690 inode->i_fop = &btrfs_file_operations; in btrfs_symlink()
9691 inode->i_op = &btrfs_file_inode_operations; in btrfs_symlink()
9692 inode->i_mapping->a_ops = &btrfs_aops; in btrfs_symlink()
9693 BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops; in btrfs_symlink()
9695 err = btrfs_init_inode_security(trans, inode, dir, &dentry->d_name); in btrfs_symlink()
9699 err = btrfs_add_nondir(trans, dir, dentry, inode, 0, index); in btrfs_symlink()
9708 key.objectid = btrfs_ino(inode); in btrfs_symlink()
9734 inode->i_op = &btrfs_symlink_inode_operations; in btrfs_symlink()
9735 inode->i_mapping->a_ops = &btrfs_symlink_aops; in btrfs_symlink()
9736 inode_set_bytes(inode, name_len); in btrfs_symlink()
9737 btrfs_i_size_write(inode, name_len); in btrfs_symlink()
9738 err = btrfs_update_inode(trans, root, inode); in btrfs_symlink()
9744 unlock_new_inode(inode); in btrfs_symlink()
9745 d_instantiate(dentry, inode); in btrfs_symlink()
9750 inode_dec_link_count(inode); in btrfs_symlink()
9751 iput(inode); in btrfs_symlink()
9758 unlock_new_inode(inode); in btrfs_symlink()
9762 static int __btrfs_prealloc_file_range(struct inode *inode, int mode, in __btrfs_prealloc_file_range() argument
9767 struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; in __btrfs_prealloc_file_range()
9769 struct btrfs_root *root = BTRFS_I(inode)->root; in __btrfs_prealloc_file_range()
9807 ret = insert_reserved_file_extent(trans, inode, in __btrfs_prealloc_file_range()
9821 btrfs_drop_extent_cache(inode, cur_offset, in __btrfs_prealloc_file_range()
9827 &BTRFS_I(inode)->runtime_flags); in __btrfs_prealloc_file_range()
9848 btrfs_drop_extent_cache(inode, cur_offset, in __btrfs_prealloc_file_range()
9858 inode_inc_iversion(inode); in __btrfs_prealloc_file_range()
9859 inode->i_ctime = CURRENT_TIME; in __btrfs_prealloc_file_range()
9860 BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC; in __btrfs_prealloc_file_range()
9862 (actual_len > inode->i_size) && in __btrfs_prealloc_file_range()
9863 (cur_offset > inode->i_size)) { in __btrfs_prealloc_file_range()
9868 i_size_write(inode, i_size); in __btrfs_prealloc_file_range()
9869 btrfs_ordered_update_i_size(inode, i_size, NULL); in __btrfs_prealloc_file_range()
9872 ret = btrfs_update_inode(trans, root, inode); in __btrfs_prealloc_file_range()
9887 int btrfs_prealloc_file_range(struct inode *inode, int mode, in btrfs_prealloc_file_range() argument
9891 return __btrfs_prealloc_file_range(inode, mode, start, num_bytes, in btrfs_prealloc_file_range()
9896 int btrfs_prealloc_file_range_trans(struct inode *inode, in btrfs_prealloc_file_range_trans() argument
9901 return __btrfs_prealloc_file_range(inode, mode, start, num_bytes, in btrfs_prealloc_file_range_trans()
9910 static int btrfs_permission(struct inode *inode, int mask) in btrfs_permission() argument
9912 struct btrfs_root *root = BTRFS_I(inode)->root; in btrfs_permission()
9913 umode_t mode = inode->i_mode; in btrfs_permission()
9919 if (BTRFS_I(inode)->flags & BTRFS_INODE_READONLY) in btrfs_permission()
9922 return generic_permission(inode, mask); in btrfs_permission()
9925 static int btrfs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) in btrfs_tmpfile()
9929 struct inode *inode = NULL; in btrfs_tmpfile() local
9945 inode = btrfs_new_inode(trans, root, dir, NULL, 0, in btrfs_tmpfile()
9947 if (IS_ERR(inode)) { in btrfs_tmpfile()
9948 ret = PTR_ERR(inode); in btrfs_tmpfile()
9949 inode = NULL; in btrfs_tmpfile()
9953 inode->i_fop = &btrfs_file_operations; in btrfs_tmpfile()
9954 inode->i_op = &btrfs_file_inode_operations; in btrfs_tmpfile()
9956 inode->i_mapping->a_ops = &btrfs_aops; in btrfs_tmpfile()
9957 BTRFS_I(inode)->io_tree.ops = &btrfs_extent_io_ops; in btrfs_tmpfile()
9959 ret = btrfs_init_inode_security(trans, inode, dir, NULL); in btrfs_tmpfile()
9963 ret = btrfs_update_inode(trans, root, inode); in btrfs_tmpfile()
9966 ret = btrfs_orphan_add(trans, inode); in btrfs_tmpfile()
9977 set_nlink(inode, 1); in btrfs_tmpfile()
9978 unlock_new_inode(inode); in btrfs_tmpfile()
9979 d_tmpfile(dentry, inode); in btrfs_tmpfile()
9980 mark_inode_dirty(inode); in btrfs_tmpfile()
9985 iput(inode); in btrfs_tmpfile()
9991 unlock_new_inode(inode); in btrfs_tmpfile()
9997 int btrfs_inode_check_errors(struct inode *inode) in btrfs_inode_check_errors() argument
10001 if (test_bit(AS_ENOSPC, &inode->i_mapping->flags) && in btrfs_inode_check_errors()
10002 test_and_clear_bit(AS_ENOSPC, &inode->i_mapping->flags)) in btrfs_inode_check_errors()
10004 if (test_bit(AS_EIO, &inode->i_mapping->flags) && in btrfs_inode_check_errors()
10005 test_and_clear_bit(AS_EIO, &inode->i_mapping->flags)) in btrfs_inode_check_errors()