Introduce ocf_forward_write_zeros()

This is meant to be used in atomic mode to avoid allocating huge buffers
for zeroing data on drive.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
This commit is contained in:
Robert Baldyga
2023-10-13 12:51:33 +02:00
committed by Michal Mielewczyk
parent c7580a75d7
commit cd544e8ee5
7 changed files with 68 additions and 0 deletions

View File

@@ -467,6 +467,18 @@ void ocf_req_forward_cache_discard(struct ocf_request *req, uint64_t addr,
ocf_volume_forward_discard(volume, token, addr, bytes);
}
void ocf_req_forward_cache_write_zeros(struct ocf_request *req, uint64_t addr,
uint64_t bytes)
{
ocf_volume_t volume = ocf_cache_get_volume(req->cache);
ocf_forward_token_t token = ocf_req_to_cache_forward_token(req);
req->cache_error = 0;
ocf_req_forward_cache_get(req);
ocf_volume_forward_write_zeros(volume, token, addr, bytes);
}
void ocf_req_forward_core_io(struct ocf_request *req, int dir, uint64_t addr,
uint64_t bytes, uint64_t offset)
{
@@ -544,6 +556,13 @@ void ocf_forward_discard(ocf_volume_t volume, ocf_forward_token_t token,
ocf_volume_forward_discard(volume, token, addr, bytes);
}
void ocf_forward_write_zeros(ocf_volume_t volume, ocf_forward_token_t token,
uint64_t addr, uint64_t bytes)
{
_ocf_forward_get(token);
ocf_volume_forward_write_zeros(volume, token, addr, bytes);
}
void ocf_forward_end(ocf_forward_token_t token, int error)
{
struct ocf_request *req = ocf_req_forward_token_to_req(token);