If ext4 converts an inline file to extents when applying writes under delayed allocation that exceed the available inline storage, one or more delayed allocated extents may be stored in the extent status cache with an accompanying increase in the reserved block count. If the file is subsequently truncated before writeback occurs, that inode's delayed allocated extents will not be removed from the extent status cache and the reserved block count will not be reduced as required after truncation. At minimum, unexpected ENOSPC conditions can occur. Eric Whitney (2): ext4: remove extent cache entries when truncating inline data ext4: enforce buffer head state assertion in ext4_da_map_blocks fs/ext4/inline.c | 19 +++++++++++++++++++ fs/ext4/inode.c | 15 +++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) -- 2.20.1