diff options
Diffstat (limited to 'fs/ext4/extents.c')
-rw-r--r-- | 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 60818ed1f6a9..265cb0e50c51 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c | |||
@@ -3387,8 +3387,19 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, | |||
3387 | "block %llu, max_blocks %u\n", inode->i_ino, | 3387 | "block %llu, max_blocks %u\n", inode->i_ino, |
3388 | (unsigned long long)ee_block, ee_len); | 3388 | (unsigned long long)ee_block, ee_len); |
3389 | 3389 | ||
3390 | /* If extent is larger than requested then split is required */ | 3390 | /* If extent is larger than requested it is a clear sign that we still |
3391 | * have some extent state machine issues left. So extent_split is still | ||
3392 | * required. | ||
3393 | * TODO: Once all related issues will be fixed this situation should be | ||
3394 | * illegal. | ||
3395 | */ | ||
3391 | if (ee_block != map->m_lblk || ee_len > map->m_len) { | 3396 | if (ee_block != map->m_lblk || ee_len > map->m_len) { |
3397 | #ifdef EXT4_DEBUG | ||
3398 | ext4_warning("Inode (%ld) finished: extent logical block %llu," | ||
3399 | " len %u; IO logical block %llu, len %u\n", | ||
3400 | inode->i_ino, (unsigned long long)ee_block, ee_len, | ||
3401 | (unsigned long long)map->m_lblk, map->m_len); | ||
3402 | #endif | ||
3392 | err = ext4_split_unwritten_extents(handle, inode, map, path, | 3403 | err = ext4_split_unwritten_extents(handle, inode, map, path, |
3393 | EXT4_GET_BLOCKS_CONVERT); | 3404 | EXT4_GET_BLOCKS_CONVERT); |
3394 | if (err < 0) | 3405 | if (err < 0) |