Il 30/07/2012 15:53, Eric Blake ha scritto: > On 07/30/2012 07:40 AM, Paolo Bonzini wrote: >> Il 28/07/2012 15:43, Eric Blake ha scritto: >>>>> + if (granularity < 512 || granularity > 1048576 * 64) { >>>>> + error_set(errp, QERR_INVALID_PARAMETER, device); >>>>> + return; >>>>> + } >>>>> + if (granularity & (granularity - 1)) { >>>>> + error_set(errp, QERR_INVALID_PARAMETER, device); >>>>> + return; >>> In the XBZLRE migration series, we decided to round the users input down >>> to a power of two instead of reject it. Should we do that here? >> >> I can certainly do that, but do you have a pointer to the discussion so >> that I can understand the rationale? > > https://lists.gnu.org/archive/html/qemu-devel/2012-05/msg02421.html
Hmm, a buffer size (the cache size in the case of XBZRLE) is different however. There is no reason in principle why it needs to be a power of two (except if you know how the hash table is implemented, or something like that). For example, the buf_size argument in this series does indeed support a non-power-of-two size. Requesting a granularity to be a power-of-two shouldn't be surprising to anybody who has an idea of what a bit shift is and how it is used... Paolo