Page
Library
Module
Module type
Parameter
Class
Class type
Source
BlockSourceBlock device on top of Lwt_unix
include Mirage_block.SThe type for block errors.
The type for write errors.
pp_write_error is the pretty-printer for write errors.
include Mirage_device.SThe type representing the internal state of the device
Query the characteristics of a specific block device
read device sector_start buffers reads data starting at sector_start from the block device into buffers. Ok () means the buffers have been filled. Error _ indicates an I/O error has happened and some of the buffers may not be filled. Each of elements in the list buffers must be a whole number of sectors in length. The list of buffers can be of any length.
write device sector_start buffers writes data from buffers onto the block device starting at sector_start. Ok () means the contents of the buffers have been written. Error _ indicates a partial failure in which some of the writes may not have happened.
Once submitted, it is not possible to cancel a request and there is no timeout.
The operation may fail with:
`Unimplemented: the operation has not been implemented, no data has been written.`Is_read_only: the device is read-only, no data has been written.`Disconnected: the device has been disconnected at application request, an unknown amount of data has been written.Each of buffers must be a whole number of sectors in length. The list of buffers can be of any length.
The data will not be copied, so the supplied buffers must not be re-used until the IO operation completes.
blkgetsize path fd: returns the size of the open block device given by fd. path is only used to construct a human-readable error message.
ftruncate fd size: changes the size of the file backed by fd to size. This function works on Unix and Windows.
val connect :
?buffered:bool ->
?sync:Config.sync_behaviour option ->
?lock:bool ->
string ->
t Lwt.tconnect ?buffered ?sync ?lock path connects to a block device on the filesystem at path. By default I/O is buffered and asynchronous. By default the file is unlocked. These defaults can be changed by supplying the optional arguments ~buffered:false and ~sync:false ~lock:true
resize t new_size_sectors attempts to resize the connected device to have the given number of sectors. If successful, subsequent calls to get_info will reflect the new size.
flush t flushes any buffers, if the file has been opened in buffered mode
seek_unmapped t start returns the sector offset of the next guaranteed zero-filled region (typically guaranteed because it is unmapped)
seek_mapped t start returns the sector offset of the next regoin of the device which may have data in it (typically this is the next mapped region)
discard sector n signals that the n sectors starting at sector are no longer needed and the contents may be discarded. Reads following the discard will return zeroes. Note the contents may not actually be irrecoverable: this is not a "secure erase".