Lines Matching refs:map
12 struct erofs_map_blocks *map; member
34 di = erofs_read_metabuf(&m->map->buf, inode->i_sb, pos, m->in_mbox); in z_erofs_load_full_lcluster()
149 in = erofs_read_metabuf(&m->map->buf, inode->i_sb, pos, m->in_mbox); in z_erofs_load_compact_lcluster()
282 m->map->m_la = (lcn << lclusterbits) | m->clusterofs; in z_erofs_extent_lookback()
343 m->map->m_plen = erofs_pos(sb, m->compressedblks); in z_erofs_get_extent_compressedlen()
351 struct erofs_map_blocks *map = m->map; in z_erofs_get_extent_decompressedlen() local
353 u64 lcn = m->lcn, headlcn = map->m_la >> lclusterbits; in z_erofs_get_extent_decompressedlen()
359 map->m_llen = inode->i_size - map->m_la; in z_erofs_get_extent_decompressedlen()
380 map->m_llen = (lcn << lclusterbits) + m->clusterofs - map->m_la; in z_erofs_get_extent_decompressedlen()
385 struct erofs_map_blocks *map, int flags) in z_erofs_map_blocks_fo() argument
394 .map = map, in z_erofs_map_blocks_fo()
402 ofs = flags & EROFS_GET_BLOCKS_FINDTAIL ? inode->i_size - 1 : map->m_la; in z_erofs_map_blocks_fo()
405 map->m_la = 0; in z_erofs_map_blocks_fo()
406 map->m_llen = inode->i_size; in z_erofs_map_blocks_fo()
407 map->m_flags = EROFS_MAP_FRAGMENT; in z_erofs_map_blocks_fo()
419 map->m_flags = EROFS_MAP_MAPPED | EROFS_MAP_ENCODED; in z_erofs_map_blocks_fo()
424 map->m_la = (m.lcn << lclusterbits) | m.clusterofs; in z_erofs_map_blocks_fo()
442 map->m_flags |= EROFS_MAP_FULL_MAPPED; in z_erofs_map_blocks_fo()
451 map->m_flags |= EROFS_MAP_PARTIAL_REF; in z_erofs_map_blocks_fo()
452 map->m_llen = end - map->m_la; in z_erofs_map_blocks_fo()
461 map->m_flags |= EROFS_MAP_META; in z_erofs_map_blocks_fo()
462 map->m_pa = vi->z_fragmentoff; in z_erofs_map_blocks_fo()
463 map->m_plen = vi->z_idata_size; in z_erofs_map_blocks_fo()
464 if (erofs_blkoff(sb, map->m_pa) + map->m_plen > sb->s_blocksize) { in z_erofs_map_blocks_fo()
466 map->m_plen); in z_erofs_map_blocks_fo()
471 map->m_flags = EROFS_MAP_FRAGMENT; in z_erofs_map_blocks_fo()
473 map->m_pa = erofs_pos(sb, m.pblk); in z_erofs_map_blocks_fo()
480 if (map->m_llen > map->m_plen) { in z_erofs_map_blocks_fo()
498 map->m_algorithmformat = afmt; in z_erofs_map_blocks_fo()
502 (map->m_algorithmformat == Z_EROFS_COMPRESSION_LZMA || in z_erofs_map_blocks_fo()
503 map->m_algorithmformat == Z_EROFS_COMPRESSION_DEFLATE || in z_erofs_map_blocks_fo()
504 map->m_algorithmformat == Z_EROFS_COMPRESSION_ZSTD) && in z_erofs_map_blocks_fo()
505 map->m_llen >= i_blocksize(inode))) { in z_erofs_map_blocks_fo()
508 map->m_flags |= EROFS_MAP_FULL_MAPPED; in z_erofs_map_blocks_fo()
512 erofs_unmap_metabuf(&m.map->buf); in z_erofs_map_blocks_fo()
517 struct erofs_map_blocks *map, int flags) in z_erofs_map_blocks_ext() argument
532 map->m_flags = 0; in z_erofs_map_blocks_ext()
535 ext = erofs_read_metabuf(&map->buf, sb, pos, in_mbox); in z_erofs_map_blocks_ext()
542 lstart = round_down(map->m_la, 1 << vi->z_lclusterbits); in z_erofs_map_blocks_ext()
547 for (; lstart <= map->m_la; lstart += 1 << vi->z_lclusterbits) { in z_erofs_map_blocks_ext()
548 ext = erofs_read_metabuf(&map->buf, sb, pos, in_mbox); in z_erofs_map_blocks_ext()
551 map->m_plen = le32_to_cpu(ext->plen); in z_erofs_map_blocks_ext()
553 map->m_pa = pa; in z_erofs_map_blocks_ext()
554 pa += map->m_plen & Z_EROFS_EXTENT_PLEN_MASK; in z_erofs_map_blocks_ext()
556 map->m_pa = le32_to_cpu(ext->pstart_lo); in z_erofs_map_blocks_ext()
567 ext = erofs_read_metabuf(&map->buf, sb, in z_erofs_map_blocks_ext()
578 if (la > map->m_la) { in z_erofs_map_blocks_ext()
587 if (map->m_la == la) in z_erofs_map_blocks_ext()
590 map->m_plen = le32_to_cpu(ext->plen); in z_erofs_map_blocks_ext()
591 map->m_pa = pa; in z_erofs_map_blocks_ext()
598 map->m_la = lstart; in z_erofs_map_blocks_ext()
600 map->m_flags = EROFS_MAP_FRAGMENT; in z_erofs_map_blocks_ext()
601 vi->z_fragmentoff = map->m_plen; in z_erofs_map_blocks_ext()
603 vi->z_fragmentoff |= map->m_pa << 32; in z_erofs_map_blocks_ext()
604 } else if (map->m_plen) { in z_erofs_map_blocks_ext()
605 map->m_flags |= EROFS_MAP_MAPPED | in z_erofs_map_blocks_ext()
607 fmt = map->m_plen >> Z_EROFS_EXTENT_PLEN_FMT_BIT; in z_erofs_map_blocks_ext()
609 map->m_algorithmformat = fmt - 1; in z_erofs_map_blocks_ext()
610 else if (interlaced && !erofs_blkoff(sb, map->m_pa)) in z_erofs_map_blocks_ext()
611 map->m_algorithmformat = in z_erofs_map_blocks_ext()
614 map->m_algorithmformat = in z_erofs_map_blocks_ext()
616 if (map->m_plen & Z_EROFS_EXTENT_PLEN_PARTIAL) in z_erofs_map_blocks_ext()
617 map->m_flags |= EROFS_MAP_PARTIAL_REF; in z_erofs_map_blocks_ext()
618 map->m_plen &= Z_EROFS_EXTENT_PLEN_MASK; in z_erofs_map_blocks_ext()
621 map->m_llen = lend - map->m_la; in z_erofs_map_blocks_ext()
625 static int z_erofs_fill_inode(struct inode *inode, struct erofs_map_blocks *map) in z_erofs_fill_inode() argument
650 h = erofs_read_metabuf(&map->buf, sb, pos, erofs_inode_in_metabox(inode)); in z_erofs_fill_inode()
729 int z_erofs_map_blocks_iter(struct inode *inode, struct erofs_map_blocks *map, in z_erofs_map_blocks_iter() argument
735 trace_erofs_map_blocks_enter(inode, map, flags); in z_erofs_map_blocks_iter()
736 if (map->m_la >= inode->i_size) { /* post-EOF unmapped extent */ in z_erofs_map_blocks_iter()
737 map->m_llen = map->m_la + 1 - inode->i_size; in z_erofs_map_blocks_iter()
738 map->m_la = inode->i_size; in z_erofs_map_blocks_iter()
739 map->m_flags = 0; in z_erofs_map_blocks_iter()
741 err = z_erofs_fill_inode(inode, map); in z_erofs_map_blocks_iter()
745 err = z_erofs_map_blocks_ext(inode, map, flags); in z_erofs_map_blocks_iter()
747 err = z_erofs_map_blocks_fo(inode, map, flags); in z_erofs_map_blocks_iter()
749 if (!err && (map->m_flags & EROFS_MAP_ENCODED) && in z_erofs_map_blocks_iter()
750 unlikely(map->m_plen > Z_EROFS_PCLUSTER_MAX_SIZE || in z_erofs_map_blocks_iter()
751 map->m_llen > Z_EROFS_PCLUSTER_MAX_DSIZE)) in z_erofs_map_blocks_iter()
754 map->m_llen = 0; in z_erofs_map_blocks_iter()
756 trace_erofs_map_blocks_exit(inode, map, flags, err); in z_erofs_map_blocks_iter()
765 struct erofs_map_blocks map = { .m_la = offset }; in z_erofs_iomap_begin_report() local
767 ret = z_erofs_map_blocks_iter(inode, &map, EROFS_GET_BLOCKS_FIEMAP); in z_erofs_iomap_begin_report()
768 erofs_put_metabuf(&map.buf); in z_erofs_iomap_begin_report()
773 iomap->offset = map.m_la; in z_erofs_iomap_begin_report()
774 iomap->length = map.m_llen; in z_erofs_iomap_begin_report()
775 if (map.m_flags & EROFS_MAP_MAPPED) { in z_erofs_iomap_begin_report()
777 iomap->addr = map.m_flags & __EROFS_MAP_FRAGMENT ? in z_erofs_iomap_begin_report()
778 IOMAP_NULL_ADDR : map.m_pa; in z_erofs_iomap_begin_report()
792 iomap->length = length + offset - map.m_la; in z_erofs_iomap_begin_report()