Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
None
-
None
-
3
-
9223372036854775807
Description
ext4's extent code doesn't handle cases when extents merge/collapse. for example, one can create a sparse file like this
EXTENTS: (ETB0):33409 (0):34816 (2):34818 (4):34820 (6):34822 (8):34824 (10):34826 (12):34828 (14):34830 (16):34832 (18):34834 (20):34836 (22):34838 (24):34840 (26):34842 (28):34844 (30):34846 (32):34848 (34):34850 (36):34852 (38):34854 (40):34856 (42):34858 (44):34860 (46):34862 (48):34864 (50):34866
then fill the holes and get an extent tree like this one:
EXTENTS: (ETB0):33409 (0-1):34816-34817 (ETB0):33411 (2-679):34818-35495 (ETB0):33410 (680-998):35496-35814
where 2 blocks are used to store 2 mergable extents.