On Mon, Feb 25, 2013 at 08:07:41PM +0400, Dmitry Monakhov wrote: > Splitting extents inside endio is bad thing, but unfortunetly it is still > possible. In fact we are pretty close to the moment when all related > issues will be fixed. Let's warn developer if it still the case. > > Signed-off-by: Dmitry Monakhov <dmonakhov@xxxxxxxxxx> > --- > fs/ext4/extents.c | 13 ++++++++++++- > 1 files changed, 12 insertions(+), 1 deletions(-) > > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index 1d37f2d..78c2a91 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -3386,8 +3386,19 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, > "block %llu, max_blocks %u\n", inode->i_ino, > (unsigned long long)ee_block, ee_len); > > - /* If extent is larger than requested then split is required */ > + /* If extent is larger than requested it is a clear sign that we still > + * have some extent state machine issues left. So extent_split is still > + * required. > + * TODO: Once all related issues will be fixed this situation should be > + * illegal. > + */ > if (ee_block != map->m_lblk || ee_len > map->m_len) { > +#ifdef EXT4_DEBUG > + ext4_warning("Inode (%ld) finished: extent logical block %llu," A parameter is missing. diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 25c86aa..daf8bb9 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3395,7 +3395,8 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, */ if (ee_block != map->m_lblk || ee_len > map->m_len) { #ifdef EXT4_DEBUG - ext4_warning("Inode (%ld) finished: extent logical block %llu," + ext4_warning(inode->i_sb, + "Inode (%ld) finished: extent logical block %llu," " len %u; IO logical block %llu, len %u\n", inode->i_ino, (unsigned long long)ee_block, ee_len, (unsigned long long)map->m_lblk, map->m_len); Regards, - Zheng > + " len %u; IO logical block %llu, len %u\n", > + inode->i_ino, (unsigned long long)ee_block, ee_len, > + (unsigned long long)map->m_lblk, map->m_len); > +#endif > err = ext4_split_unwritten_extents(handle, inode, map, path, > EXT4_GET_BLOCKS_CONVERT); > if (err < 0) > -- > 1.7.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html