Lines Matching refs:wpc

1194 iomap_submit_ioend(struct iomap_writepage_ctx *wpc, struct iomap_ioend *ioend,  in iomap_submit_ioend()  argument
1200 if (wpc->ops->prepare_ioend) in iomap_submit_ioend()
1201 error = wpc->ops->prepare_ioend(ioend, error); in iomap_submit_ioend()
1219 iomap_alloc_ioend(struct inode *inode, struct iomap_writepage_ctx *wpc, in iomap_alloc_ioend() argument
1226 bio_set_dev(bio, wpc->iomap.bdev); in iomap_alloc_ioend()
1234 ioend->io_type = wpc->iomap.type; in iomap_alloc_ioend()
1235 ioend->io_flags = wpc->iomap.flags; in iomap_alloc_ioend()
1269 iomap_can_add_to_ioend(struct iomap_writepage_ctx *wpc, loff_t offset, in iomap_can_add_to_ioend() argument
1272 if ((wpc->iomap.flags & IOMAP_F_SHARED) != in iomap_can_add_to_ioend()
1273 (wpc->ioend->io_flags & IOMAP_F_SHARED)) in iomap_can_add_to_ioend()
1275 if (wpc->iomap.type != wpc->ioend->io_type) in iomap_can_add_to_ioend()
1277 if (offset != wpc->ioend->io_offset + wpc->ioend->io_size) in iomap_can_add_to_ioend()
1279 if (sector != bio_end_sector(wpc->ioend->io_bio)) in iomap_can_add_to_ioend()
1290 struct iomap_page *iop, struct iomap_writepage_ctx *wpc, in iomap_add_to_ioend() argument
1293 sector_t sector = iomap_sector(&wpc->iomap, offset); in iomap_add_to_ioend()
1298 if (!wpc->ioend || !iomap_can_add_to_ioend(wpc, offset, sector)) { in iomap_add_to_ioend()
1299 if (wpc->ioend) in iomap_add_to_ioend()
1300 list_add(&wpc->ioend->io_list, iolist); in iomap_add_to_ioend()
1301 wpc->ioend = iomap_alloc_ioend(inode, wpc, offset, sector, wbc); in iomap_add_to_ioend()
1304 merged = __bio_try_merge_page(wpc->ioend->io_bio, page, len, poff, in iomap_add_to_ioend()
1310 if (bio_full(wpc->ioend->io_bio, len)) { in iomap_add_to_ioend()
1311 wpc->ioend->io_bio = in iomap_add_to_ioend()
1312 iomap_chain_bio(wpc->ioend->io_bio); in iomap_add_to_ioend()
1314 bio_add_page(wpc->ioend->io_bio, page, len, poff); in iomap_add_to_ioend()
1317 wpc->ioend->io_size += len; in iomap_add_to_ioend()
1338 iomap_writepage_map(struct iomap_writepage_ctx *wpc, in iomap_writepage_map() argument
1363 error = wpc->ops->map_blocks(wpc, inode, file_offset); in iomap_writepage_map()
1366 if (WARN_ON_ONCE(wpc->iomap.type == IOMAP_INLINE)) in iomap_writepage_map()
1368 if (wpc->iomap.type == IOMAP_HOLE) in iomap_writepage_map()
1370 iomap_add_to_ioend(inode, file_offset, page, iop, wpc, wbc, in iomap_writepage_map()
1375 WARN_ON_ONCE(!wpc->ioend && !list_empty(&submit_list)); in iomap_writepage_map()
1393 if (wpc->ops->discard_page) in iomap_writepage_map()
1394 wpc->ops->discard_page(page, file_offset); in iomap_writepage_map()
1414 error2 = iomap_submit_ioend(wpc, ioend, error); in iomap_writepage_map()
1440 struct iomap_writepage_ctx *wpc = data; in iomap_do_writepage() local
1528 return iomap_writepage_map(wpc, wbc, inode, page, end_offset); in iomap_do_writepage()
1538 struct iomap_writepage_ctx *wpc, in iomap_writepage() argument
1543 wpc->ops = ops; in iomap_writepage()
1544 ret = iomap_do_writepage(page, wbc, wpc); in iomap_writepage()
1545 if (!wpc->ioend) in iomap_writepage()
1547 return iomap_submit_ioend(wpc, wpc->ioend, ret); in iomap_writepage()
1553 struct iomap_writepage_ctx *wpc, in iomap_writepages() argument
1558 wpc->ops = ops; in iomap_writepages()
1559 ret = write_cache_pages(mapping, wbc, iomap_do_writepage, wpc); in iomap_writepages()
1560 if (!wpc->ioend) in iomap_writepages()
1562 return iomap_submit_ioend(wpc, wpc->ioend, ret); in iomap_writepages()