On Wed, Sep 20, 2017 at 02:58:55PM +0300, Nikolay Shirokovskiy wrote:
saferead is not suitable for direct reads. If file size is not
multiple
of align size then we get EINVAL on the read(2) that is supposed to
return 0 because read buffer will not be aligned at this point.
Let's not read again after partial read and check that we read
everything by comparing the number of total bytes read against file size.
What scenario did you actually hit this problem in ? IIUC, we should
only be using O_DIRECT against block devices or plain files, and in both
those cases we should never see short-read unless we hit EOF.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|