On Fri 07-07-17 23:28:01, Andreas Gruenbacher wrote: > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 82f3f7d..e2b0a8a 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -3361,8 +3361,13 @@ static int ext4_iomap_begin(struct inode *inode, loff_t offset, loff_t length, > bool delalloc = false; > int ret; > > - if (WARN_ON_ONCE(ext4_has_inline_data(inode))) > - return -ERANGE; > + if (ext4_has_inline_data(inode)) { > + if (WARN_ON_ONCE(!(flags & IOMAP_REPORT))) > + return -ERANGE; > + if (!ext4_inline_data_iomap(inode, iomap) && > + offset < iomap->length) Hum, what's the thinking behind this "offset < iomap->length" check? If it fails, we'd just fall through to the normal case which I'm not sure is guaranteed to be safe? Shouldn't we return error instead? Honza > + return 0; > + } > > map.m_lblk = first_block; > map.m_len = last_block - first_block + 1; > -- > 2.7.5 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html