6 #ifndef __OCF_VOLUME_H__ 7 #define __OCF_VOLUME_H__ 15 #include "ocf_env_headers.h" 16 #include "ocf/ocf_err.h" 23 #define OCF_VOLUME_UUID_MAX_SIZE (4096UL - sizeof(uint32_t)) 53 void (*submit_io)(
struct ocf_io *io);
60 void (*submit_flush)(
struct ocf_io *io);
67 void (*submit_metadata)(
struct ocf_io *io);
74 void (*submit_discard)(
struct ocf_io *io);
82 void (*submit_write_zeroes)(
struct ocf_io *io);
145 void (*deinit)(void);
164 static inline const char *ocf_uuid_to_str(
const struct ocf_volume_uuid *uuid)
166 return (
const char *)uuid->
data;
struct ocf_cache * ocf_cache_t
handle to object designating ocf cache device
Definition: ocf_types.h:44
int ocf_uuid_set_str(ocf_uuid_t uuid, char *str)
Initialize UUID from string.
ocf_cache_t ocf_volume_get_cache(ocf_volume_t volume)
Get cache handle for given volume.
const char * name
Definition: ocf_volume.h:127
unsigned int ocf_volume_get_max_io_size(ocf_volume_t volume)
Get volume max io size.
uint32_t io_priv_size
Definition: ocf_volume.h:130
OCF IO main structure.
Definition: ocf_io.h:50
struct ocf_volume_type * ocf_volume_type_t
handle to volume type
Definition: ocf_types.h:63
const struct ocf_volume_uuid * ocf_volume_get_uuid(ocf_volume_t volume)
Get volume UUID.
void ocf_volume_destroy(ocf_volume_t volume)
Deinitialize and free volume.
size_t size
Definition: ocf_volume.h:29
uint64_t flags
OCF IO flags.
Definition: ocf_io.h:59
void ocf_volume_submit_io(struct ocf_io *io)
Submit io to volume.
This structure describes volume capabilities.
Definition: ocf_volume.h:39
int ocf_volume_is_atomic(ocf_volume_t volume)
Check if volume supports atomic mode.
OCF volume interface declaration.
Definition: ocf_volume.h:47
int ocf_volume_create(ocf_volume_t *volume, ocf_volume_type_t type, struct ocf_volume_uuid *uuid)
Allocate and initialize volume.
OCF volume UUID.
Definition: ocf_volume.h:28
uint32_t atomic_writes
Definition: ocf_volume.h:40
OCF IO operations set structure.
Definition: ocf_io.h:110
void ocf_volume_close(ocf_volume_t volume)
Get volume max io size.
uint32_t dir
OCF IO direction.
Definition: ocf_io.h:74
ocf_volume_type_t ocf_volume_get_type(ocf_volume_t volume)
Get volume type.
uint32_t io_class
OCF IO destination class.
Definition: ocf_io.h:69
void * data
Definition: ocf_volume.h:32
struct ocf_volume * ocf_volume_t
handle to object designating ocf volume
Definition: ocf_types.h:56
struct ocf_io * ocf_volume_new_io(ocf_volume_t volume, ocf_queue_t queue, uint64_t addr, uint32_t bytes, uint32_t dir, uint32_t io_class, uint64_t flags)
Allocate new io.
struct ocf_queue * ocf_queue_t
handle to I/O queue
Definition: ocf_types.h:78
int ocf_volume_init(ocf_volume_t volume, ocf_volume_type_t type, struct ocf_volume_uuid *uuid, bool uuid_copy)
Initialize volume.
uint64_t ocf_volume_get_length(ocf_volume_t volume)
Get volume length.
uint64_t addr
OCF IO destination address.
Definition: ocf_io.h:54
uint32_t volume_priv_size
Definition: ocf_volume.h:133
uint32_t bytes
OCF IO size in bytes.
Definition: ocf_io.h:64
void ocf_volume_submit_flush(struct ocf_io *io)
Submit flush to volume.
void ocf_volume_submit_discard(struct ocf_io *io)
Submit discard to volume.
void ocf_volume_deinit(ocf_volume_t volume)
Deinitialize volume.
int ocf_volume_open(ocf_volume_t volume, void *volume_params)
Open volume.
void * ocf_volume_get_priv(ocf_volume_t volume)
Get private context of volume.
This structure describes volume properties.
Definition: ocf_volume.h:126