[libvirt] [PATCH v2] iohelper: fix reading with O_DIRECT

Daniel P. Berrange berrange at redhat.com
Wed Sep 20 13:30:58 UTC 2017


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 :|




More information about the libvir-list mailing list