[Libguestfs] [nbdkit PATCH v2 5/7] server: Allow longer NBD_OPT
Eric Blake
eblake at redhat.com
Mon Sep 30 16:32:43 UTC 2019
On 9/30/19 11:30 AM, Eric Blake wrote:
>>> /* Maximum length of any option data (bytes). */
>>> -#define MAX_OPTION_LENGTH 4096
>>> +#define MAX_OPTION_LENGTH (NBD_MAX_STRING * 4)
>>
>> I may have missed it - why was * 4 chosen?
>
> NBD_OPT_SET_META_CONTEXT allows two strings plus a few glue bytes, so
> more than 8k of data from a compliant client. 16k is the next power of
> 2. We can bump it larger if we want, especially since 16k pales in
> comparison to our 32M limit on NBD_CMD_WRITE, but for now, there is
> nothing in the NBD protocol larger than NBD_OPT_SET_META_CONTEXT.
Actually, having just written that, I now realize that
NBD_OPT_SET_META_CONTEXT allows you to request more than one context at
a time. It's very easy to provoke a request larger than 16k by
requesting 3 contexts at once (nbdsh can do so), even if we only ever
respond to a single recognized context. So I should probably just go
whole-hog and cap this at the same limit as NBD_CMD_WRITE, rather than
having two independent limits. And I probably ought to beef up the
testsuite to actually demonstrate nbdsh provoking that large of an option.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
More information about the Libguestfs
mailing list