[Libguestfs] [nbdkit PATCH 1/2] rust: Implement can_cache

Eric Blake eblake at redhat.com
Fri Aug 16 17:08:10 UTC 2019


Implementing extents requires some coordination for the Rust code to
call back into libnbdkit; I'm not familiar with Rust enough to do
that. But with placeholders for those slots, implementing
can_cache/cache is trivial.  This improves the situation mentioned in
commit 031fae85.

Signed-off-by: Eric Blake <eblake at redhat.com>
---
 plugins/rust/nbdkit-rust-plugin.pod | 10 ++++++++++
 plugins/rust/src/lib.rs             | 13 +++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/plugins/rust/nbdkit-rust-plugin.pod b/plugins/rust/nbdkit-rust-plugin.pod
index db2a55ee..930829cc 100644
--- a/plugins/rust/nbdkit-rust-plugin.pod
+++ b/plugins/rust/nbdkit-rust-plugin.pod
@@ -90,6 +90,16 @@ thread models, see L<nbdkit-plugin(3)/THREADS>.

 =back

+=head2 Missing callbacks
+
+=over 4
+
+=item Missing: C<can_extents> and C<extents>
+
+These are not yet supported.
+
+=back
+
 =head1 SEE ALSO

 L<nbdkit(1)>,
diff --git a/plugins/rust/src/lib.rs b/plugins/rust/src/lib.rs
index a3dbf43e..25af2fe6 100644
--- a/plugins/rust/src/lib.rs
+++ b/plugins/rust/src/lib.rs
@@ -93,6 +93,15 @@ pub struct Plugin {
     pub magic_config_key: *const c_char,

     pub can_multi_conn: Option<extern fn (h: *mut c_void) -> c_int>,
+
+    // Slots for extents functions, which needs more integration.
+    _can_extents: Option<extern fn ()>,
+    _extents: Option<extern fn ()>,
+
+    pub can_cache: Option<extern fn (h: *mut c_void) -> c_int>,
+    pub cache: Option<extern fn (h: *mut c_void,
+                                 count: u32, offset: u64,
+                                 flags: u32) -> c_int>,
 }

 pub enum ThreadModel {
@@ -146,6 +155,10 @@ impl Plugin {
             zero: None,
             magic_config_key: std::ptr::null(),
             can_multi_conn: None,
+            _can_extents: None,
+            _extents: None,
+            can_cache: None,
+            cache: None,
         }
     }
 }
-- 
2.20.1




More information about the Libguestfs mailing list