Lines Matching refs:fs_info

67 bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info, struct page *page)  in btrfs_is_subpage()  argument
69 if (fs_info->sectorsize >= PAGE_SIZE) in btrfs_is_subpage()
85 if (fs_info->nodesize < PAGE_SIZE) in btrfs_is_subpage()
121 int btrfs_attach_subpage(const struct btrfs_fs_info *fs_info, in btrfs_attach_subpage() argument
134 if (!btrfs_is_subpage(fs_info, page) || PagePrivate(page)) in btrfs_attach_subpage()
137 subpage = btrfs_alloc_subpage(fs_info, type); in btrfs_attach_subpage()
145 void btrfs_detach_subpage(const struct btrfs_fs_info *fs_info, in btrfs_detach_subpage() argument
151 if (!btrfs_is_subpage(fs_info, page) || !PagePrivate(page)) in btrfs_detach_subpage()
159 struct btrfs_subpage *btrfs_alloc_subpage(const struct btrfs_fs_info *fs_info, in btrfs_alloc_subpage() argument
165 ASSERT(fs_info->sectorsize < PAGE_SIZE); in btrfs_alloc_subpage()
168 BITS_TO_LONGS(fs_info->subpage_info->total_nr_bits)); in btrfs_alloc_subpage()
197 void btrfs_page_inc_eb_refs(const struct btrfs_fs_info *fs_info, in btrfs_page_inc_eb_refs() argument
202 if (!btrfs_is_subpage(fs_info, page)) in btrfs_page_inc_eb_refs()
212 void btrfs_page_dec_eb_refs(const struct btrfs_fs_info *fs_info, in btrfs_page_dec_eb_refs() argument
217 if (!btrfs_is_subpage(fs_info, page)) in btrfs_page_dec_eb_refs()
228 static void btrfs_subpage_assert(const struct btrfs_fs_info *fs_info, in btrfs_subpage_assert() argument
233 ASSERT(IS_ALIGNED(start, fs_info->sectorsize) && in btrfs_subpage_assert()
234 IS_ALIGNED(len, fs_info->sectorsize)); in btrfs_subpage_assert()
244 void btrfs_subpage_start_reader(const struct btrfs_fs_info *fs_info, in btrfs_subpage_start_reader() argument
248 const int nbits = len >> fs_info->sectorsize_bits; in btrfs_subpage_start_reader()
250 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_start_reader()
255 void btrfs_subpage_end_reader(const struct btrfs_fs_info *fs_info, in btrfs_subpage_end_reader() argument
259 const int nbits = len >> fs_info->sectorsize_bits; in btrfs_subpage_end_reader()
263 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_end_reader()
297 void btrfs_subpage_start_writer(const struct btrfs_fs_info *fs_info, in btrfs_subpage_start_writer() argument
301 const int nbits = (len >> fs_info->sectorsize_bits); in btrfs_subpage_start_writer()
304 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_start_writer()
311 bool btrfs_subpage_end_and_test_writer(const struct btrfs_fs_info *fs_info, in btrfs_subpage_end_and_test_writer() argument
315 const int nbits = (len >> fs_info->sectorsize_bits); in btrfs_subpage_end_and_test_writer()
317 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_end_and_test_writer()
343 int btrfs_page_start_writer_lock(const struct btrfs_fs_info *fs_info, in btrfs_page_start_writer_lock() argument
346 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) { in btrfs_page_start_writer_lock()
356 btrfs_subpage_start_writer(fs_info, page, start, len); in btrfs_page_start_writer_lock()
360 void btrfs_page_end_writer_lock(const struct btrfs_fs_info *fs_info, in btrfs_page_end_writer_lock() argument
363 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) in btrfs_page_end_writer_lock()
366 if (btrfs_subpage_end_and_test_writer(fs_info, page, start, len)) in btrfs_page_end_writer_lock()
392 #define subpage_calc_start_bit(fs_info, page, name, start, len) \ argument
396 btrfs_subpage_assert(fs_info, page, start, len); \
397 start_bit = offset_in_page(start) >> fs_info->sectorsize_bits; \
398 start_bit += fs_info->subpage_info->name##_offset; \
402 #define subpage_test_bitmap_all_set(fs_info, subpage, name) \ argument
404 fs_info->subpage_info->name##_offset, \
405 fs_info->subpage_info->bitmap_nr_bits)
407 #define subpage_test_bitmap_all_zero(fs_info, subpage, name) \ argument
409 fs_info->subpage_info->name##_offset, \
410 fs_info->subpage_info->bitmap_nr_bits)
412 void btrfs_subpage_set_uptodate(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_uptodate() argument
416 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_uptodate()
421 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_uptodate()
422 if (subpage_test_bitmap_all_set(fs_info, subpage, uptodate)) in btrfs_subpage_set_uptodate()
427 void btrfs_subpage_clear_uptodate(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_uptodate() argument
431 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_uptodate()
436 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_uptodate()
441 void btrfs_subpage_set_error(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_error() argument
445 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_error()
450 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_error()
455 void btrfs_subpage_clear_error(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_error() argument
459 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_error()
464 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_error()
465 if (subpage_test_bitmap_all_zero(fs_info, subpage, error)) in btrfs_subpage_clear_error()
470 void btrfs_subpage_set_dirty(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_dirty() argument
474 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_dirty()
479 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_dirty()
494 bool btrfs_subpage_clear_and_test_dirty(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_and_test_dirty() argument
498 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_and_test_dirty()
504 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_and_test_dirty()
505 if (subpage_test_bitmap_all_zero(fs_info, subpage, dirty)) in btrfs_subpage_clear_and_test_dirty()
511 void btrfs_subpage_clear_dirty(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_dirty() argument
516 last = btrfs_subpage_clear_and_test_dirty(fs_info, page, start, len); in btrfs_subpage_clear_dirty()
521 void btrfs_subpage_set_writeback(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_writeback() argument
525 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_writeback()
530 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_writeback()
535 void btrfs_subpage_clear_writeback(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_writeback() argument
539 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_writeback()
544 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_writeback()
545 if (subpage_test_bitmap_all_zero(fs_info, subpage, writeback)) { in btrfs_subpage_clear_writeback()
552 void btrfs_subpage_set_ordered(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_ordered() argument
556 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_ordered()
561 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_ordered()
566 void btrfs_subpage_clear_ordered(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_ordered() argument
570 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_ordered()
575 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_ordered()
576 if (subpage_test_bitmap_all_zero(fs_info, subpage, ordered)) in btrfs_subpage_clear_ordered()
581 void btrfs_subpage_set_checked(const struct btrfs_fs_info *fs_info, in btrfs_subpage_set_checked() argument
585 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_checked()
590 bitmap_set(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_set_checked()
591 if (subpage_test_bitmap_all_set(fs_info, subpage, checked)) in btrfs_subpage_set_checked()
596 void btrfs_subpage_clear_checked(const struct btrfs_fs_info *fs_info, in btrfs_subpage_clear_checked() argument
600 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_checked()
605 bitmap_clear(subpage->bitmaps, start_bit, len >> fs_info->sectorsize_bits); in btrfs_subpage_clear_checked()
615 bool btrfs_subpage_test_##name(const struct btrfs_fs_info *fs_info, \
619 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, \
626 len >> fs_info->sectorsize_bits); \
644 void btrfs_page_set_##name(const struct btrfs_fs_info *fs_info, \
647 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) { \
651 btrfs_subpage_set_##name(fs_info, page, start, len); \
653 void btrfs_page_clear_##name(const struct btrfs_fs_info *fs_info, \
656 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) { \
660 btrfs_subpage_clear_##name(fs_info, page, start, len); \
662 bool btrfs_page_test_##name(const struct btrfs_fs_info *fs_info, \
665 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) \
667 return btrfs_subpage_test_##name(fs_info, page, start, len); \
669 void btrfs_page_clamp_set_##name(const struct btrfs_fs_info *fs_info, \
672 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) { \
677 btrfs_subpage_set_##name(fs_info, page, start, len); \
679 void btrfs_page_clamp_clear_##name(const struct btrfs_fs_info *fs_info, \
682 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) { \
687 btrfs_subpage_clear_##name(fs_info, page, start, len); \
689 bool btrfs_page_clamp_test_##name(const struct btrfs_fs_info *fs_info, \
692 if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, page)) \
695 return btrfs_subpage_test_##name(fs_info, page, start, len); \
712 void btrfs_page_assert_not_dirty(const struct btrfs_fs_info *fs_info, in btrfs_page_assert_not_dirty() argument
721 if (!btrfs_is_subpage(fs_info, page)) in btrfs_page_assert_not_dirty()
725 ASSERT(subpage_test_bitmap_all_zero(fs_info, subpage, dirty)); in btrfs_page_assert_not_dirty()
743 void btrfs_page_unlock_writer(struct btrfs_fs_info *fs_info, struct page *page, in btrfs_page_unlock_writer() argument
750 if (!btrfs_is_subpage(fs_info, page)) in btrfs_page_unlock_writer()
768 btrfs_page_end_writer_lock(fs_info, page, start, len); in btrfs_page_unlock_writer()