23.08.2019 17:37, Eric Blake wrote: > When creating a read-only image, we are still advertising support for > TRIM and WRITE_ZEROES to the client, even though the client should not > be issuing those commands. But seeing this requires looking across > multiple functions: > > All callers to nbd_export_new() passed a single flag based solely on > whether the export allows writes. Later, we then pass a constant set > of flags to nbd_negotiate_options() (namely, the set of flags which we > always support, at least for writable images), which is then further > dynamically modified based on client requests for structured options. > Finally, when processing NBD_OPT_EXPORT_NAME or NBD_OPT_EXPORT_GO we > bitwise-or the original caller's flag with the runtime set of flags > we've built up over several functions. > > Let's refactor things to instead compute a baseline of flags as soon > as possible, in nbd_export_new(), and changing the signature for the > callers to pass in a simpler bool rather than having to figure out > flags. We can then get rid of the 'myflags' parameter to various > functions, and instead refer to client for everything we need (we > still have to perform a bitwise-OR during NBD_OPT_EXPORT_NAME and > NBD_OPT_EXPORT_GO, but it's easier to see what is being computed). > This lets us quit advertising senseless flags for read-only images, as > well as making the next patch for exposing FAST_ZERO support easier to > write. > > Signed-off-by: Eric Blake<ebl...@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> -- Best regards, Vladimir