On 3/26/19 4:17 PM, Richard W.M. Jones wrote:
Typical output:
2019-03-26 18:22:17.287434 connection=2 Extents id=2 offset=0x0 count=0x40000000
req_one=1 ...
2019-03-26 18:22:17.290040 connection=2 ...Extents id=2 extents=[{ offset=0x0,
length=0x250000, type=0 }, { offset=0x250000, length=0x7db0000, type=3 }, {
offset=0x8000000, length=0x8000, type=0 }, { offset=0x8008000, length=0x38000, type=3 }, {
offset=0x8040000, length=0x208000, type=0 }, { offset=0x8248000, length=0x7db8000, type=3
}, { offset=0x10000000, length=0x208000, type=0 }, { offset=0x10208000, length=0x7df8000,
type=3 }, { offset=0x18000000, length=0x8000, type=0 }, { offset=0x18008000,
length=0x38000, type=3 }, { offset=0x18040000, length=0x208000, type=0 }, {
offset=0x18248000, length=0x7db8000, type=3 }, { offset=0x20000000, length=0x208000,
type=0 }, { offset=0x20208000, length=0x7df8000, type=3 }, { offset=0x28000000,
length=0x8000, type=0 }, { offset=0x28008000, length=0x38000, type=3 }, {
offset=0x28040000, length=0x208000, type=0 }, { offset=0x28248000, length=0x7db8000,
type=3 }, { offset=0x30000000, length=0x208000, type=0 }, { offset=0x30208000,
length=0x7df8000, type=3 }, { offset=0x38000000, length=0x8000, type=0 }, {
offset=0x38008000, length=0x38000, type=3 }, { offset=0x38040000, length=0x208000, type=0
}, { offset=0x38248000, length=0x7da8000, type=3 }, { offset=0x3fff0000, length=0x10000,
type=0 }] return=0
As you can see this is logging the complete information as generated
by the underlying plugin, not what is returned to the client (which is
rather hard for the log filter to discern). It's probably more useful
for debugging like this.
Can get quite verbose, but that's par for a logger. If we wanted, we
could introduce a log-abbreviate option, to produce something like:
extents=[{ offset=0x0, length=0x250000, type=0 }, ...N more extents]
where you get verbose by default, but can opt-in to the shorter output.
+ else {
+ FILE *fp;
+ char *extents_str = NULL;
+ size_t i, n, len = 0;
+
+ fp = open_memstream (&extents_str, &len);
Yeah, a memstream makes this easier (it is in POSIX, but not universally
available; do we care?)
Missing a patch to nbdkit-log-filter.pod:
This filter writes to the file specified by the
C<logfile=FILE>
parameter. All lines include a timestamp, a connection counter, then
details about the command. The following actions are logged: Connect,
Read, Write, Zero, Trim, Flush, and Disconnect. Except for Connect
where that sentence needs to be updated.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org