Open CAS Framework
Open source framework of Cache Acceleration Software
ocf_metadata.h
Go to the documentation of this file.
1 /*
2  * Copyright(c) 2012-2020 Intel Corporation
3  * SPDX-License-Identifier: BSD-3-Clause-Clear
4  */
5 
6 #ifndef __OCF_METADATA_H__
7 #define __OCF_METADATA_H__
8 
23  uint64_t core_line : 46;
24 
26  uint32_t core_seq_no : 16;
27 
29  uint32_t valid : 1;
30 
32  uint32_t dirty : 1;
33 } __attribute__((packed));
34 
35 #define OCF_ATOMIC_METADATA_SIZE sizeof(struct ocf_atomic_metadata)
36 
51 int ocf_metadata_get_atomic_entry(ocf_cache_t cache, uint64_t addr,
52  struct ocf_atomic_metadata *entry);
53 
60 
63 
65  char cache_name[OCF_CACHE_NAME_SIZE];
66 };
67 
75 typedef void (*ocf_metadata_probe_end_t)(void *priv, int error,
76  struct ocf_metadata_probe_status *status);
77 
87  ocf_metadata_probe_end_t cmpl, void *priv);
88 
96 typedef void (*ocf_metadata_probe_cores_end_t)(void *priv, int error,
97  unsigned int num_cores);
98 
110  struct ocf_volume_uuid *uuids, uint32_t uuid_count,
111  ocf_metadata_probe_cores_end_t cmpl, void *priv);
112 
125 int ocf_metadata_check_invalid_before(ocf_cache_t cache, uint64_t addr);
126 
140 int ocf_metadata_check_invalid_after(ocf_cache_t cache, uint64_t addr,
141  uint32_t bytes);
142 
143 #endif /* __OCF_METADATA_H__ */
struct ocf_cache * ocf_cache_t
handle to object designating ocf cache device
Definition: ocf_types.h:44
int ocf_metadata_check_invalid_before(ocf_cache_t cache, uint64_t addr)
Check if sectors in cache line before given address are invalid.
#define OCF_CACHE_NAME_SIZE
Definition: ocf_def.h:38
uint32_t valid
Definition: ocf_metadata.h:29
struct ocf_ctx * ocf_ctx_t
handle to object designating ocf context
Definition: ocf_types.h:38
int ocf_metadata_get_atomic_entry(ocf_cache_t cache, uint64_t addr, struct ocf_atomic_metadata *entry)
Get metadata entry (cache mapping) for specified sector of cache device.
uint64_t core_line
Definition: ocf_metadata.h:23
void ocf_metadata_probe_cores(ocf_ctx_t ctx, ocf_volume_t volume, struct ocf_volume_uuid *uuids, uint32_t uuid_count, ocf_metadata_probe_cores_end_t cmpl, void *priv)
Probe cache device for associated cores.
void ocf_metadata_probe(ocf_ctx_t ctx, ocf_volume_t volume, ocf_metadata_probe_end_t cmpl, void *priv)
Probe cache device.
void(* ocf_metadata_probe_end_t)(void *priv, int error, struct ocf_metadata_probe_status *status)
Metadata probe completion callback.
Definition: ocf_metadata.h:75
int ocf_metadata_check_invalid_after(ocf_cache_t cache, uint64_t addr, uint32_t bytes)
Check if sectors in cache line after given end address are invalid.
OCF volume UUID.
Definition: ocf_volume.h:28
void(* ocf_metadata_probe_cores_end_t)(void *priv, int error, unsigned int num_cores)
Metadata probe for cores completion callback.
Definition: ocf_metadata.h:96
bool cache_dirty
Definition: ocf_metadata.h:62
bool clean_shutdown
Definition: ocf_metadata.h:59
struct ocf_volume * ocf_volume_t
handle to object designating ocf volume
Definition: ocf_types.h:56
Atomic metadata for extended sector.
Definition: ocf_metadata.h:21
uint32_t dirty
Definition: ocf_metadata.h:32
uint32_t core_seq_no
Definition: ocf_metadata.h:26
Metadata probe status.
Definition: ocf_metadata.h:57