Merge pull request #478 from Open-CAS/fix-freeing-discard-reqs

Fix freeing oversized discard requests
This commit is contained in:
Michał Mielewczyk 2021-03-26 11:33:40 +01:00 committed by GitHub
commit 2aa8922fea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 8 deletions

View File

@ -85,12 +85,16 @@ struct ocf_request *ocf_req_new(ocf_queue_t queue, ocf_core_t core,
req = env_mpool_new(cache->owner->resources.req, 1);
}
if (unlikely(!req))
return NULL;
if (map_allocated)
if (map_allocated) {
req->map = req->__map;
req->alloc_core_line_count = core_line_count;
} else {
req->alloc_core_line_count = 1;
}
OCF_DEBUG_TRACE(cache);
@ -204,13 +208,11 @@ void ocf_req_put(struct ocf_request *req)
if (!req->d2c && req->io_queue != req->cache->mngt_queue)
ocf_refcnt_dec(&req->cache->refcnt.metadata);
if (req->map == req->__map) {
env_mpool_del(req->cache->owner->resources.req, req,
req->core_line_count);
} else {
if (req->map != req->__map)
env_free(req->map);
env_mpool_del(req->cache->owner->resources.req, req, 1);
}
env_mpool_del(req->cache->owner->resources.req, req,
req->alloc_core_line_count);
ocf_queue_put(queue);
}

View File

@ -166,6 +166,9 @@ struct ocf_request {
uint32_t core_line_count;
/*! Core line count */
uint32_t alloc_core_line_count;
/*! Number of core lines at time of request allocation */
int error;
/*!< This filed indicates an error for OCF request */