NBDKit - Man Page
Interface between plugins written in OCaml and the nbdkit server.
Module
Module NBDKit
Documentation
Module NBDKit
: sig end
Interface between plugins written in OCaml and the nbdkit server.
Read these man pages for additional information: nbdkit-ocaml-plugin(3) and nbdkit-plugin(3)
type flags = flag list
Flags passed from the server to various callbacks.
type flag =
| May_trim
| FUA
| Req_one
type fua_flag =
| FuaNone
| FuaEmulate
| FuaNative
type cache_flag =
| CacheNone
| CacheEmulate
| CacheNop
type extent = {
offset : int64 ;
length : int64 ;
is_hole : bool ;
is_zero : bool ;
}
The type of the extent list returned by extents
type export = {
name : string ;
description : string option ;
}
The type of the export list returned by list_exports
type thread_model =
| THREAD_MODEL_SERIALIZE_CONNECTIONS
| THREAD_MODEL_SERIALIZE_ALL_REQUESTS
| THREAD_MODEL_SERIALIZE_REQUESTS
| THREAD_MODEL_PARALLEL
The type of the thread model returned by thread_model
type buf = (char, Stdlib.Bigarray.int8_unsigned_elt, Stdlib.Bigarray.c_layout) Stdlib.Bigarray.Array1.t
Define a convenient type name for the buffer type passed to the ~pread and ~pwrite methods.
val buf_len : buf -> int
Return the length of the ~pread and ~pwrite buf parameter.
val blit_string_to_buf : string -> int -> buf -> int -> int -> unit
Helper functions to blit between bytes/string and buf.
blit_string_to_buf src src_pos buf buf_pos len copies len bytes from string src+src_pos to buf+buf_pos .
blit_bytes_to_buf src src_pos buf buf_pos len is the same but the source is bytes.
blit_buf_to_bytes buf buf_pos dst dst_pos len copies len bytes from buf+buf_pos to bytes dst+dst_pos .
val blit_bytes_to_buf : bytes -> int -> buf -> int -> int -> unit
val blit_buf_to_bytes : buf -> int -> bytes -> int -> int -> unit
val register_plugin : name:string -> ?longname:string -> ?version:string -> ?description:string -> ?load:(unit -> unit) -> ?get_ready:(unit -> unit) -> ?after_fork:(unit -> unit) -> ?cleanup:(unit -> unit) -> ?unload:(unit -> unit) -> ?config:(string -> string -> unit) -> ?config_complete:(unit -> unit) -> ?config_help:string -> ?thread_model:(unit -> thread_model) -> ?magic_config_key:string -> ?preconnect:(bool -> unit) -> open_connection:(bool -> 'a) -> ?close:('a -> unit) -> get_size:('a -> int64) -> ?export_description:('a -> string) -> ?block_size:('a -> int * int * int64) -> ?can_cache:('a -> cache_flag) -> ?can_extents:('a -> bool) -> ?can_fast_zero:('a -> bool) -> ?can_flush:('a -> bool) -> ?can_fua:('a -> fua_flag) -> ?can_multi_conn:('a -> bool) -> ?can_trim:('a -> bool) -> ?can_write:('a -> bool) -> ?can_zero:('a -> bool) -> ?is_rotational:('a -> bool) -> pread:('a -> buf -> int64 -> flags -> unit) -> ?pwrite:('a -> buf -> int64 -> flags -> unit) -> ?flush:('a -> flags -> unit) -> ?trim:('a -> int64 -> int64 -> flags -> unit) -> ?zero:('a -> int64 -> int64 -> flags -> unit) -> ?extents:('a -> int64 -> int64 -> flags -> extent list) -> ?cache:('a -> int64 -> int64 -> flags -> unit) -> ?dump_plugin:(unit -> unit) -> ?list_exports:(bool -> bool -> export list) -> ?default_export:(bool -> bool -> string) -> unit -> unit
Register the plugin with nbdkit.
The 'a parameter is the handle type returned by your open_connection method and passed back to all connected calls.
val set_error : Unix.error -> unit
Set the errno returned over the NBD protocol to the client.
Notice however that the NBD protocol only supports a small handful of errno values. Any other errno will be translated into EINVAL .
val parse_size : string -> int64
Bindings for nbdkit_parse_size(3) , nbdkit_parse_probability(3) , nbdkit_parse_bool(3) , nbdkit_parse_delay(3) and nbdkit_read_password(3) .
On error these functions all raise Invalid_argument . The actual error is sent to the nbdkit error log and is not available from the OCaml code. It is usually best to let the exception escape.
val parse_probability : string -> string -> float
val parse_bool : string -> bool
val parse_delay : string -> string -> int * int
val read_password : string -> string
val stdio_safe : unit -> bool
Binding for nbdkit_stdio_safe . Returns true if it is safe to interact with stdin and stdout during the configuration phase.
val realpath : string -> string
Binding for nbdkit_realpath . Returns the canonical path from a path parameter.
val nanosleep : int -> int -> unit
Binding for nbdkit_nanosleep . Sleeps for seconds and nanoseconds.
val export_name : unit -> string
Binding for nbdkit_export_name . Returns the name of the export as requested by the client.
val is_tls : unit -> bool
Binding for nbdkit_is_tls . Returns true if the client completed TLS authentication.
val shutdown : unit -> unit
Binding for nbdkit_shutdown . Requests the server shut down.
val disconnect : bool -> unit
Binding for nbdkit_disconnect . Requests disconnecting current client.
val debug : ('a, unit, string, unit) Stdlib.format4 -> 'a
Print a debug message when nbdkit is in verbose mode.
val version : unit -> string
Return the version of nbdkit that the plugin was compiled with.
val api_version : unit -> int
Return the nbdkit API version used by the plugin.
See NBDKIT_API_VERSION in nbdkit-plugin(3) .
val peer_name : unit -> Unix.sockaddr
Binding for nbdkit_peer_name .
val peer_pid : unit -> int64
Binding for nbdkit_peer_pid .
val peer_uid : unit -> int64
Binding for nbdkit_peer_uid .
val peer_gid : unit -> int64
Binding for nbdkit_peer_gid .
val peer_security_context : unit -> string
Binding for nbdkit_peer_security_context .
Referenced By
nbdkit-ocaml-plugin(3), nbdkit-release-notes-1.24(1).