On 7/21/20 7:41 PM, Eric Blake wrote:
@@ -148,7 +166,7 @@ ext2_prepare (struct nbdkit_next_ops *next_ops,
void *nxdata, void *handle,
struct ext2_inode inode;
int64_t r;
CLEANUP_FREE char *name = NULL;
- const char *fname = file ?: nbdkit_export_name ();
+ const char *fname = file ?: h->exportname;
Hmm - we already pass the same 'readonly' state to filter's .prepare,
but not to backend_prepare(), which has to reconstruct it. Would it be
easier to also change the signature of backend_prepare() to take both
the original readonly and exportname passed to backend_open(), rather
than making the filter have to save it off in the filter? It looks like
protocol-handshake.c is the only caller, and still has everything in
scope at the time.
Nope, we can't. It's because the sequence is:
backend_open("clientname")
outer_filter.open("clientname")
next_open("outername")
inner_filter.open("outername")
next_open("innername")
plugin.open("innername")
backend_prepare()
backend_prepare()
backend_prepare()
plugin.prepare()
inner_filter.prepare()
outer_filter.prepare()
while protocol-handshake.c has the same "clientname" to pass to both
backend_open() and backend_prepare(), the outer-to-inner order of .open
is (intentionally) opposite the inner-to-outer order of .prepare, and
the name passed to plugin.open has indeed left scope. Unless we want
backend.c to start storing the name passed into backend_open().
+++ b/filters/log/log.c
@@ -227,11 +227,12 @@ output_return (struct handle *h, const char
*act, uint64_t id, int r, int *err)
/* Open a connection. */
static void *
-log_open (nbdkit_next_open *next, void *nxdata, int readonly)
+log_open (nbdkit_next_open *next, void *nxdata,
+ int readonly, const char *exportname)
{
struct handle *h;
- if (next (nxdata, readonly) == -1)
+ if (next (nxdata, readonly, exportname) == -1)
return NULL;
Pre-existing - the log filter should include the exportname somewhere in
its output log. Well, nothing like the present to fix it ;)
I did that in the meantime, so you'll need a slight rebase.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
_______________________________________________
Libguestfs mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libguestfs