[redirecting to gnulib]
On 09/07/2018 01:04 PM, Yan-Jie Wang wrote:
I have done some experiments and find out that
the behavior of lseek with whence set to SEEK_DATA is different from the
behavior of Linux's lseek.
If the supplied offset is in the middle of a data region, it returns the
start of the next data region. There may be many data regions in a big
file even though it has no hole.
return value of lseek with whence set to SEEK_DATA:
|--(offset)--Data----|(return value)----Data----|
|--(offset)--Data----|----Hole----|(return value)----Data----|
Ouch. That's a nasty bug in MacOS, and gnulib should be taught to work
around broken lseek(SEEK_DATA) (qemu doesn't use gnulib, but this bug is
nasty enough that I'm worried about what other gnulib clients may also
encounter the problem).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org