Currently punched extent converted to uninitialized incorrectly, in fact i'm not shure whenever we actually need that conversion, but if we do that let's do it right. Signed-off-by: Dmitry Monakhov <dmonakhov@xxxxxxxxxx> --- fs/ext4/extents.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 02dfe38..0365173 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3275,8 +3275,15 @@ ext4_ext_handle_punched_extent(handle_t *handle, struct inode *inode, ex = path[path->p_depth].p_ext; } - ext4_ext_mark_uninitialized(ex); + err = ext4_ext_get_access(handle, inode, path + path->p_depth); + if (err) + goto out; ext4_ext_invalidate_cache(inode); + ext4_ext_mark_uninitialized(ex); + err = ext4_ext_dirty(handle, inode, path + path->p_depth); + if (err) + goto out; + err = ext4_ext_rm_leaf(handle, inode, path, &partial_cluster, map->m_lblk, map->m_lblk + punched_out); if (!err && ext4_ext_try_shrink(handle, inode)) -- 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