Lines Matching refs:page
98 struct page *page, enum btrfs_subpage_type type) in btrfs_attach_subpage() argument
106 if (page->mapping) in btrfs_attach_subpage()
107 ASSERT(PageLocked(page)); in btrfs_attach_subpage()
110 if (fs_info->sectorsize == PAGE_SIZE || PagePrivate(page)) in btrfs_attach_subpage()
117 attach_page_private(page, subpage); in btrfs_attach_subpage()
122 struct page *page) in btrfs_detach_subpage() argument
127 if (fs_info->sectorsize == PAGE_SIZE || !PagePrivate(page)) in btrfs_detach_subpage()
130 subpage = (struct btrfs_subpage *)detach_page_private(page); in btrfs_detach_subpage()
174 struct page *page) in btrfs_page_inc_eb_refs() argument
181 ASSERT(PagePrivate(page) && page->mapping); in btrfs_page_inc_eb_refs()
182 lockdep_assert_held(&page->mapping->private_lock); in btrfs_page_inc_eb_refs()
184 subpage = (struct btrfs_subpage *)page->private; in btrfs_page_inc_eb_refs()
189 struct page *page) in btrfs_page_dec_eb_refs() argument
196 ASSERT(PagePrivate(page) && page->mapping); in btrfs_page_dec_eb_refs()
197 lockdep_assert_held(&page->mapping->private_lock); in btrfs_page_dec_eb_refs()
199 subpage = (struct btrfs_subpage *)page->private; in btrfs_page_dec_eb_refs()
205 struct page *page, u64 start, u32 len) in btrfs_subpage_assert() argument
208 ASSERT(PagePrivate(page) && page->private); in btrfs_subpage_assert()
215 if (page->mapping) in btrfs_subpage_assert()
216 ASSERT(page_offset(page) <= start && in btrfs_subpage_assert()
217 start + len <= page_offset(page) + PAGE_SIZE); in btrfs_subpage_assert()
221 struct page *page, u64 start, u32 len) in btrfs_subpage_start_reader() argument
223 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_start_reader()
226 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_start_reader()
232 struct page *page, u64 start, u32 len) in btrfs_subpage_end_reader() argument
234 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_end_reader()
239 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_end_reader()
240 is_data = is_data_inode(page->mapping->host); in btrfs_subpage_end_reader()
252 unlock_page(page); in btrfs_subpage_end_reader()
255 static void btrfs_subpage_clamp_range(struct page *page, u64 *start, u32 *len) in btrfs_subpage_clamp_range() argument
260 *start = max_t(u64, page_offset(page), orig_start); in btrfs_subpage_clamp_range()
266 if (page_offset(page) >= orig_start + orig_len) in btrfs_subpage_clamp_range()
269 *len = min_t(u64, page_offset(page) + PAGE_SIZE, in btrfs_subpage_clamp_range()
274 struct page *page, u64 start, u32 len) in btrfs_subpage_start_writer() argument
276 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_start_writer()
280 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_start_writer()
288 struct page *page, u64 start, u32 len) in btrfs_subpage_end_and_test_writer() argument
290 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_end_and_test_writer()
293 btrfs_subpage_assert(fs_info, page, start, len); in btrfs_subpage_end_and_test_writer()
320 struct page *page, u64 start, u32 len) in btrfs_page_start_writer_lock() argument
323 lock_page(page); in btrfs_page_start_writer_lock()
326 lock_page(page); in btrfs_page_start_writer_lock()
327 if (!PagePrivate(page) || !page->private) { in btrfs_page_start_writer_lock()
328 unlock_page(page); in btrfs_page_start_writer_lock()
331 btrfs_subpage_clamp_range(page, &start, &len); in btrfs_page_start_writer_lock()
332 btrfs_subpage_start_writer(fs_info, page, start, len); in btrfs_page_start_writer_lock()
337 struct page *page, u64 start, u32 len) in btrfs_page_end_writer_lock() argument
340 return unlock_page(page); in btrfs_page_end_writer_lock()
341 btrfs_subpage_clamp_range(page, &start, &len); 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()
343 unlock_page(page); 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); \
389 struct page *page, u64 start, u32 len) in btrfs_subpage_set_uptodate() argument
391 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_set_uptodate()
392 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_uptodate()
399 SetPageUptodate(page); in btrfs_subpage_set_uptodate()
404 struct page *page, u64 start, u32 len) in btrfs_subpage_clear_uptodate() argument
406 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_clear_uptodate()
407 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_uptodate()
413 ClearPageUptodate(page); in btrfs_subpage_clear_uptodate()
418 struct page *page, u64 start, u32 len) in btrfs_subpage_set_error() argument
420 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_set_error()
421 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_error()
427 SetPageError(page); in btrfs_subpage_set_error()
432 struct page *page, u64 start, u32 len) in btrfs_subpage_clear_error() argument
434 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_clear_error()
435 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_error()
442 ClearPageError(page); in btrfs_subpage_clear_error()
447 struct page *page, u64 start, u32 len) in btrfs_subpage_set_dirty() argument
449 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_set_dirty()
450 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_dirty()
457 set_page_dirty(page); in btrfs_subpage_set_dirty()
471 struct page *page, u64 start, u32 len) in btrfs_subpage_clear_and_test_dirty() argument
473 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_clear_and_test_dirty()
474 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_and_test_dirty()
488 struct page *page, u64 start, u32 len) in btrfs_subpage_clear_dirty() argument
492 last = btrfs_subpage_clear_and_test_dirty(fs_info, page, start, len); in btrfs_subpage_clear_dirty()
494 clear_page_dirty_for_io(page); in btrfs_subpage_clear_dirty()
498 struct page *page, u64 start, u32 len) in btrfs_subpage_set_writeback() argument
500 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_set_writeback()
501 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_writeback()
507 set_page_writeback(page); in btrfs_subpage_set_writeback()
512 struct page *page, u64 start, u32 len) in btrfs_subpage_clear_writeback() argument
514 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_clear_writeback()
515 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_writeback()
522 ASSERT(PageWriteback(page)); in btrfs_subpage_clear_writeback()
523 end_page_writeback(page); in btrfs_subpage_clear_writeback()
529 struct page *page, u64 start, u32 len) in btrfs_subpage_set_ordered() argument
531 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_set_ordered()
532 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_ordered()
538 SetPageOrdered(page); in btrfs_subpage_set_ordered()
543 struct page *page, u64 start, u32 len) in btrfs_subpage_clear_ordered() argument
545 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_clear_ordered()
546 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_ordered()
553 ClearPageOrdered(page); in btrfs_subpage_clear_ordered()
558 struct page *page, u64 start, u32 len) in btrfs_subpage_set_checked() argument
560 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_set_checked()
561 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_set_checked()
568 SetPageChecked(page); in btrfs_subpage_set_checked()
573 struct page *page, u64 start, u32 len) in btrfs_subpage_clear_checked() argument
575 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_subpage_clear_checked()
576 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, in btrfs_subpage_clear_checked()
582 ClearPageChecked(page); in btrfs_subpage_clear_checked()
592 struct page *page, u64 start, u32 len) \
594 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; \
595 unsigned int start_bit = subpage_calc_start_bit(fs_info, page, \
621 struct page *page, u64 start, u32 len) \
624 set_page_func(page); \
627 btrfs_subpage_set_##name(fs_info, page, start, len); \
630 struct page *page, u64 start, u32 len) \
633 clear_page_func(page); \
636 btrfs_subpage_clear_##name(fs_info, page, start, len); \
639 struct page *page, u64 start, u32 len) \
642 return test_page_func(page); \
643 return btrfs_subpage_test_##name(fs_info, page, start, len); \
646 struct page *page, u64 start, u32 len) \
649 set_page_func(page); \
652 btrfs_subpage_clamp_range(page, &start, &len); \
653 btrfs_subpage_set_##name(fs_info, page, start, len); \
656 struct page *page, u64 start, u32 len) \
659 clear_page_func(page); \
662 btrfs_subpage_clamp_range(page, &start, &len); \
663 btrfs_subpage_clear_##name(fs_info, page, start, len); \
666 struct page *page, u64 start, u32 len) \
669 return test_page_func(page); \
670 btrfs_subpage_clamp_range(page, &start, &len); \
671 return btrfs_subpage_test_##name(fs_info, page, start, len); \
689 struct page *page) in btrfs_page_assert_not_dirty() argument
691 struct btrfs_subpage *subpage = (struct btrfs_subpage *)page->private; in btrfs_page_assert_not_dirty()
696 ASSERT(!PageDirty(page)); in btrfs_page_assert_not_dirty()
700 ASSERT(PagePrivate(page) && page->private); 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
724 ASSERT(PageLocked(page)); in btrfs_page_unlock_writer()
727 return unlock_page(page); in btrfs_page_unlock_writer()
729 ASSERT(PagePrivate(page) && page->private); in btrfs_page_unlock_writer()
730 subpage = (struct btrfs_subpage *)page->private; in btrfs_page_unlock_writer()
741 return unlock_page(page); in btrfs_page_unlock_writer()
744 btrfs_page_end_writer_lock(fs_info, page, start, len); in btrfs_page_unlock_writer()