On Tue, Oct 08, 2019 at 12:42:09PM +0200, Jan Kara wrote: > On Thu 03-10-19 21:33:45, Matthew Bobrowski wrote: > The patch looks good to me. You can add: > > Reviewed-by: Jan Kara <jack@xxxxxxx> Thanks Jan! :) > It would just need small adjustments if you change patch 1 as I suggested: I will await what you say in response to what my thoughts were aronud ext4_set_iomap() before doing any updates here. > > +static u16 ext4_iomap_check_delalloc(struct inode *inode, > > + struct ext4_map_blocks *map) > > +{ > > + struct extent_status es; > > + ext4_lblk_t end = map->m_lblk + map->m_len - 1; > > + > > + ext4_es_find_extent_range(inode, &ext4_es_is_delayed, map->m_lblk, > > + end, &es); > > + > > + /* Entire range is a hole */ > > + if (!es.es_len || es.es_lblk > end) > > + return IOMAP_HOLE; > > + if (es.es_lblk <= map->m_lblk) { > > + ext4_lblk_t offset = 0; > > + > > + if (es.es_lblk < map->m_lblk) > > + offset = map->m_lblk - es.es_lblk; > > + map->m_lblk = es.es_lblk + offset; > > + map->m_len = es.es_len - offset; > > + return IOMAP_DELALLOC; > > + } > > + > > + /* Range starts with a hole */ > > + map->m_len = es.es_lblk - map->m_lblk; > > + return IOMAP_HOLE; > > +} > > This function would then be IMO better off to directly update 'iomap' as > needed after ext4_set_iomap() sets hole there. As mentioned in 1/8, it would be nice to leave all iomap setting up to ext4_set_iomap(), but if we're strongly against passing 'type', then I'm happy to change it and update this to pass an 'iomap'. --<M>--