Lines Matching refs:wpc

1476 iomap_submit_ioend(struct iomap_writepage_ctx *wpc, struct iomap_ioend *ioend,  in iomap_submit_ioend()  argument
1482 if (wpc->ops->prepare_ioend) in iomap_submit_ioend()
1483 error = wpc->ops->prepare_ioend(ioend, error); in iomap_submit_ioend()
1501 iomap_alloc_ioend(struct inode *inode, struct iomap_writepage_ctx *wpc, in iomap_alloc_ioend() argument
1507 bio = bio_alloc_bioset(wpc->iomap.bdev, BIO_MAX_VECS, in iomap_alloc_ioend()
1515 ioend->io_type = wpc->iomap.type; in iomap_alloc_ioend()
1516 ioend->io_flags = wpc->iomap.flags; in iomap_alloc_ioend()
1549 iomap_can_add_to_ioend(struct iomap_writepage_ctx *wpc, loff_t offset, in iomap_can_add_to_ioend() argument
1552 if ((wpc->iomap.flags & IOMAP_F_SHARED) != in iomap_can_add_to_ioend()
1553 (wpc->ioend->io_flags & IOMAP_F_SHARED)) in iomap_can_add_to_ioend()
1555 if (wpc->iomap.type != wpc->ioend->io_type) in iomap_can_add_to_ioend()
1557 if (offset != wpc->ioend->io_offset + wpc->ioend->io_size) in iomap_can_add_to_ioend()
1559 if (sector != bio_end_sector(wpc->ioend->io_bio)) in iomap_can_add_to_ioend()
1566 if (wpc->ioend->io_folios >= IOEND_BATCH_SIZE) in iomap_can_add_to_ioend()
1577 struct iomap_page *iop, struct iomap_writepage_ctx *wpc, in iomap_add_to_ioend() argument
1580 sector_t sector = iomap_sector(&wpc->iomap, pos); in iomap_add_to_ioend()
1584 if (!wpc->ioend || !iomap_can_add_to_ioend(wpc, pos, sector)) { in iomap_add_to_ioend()
1585 if (wpc->ioend) in iomap_add_to_ioend()
1586 list_add(&wpc->ioend->io_list, iolist); in iomap_add_to_ioend()
1587 wpc->ioend = iomap_alloc_ioend(inode, wpc, pos, sector, wbc); in iomap_add_to_ioend()
1590 if (!bio_add_folio(wpc->ioend->io_bio, folio, len, poff)) { in iomap_add_to_ioend()
1591 wpc->ioend->io_bio = iomap_chain_bio(wpc->ioend->io_bio); in iomap_add_to_ioend()
1592 bio_add_folio(wpc->ioend->io_bio, folio, len, poff); in iomap_add_to_ioend()
1597 wpc->ioend->io_size += len; in iomap_add_to_ioend()
1618 iomap_writepage_map(struct iomap_writepage_ctx *wpc, in iomap_writepage_map() argument
1641 error = wpc->ops->map_blocks(wpc, inode, pos); in iomap_writepage_map()
1644 trace_iomap_writepage_map(inode, &wpc->iomap); in iomap_writepage_map()
1645 if (WARN_ON_ONCE(wpc->iomap.type == IOMAP_INLINE)) in iomap_writepage_map()
1647 if (wpc->iomap.type == IOMAP_HOLE) in iomap_writepage_map()
1649 iomap_add_to_ioend(inode, pos, folio, iop, wpc, wbc, in iomap_writepage_map()
1654 wpc->ioend->io_folios++; in iomap_writepage_map()
1656 WARN_ON_ONCE(!wpc->ioend && !list_empty(&submit_list)); in iomap_writepage_map()
1674 if (wpc->ops->discard_folio) in iomap_writepage_map()
1675 wpc->ops->discard_folio(folio, pos); in iomap_writepage_map()
1694 error2 = iomap_submit_ioend(wpc, ioend, error); in iomap_writepage_map()
1720 struct iomap_writepage_ctx *wpc = data; in iomap_do_writepage() local
1803 return iomap_writepage_map(wpc, wbc, inode, folio, end_pos); in iomap_do_writepage()
1814 struct iomap_writepage_ctx *wpc, in iomap_writepages() argument
1819 wpc->ops = ops; in iomap_writepages()
1820 ret = write_cache_pages(mapping, wbc, iomap_do_writepage, wpc); in iomap_writepages()
1821 if (!wpc->ioend) in iomap_writepages()
1823 return iomap_submit_ioend(wpc, wpc->ioend, ret); in iomap_writepages()