Lines Matching refs:eb
66 struct extent_buffer *eb; in btrfs_leak_debug_check() local
79 eb = list_entry(buffers.next, struct extent_buffer, leak_list); in btrfs_leak_debug_check()
81 eb->start, eb->len, atomic_read(&eb->refs), eb->bflags); in btrfs_leak_debug_check()
82 list_del(&eb->leak_list); in btrfs_leak_debug_check()
83 kmem_cache_free(extent_buffer_cache, eb); in btrfs_leak_debug_check()
2256 int btrfs_repair_eb_io_failure(struct extent_buffer *eb, int mirror_num) in btrfs_repair_eb_io_failure() argument
2258 struct btrfs_fs_info *fs_info = eb->fs_info; in btrfs_repair_eb_io_failure()
2259 u64 start = eb->start; in btrfs_repair_eb_io_failure()
2260 int i, num_pages = num_extent_pages(eb); in btrfs_repair_eb_io_failure()
2267 struct page *p = eb->pages[i]; in btrfs_repair_eb_io_failure()
2791 struct extent_buffer *eb; in end_bio_extent_readpage() local
2793 eb = (struct extent_buffer *)page->private; in end_bio_extent_readpage()
2794 set_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags); in end_bio_extent_readpage()
2795 eb->read_mirror = mirror; in end_bio_extent_readpage()
2796 atomic_dec(&eb->io_pages); in end_bio_extent_readpage()
2798 &eb->bflags)) in end_bio_extent_readpage()
2799 btree_readahead_hook(eb, -EIO); in end_bio_extent_readpage()
2996 static void attach_extent_buffer_page(struct extent_buffer *eb, in attach_extent_buffer_page() argument
3002 set_page_private(page, (unsigned long)eb); in attach_extent_buffer_page()
3004 WARN_ON(page->private != (unsigned long)eb); in attach_extent_buffer_page()
3625 void wait_on_extent_buffer_writeback(struct extent_buffer *eb) in wait_on_extent_buffer_writeback() argument
3627 wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_WRITEBACK, in wait_on_extent_buffer_writeback()
3631 static void end_extent_buffer_writeback(struct extent_buffer *eb) in end_extent_buffer_writeback() argument
3633 clear_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags); in end_extent_buffer_writeback()
3635 wake_up_bit(&eb->bflags, EXTENT_BUFFER_WRITEBACK); in end_extent_buffer_writeback()
3645 static noinline_for_stack int lock_extent_buffer_for_io(struct extent_buffer *eb, in lock_extent_buffer_for_io() argument
3648 struct btrfs_fs_info *fs_info = eb->fs_info; in lock_extent_buffer_for_io()
3653 if (!btrfs_try_tree_write_lock(eb)) { in lock_extent_buffer_for_io()
3658 btrfs_tree_lock(eb); in lock_extent_buffer_for_io()
3661 if (test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags)) { in lock_extent_buffer_for_io()
3662 btrfs_tree_unlock(eb); in lock_extent_buffer_for_io()
3672 wait_on_extent_buffer_writeback(eb); in lock_extent_buffer_for_io()
3673 btrfs_tree_lock(eb); in lock_extent_buffer_for_io()
3674 if (!test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags)) in lock_extent_buffer_for_io()
3676 btrfs_tree_unlock(eb); in lock_extent_buffer_for_io()
3685 spin_lock(&eb->refs_lock); in lock_extent_buffer_for_io()
3686 if (test_and_clear_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)) { in lock_extent_buffer_for_io()
3687 set_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags); in lock_extent_buffer_for_io()
3688 spin_unlock(&eb->refs_lock); in lock_extent_buffer_for_io()
3689 btrfs_set_header_flag(eb, BTRFS_HEADER_FLAG_WRITTEN); in lock_extent_buffer_for_io()
3691 -eb->len, in lock_extent_buffer_for_io()
3695 spin_unlock(&eb->refs_lock); in lock_extent_buffer_for_io()
3698 btrfs_tree_unlock(eb); in lock_extent_buffer_for_io()
3703 num_pages = num_extent_pages(eb); in lock_extent_buffer_for_io()
3705 struct page *p = eb->pages[i]; in lock_extent_buffer_for_io()
3727 unlock_page(eb->pages[i]); in lock_extent_buffer_for_io()
3733 btrfs_tree_lock(eb); in lock_extent_buffer_for_io()
3734 spin_lock(&eb->refs_lock); in lock_extent_buffer_for_io()
3735 set_bit(EXTENT_BUFFER_DIRTY, &eb->bflags); in lock_extent_buffer_for_io()
3736 end_extent_buffer_writeback(eb); in lock_extent_buffer_for_io()
3737 spin_unlock(&eb->refs_lock); in lock_extent_buffer_for_io()
3738 percpu_counter_add_batch(&fs_info->dirty_metadata_bytes, eb->len, in lock_extent_buffer_for_io()
3740 btrfs_clear_header_flag(eb, BTRFS_HEADER_FLAG_WRITTEN); in lock_extent_buffer_for_io()
3741 btrfs_tree_unlock(eb); in lock_extent_buffer_for_io()
3747 struct extent_buffer *eb = (struct extent_buffer *)page->private; in set_btree_ioerr() local
3751 if (test_and_set_bit(EXTENT_BUFFER_WRITE_ERR, &eb->bflags)) in set_btree_ioerr()
3758 fs_info = eb->fs_info; in set_btree_ioerr()
3760 eb->len, fs_info->dirty_metadata_batch); in set_btree_ioerr()
3800 switch (eb->log_index) { in set_btree_ioerr()
3802 set_bit(BTRFS_FS_BTREE_ERR, &eb->fs_info->flags); in set_btree_ioerr()
3805 set_bit(BTRFS_FS_LOG1_ERR, &eb->fs_info->flags); in set_btree_ioerr()
3808 set_bit(BTRFS_FS_LOG2_ERR, &eb->fs_info->flags); in set_btree_ioerr()
3818 struct extent_buffer *eb; in end_bio_extent_buffer_writepage() local
3826 eb = (struct extent_buffer *)page->private; in end_bio_extent_buffer_writepage()
3827 BUG_ON(!eb); in end_bio_extent_buffer_writepage()
3828 done = atomic_dec_and_test(&eb->io_pages); in end_bio_extent_buffer_writepage()
3831 test_bit(EXTENT_BUFFER_WRITE_ERR, &eb->bflags)) { in end_bio_extent_buffer_writepage()
3841 end_extent_buffer_writeback(eb); in end_bio_extent_buffer_writepage()
3847 static noinline_for_stack int write_one_eb(struct extent_buffer *eb, in write_one_eb() argument
3851 struct btrfs_fs_info *fs_info = eb->fs_info; in write_one_eb()
3854 u64 offset = eb->start; in write_one_eb()
3861 clear_bit(EXTENT_BUFFER_WRITE_ERR, &eb->bflags); in write_one_eb()
3862 num_pages = num_extent_pages(eb); in write_one_eb()
3863 atomic_set(&eb->io_pages, num_pages); in write_one_eb()
3866 nritems = btrfs_header_nritems(eb); in write_one_eb()
3867 if (btrfs_header_level(eb) > 0) { in write_one_eb()
3870 memzero_extent_buffer(eb, end, eb->len - end); in write_one_eb()
3877 end = BTRFS_LEAF_DATA_OFFSET + leaf_data_end(eb); in write_one_eb()
3878 memzero_extent_buffer(eb, start, end - start); in write_one_eb()
3882 struct page *p = eb->pages[i]; in write_one_eb()
3895 if (atomic_sub_and_test(num_pages - i, &eb->io_pages)) in write_one_eb()
3896 end_extent_buffer_writeback(eb); in write_one_eb()
3907 struct page *p = eb->pages[i]; in write_one_eb()
3920 struct extent_buffer *eb, *prev_eb = NULL; in btree_write_cache_pages() local
3971 eb = (struct extent_buffer *)page->private; in btree_write_cache_pages()
3978 if (WARN_ON(!eb)) { in btree_write_cache_pages()
3983 if (eb == prev_eb) { in btree_write_cache_pages()
3988 ret = atomic_inc_not_zero(&eb->refs); in btree_write_cache_pages()
3993 prev_eb = eb; in btree_write_cache_pages()
3994 ret = lock_extent_buffer_for_io(eb, &epd); in btree_write_cache_pages()
3996 free_extent_buffer(eb); in btree_write_cache_pages()
4000 free_extent_buffer(eb); in btree_write_cache_pages()
4004 ret = write_one_eb(eb, wbc, &epd); in btree_write_cache_pages()
4007 free_extent_buffer(eb); in btree_write_cache_pages()
4010 free_extent_buffer(eb); in btree_write_cache_pages()
4804 static void __free_extent_buffer(struct extent_buffer *eb) in __free_extent_buffer() argument
4806 btrfs_leak_debug_del(&eb->leak_list); in __free_extent_buffer()
4807 kmem_cache_free(extent_buffer_cache, eb); in __free_extent_buffer()
4810 int extent_buffer_under_io(struct extent_buffer *eb) in extent_buffer_under_io() argument
4812 return (atomic_read(&eb->io_pages) || in extent_buffer_under_io()
4813 test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags) || in extent_buffer_under_io()
4814 test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in extent_buffer_under_io()
4820 static void btrfs_release_extent_buffer_pages(struct extent_buffer *eb) in btrfs_release_extent_buffer_pages() argument
4824 int mapped = !test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags); in btrfs_release_extent_buffer_pages()
4826 BUG_ON(extent_buffer_under_io(eb)); in btrfs_release_extent_buffer_pages()
4828 num_pages = num_extent_pages(eb); in btrfs_release_extent_buffer_pages()
4830 struct page *page = eb->pages[i]; in btrfs_release_extent_buffer_pages()
4844 page->private == (unsigned long)eb) { in btrfs_release_extent_buffer_pages()
4845 BUG_ON(test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btrfs_release_extent_buffer_pages()
4869 static inline void btrfs_release_extent_buffer(struct extent_buffer *eb) in btrfs_release_extent_buffer() argument
4871 btrfs_release_extent_buffer_pages(eb); in btrfs_release_extent_buffer()
4872 __free_extent_buffer(eb); in btrfs_release_extent_buffer()
4879 struct extent_buffer *eb = NULL; in __alloc_extent_buffer() local
4881 eb = kmem_cache_zalloc(extent_buffer_cache, GFP_NOFS|__GFP_NOFAIL); in __alloc_extent_buffer()
4882 eb->start = start; in __alloc_extent_buffer()
4883 eb->len = len; in __alloc_extent_buffer()
4884 eb->fs_info = fs_info; in __alloc_extent_buffer()
4885 eb->bflags = 0; in __alloc_extent_buffer()
4886 rwlock_init(&eb->lock); in __alloc_extent_buffer()
4887 atomic_set(&eb->blocking_readers, 0); in __alloc_extent_buffer()
4888 eb->blocking_writers = 0; in __alloc_extent_buffer()
4889 eb->lock_nested = false; in __alloc_extent_buffer()
4890 init_waitqueue_head(&eb->write_lock_wq); in __alloc_extent_buffer()
4891 init_waitqueue_head(&eb->read_lock_wq); in __alloc_extent_buffer()
4893 btrfs_leak_debug_add(&eb->leak_list, &buffers); in __alloc_extent_buffer()
4895 spin_lock_init(&eb->refs_lock); in __alloc_extent_buffer()
4896 atomic_set(&eb->refs, 1); in __alloc_extent_buffer()
4897 atomic_set(&eb->io_pages, 0); in __alloc_extent_buffer()
4907 eb->spinning_writers = 0; in __alloc_extent_buffer()
4908 atomic_set(&eb->spinning_readers, 0); in __alloc_extent_buffer()
4909 atomic_set(&eb->read_locks, 0); in __alloc_extent_buffer()
4910 eb->write_locks = 0; in __alloc_extent_buffer()
4913 return eb; in __alloc_extent_buffer()
4949 struct extent_buffer *eb; in __alloc_dummy_extent_buffer() local
4953 eb = __alloc_extent_buffer(fs_info, start, len); in __alloc_dummy_extent_buffer()
4954 if (!eb) in __alloc_dummy_extent_buffer()
4957 num_pages = num_extent_pages(eb); in __alloc_dummy_extent_buffer()
4959 eb->pages[i] = alloc_page(GFP_NOFS); in __alloc_dummy_extent_buffer()
4960 if (!eb->pages[i]) in __alloc_dummy_extent_buffer()
4963 set_extent_buffer_uptodate(eb); in __alloc_dummy_extent_buffer()
4964 btrfs_set_header_nritems(eb, 0); in __alloc_dummy_extent_buffer()
4965 set_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags); in __alloc_dummy_extent_buffer()
4967 return eb; in __alloc_dummy_extent_buffer()
4970 __free_page(eb->pages[i - 1]); in __alloc_dummy_extent_buffer()
4971 __free_extent_buffer(eb); in __alloc_dummy_extent_buffer()
4981 static void check_buffer_tree_ref(struct extent_buffer *eb) in check_buffer_tree_ref() argument
5004 refs = atomic_read(&eb->refs); in check_buffer_tree_ref()
5005 if (refs >= 2 && test_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in check_buffer_tree_ref()
5008 spin_lock(&eb->refs_lock); in check_buffer_tree_ref()
5009 if (!test_and_set_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in check_buffer_tree_ref()
5010 atomic_inc(&eb->refs); in check_buffer_tree_ref()
5011 spin_unlock(&eb->refs_lock); in check_buffer_tree_ref()
5014 static void mark_extent_buffer_accessed(struct extent_buffer *eb, in mark_extent_buffer_accessed() argument
5019 check_buffer_tree_ref(eb); in mark_extent_buffer_accessed()
5021 num_pages = num_extent_pages(eb); in mark_extent_buffer_accessed()
5023 struct page *p = eb->pages[i]; in mark_extent_buffer_accessed()
5033 struct extent_buffer *eb; in find_extent_buffer() local
5036 eb = radix_tree_lookup(&fs_info->buffer_radix, in find_extent_buffer()
5038 if (eb && atomic_inc_not_zero(&eb->refs)) { in find_extent_buffer()
5055 if (test_bit(EXTENT_BUFFER_STALE, &eb->bflags)) { in find_extent_buffer()
5056 spin_lock(&eb->refs_lock); in find_extent_buffer()
5057 spin_unlock(&eb->refs_lock); in find_extent_buffer()
5059 mark_extent_buffer_accessed(eb, NULL); in find_extent_buffer()
5060 return eb; in find_extent_buffer()
5071 struct extent_buffer *eb, *exists = NULL; in alloc_test_extent_buffer() local
5074 eb = find_extent_buffer(fs_info, start); in alloc_test_extent_buffer()
5075 if (eb) in alloc_test_extent_buffer()
5076 return eb; in alloc_test_extent_buffer()
5077 eb = alloc_dummy_extent_buffer(fs_info, start); in alloc_test_extent_buffer()
5078 if (!eb) in alloc_test_extent_buffer()
5080 eb->fs_info = fs_info; in alloc_test_extent_buffer()
5087 start >> PAGE_SHIFT, eb); in alloc_test_extent_buffer()
5097 check_buffer_tree_ref(eb); in alloc_test_extent_buffer()
5098 set_bit(EXTENT_BUFFER_IN_TREE, &eb->bflags); in alloc_test_extent_buffer()
5100 return eb; in alloc_test_extent_buffer()
5102 btrfs_release_extent_buffer(eb); in alloc_test_extent_buffer()
5114 struct extent_buffer *eb; in alloc_extent_buffer() local
5126 eb = find_extent_buffer(fs_info, start); in alloc_extent_buffer()
5127 if (eb) in alloc_extent_buffer()
5128 return eb; in alloc_extent_buffer()
5130 eb = __alloc_extent_buffer(fs_info, start, len); in alloc_extent_buffer()
5131 if (!eb) in alloc_extent_buffer()
5134 num_pages = num_extent_pages(eb); in alloc_extent_buffer()
5169 attach_extent_buffer_page(eb, p); in alloc_extent_buffer()
5172 eb->pages[i] = p; in alloc_extent_buffer()
5185 set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in alloc_extent_buffer()
5195 start >> PAGE_SHIFT, eb); in alloc_extent_buffer()
5206 check_buffer_tree_ref(eb); in alloc_extent_buffer()
5207 set_bit(EXTENT_BUFFER_IN_TREE, &eb->bflags); in alloc_extent_buffer()
5215 unlock_page(eb->pages[i]); in alloc_extent_buffer()
5216 return eb; in alloc_extent_buffer()
5219 WARN_ON(!atomic_dec_and_test(&eb->refs)); in alloc_extent_buffer()
5221 if (eb->pages[i]) in alloc_extent_buffer()
5222 unlock_page(eb->pages[i]); in alloc_extent_buffer()
5225 btrfs_release_extent_buffer(eb); in alloc_extent_buffer()
5231 struct extent_buffer *eb = in btrfs_release_extent_buffer_rcu() local
5234 __free_extent_buffer(eb); in btrfs_release_extent_buffer_rcu()
5237 static int release_extent_buffer(struct extent_buffer *eb) in release_extent_buffer() argument
5239 lockdep_assert_held(&eb->refs_lock); in release_extent_buffer()
5241 WARN_ON(atomic_read(&eb->refs) == 0); in release_extent_buffer()
5242 if (atomic_dec_and_test(&eb->refs)) { in release_extent_buffer()
5243 if (test_and_clear_bit(EXTENT_BUFFER_IN_TREE, &eb->bflags)) { in release_extent_buffer()
5244 struct btrfs_fs_info *fs_info = eb->fs_info; in release_extent_buffer()
5246 spin_unlock(&eb->refs_lock); in release_extent_buffer()
5250 eb->start >> PAGE_SHIFT); in release_extent_buffer()
5253 spin_unlock(&eb->refs_lock); in release_extent_buffer()
5257 btrfs_release_extent_buffer_pages(eb); in release_extent_buffer()
5259 if (unlikely(test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags))) { in release_extent_buffer()
5260 __free_extent_buffer(eb); in release_extent_buffer()
5264 call_rcu(&eb->rcu_head, btrfs_release_extent_buffer_rcu); in release_extent_buffer()
5267 spin_unlock(&eb->refs_lock); in release_extent_buffer()
5272 void free_extent_buffer(struct extent_buffer *eb) in free_extent_buffer() argument
5276 if (!eb) in free_extent_buffer()
5280 refs = atomic_read(&eb->refs); in free_extent_buffer()
5281 if ((!test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags) && refs <= 3) in free_extent_buffer()
5282 || (test_bit(EXTENT_BUFFER_UNMAPPED, &eb->bflags) && in free_extent_buffer()
5285 old = atomic_cmpxchg(&eb->refs, refs, refs - 1); in free_extent_buffer()
5290 spin_lock(&eb->refs_lock); in free_extent_buffer()
5291 if (atomic_read(&eb->refs) == 2 && in free_extent_buffer()
5292 test_bit(EXTENT_BUFFER_STALE, &eb->bflags) && in free_extent_buffer()
5293 !extent_buffer_under_io(eb) && in free_extent_buffer()
5294 test_and_clear_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in free_extent_buffer()
5295 atomic_dec(&eb->refs); in free_extent_buffer()
5301 release_extent_buffer(eb); in free_extent_buffer()
5304 void free_extent_buffer_stale(struct extent_buffer *eb) in free_extent_buffer_stale() argument
5306 if (!eb) in free_extent_buffer_stale()
5309 spin_lock(&eb->refs_lock); in free_extent_buffer_stale()
5310 set_bit(EXTENT_BUFFER_STALE, &eb->bflags); in free_extent_buffer_stale()
5312 if (atomic_read(&eb->refs) == 2 && !extent_buffer_under_io(eb) && in free_extent_buffer_stale()
5313 test_and_clear_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in free_extent_buffer_stale()
5314 atomic_dec(&eb->refs); in free_extent_buffer_stale()
5315 release_extent_buffer(eb); in free_extent_buffer_stale()
5318 void clear_extent_buffer_dirty(struct extent_buffer *eb) in clear_extent_buffer_dirty() argument
5324 num_pages = num_extent_pages(eb); in clear_extent_buffer_dirty()
5327 page = eb->pages[i]; in clear_extent_buffer_dirty()
5343 WARN_ON(atomic_read(&eb->refs) == 0); in clear_extent_buffer_dirty()
5346 bool set_extent_buffer_dirty(struct extent_buffer *eb) in set_extent_buffer_dirty() argument
5352 check_buffer_tree_ref(eb); in set_extent_buffer_dirty()
5354 was_dirty = test_and_set_bit(EXTENT_BUFFER_DIRTY, &eb->bflags); in set_extent_buffer_dirty()
5356 num_pages = num_extent_pages(eb); in set_extent_buffer_dirty()
5357 WARN_ON(atomic_read(&eb->refs) == 0); in set_extent_buffer_dirty()
5358 WARN_ON(!test_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)); in set_extent_buffer_dirty()
5362 set_page_dirty(eb->pages[i]); in set_extent_buffer_dirty()
5366 ASSERT(PageDirty(eb->pages[i])); in set_extent_buffer_dirty()
5372 void clear_extent_buffer_uptodate(struct extent_buffer *eb) in clear_extent_buffer_uptodate() argument
5378 clear_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in clear_extent_buffer_uptodate()
5379 num_pages = num_extent_pages(eb); in clear_extent_buffer_uptodate()
5381 page = eb->pages[i]; in clear_extent_buffer_uptodate()
5387 void set_extent_buffer_uptodate(struct extent_buffer *eb) in set_extent_buffer_uptodate() argument
5393 set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in set_extent_buffer_uptodate()
5394 num_pages = num_extent_pages(eb); in set_extent_buffer_uptodate()
5396 page = eb->pages[i]; in set_extent_buffer_uptodate()
5401 int read_extent_buffer_pages(struct extent_buffer *eb, int wait, int mirror_num) in read_extent_buffer_pages() argument
5413 struct extent_io_tree *tree = &BTRFS_I(eb->fs_info->btree_inode)->io_tree; in read_extent_buffer_pages()
5415 if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags)) in read_extent_buffer_pages()
5418 num_pages = num_extent_pages(eb); in read_extent_buffer_pages()
5420 page = eb->pages[i]; in read_extent_buffer_pages()
5435 page = eb->pages[i]; in read_extent_buffer_pages()
5443 set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in read_extent_buffer_pages()
5447 clear_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags); in read_extent_buffer_pages()
5448 eb->read_mirror = 0; in read_extent_buffer_pages()
5449 atomic_set(&eb->io_pages, num_reads); in read_extent_buffer_pages()
5451 page = eb->pages[i]; in read_extent_buffer_pages()
5455 atomic_dec(&eb->io_pages); in read_extent_buffer_pages()
5475 atomic_dec(&eb->io_pages); in read_extent_buffer_pages()
5492 page = eb->pages[i]; in read_extent_buffer_pages()
5503 page = eb->pages[locked_pages]; in read_extent_buffer_pages()
5509 void read_extent_buffer(const struct extent_buffer *eb, void *dstv, in read_extent_buffer() argument
5517 size_t start_offset = offset_in_page(eb->start); in read_extent_buffer()
5520 if (start + len > eb->len) { in read_extent_buffer()
5522 eb->start, eb->len, start, len); in read_extent_buffer()
5530 page = eb->pages[i]; in read_extent_buffer()
5543 int read_extent_buffer_to_user(const struct extent_buffer *eb, in read_extent_buffer_to_user() argument
5552 size_t start_offset = offset_in_page(eb->start); in read_extent_buffer_to_user()
5556 WARN_ON(start > eb->len); in read_extent_buffer_to_user()
5557 WARN_ON(start + len > eb->start + eb->len); in read_extent_buffer_to_user()
5562 page = eb->pages[i]; in read_extent_buffer_to_user()
5585 int map_private_extent_buffer(const struct extent_buffer *eb, in map_private_extent_buffer() argument
5593 size_t start_offset = offset_in_page(eb->start); in map_private_extent_buffer()
5598 if (start + min_len > eb->len) { in map_private_extent_buffer()
5600 eb->start, eb->len, start, min_len); in map_private_extent_buffer()
5615 p = eb->pages[i]; in map_private_extent_buffer()
5622 int memcmp_extent_buffer(const struct extent_buffer *eb, const void *ptrv, in memcmp_extent_buffer() argument
5630 size_t start_offset = offset_in_page(eb->start); in memcmp_extent_buffer()
5634 WARN_ON(start > eb->len); in memcmp_extent_buffer()
5635 WARN_ON(start + len > eb->start + eb->len); in memcmp_extent_buffer()
5640 page = eb->pages[i]; in memcmp_extent_buffer()
5657 void write_extent_buffer_chunk_tree_uuid(struct extent_buffer *eb, in write_extent_buffer_chunk_tree_uuid() argument
5662 WARN_ON(!PageUptodate(eb->pages[0])); in write_extent_buffer_chunk_tree_uuid()
5663 kaddr = page_address(eb->pages[0]); in write_extent_buffer_chunk_tree_uuid()
5668 void write_extent_buffer_fsid(struct extent_buffer *eb, const void *srcv) in write_extent_buffer_fsid() argument
5672 WARN_ON(!PageUptodate(eb->pages[0])); in write_extent_buffer_fsid()
5673 kaddr = page_address(eb->pages[0]); in write_extent_buffer_fsid()
5678 void write_extent_buffer(struct extent_buffer *eb, const void *srcv, in write_extent_buffer() argument
5686 size_t start_offset = offset_in_page(eb->start); in write_extent_buffer()
5689 WARN_ON(start > eb->len); in write_extent_buffer()
5690 WARN_ON(start + len > eb->start + eb->len); in write_extent_buffer()
5695 page = eb->pages[i]; in write_extent_buffer()
5709 void memzero_extent_buffer(struct extent_buffer *eb, unsigned long start, in memzero_extent_buffer() argument
5716 size_t start_offset = offset_in_page(eb->start); in memzero_extent_buffer()
5719 WARN_ON(start > eb->len); in memzero_extent_buffer()
5720 WARN_ON(start + len > eb->start + eb->len); in memzero_extent_buffer()
5725 page = eb->pages[i]; in memzero_extent_buffer()
5797 static inline void eb_bitmap_offset(struct extent_buffer *eb, in eb_bitmap_offset() argument
5802 size_t start_offset = offset_in_page(eb->start); in eb_bitmap_offset()
5823 int extent_buffer_test_bit(struct extent_buffer *eb, unsigned long start, in extent_buffer_test_bit() argument
5831 eb_bitmap_offset(eb, start, nr, &i, &offset); in extent_buffer_test_bit()
5832 page = eb->pages[i]; in extent_buffer_test_bit()
5845 void extent_buffer_bitmap_set(struct extent_buffer *eb, unsigned long start, in extent_buffer_bitmap_set() argument
5856 eb_bitmap_offset(eb, start, pos, &i, &offset); in extent_buffer_bitmap_set()
5857 page = eb->pages[i]; in extent_buffer_bitmap_set()
5868 page = eb->pages[++i]; in extent_buffer_bitmap_set()
5887 void extent_buffer_bitmap_clear(struct extent_buffer *eb, unsigned long start, in extent_buffer_bitmap_clear() argument
5898 eb_bitmap_offset(eb, start, pos, &i, &offset); in extent_buffer_bitmap_clear()
5899 page = eb->pages[i]; in extent_buffer_bitmap_clear()
5910 page = eb->pages[++i]; in extent_buffer_bitmap_clear()
6044 struct extent_buffer *eb; in try_release_extent_buffer() local
6056 eb = (struct extent_buffer *)page->private; in try_release_extent_buffer()
6057 BUG_ON(!eb); in try_release_extent_buffer()
6064 spin_lock(&eb->refs_lock); in try_release_extent_buffer()
6065 if (atomic_read(&eb->refs) != 1 || extent_buffer_under_io(eb)) { in try_release_extent_buffer()
6066 spin_unlock(&eb->refs_lock); in try_release_extent_buffer()
6076 if (!test_and_clear_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) { in try_release_extent_buffer()
6077 spin_unlock(&eb->refs_lock); in try_release_extent_buffer()
6081 return release_extent_buffer(eb); in try_release_extent_buffer()