directory. If supported, FS_IOC_FIEMAP ioctl is used to get file
extents. For empty file fm_mapped_extents is 0 and no error code
is returned, because this is not fail situation.
Without this patch errno from previous operation is returned and
successful FS_IOC_FIEMAP ioctl call for empty file is interpreted
as error.
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@seagate.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
if (err < 0 && (errno == EOPNOTSUPP || errno == ENOTTY)) {
err = EXT2_ET_UNIMPLEMENTED;
goto out;
- } else if (err < 0 || fiemap_buf->fm_mapped_extents == 0) {
+ } else if (err < 0) {
err = errno;
goto out;
- }
+ } else if (fiemap_buf->fm_mapped_extents == 0)
+ goto out;
for (i = 0, ext = ext_buf; i < fiemap_buf->fm_mapped_extents;
i++, ext++) {
err = copy_file_range(fs, fd, e2_file, ext->fe_logical,