[Libguestfs] [PATCH libnbd] info: Add --map --totals sub-mode to display summary of map

Richard W.M. Jones rjones at redhat.com
Mon Jun 28 17:52:40 UTC 2021


On Mon, Jun 28, 2021 at 12:05:03PM -0500, Eric Blake wrote:
> On Sat, Jun 26, 2021 at 05:19:47PM +0100, Richard W.M. Jones wrote:
> > This is similar to "qemu-img measure".  Some examples:
> > 
> > $ nbdkit -r file fedora-33.img --run 'nbdinfo --map --totals $uri'
> > 1226113024  19.0   0 data
> > 5216337920  81.0   3 hole,zero
> 
> Is it worth a human-legible header line?  Or maybe a % character in
> the second column?

We don't have headers on the other table and it may be too late to add
those now.  But I think you're right it would be better to add a %
character after the percent field (ie. "%5.1f%%").  I think I'll make
this change.

> > +++ b/info/info-map-totals-json.sh
> > +
> > +test $( jq -r '.[0].size' < $out ) -eq 65536
> > +test $( jq -r '.[0].percent' < $out ) = "6.25"
> > +test $( jq -r '.[0].type' < $out ) -eq 0
> > +test $( jq -r '.[0].description' < $out ) = "data"
> > +
> > +test $( jq -r '.[1].size' < $out ) -eq 983040
> > +test $( jq -r '.[1].percent' < $out ) = "93.75"
> > +test $( jq -r '.[1].type' < $out ) -eq 3
> > +test $( jq -r '.[1].description' < $out ) = "hole,zero"
> ...
> > diff --git a/info/info-map-totals.sh b/info/info-map-totals.sh
> > new file mode 100755
> > index 0000000..12c1263
> > --- /dev/null
> > +++ b/info/info-map-totals.sh
> > @@ -0,0 +1,43 @@
> 
> > +
> > +cat $out
> > +
> > +if [ "$(tr -s ' ' < $out)" != " 65536 6.2 0 data
> > + 983040 93.8 3 hole,zero" ]; then
> 
> So this is the human-readable counterpart of info-map-totals-json.sh.
> I'm trying to figure out why 6.25 rounded down and 93.75 rounded up.
> I guess it's related to round-to-even?  But it's also fine if the
> rounded values don't sum back up to 100%; I don't know if it's worth a
> documentation disclaimer.

I don't know either.

> > + $ nbdinfo --map --totals --json nbd://localhost/
> > + [{ "size": 1048576, "percent": 50,
> > +    "type": 0, "description": "data" },
> > +  { "size": 1048576, "percent": 50,
> > +    "type": 3, "description": "hole,zero" }]
> > +
> > +As with the I<--map> option, by default this shows the
> > +C<"base:allocation"> map, but you can show the summary for other maps.
> 
> I'd still like to someday have a mode where we can read all advertised
> maps at once, rather than making the command-line user have to
> manually invoke nbdinfo once per map spelled by the user, but that can
> still go on top of this.

Yes it should be possible using nbd_opt_list_meta_context.

> Overall, looks good to me!

Thanks,

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html




More information about the Libguestfs mailing list