Lines Matching refs:fs_info

97 int btrfs_attach_subpage(const struct btrfs_fs_info *fs_info,  in btrfs_attach_subpage()  argument
110 if (fs_info->sectorsize == PAGE_SIZE || PagePrivate(page)) in btrfs_attach_subpage()
113 subpage = btrfs_alloc_subpage(fs_info, type); in btrfs_attach_subpage()
121 void btrfs_detach_subpage(const struct btrfs_fs_info *fs_info, in btrfs_detach_subpage() argument
127 if (fs_info->sectorsize == PAGE_SIZE || !PagePrivate(page)) in btrfs_detach_subpage()
135 struct btrfs_subpage *btrfs_alloc_subpage(const struct btrfs_fs_info *fs_info, in btrfs_alloc_subpage() argument
141 ASSERT(fs_info->sectorsize < PAGE_SIZE); in btrfs_alloc_subpage()
144 BITS_TO_LONGS(fs_info->subpage_info->total_nr_bits)); in btrfs_alloc_subpage()
173 void btrfs_page_inc_eb_refs(const struct btrfs_fs_info *fs_info, in btrfs_page_inc_eb_refs() argument
178 if (fs_info->sectorsize == PAGE_SIZE) in btrfs_page_inc_eb_refs()
188 void btrfs_page_dec_eb_refs(const struct btrfs_fs_info *fs_info, in btrfs_page_dec_eb_refs() argument
193 if (fs_info->sectorsize == PAGE_SIZE) in btrfs_page_dec_eb_refs()
204 static void btrfs_subpage_assert(const struct btrfs_fs_info *fs_info, in btrfs_subpage_assert() argument
209 ASSERT(IS_ALIGNED(start, fs_info->sectorsize) && in btrfs_subpage_assert()
210 IS_ALIGNED(len, fs_info->sectorsize)); in btrfs_subpage_assert()
220 void btrfs_subpage_start_reader(const struct btrfs_fs_info *fs_info, in btrfs_subpage_start_reader() argument
224 const int nbits = len >> fs_info->sectorsize_bits; in btrfs_subpage_start_reader()
226 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_start_reader()
231 void btrfs_subpage_end_reader(const struct btrfs_fs_info *fs_info, in btrfs_subpage_end_reader() argument
235 const int nbits = len >> fs_info->sectorsize_bits; in btrfs_subpage_end_reader()
239 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_end_reader()
273 void btrfs_subpage_start_writer(const struct btrfs_fs_info *fs_info, in btrfs_subpage_start_writer() argument
277 const int nbits = (len >> fs_info->sectorsize_bits); in btrfs_subpage_start_writer()
280 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_start_writer()
287 bool btrfs_subpage_end_and_test_writer(const struct btrfs_fs_info *fs_info, in btrfs_subpage_end_and_test_writer() argument
291 const int nbits = (len >> fs_info->sectorsize_bits); in btrfs_subpage_end_and_test_writer()
293 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_end_and_test_writer()
319 int btrfs_page_start_writer_lock(const struct btrfs_fs_info *fs_info, in btrfs_page_start_writer_lock() argument
322 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) { in btrfs_page_start_writer_lock()
332 btrfs_subpage_start_writer(fs_info, page, start, len); in btrfs_page_start_writer_lock()
336 void btrfs_page_end_writer_lock(const struct btrfs_fs_info *fs_info, in btrfs_page_end_writer_lock() argument
339 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) in btrfs_page_end_writer_lock()
342 if (btrfs_subpage_end_and_test_writer(fs_info, page, start, len)) in btrfs_page_end_writer_lock()
368 #define subpage_calc_start_bit(fs_info, page, name, start, len) \ argument
372 btrfs_subpage_assert(fs_info, page, start, len); \
373 start_bit = offset_in_page(start) >> fs_info->sectorsize_bits; \
374 start_bit += fs_info->subpage_info->name##_offset; \
378 #define subpage_test_bitmap_all_set(fs_info, subpage, name) \ argument
380 fs_info->subpage_info->name##_offset, \
381 fs_info->subpage_info->bitmap_nr_bits)
383 #define subpage_test_bitmap_all_zero(fs_info, subpage, name) \ argument
385 fs_info->subpage_info->name##_offset, \
386 fs_info->subpage_info->bitmap_nr_bits)
388 void btrfs_subpage_set_uptodate(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_uptodate() argument
392 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_uptodate()
397 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_uptodate()
398 if (subpage_test_bitmap_all_set(fs_info, subpage, uptodate)) in btrfs_subpage_set_uptodate()
403 void btrfs_subpage_clear_uptodate(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_uptodate() argument
407 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_uptodate()
412 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_uptodate()
417 void btrfs_subpage_set_error(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_error() argument
421 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_error()
426 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_error()
431 void btrfs_subpage_clear_error(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_error() argument
435 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_error()
440 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_error()
441 if (subpage_test_bitmap_all_zero(fs_info, subpage, error)) in btrfs_subpage_clear_error()
446 void btrfs_subpage_set_dirty(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_dirty() argument
450 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_dirty()
455 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_dirty()
470 bool btrfs_subpage_clear_and_test_dirty(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_and_test_dirty() argument
474 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_and_test_dirty()
480 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_and_test_dirty()
481 if (subpage_test_bitmap_all_zero(fs_info, subpage, dirty)) in btrfs_subpage_clear_and_test_dirty()
487 void btrfs_subpage_clear_dirty(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_dirty() argument
492 last = btrfs_subpage_clear_and_test_dirty(fs_info, page, start, len); in btrfs_subpage_clear_dirty()
497 void btrfs_subpage_set_writeback(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_writeback() argument
501 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_writeback()
506 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_writeback()
511 void btrfs_subpage_clear_writeback(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_writeback() argument
515 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_writeback()
520 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_writeback()
521 if (subpage_test_bitmap_all_zero(fs_info, subpage, writeback)) { in btrfs_subpage_clear_writeback()
528 void btrfs_subpage_set_ordered(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_ordered() argument
532 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_ordered()
537 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_ordered()
542 void btrfs_subpage_clear_ordered(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_ordered() argument
546 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_ordered()
551 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_ordered()
552 if (subpage_test_bitmap_all_zero(fs_info, subpage, ordered)) in btrfs_subpage_clear_ordered()
557 void btrfs_subpage_set_checked(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_checked() argument
561 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_checked()
566 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_checked()
567 if (subpage_test_bitmap_all_set(fs_info, subpage, checked)) in btrfs_subpage_set_checked()
572 void btrfs_subpage_clear_checked(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_checked() argument
576 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_checked()
581 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_checked()
591 bool btrfs_subpage_test_##name(const struct btrfs_fs_info *fs_info, \
595 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, \
602 len >> fs_info->sectorsize_bits); \
620 void btrfs_page_set_##name(const struct btrfs_fs_info *fs_info, \
623 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) { \
627 btrfs_subpage_set_##name(fs_info, page, start, len); \
629 void btrfs_page_clear_##name(const struct btrfs_fs_info *fs_info, \
632 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) { \
636 btrfs_subpage_clear_##name(fs_info, page, start, len); \
638 bool btrfs_page_test_##name(const struct btrfs_fs_info *fs_info, \
641 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) \
643 return btrfs_subpage_test_##name(fs_info, page, start, len); \
645 void btrfs_page_clamp_set_##name(const struct btrfs_fs_info *fs_info, \
648 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) { \
653 btrfs_subpage_set_##name(fs_info, page, start, len); \
655 void btrfs_page_clamp_clear_##name(const struct btrfs_fs_info *fs_info, \
658 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) { \
663 btrfs_subpage_clear_##name(fs_info, page, start, len); \
665 bool btrfs_page_clamp_test_##name(const struct btrfs_fs_info *fs_info, \
668 if (unlikely(!fs_info) || fs_info->sectorsize == PAGE_SIZE) \
671 return btrfs_subpage_test_##name(fs_info, page, start, len); \
688 void btrfs_page_assert_not_dirty(const struct btrfs_fs_info *fs_info, in btrfs_page_assert_not_dirty() argument
697 if (fs_info->sectorsize == PAGE_SIZE) in btrfs_page_assert_not_dirty()
701 ASSERT(subpage_test_bitmap_all_zero(fs_info, subpage, dirty)); in btrfs_page_assert_not_dirty()
719 void btrfs_page_unlock_writer(struct btrfs_fs_info *fs_info, struct page *page, in btrfs_page_unlock_writer() argument
726 if (fs_info->sectorsize == PAGE_SIZE) in btrfs_page_unlock_writer()
744 btrfs_page_end_writer_lock(fs_info, page, start, len); in btrfs_page_unlock_writer()