[Libguestfs] [PATCH nbdkit] cache, cow: Export block size constraints

Richard W.M. Jones rjones at redhat.com
Mon Feb 21 14:32:09 UTC 2022


On Mon, Feb 21, 2022 at 03:19:23PM +0100, Laszlo Ersek wrote:
> On 02/21/22 11:22, Richard W.M. Jones wrote:
> > On Mon, Feb 21, 2022 at 10:22:04AM +0100, Laszlo Ersek wrote:
> >>> +/* Block size constraints. */
> >>> +static int
> >>> +cache_block_size (nbdkit_next *next, void *handle,
> >>> +                  uint32_t *minimum, uint32_t *preferred, uint32_t *maximum)
> >>> +{
> >>> +  if (next->block_size (next, minimum, preferred, maximum) == -1)
> >>> +    return -1;
> >>> +
> >>> +  if (*minimum == 0) {         /* No constraints set by the plugin. */
> >>> +    *minimum = 1;
> >>> +    *preferred = blksize;
> >>> +    *maximum = 0xffffffff;
> >>> +  }
> >>> +  else if (*maximum >= blksize) {
> >>
> >> Do we need braces here?
> >>
> >>> +    *preferred = MAX (*preferred, blksize);
> >>> +  }
> > 
> > I don't think we need them, but it might be clearer with them.
> 
> Sorry, I'm still a bit confused whether braces around single statements
> are *permitted* -- the rule even seems to vary across the various v2v
> projects.

Oh I got the wrong end of the stick.  I thought you meant would the
code be clearer like this:

+  if (*minimum == 0) {         /* No constraints set by the plugin. */
+    *minimum = 1;
+    *preferred = blksize;
+    *maximum = 0xffffffff;
+  }
+  else {
+    if (*maximum >= blksize)
+      *preferred = MAX (*preferred, blksize);
+  }

I think it would be clearer, since the else clause now refers to the
separate case where the plugin *did* set constraints.  In fact I
changed my local copy already.

But I think you meant should I have used braces around the single line
statement (in the original code).

> My understanding has been that we forbid braces around single
> statements, at least in some projects. So what's the rule?

There's not really a rule.  I tend to use whatever is clearer in the
particular case.  ie. Trading off code density (being able to see more
code on the page helps me) vs clarity (braces can be used to make it
clearer what code is contained in a clause, but correct indentation
does that as well).

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org




More information about the Libguestfs mailing list