On 3/5/21 5:31 PM, Eric Blake wrote:
This is another API/ABI change to filters, but that doesn't
matter.
Instead of having a 1:1 correspondence of automatic backend context to
the current connection (which means filters.c has to consult GET_CONN
on every action), switch things so that a given context tracks the
next context. This requires another signature change to the internal
backend_open and backend_reopen functions, as well as a public change
to the type of the argument handed to filter .open calls. A given
connection now only needs to track the top_context, and we no longer
need get_context()/set_context(). Internally, nbdkit_context and
nbdkit_next are the same type, but the public interface for filters
keeps them separate for type-safety reasons (assigning a backend
handle to the current filter's context is different than calling into
the backend via next_ops/nxdata as the backend's context).
@@ -471,7 +471,7 @@ outer filter to the plugin will be in reverse.
Skipping a call to
C<next> is acceptable if the filter will not access C<next_ops>
during any of the remaining callbacks reached on the same connection.
-The value of C<backend> in this call has a lifetime that lasts until
+The value of C<context> in this call has a lifetime that lasts until
the counterpart C<.close>, and it is this value (and not the distinct
C<nxdata> of C<.pread> and friends) that must be passed as the first
parameter to C<nbdkit_backend_reopen> by a filter attempting to retry
@@ -481,14 +481,14 @@ a connection into the backend.
Filters have access to a function for reopening the backend:
- int (nbdkit_backend *backend, int readonly, const char *exportname,
+ int (nbdkit_context *context, int readonly, const char *exportname,
void **nxdata);
This goes away in a later patch, but I might as well spell it correctly
in the earlier patches: s/int /int nbdkit_backend_reopen)/
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org