Rebased filters patch. Requires current git master + the locks /
thread model fix
(
https://www.redhat.com/archives/libguestfs/2018-January/msg00128.html)
So a few changes here since last time:
The "introduce filters" and "implement filters" patches are
squashed together.
I introduced a concept of .prepare and .finalize. These run before
and after the data serving phase respectively. They're not a lot of
use for plugins because you can just use .open and .close instead, and
therefore I didn't expose them to plugins (only internally in the
backend). However for filters they make more sense since they give
you a place to prepare and finalize. They're necessary also for
filters because filter.open could not call the next open method, save
the (plugin) handle, then construct an nbdkit_next_ops object, and
call pread. It _has_ to be split into two operations.
This patch series is incomplete in at least three ways:
- We still need a way for filter.open to call down to the next open
function, so it can adjust the readonly flag (for copyonwrite
filter, TBD).
- Partition filter is obviously not complete.
- Need to write a copyonwrite filter.
Rich.