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<eblake(a)redhat.com> 
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov(a)virtuozzo.com>
-- 
Best regards,
Vladimir