For files that have large holes in them, it makes little sense to read those holes knowing they will be zero-filled. For instance, when using sparse mode, ddpt could seek to the end of a hole in the input with SEEK_DATA. Of course, the user could figure out the data blocks themself and use a scatter-gather list to only read the data. But it would be nice to have it be transparent.
It looks like similar functionality could be implemented for SCSI devices via the SCSI GET LBA STATUS command to see what blocks are mapped.