On Fri, May 23, 2025 at 02:03:14PM +0300, Andrey Drobyshev wrote:
> >> I agree with Markus that this setting value different from what's been
> >> directly requested by user shouldn't go silent. Having some kind of
> >> warning at the very least would be nice.
> >
> > Okay, I'll make sure to warn if it exceeds the compile-time max.
Rather, refuse the QMP command with an error.
> >
> >>
> >>> ret = 0;
> >>>
> >>> @@ -1949,6 +1964,15 @@ static int nbd_open(BlockDriverState *bs, QDict
> >>> *options, int flags,
> >>>
> >>> nbd_client_connection_enable_retry(s->conn);
> >>>
> >>> + /*
> >>> + * We set s->multi_conn in nbd_process_options above, but now that
> >>> + * we have connected if the server doesn't advertise that it is
> >>> + * safe for multi-conn, force it to 1.
> >>> + */
> >>> + if (!(s->info.flags & NBD_FLAG_CAN_MULTI_CONN)) {
> >>> + s->multi_conn = 1;
> >>> + }
> >>
> >> Same here.
> >
> > Here, I disagree. But that's where better naming comes into play: if
> > there is 'max-' in the name, then the user should not be surprised if
> > they don't actually achieve the max (because the server lacked
> > support). On the other hand, I could see how you might want to know
> > if you have a mismatched setup ("I think the server SHOULD be
> > supporting multi-conn, so I request multiple clients, and I want to be
> > informed if my expectations were not met because then I know to go
> > reconfigure the server"). Thoughts?
> >
>
> Doesn't the "max-" part suggest that there might be anything in between
> [1..N]? When in reality it's either of {1, min(N, MAX_MULTI_CONN)}.
> But you're right, my initial argument was that this mismatch shouldn't
> go unnoticed as well. Although I agree that it's part of the expected
> behavior and therefore might not deserve a warning. Maybe smth like
> info_report() will do? We might even print it unconditionally, so that
> there's always a way to tell the actual number of connections chosen.
> Somewhat similar to what Richard pointed out at in nbdcopy.
Warnings in QMP are difficult. It's easy to fail a command, but hard
to print non-fatal messages. However, I'm not opposed to having a way
to use a QMP query-* command as a followup for the user who is curious
on how many connections a given block export is using (either we can
already query all existing block exports, or that's something that I
should add independent of the new multi-conn setting).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization: qemu.org | libguestfs.org