@@ -269,6 +269,16 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
269269 if (ret < 0 )
270270 return ret ;
271271
272+ iomap -> offset = map .m_la ;
273+ iomap -> length = map .m_llen ;
274+ iomap -> flags = 0 ;
275+ iomap -> private = NULL ;
276+ if (!(map .m_flags & EROFS_MAP_MAPPED )) {
277+ iomap -> type = IOMAP_HOLE ;
278+ iomap -> addr = IOMAP_NULL_ADDR ;
279+ return 0 ;
280+ }
281+
272282 mdev = (struct erofs_map_dev ) {
273283 .m_deviceid = map .m_deviceid ,
274284 .m_pa = map .m_pa ,
@@ -277,22 +287,14 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
277287 if (ret )
278288 return ret ;
279289
280- iomap -> offset = map .m_la ;
281290 if (flags & IOMAP_DAX )
282291 iomap -> dax_dev = mdev .m_dif -> dax_dev ;
283292 else
284293 iomap -> bdev = mdev .m_bdev ;
285- iomap -> length = map .m_llen ;
286- iomap -> flags = 0 ;
287- iomap -> private = NULL ;
288294
289- if (!(map .m_flags & EROFS_MAP_MAPPED )) {
290- iomap -> type = IOMAP_HOLE ;
291- iomap -> addr = IOMAP_NULL_ADDR ;
292- if (!iomap -> length )
293- iomap -> length = length ;
294- return 0 ;
295- }
295+ iomap -> addr = mdev .m_dif -> fsoff + mdev .m_pa ;
296+ if (flags & IOMAP_DAX )
297+ iomap -> addr += mdev .m_dif -> dax_part_off ;
296298
297299 if (map .m_flags & EROFS_MAP_META ) {
298300 void * ptr ;
@@ -306,9 +308,6 @@ static int erofs_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
306308 iomap -> private = buf .base ;
307309 } else {
308310 iomap -> type = IOMAP_MAPPED ;
309- iomap -> addr = mdev .m_dif -> fsoff + mdev .m_pa ;
310- if (flags & IOMAP_DAX )
311- iomap -> addr += mdev .m_dif -> dax_part_off ;
312311 }
313312 return 0 ;
314313}
0 commit comments