Lines Matching refs:map

86 int erofs_map_blocks(struct inode *inode, struct erofs_map_blocks *map)  in erofs_map_blocks()  argument
99 trace_erofs_map_blocks_enter(inode, map, 0); in erofs_map_blocks()
100 map->m_deviceid = 0; in erofs_map_blocks()
101 map->m_flags = 0; in erofs_map_blocks()
102 if (map->m_la >= inode->i_size) in erofs_map_blocks()
111 map->m_flags = EROFS_MAP_MAPPED; in erofs_map_blocks()
112 if (map->m_la < pos) { in erofs_map_blocks()
113 map->m_pa = erofs_pos(sb, vi->startblk) + map->m_la; in erofs_map_blocks()
114 map->m_llen = pos - map->m_la; in erofs_map_blocks()
116 map->m_pa = erofs_iloc(inode) + vi->inode_isize + in erofs_map_blocks()
117 vi->xattr_isize + erofs_blkoff(sb, map->m_la); in erofs_map_blocks()
118 map->m_llen = inode->i_size - map->m_la; in erofs_map_blocks()
119 map->m_flags |= EROFS_MAP_META; in erofs_map_blocks()
129 chunknr = map->m_la >> vi->chunkbits; in erofs_map_blocks()
138 map->m_la = chunknr << vi->chunkbits; in erofs_map_blocks()
139 map->m_llen = min_t(erofs_off_t, 1UL << vi->chunkbits, in erofs_map_blocks()
140 round_up(inode->i_size - map->m_la, blksz)); in erofs_map_blocks()
147 map->m_deviceid = le16_to_cpu(idx->device_id) & in erofs_map_blocks()
149 map->m_pa = erofs_pos(sb, startblk); in erofs_map_blocks()
150 map->m_flags = EROFS_MAP_MAPPED; in erofs_map_blocks()
155 map->m_pa = erofs_pos(sb, startblk); in erofs_map_blocks()
156 map->m_flags = EROFS_MAP_MAPPED; in erofs_map_blocks()
162 map->m_plen = map->m_llen; in erofs_map_blocks()
164 if ((map->m_flags & EROFS_MAP_META) && in erofs_map_blocks()
165 erofs_blkoff(sb, map->m_pa) + map->m_plen > blksz) { in erofs_map_blocks()
171 trace_erofs_map_blocks_exit(inode, map, 0, err); in erofs_map_blocks()
175 static void erofs_fill_from_devinfo(struct erofs_map_dev *map, in erofs_fill_from_devinfo() argument
178 map->m_sb = sb; in erofs_fill_from_devinfo()
179 map->m_dif = dif; in erofs_fill_from_devinfo()
180 map->m_bdev = NULL; in erofs_fill_from_devinfo()
182 map->m_bdev = file_bdev(dif->file); in erofs_fill_from_devinfo()
185 int erofs_map_dev(struct super_block *sb, struct erofs_map_dev *map) in erofs_map_dev() argument
192 erofs_fill_from_devinfo(map, sb, &EROFS_SB(sb)->dif0); in erofs_map_dev()
193 map->m_bdev = sb->s_bdev; /* use s_bdev for the primary device */ in erofs_map_dev()
194 if (map->m_deviceid) { in erofs_map_dev()
196 dif = idr_find(&devs->tree, map->m_deviceid - 1); in erofs_map_dev()
202 map->m_pa += erofs_pos(sb, dif->uniaddr); in erofs_map_dev()
206 erofs_fill_from_devinfo(map, sb, dif); in erofs_map_dev()
215 if (map->m_pa >= startoff && in erofs_map_dev()
216 map->m_pa < startoff + erofs_pos(sb, dif->blocks)) { in erofs_map_dev()
217 map->m_pa -= startoff; in erofs_map_dev()
218 erofs_fill_from_devinfo(map, sb, dif); in erofs_map_dev()
274 struct erofs_map_blocks map; in erofs_iomap_begin() local
277 map.m_la = offset; in erofs_iomap_begin()
278 map.m_llen = length; in erofs_iomap_begin()
279 ret = erofs_map_blocks(inode, &map); in erofs_iomap_begin()
283 iomap->offset = map.m_la; in erofs_iomap_begin()
284 iomap->length = map.m_llen; in erofs_iomap_begin()
288 if (!(map.m_flags & EROFS_MAP_MAPPED)) { in erofs_iomap_begin()
293 if (!(map.m_flags & EROFS_MAP_META) || !erofs_inode_in_metabox(inode)) { in erofs_iomap_begin()
295 .m_deviceid = map.m_deviceid, in erofs_iomap_begin()
296 .m_pa = map.m_pa, in erofs_iomap_begin()
311 if (map.m_flags & EROFS_MAP_META) { in erofs_iomap_begin()
316 ptr = erofs_read_metabuf(&buf, sb, map.m_pa, in erofs_iomap_begin()