The test disk has experienced relatively few operations compared to a real-world filesystem, so it doesn't have much fragmentation. In particular, all of its directory tree inodes currently have a single extent with a relative offset of 0. This allowed the tests to miss that the arithmetic for converting from a file block to an absolute block was slightly off: the extents relative start must be subtractred from the relative block.
Also add a test case that manually constructs some extents to better exercise this code.
The test disk has experienced relatively few operations compared to a real-world filesystem, so it doesn't have much fragmentation. In particular, all of its directory tree inodes currently have a single extent with a relative offset of 0. This allowed the tests to miss that the arithmetic for converting from a file block to an absolute block was slightly off: the extents relative start must be subtractred from the relative block.
Also add a test case that manually constructs some extents to better exercise this code.