diff options
Diffstat (limited to 'lib/extent-map.c')
-rw-r--r-- | lib/extent-map.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/extent-map.c b/lib/extent-map.c index ab9cfb0..42071c6 100644 --- a/lib/extent-map.c +++ b/lib/extent-map.c @@ -25,7 +25,13 @@ int fiemap(int fd, uint32_t flags, int (*handle_extent)(struct fiemap_extent)) { if (ioctl(fd, FS_IOC_FIEMAP, fm) < 0) return -errno; - for (size_t i = 0; i < fm->fm_extent_count; i++) { + if (fm->fm_mapped_extents == 0) { + if (bytes_mapped != 0) + error(EXIT_FAILURE, 0, "FS_IOC_FIEMAP is misbehaving"); + return EXIT_SUCCESS; + } + + for (size_t i = 0; i < fm->fm_mapped_extents; i++) { int r = handle_extent(fm->fm_extents[i]); if (r) { free(fm); |