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