Necessary when writing a client that wants to avoid unnecessary EINVAL
errors from sending unaligned requests.
At some point, we may want to add synchronous convenience API wrappers
that do request splitting or read-modify-write to obey server
constraints while still appearing to the library client as accepting
any possible request. But such a wrapper should only be synchronous
and not copied to nbd_aio_*, because getting locking right is a bear
if you have two non-overlapping client requests that want to visit the
same larger-granularity window of the server in parallel.
Eric Blake (3):
states: Request NBD_INFO_BLOCK_SIZE during NBD_OPT_GO
api: Add new API to query negotiated block size
nbdinfo: Expose block size constraints
info/nbdinfo.pod | 6 +++
lib/internal.h | 7 +++
lib/nbd-protocol.h | 10 ++++-
generator/API.ml | 70 +++++++++++++++++++++++++++---
generator/state_machine.ml | 7 +++
generator/states-newstyle-opt-go.c | 31 +++++++++++--
lib/flags.c | 18 +++++++-
info/nbdinfo.c | 18 ++++++++
8 files changed, 156 insertions(+), 11 deletions(-)
--
2.27.0