Lines Matching refs:eb
63 struct extent_buffer *eb; in btrfs_leak_debug_check() local
76 eb = list_entry(buffers.next, struct extent_buffer, leak_list); in btrfs_leak_debug_check()
79 eb->start, eb->len, atomic_read(&eb->refs)); in btrfs_leak_debug_check()
80 list_del(&eb->leak_list); in btrfs_leak_debug_check()
81 kmem_cache_free(extent_buffer_cache, eb); in btrfs_leak_debug_check()
2152 int repair_eb_io_failure(struct btrfs_root *root, struct extent_buffer *eb, in repair_eb_io_failure() argument
2155 u64 start = eb->start; in repair_eb_io_failure()
2156 unsigned long i, num_pages = num_extent_pages(eb->start, eb->len); in repair_eb_io_failure()
2163 struct page *p = eb->pages[i]; in repair_eb_io_failure()
2919 static void attach_extent_buffer_page(struct extent_buffer *eb, in attach_extent_buffer_page() argument
2925 set_page_private(page, (unsigned long)eb); in attach_extent_buffer_page()
2927 WARN_ON(page->private != (unsigned long)eb); in attach_extent_buffer_page()
3672 void wait_on_extent_buffer_writeback(struct extent_buffer *eb) in wait_on_extent_buffer_writeback() argument
3674 wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_WRITEBACK, in wait_on_extent_buffer_writeback()
3679 lock_extent_buffer_for_io(struct extent_buffer *eb, in lock_extent_buffer_for_io() argument
3687 if (!btrfs_try_tree_write_lock(eb)) { in lock_extent_buffer_for_io()
3690 btrfs_tree_lock(eb); in lock_extent_buffer_for_io()
3693 if (test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags)) { in lock_extent_buffer_for_io()
3694 btrfs_tree_unlock(eb); in lock_extent_buffer_for_io()
3702 wait_on_extent_buffer_writeback(eb); in lock_extent_buffer_for_io()
3703 btrfs_tree_lock(eb); in lock_extent_buffer_for_io()
3704 if (!test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags)) in lock_extent_buffer_for_io()
3706 btrfs_tree_unlock(eb); in lock_extent_buffer_for_io()
3715 spin_lock(&eb->refs_lock); in lock_extent_buffer_for_io()
3716 if (test_and_clear_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)) { in lock_extent_buffer_for_io()
3717 set_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags); in lock_extent_buffer_for_io()
3718 spin_unlock(&eb->refs_lock); in lock_extent_buffer_for_io()
3719 btrfs_set_header_flag(eb, BTRFS_HEADER_FLAG_WRITTEN); in lock_extent_buffer_for_io()
3721 -eb->len, in lock_extent_buffer_for_io()
3725 spin_unlock(&eb->refs_lock); in lock_extent_buffer_for_io()
3728 btrfs_tree_unlock(eb); in lock_extent_buffer_for_io()
3733 num_pages = num_extent_pages(eb->start, eb->len); in lock_extent_buffer_for_io()
3735 struct page *p = eb->pages[i]; in lock_extent_buffer_for_io()
3749 static void end_extent_buffer_writeback(struct extent_buffer *eb) in end_extent_buffer_writeback() argument
3751 clear_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags); in end_extent_buffer_writeback()
3753 wake_up_bit(&eb->bflags, EXTENT_BUFFER_WRITEBACK); in end_extent_buffer_writeback()
3758 struct extent_buffer *eb = (struct extent_buffer *)page->private; in set_btree_ioerr() local
3759 struct btrfs_inode *btree_ino = BTRFS_I(eb->fs_info->btree_inode); in set_btree_ioerr()
3762 if (test_and_set_bit(EXTENT_BUFFER_WRITE_ERR, &eb->bflags)) in set_btree_ioerr()
3803 switch (eb->log_index) { in set_btree_ioerr()
3821 struct extent_buffer *eb; in end_bio_extent_buffer_writepage() local
3827 eb = (struct extent_buffer *)page->private; in end_bio_extent_buffer_writepage()
3828 BUG_ON(!eb); in end_bio_extent_buffer_writepage()
3829 done = atomic_dec_and_test(&eb->io_pages); in end_bio_extent_buffer_writepage()
3832 test_bit(EXTENT_BUFFER_WRITE_ERR, &eb->bflags)) { in end_bio_extent_buffer_writepage()
3842 end_extent_buffer_writeback(eb); in end_bio_extent_buffer_writepage()
3848 static noinline_for_stack int write_one_eb(struct extent_buffer *eb, in write_one_eb() argument
3855 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->start, eb->len); in write_one_eb()
3863 atomic_set(&eb->io_pages, num_pages); in write_one_eb()
3864 if (btrfs_header_owner(eb) == BTRFS_TREE_LOG_OBJECTID) in write_one_eb()
3868 struct page *p = eb->pages[i]; in write_one_eb()
3880 if (atomic_sub_and_test(num_pages - i, &eb->io_pages)) in write_one_eb()
3881 end_extent_buffer_writeback(eb); in write_one_eb()
3892 struct page *p = eb->pages[i]; in write_one_eb()
3906 struct extent_buffer *eb, *prev_eb = NULL; in btree_write_cache_pages() local
3963 eb = (struct extent_buffer *)page->private; in btree_write_cache_pages()
3970 if (WARN_ON(!eb)) { in btree_write_cache_pages()
3975 if (eb == prev_eb) { in btree_write_cache_pages()
3980 ret = atomic_inc_not_zero(&eb->refs); in btree_write_cache_pages()
3985 prev_eb = eb; in btree_write_cache_pages()
3986 ret = lock_extent_buffer_for_io(eb, fs_info, &epd); in btree_write_cache_pages()
3988 free_extent_buffer(eb); in btree_write_cache_pages()
3992 ret = write_one_eb(eb, fs_info, wbc, &epd); in btree_write_cache_pages()
3995 free_extent_buffer(eb); in btree_write_cache_pages()
3998 free_extent_buffer(eb); in btree_write_cache_pages()
4658 static void __free_extent_buffer(struct extent_buffer *eb) in __free_extent_buffer() argument
4660 btrfs_leak_debug_del(&eb->leak_list); in __free_extent_buffer()
4661 kmem_cache_free(extent_buffer_cache, eb); in __free_extent_buffer()
4664 int extent_buffer_under_io(struct extent_buffer *eb) in extent_buffer_under_io() argument
4666 return (atomic_read(&eb->io_pages) || in extent_buffer_under_io()
4667 test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags) || in extent_buffer_under_io()
4668 test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in extent_buffer_under_io()
4674 static void btrfs_release_extent_buffer_page(struct extent_buffer *eb) in btrfs_release_extent_buffer_page() argument
4678 int mapped = !test_bit(EXTENT_BUFFER_DUMMY, &eb->bflags); in btrfs_release_extent_buffer_page()
4680 BUG_ON(extent_buffer_under_io(eb)); in btrfs_release_extent_buffer_page()
4682 index = num_extent_pages(eb->start, eb->len); in btrfs_release_extent_buffer_page()
4688 page = eb->pages[index]; in btrfs_release_extent_buffer_page()
4701 page->private == (unsigned long)eb) { in btrfs_release_extent_buffer_page()
4702 BUG_ON(test_bit(EXTENT_BUFFER_DIRTY, &eb->bflags)); in btrfs_release_extent_buffer_page()
4726 static inline void btrfs_release_extent_buffer(struct extent_buffer *eb) in btrfs_release_extent_buffer() argument
4728 btrfs_release_extent_buffer_page(eb); in btrfs_release_extent_buffer()
4729 __free_extent_buffer(eb); in btrfs_release_extent_buffer()
4736 struct extent_buffer *eb = NULL; in __alloc_extent_buffer() local
4738 eb = kmem_cache_zalloc(extent_buffer_cache, GFP_NOFS|__GFP_NOFAIL); in __alloc_extent_buffer()
4739 eb->start = start; in __alloc_extent_buffer()
4740 eb->len = len; in __alloc_extent_buffer()
4741 eb->fs_info = fs_info; in __alloc_extent_buffer()
4742 eb->bflags = 0; in __alloc_extent_buffer()
4743 rwlock_init(&eb->lock); in __alloc_extent_buffer()
4744 atomic_set(&eb->write_locks, 0); in __alloc_extent_buffer()
4745 atomic_set(&eb->read_locks, 0); in __alloc_extent_buffer()
4746 atomic_set(&eb->blocking_readers, 0); in __alloc_extent_buffer()
4747 atomic_set(&eb->blocking_writers, 0); in __alloc_extent_buffer()
4748 atomic_set(&eb->spinning_readers, 0); in __alloc_extent_buffer()
4749 atomic_set(&eb->spinning_writers, 0); in __alloc_extent_buffer()
4750 eb->lock_nested = 0; in __alloc_extent_buffer()
4751 init_waitqueue_head(&eb->write_lock_wq); in __alloc_extent_buffer()
4752 init_waitqueue_head(&eb->read_lock_wq); in __alloc_extent_buffer()
4754 btrfs_leak_debug_add(&eb->leak_list, &buffers); in __alloc_extent_buffer()
4756 spin_lock_init(&eb->refs_lock); in __alloc_extent_buffer()
4757 atomic_set(&eb->refs, 1); in __alloc_extent_buffer()
4758 atomic_set(&eb->io_pages, 0); in __alloc_extent_buffer()
4767 return eb; in __alloc_extent_buffer()
4803 struct extent_buffer *eb; in alloc_dummy_extent_buffer() local
4819 eb = __alloc_extent_buffer(fs_info, start, len); in alloc_dummy_extent_buffer()
4820 if (!eb) in alloc_dummy_extent_buffer()
4824 eb->pages[i] = alloc_page(GFP_NOFS); in alloc_dummy_extent_buffer()
4825 if (!eb->pages[i]) in alloc_dummy_extent_buffer()
4828 set_extent_buffer_uptodate(eb); in alloc_dummy_extent_buffer()
4829 btrfs_set_header_nritems(eb, 0); in alloc_dummy_extent_buffer()
4830 set_bit(EXTENT_BUFFER_DUMMY, &eb->bflags); in alloc_dummy_extent_buffer()
4832 return eb; in alloc_dummy_extent_buffer()
4835 __free_page(eb->pages[i - 1]); in alloc_dummy_extent_buffer()
4836 __free_extent_buffer(eb); in alloc_dummy_extent_buffer()
4840 static void check_buffer_tree_ref(struct extent_buffer *eb) in check_buffer_tree_ref() argument
4863 refs = atomic_read(&eb->refs); in check_buffer_tree_ref()
4864 if (refs >= 2 && test_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in check_buffer_tree_ref()
4867 spin_lock(&eb->refs_lock); in check_buffer_tree_ref()
4868 if (!test_and_set_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in check_buffer_tree_ref()
4869 atomic_inc(&eb->refs); in check_buffer_tree_ref()
4870 spin_unlock(&eb->refs_lock); in check_buffer_tree_ref()
4873 static void mark_extent_buffer_accessed(struct extent_buffer *eb, in mark_extent_buffer_accessed() argument
4878 check_buffer_tree_ref(eb); in mark_extent_buffer_accessed()
4880 num_pages = num_extent_pages(eb->start, eb->len); in mark_extent_buffer_accessed()
4882 struct page *p = eb->pages[i]; in mark_extent_buffer_accessed()
4892 struct extent_buffer *eb; in find_extent_buffer() local
4895 eb = radix_tree_lookup(&fs_info->buffer_radix, in find_extent_buffer()
4897 if (eb && atomic_inc_not_zero(&eb->refs)) { in find_extent_buffer()
4914 if (test_bit(EXTENT_BUFFER_STALE, &eb->bflags)) { in find_extent_buffer()
4915 spin_lock(&eb->refs_lock); in find_extent_buffer()
4916 spin_unlock(&eb->refs_lock); in find_extent_buffer()
4918 mark_extent_buffer_accessed(eb, NULL); in find_extent_buffer()
4919 return eb; in find_extent_buffer()
4930 struct extent_buffer *eb, *exists = NULL; in alloc_test_extent_buffer() local
4933 eb = find_extent_buffer(fs_info, start); in alloc_test_extent_buffer()
4934 if (eb) in alloc_test_extent_buffer()
4935 return eb; in alloc_test_extent_buffer()
4936 eb = alloc_dummy_extent_buffer(fs_info, start); in alloc_test_extent_buffer()
4937 if (!eb) in alloc_test_extent_buffer()
4939 eb->fs_info = fs_info; in alloc_test_extent_buffer()
4946 start >> PAGE_CACHE_SHIFT, eb); in alloc_test_extent_buffer()
4956 check_buffer_tree_ref(eb); in alloc_test_extent_buffer()
4957 set_bit(EXTENT_BUFFER_IN_TREE, &eb->bflags); in alloc_test_extent_buffer()
4965 atomic_inc(&eb->refs); in alloc_test_extent_buffer()
4966 return eb; in alloc_test_extent_buffer()
4968 btrfs_release_extent_buffer(eb); in alloc_test_extent_buffer()
4980 struct extent_buffer *eb; in alloc_extent_buffer() local
4987 eb = find_extent_buffer(fs_info, start); in alloc_extent_buffer()
4988 if (eb) in alloc_extent_buffer()
4989 return eb; in alloc_extent_buffer()
4991 eb = __alloc_extent_buffer(fs_info, start, len); in alloc_extent_buffer()
4992 if (!eb) in alloc_extent_buffer()
5027 attach_extent_buffer_page(eb, p); in alloc_extent_buffer()
5030 eb->pages[i] = p; in alloc_extent_buffer()
5040 set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in alloc_extent_buffer()
5048 start >> PAGE_CACHE_SHIFT, eb); in alloc_extent_buffer()
5059 check_buffer_tree_ref(eb); in alloc_extent_buffer()
5060 set_bit(EXTENT_BUFFER_IN_TREE, &eb->bflags); in alloc_extent_buffer()
5071 SetPageChecked(eb->pages[0]); in alloc_extent_buffer()
5073 p = eb->pages[i]; in alloc_extent_buffer()
5077 unlock_page(eb->pages[0]); in alloc_extent_buffer()
5078 return eb; in alloc_extent_buffer()
5081 WARN_ON(!atomic_dec_and_test(&eb->refs)); in alloc_extent_buffer()
5083 if (eb->pages[i]) in alloc_extent_buffer()
5084 unlock_page(eb->pages[i]); in alloc_extent_buffer()
5087 btrfs_release_extent_buffer(eb); in alloc_extent_buffer()
5093 struct extent_buffer *eb = in btrfs_release_extent_buffer_rcu() local
5096 __free_extent_buffer(eb); in btrfs_release_extent_buffer_rcu()
5100 static int release_extent_buffer(struct extent_buffer *eb) in release_extent_buffer() argument
5102 WARN_ON(atomic_read(&eb->refs) == 0); in release_extent_buffer()
5103 if (atomic_dec_and_test(&eb->refs)) { in release_extent_buffer()
5104 if (test_and_clear_bit(EXTENT_BUFFER_IN_TREE, &eb->bflags)) { in release_extent_buffer()
5105 struct btrfs_fs_info *fs_info = eb->fs_info; in release_extent_buffer()
5107 spin_unlock(&eb->refs_lock); in release_extent_buffer()
5111 eb->start >> PAGE_CACHE_SHIFT); in release_extent_buffer()
5114 spin_unlock(&eb->refs_lock); in release_extent_buffer()
5118 btrfs_release_extent_buffer_page(eb); in release_extent_buffer()
5120 if (unlikely(test_bit(EXTENT_BUFFER_DUMMY, &eb->bflags))) { in release_extent_buffer()
5121 __free_extent_buffer(eb); in release_extent_buffer()
5125 call_rcu(&eb->rcu_head, btrfs_release_extent_buffer_rcu); in release_extent_buffer()
5128 spin_unlock(&eb->refs_lock); in release_extent_buffer()
5133 void free_extent_buffer(struct extent_buffer *eb) in free_extent_buffer() argument
5137 if (!eb) in free_extent_buffer()
5141 refs = atomic_read(&eb->refs); in free_extent_buffer()
5144 old = atomic_cmpxchg(&eb->refs, refs, refs - 1); in free_extent_buffer()
5149 spin_lock(&eb->refs_lock); in free_extent_buffer()
5150 if (atomic_read(&eb->refs) == 2 && in free_extent_buffer()
5151 test_bit(EXTENT_BUFFER_DUMMY, &eb->bflags)) in free_extent_buffer()
5152 atomic_dec(&eb->refs); in free_extent_buffer()
5154 if (atomic_read(&eb->refs) == 2 && in free_extent_buffer()
5155 test_bit(EXTENT_BUFFER_STALE, &eb->bflags) && in free_extent_buffer()
5156 !extent_buffer_under_io(eb) && in free_extent_buffer()
5157 test_and_clear_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in free_extent_buffer()
5158 atomic_dec(&eb->refs); in free_extent_buffer()
5164 release_extent_buffer(eb); in free_extent_buffer()
5167 void free_extent_buffer_stale(struct extent_buffer *eb) in free_extent_buffer_stale() argument
5169 if (!eb) in free_extent_buffer_stale()
5172 spin_lock(&eb->refs_lock); in free_extent_buffer_stale()
5173 set_bit(EXTENT_BUFFER_STALE, &eb->bflags); in free_extent_buffer_stale()
5175 if (atomic_read(&eb->refs) == 2 && !extent_buffer_under_io(eb) && in free_extent_buffer_stale()
5176 test_and_clear_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) in free_extent_buffer_stale()
5177 atomic_dec(&eb->refs); in free_extent_buffer_stale()
5178 release_extent_buffer(eb); in free_extent_buffer_stale()
5181 void clear_extent_buffer_dirty(struct extent_buffer *eb) in clear_extent_buffer_dirty() argument
5187 num_pages = num_extent_pages(eb->start, eb->len); in clear_extent_buffer_dirty()
5190 page = eb->pages[i]; in clear_extent_buffer_dirty()
5208 WARN_ON(atomic_read(&eb->refs) == 0); in clear_extent_buffer_dirty()
5211 int set_extent_buffer_dirty(struct extent_buffer *eb) in set_extent_buffer_dirty() argument
5217 check_buffer_tree_ref(eb); in set_extent_buffer_dirty()
5219 was_dirty = test_and_set_bit(EXTENT_BUFFER_DIRTY, &eb->bflags); in set_extent_buffer_dirty()
5221 num_pages = num_extent_pages(eb->start, eb->len); in set_extent_buffer_dirty()
5222 WARN_ON(atomic_read(&eb->refs) == 0); in set_extent_buffer_dirty()
5223 WARN_ON(!test_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)); in set_extent_buffer_dirty()
5226 set_page_dirty(eb->pages[i]); in set_extent_buffer_dirty()
5230 int clear_extent_buffer_uptodate(struct extent_buffer *eb) in clear_extent_buffer_uptodate() argument
5236 clear_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in clear_extent_buffer_uptodate()
5237 num_pages = num_extent_pages(eb->start, eb->len); in clear_extent_buffer_uptodate()
5239 page = eb->pages[i]; in clear_extent_buffer_uptodate()
5246 int set_extent_buffer_uptodate(struct extent_buffer *eb) in set_extent_buffer_uptodate() argument
5252 set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in set_extent_buffer_uptodate()
5253 num_pages = num_extent_pages(eb->start, eb->len); in set_extent_buffer_uptodate()
5255 page = eb->pages[i]; in set_extent_buffer_uptodate()
5261 int extent_buffer_uptodate(struct extent_buffer *eb) in extent_buffer_uptodate() argument
5263 return test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in extent_buffer_uptodate()
5267 struct extent_buffer *eb, u64 start, int wait, in read_extent_buffer_pages() argument
5282 if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags)) in read_extent_buffer_pages()
5286 WARN_ON(start < eb->start); in read_extent_buffer_pages()
5288 (eb->start >> PAGE_CACHE_SHIFT); in read_extent_buffer_pages()
5293 num_pages = num_extent_pages(eb->start, eb->len); in read_extent_buffer_pages()
5295 page = eb->pages[i]; in read_extent_buffer_pages()
5310 set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); in read_extent_buffer_pages()
5314 clear_bit(EXTENT_BUFFER_READ_ERR, &eb->bflags); in read_extent_buffer_pages()
5315 eb->read_mirror = 0; in read_extent_buffer_pages()
5316 atomic_set(&eb->io_pages, num_reads); in read_extent_buffer_pages()
5318 page = eb->pages[i]; in read_extent_buffer_pages()
5343 page = eb->pages[i]; in read_extent_buffer_pages()
5354 page = eb->pages[i]; in read_extent_buffer_pages()
5362 void read_extent_buffer(struct extent_buffer *eb, void *dstv, in read_extent_buffer() argument
5371 size_t start_offset = eb->start & ((u64)PAGE_CACHE_SIZE - 1); in read_extent_buffer()
5374 WARN_ON(start > eb->len); in read_extent_buffer()
5375 WARN_ON(start + len > eb->start + eb->len); in read_extent_buffer()
5380 page = eb->pages[i]; in read_extent_buffer()
5393 int read_extent_buffer_to_user(struct extent_buffer *eb, void __user *dstv, in read_extent_buffer_to_user() argument
5402 size_t start_offset = eb->start & ((u64)PAGE_CACHE_SIZE - 1); in read_extent_buffer_to_user()
5406 WARN_ON(start > eb->len); in read_extent_buffer_to_user()
5407 WARN_ON(start + len > eb->start + eb->len); in read_extent_buffer_to_user()
5412 page = eb->pages[i]; in read_extent_buffer_to_user()
5430 int map_private_extent_buffer(struct extent_buffer *eb, unsigned long start, in map_private_extent_buffer() argument
5438 size_t start_offset = eb->start & ((u64)PAGE_CACHE_SIZE - 1); in map_private_extent_buffer()
5454 if (start + min_len > eb->len) { in map_private_extent_buffer()
5457 eb->start, eb->len, start, min_len); in map_private_extent_buffer()
5461 p = eb->pages[i]; in map_private_extent_buffer()
5468 int memcmp_extent_buffer(struct extent_buffer *eb, const void *ptrv, in memcmp_extent_buffer() argument
5477 size_t start_offset = eb->start & ((u64)PAGE_CACHE_SIZE - 1); in memcmp_extent_buffer()
5481 WARN_ON(start > eb->len); in memcmp_extent_buffer()
5482 WARN_ON(start + len > eb->start + eb->len); in memcmp_extent_buffer()
5487 page = eb->pages[i]; in memcmp_extent_buffer()
5504 void write_extent_buffer(struct extent_buffer *eb, const void *srcv, in write_extent_buffer() argument
5512 size_t start_offset = eb->start & ((u64)PAGE_CACHE_SIZE - 1); in write_extent_buffer()
5515 WARN_ON(start > eb->len); in write_extent_buffer()
5516 WARN_ON(start + len > eb->start + eb->len); in write_extent_buffer()
5521 page = eb->pages[i]; in write_extent_buffer()
5535 void memset_extent_buffer(struct extent_buffer *eb, char c, in memset_extent_buffer() argument
5542 size_t start_offset = eb->start & ((u64)PAGE_CACHE_SIZE - 1); in memset_extent_buffer()
5545 WARN_ON(start > eb->len); in memset_extent_buffer()
5546 WARN_ON(start + len > eb->start + eb->len); in memset_extent_buffer()
5551 page = eb->pages[i]; in memset_extent_buffer()
5720 struct extent_buffer *eb; in try_release_extent_buffer() local
5732 eb = (struct extent_buffer *)page->private; in try_release_extent_buffer()
5733 BUG_ON(!eb); in try_release_extent_buffer()
5740 spin_lock(&eb->refs_lock); in try_release_extent_buffer()
5741 if (atomic_read(&eb->refs) != 1 || extent_buffer_under_io(eb)) { in try_release_extent_buffer()
5742 spin_unlock(&eb->refs_lock); in try_release_extent_buffer()
5752 if (!test_and_clear_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) { in try_release_extent_buffer()
5753 spin_unlock(&eb->refs_lock); in try_release_extent_buffer()
5757 return release_extent_buffer(eb); in try_release_extent_buffer()