On 8/7/20 8:43 AM, Nir Soffer wrote:
It's also possible to avoid polluting the page cache by using O_DIRECT, but that comes with harder guarantees (aligned access through aligned buffers), so we may add it as another mode later on. But in the meantime, cache=none is fairly nice while still avoiding O_DIRECT.
I'm not sure if or even how we could ever do a robust O_DIRECT
We can let the plugin an filter deal with that. The simplest solution is to drop it on the user and require aligned requests.
Maybe a filter can handle alignment?
The blocksize filter seems like a good fit. Also, I'm trying to add support for NBD_INFO_BLOCK_SIZE (qemu already supports it), so that we can advertise minimum granularity across to the client to avoid the need for read-modify-write in the blocksize filter.
implementation, but my idea was that it might be an alternate
implementation of cache=none. But if we thought we might use O_DIRECT as a separate mode, then maybe we should rename cache=none. cache=advise? cache=dontneed? I can't think of a good name!
Yes, don't call it none if you use the cache.
How about advise=?
I would keep cache semantics similar to qemu.
qemu-img has cache=, but it affects O_DIRECT rather than posix_fadvise. Yeah, naming is hard, and I don't know if I have better ideas. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org