• Home
  • Raw
  • Download

Lines Matching refs:wpc

424 	struct xfs_writepage_ctx	*wpc,  in xfs_imap_valid()  argument
428 if (offset_fsb < wpc->imap.br_startoff || in xfs_imap_valid()
429 offset_fsb >= wpc->imap.br_startoff + wpc->imap.br_blockcount) in xfs_imap_valid()
436 if (wpc->fork == XFS_COW_FORK) in xfs_imap_valid()
446 if (wpc->data_seq != READ_ONCE(ip->i_df.if_seq)) in xfs_imap_valid()
449 wpc->cow_seq != READ_ONCE(ip->i_cowfp->if_seq)) in xfs_imap_valid()
464 struct xfs_writepage_ctx *wpc, in xfs_convert_blocks() argument
477 error = xfs_bmapi_convert_delalloc(ip, wpc->fork, offset_fsb, in xfs_convert_blocks()
478 &wpc->imap, wpc->fork == XFS_COW_FORK ? in xfs_convert_blocks()
479 &wpc->cow_seq : &wpc->data_seq); in xfs_convert_blocks()
482 } while (wpc->imap.br_startoff + wpc->imap.br_blockcount <= offset_fsb); in xfs_convert_blocks()
489 struct xfs_writepage_ctx *wpc, in xfs_map_blocks() argument
522 if (xfs_imap_valid(wpc, ip, offset_fsb)) in xfs_map_blocks()
544 wpc->cow_seq = READ_ONCE(ip->i_cowfp->if_seq); in xfs_map_blocks()
547 wpc->fork = XFS_COW_FORK; in xfs_map_blocks()
555 if (xfs_imap_valid(wpc, ip, offset_fsb)) { in xfs_map_blocks()
567 wpc->data_seq = READ_ONCE(ip->i_df.if_seq); in xfs_map_blocks()
570 wpc->fork = XFS_DATA_FORK; in xfs_map_blocks()
595 wpc->imap = imap; in xfs_map_blocks()
596 trace_xfs_map_blocks_found(ip, offset, count, wpc->fork, &imap); in xfs_map_blocks()
599 error = xfs_convert_blocks(wpc, ip, offset_fsb); in xfs_map_blocks()
608 if (error == -EAGAIN && wpc->fork == XFS_COW_FORK && !retries++) in xfs_map_blocks()
619 if (wpc->fork != XFS_COW_FORK && cow_fsb != NULLFILEOFF && in xfs_map_blocks()
620 cow_fsb < wpc->imap.br_startoff + wpc->imap.br_blockcount) in xfs_map_blocks()
621 wpc->imap.br_blockcount = cow_fsb - wpc->imap.br_startoff; in xfs_map_blocks()
623 ASSERT(wpc->imap.br_startoff <= offset_fsb); in xfs_map_blocks()
624 ASSERT(wpc->imap.br_startoff + wpc->imap.br_blockcount > offset_fsb); in xfs_map_blocks()
625 trace_xfs_map_blocks_alloc(ip, offset, count, wpc->fork, &imap); in xfs_map_blocks()
760 struct xfs_writepage_ctx *wpc, in xfs_add_to_ioend() argument
772 sector = xfs_fsb_to_db(ip, wpc->imap.br_startblock) + in xfs_add_to_ioend()
773 ((offset - XFS_FSB_TO_B(mp, wpc->imap.br_startoff)) >> 9); in xfs_add_to_ioend()
775 if (!wpc->ioend || in xfs_add_to_ioend()
776 wpc->fork != wpc->ioend->io_fork || in xfs_add_to_ioend()
777 wpc->imap.br_state != wpc->ioend->io_state || in xfs_add_to_ioend()
778 sector != bio_end_sector(wpc->ioend->io_bio) || in xfs_add_to_ioend()
779 offset != wpc->ioend->io_offset + wpc->ioend->io_size) { in xfs_add_to_ioend()
780 if (wpc->ioend) in xfs_add_to_ioend()
781 list_add(&wpc->ioend->io_list, iolist); in xfs_add_to_ioend()
782 wpc->ioend = xfs_alloc_ioend(inode, wpc->fork, in xfs_add_to_ioend()
783 wpc->imap.br_state, offset, bdev, sector, wbc); in xfs_add_to_ioend()
786 merged = __bio_try_merge_page(wpc->ioend->io_bio, page, len, poff, in xfs_add_to_ioend()
793 if (bio_full(wpc->ioend->io_bio, len)) in xfs_add_to_ioend()
794 wpc->ioend->io_bio = xfs_chain_bio(wpc->ioend->io_bio); in xfs_add_to_ioend()
795 bio_add_page(wpc->ioend->io_bio, page, len, poff); in xfs_add_to_ioend()
798 wpc->ioend->io_size += len; in xfs_add_to_ioend()
867 struct xfs_writepage_ctx *wpc, in xfs_writepage_map() argument
894 error = xfs_map_blocks(wpc, inode, file_offset); in xfs_writepage_map()
897 if (wpc->imap.br_startblock == HOLESTARTBLOCK) in xfs_writepage_map()
899 xfs_add_to_ioend(inode, file_offset, page, iop, wpc, wbc, in xfs_writepage_map()
904 ASSERT(wpc->ioend || list_empty(&submit_list)); in xfs_writepage_map()
984 struct xfs_writepage_ctx *wpc = data; in xfs_do_writepage() local
1079 return xfs_writepage_map(wpc, wbc, inode, page, end_offset); in xfs_do_writepage()
1092 struct xfs_writepage_ctx wpc = { }; in xfs_vm_writepage() local
1095 ret = xfs_do_writepage(page, wbc, &wpc); in xfs_vm_writepage()
1096 if (wpc.ioend) in xfs_vm_writepage()
1097 ret = xfs_submit_ioend(wbc, wpc.ioend, ret); in xfs_vm_writepage()
1106 struct xfs_writepage_ctx wpc = { }; in xfs_vm_writepages() local
1110 ret = write_cache_pages(mapping, wbc, xfs_do_writepage, &wpc); in xfs_vm_writepages()
1111 if (wpc.ioend) in xfs_vm_writepages()
1112 ret = xfs_submit_ioend(wbc, wpc.ioend, ret); in xfs_vm_writepages()