Lines Matching refs:map
6 struct erofs_map_blocks *map, in erofs_map_blocks_flatmode() argument
11 u64 offset = map->m_la; in erofs_map_blocks_flatmode()
19 map->m_flags = EROFS_MAP_MAPPED; in erofs_map_blocks_flatmode()
22 map->m_pa = erofs_pos(vi->u.i_blkaddr) + map->m_la; in erofs_map_blocks_flatmode()
23 map->m_plen = erofs_pos(lastblk) - offset; in erofs_map_blocks_flatmode()
26 map->m_pa = iloc(vi->nid) + vi->inode_isize + in erofs_map_blocks_flatmode()
27 vi->xattr_isize + erofs_blkoff(map->m_la); in erofs_map_blocks_flatmode()
28 map->m_plen = inode->i_size - offset; in erofs_map_blocks_flatmode()
31 if (erofs_blkoff(map->m_pa) + map->m_plen > erofs_blksiz()) { in erofs_map_blocks_flatmode()
39 map->m_flags |= EROFS_MAP_META; in erofs_map_blocks_flatmode()
42 vi->nid, (unsigned long long)inode->i_size, map->m_la); in erofs_map_blocks_flatmode()
48 map->m_llen = map->m_plen; in erofs_map_blocks_flatmode()
54 struct erofs_map_blocks *map, int flags) in erofs_map_blocks() argument
64 map->m_deviceid = 0; in erofs_map_blocks()
65 if (map->m_la >= inode->i_size) { in erofs_map_blocks()
67 map->m_flags = 0; in erofs_map_blocks()
68 map->m_plen = 0; in erofs_map_blocks()
73 return erofs_map_blocks_flatmode(inode, map, flags); in erofs_map_blocks()
80 chunknr = map->m_la >> vi->u.chunkbits; in erofs_map_blocks()
88 map->m_la = chunknr << vi->u.chunkbits; in erofs_map_blocks()
89 map->m_plen = min_t(erofs_off_t, 1UL << vi->u.chunkbits, in erofs_map_blocks()
90 roundup(inode->i_size - map->m_la, erofs_blksiz())); in erofs_map_blocks()
97 map->m_flags = 0; in erofs_map_blocks()
99 map->m_pa = erofs_pos(le32_to_cpu(*blkaddr)); in erofs_map_blocks()
100 map->m_flags = EROFS_MAP_MAPPED; in erofs_map_blocks()
108 map->m_flags = 0; in erofs_map_blocks()
111 map->m_deviceid = le16_to_cpu(idx->device_id) & in erofs_map_blocks()
113 map->m_pa = erofs_pos(le32_to_cpu(idx->blkaddr)); in erofs_map_blocks()
114 map->m_flags = EROFS_MAP_MAPPED; in erofs_map_blocks()
118 map->m_llen = map->m_plen; in erofs_map_blocks()
122 int erofs_map_dev(struct erofs_map_dev *map) in erofs_map_dev() argument
127 if (map->m_deviceid) { in erofs_map_dev()
128 if (sbi.extra_devices < map->m_deviceid) in erofs_map_dev()
140 if (map->m_pa >= startoff && in erofs_map_dev()
141 map->m_pa < startoff + length) { in erofs_map_dev()
142 map->m_pa -= startoff; in erofs_map_dev()
150 int erofs_read_one_data(struct erofs_map_blocks *map, char *buffer, u64 offset, in erofs_read_one_data() argument
157 .m_deviceid = map->m_deviceid, in erofs_read_one_data()
158 .m_pa = map->m_pa, in erofs_read_one_data()
173 struct erofs_map_blocks map = { in erofs_read_raw_data() local
183 map.m_la = ptr; in erofs_read_raw_data()
184 ret = erofs_map_blocks(inode, &map, 0); in erofs_read_raw_data()
188 DBG_BUGON(map.m_plen != map.m_llen); in erofs_read_raw_data()
191 eend = min(offset + size, map.m_la + map.m_llen); in erofs_read_raw_data()
192 DBG_BUGON(ptr < map.m_la); in erofs_read_raw_data()
194 if (!(map.m_flags & EROFS_MAP_MAPPED)) { in erofs_read_raw_data()
195 if (!map.m_llen) { in erofs_read_raw_data()
206 if (ptr > map.m_la) { in erofs_read_raw_data()
207 moff = ptr - map.m_la; in erofs_read_raw_data()
208 map.m_la = ptr; in erofs_read_raw_data()
211 ret = erofs_read_one_data(&map, estart, moff, eend - map.m_la); in erofs_read_raw_data()
220 struct erofs_map_blocks *map, char *raw, char *buffer, in z_erofs_read_one_data() argument
226 if (map->m_flags & EROFS_MAP_FRAGMENT) { in z_erofs_read_one_data()
243 .m_pa = map->m_pa, in z_erofs_read_one_data()
251 ret = erofs_dev_read(mdev.m_deviceid, raw, mdev.m_pa, map->m_plen); in z_erofs_read_one_data()
260 map->m_algorithmformat == Z_EROFS_COMPRESSION_INTERLACED ? in z_erofs_read_one_data()
261 erofs_blkoff(map->m_la) : 0, in z_erofs_read_one_data()
262 .inputsize = map->m_plen, in z_erofs_read_one_data()
264 .alg = map->m_algorithmformat, in z_erofs_read_one_data()
266 !(map->m_flags & EROFS_MAP_FULL_MAPPED) || in z_erofs_read_one_data()
267 (map->m_flags & EROFS_MAP_PARTIAL_REF), in z_erofs_read_one_data()
278 struct erofs_map_blocks map = { in z_erofs_read_data() local
288 map.m_la = end - 1; in z_erofs_read_data()
290 ret = z_erofs_map_blocks_iter(inode, &map, 0); in z_erofs_read_data()
298 if (end < map.m_la + map.m_llen) { in z_erofs_read_data()
299 length = end - map.m_la; in z_erofs_read_data()
302 DBG_BUGON(end != map.m_la + map.m_llen); in z_erofs_read_data()
303 length = map.m_llen; in z_erofs_read_data()
307 if (map.m_la < offset) { in z_erofs_read_data()
308 skip = offset - map.m_la; in z_erofs_read_data()
312 end = map.m_la; in z_erofs_read_data()
315 if (!(map.m_flags & EROFS_MAP_MAPPED)) { in z_erofs_read_data()
317 end = map.m_la; in z_erofs_read_data()
321 if (map.m_plen > bufsize) { in z_erofs_read_data()
322 bufsize = map.m_plen; in z_erofs_read_data()
330 ret = z_erofs_read_one_data(inode, &map, raw, in z_erofs_read_data()