Helper functions to get request start/end sector in cacheline
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
parent
7b7d65e092
commit
ae6164a49c
@ -95,15 +95,8 @@ void ocf_engine_update_req_info(struct ocf_cache *cache,
|
|||||||
uint8_t end_sector = ocf_line_end_sector(cache);
|
uint8_t end_sector = ocf_line_end_sector(cache);
|
||||||
struct ocf_map_info *_entry = &(req->map[entry]);
|
struct ocf_map_info *_entry = &(req->map[entry]);
|
||||||
|
|
||||||
if (entry == 0) {
|
start_sector = ocf_map_line_start_sector(req, entry);
|
||||||
start_sector = BYTES_TO_SECTORS(req->byte_position)
|
end_sector = ocf_map_line_end_sector(req, entry);
|
||||||
% ocf_line_sectors(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entry == req->core_line_count - 1) {
|
|
||||||
end_sector = BYTES_TO_SECTORS(req->byte_position +
|
|
||||||
req->byte_length - 1)% ocf_line_sectors(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle return value */
|
/* Handle return value */
|
||||||
switch (_entry->status) {
|
switch (_entry->status) {
|
||||||
|
@ -229,6 +229,29 @@ static inline void ocf_purge_map_info(struct ocf_request *req)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
uint8_t ocf_map_line_start_sector(struct ocf_request *req, uint32_t line)
|
||||||
|
{
|
||||||
|
if (line == 0) {
|
||||||
|
return BYTES_TO_SECTORS(req->byte_position)
|
||||||
|
% ocf_line_sectors(req->cache);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
uint8_t ocf_map_line_end_sector(struct ocf_request *req, uint32_t line)
|
||||||
|
{
|
||||||
|
if (line == req->core_line_count - 1) {
|
||||||
|
return BYTES_TO_SECTORS(req->byte_position +
|
||||||
|
req->byte_length - 1) %
|
||||||
|
ocf_line_sectors(req->cache);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ocf_line_end_sector(req->cache);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void ocf_set_valid_map_info(struct ocf_request *req)
|
static inline void ocf_set_valid_map_info(struct ocf_request *req)
|
||||||
{
|
{
|
||||||
uint32_t map_idx = 0;
|
uint32_t map_idx = 0;
|
||||||
@ -244,27 +267,11 @@ static inline void ocf_set_valid_map_info(struct ocf_request *req)
|
|||||||
* | -----+++ | ++++++++ | +++ | ++++++++ | +++++--- |
|
* | -----+++ | ++++++++ | +++ | ++++++++ | +++++--- |
|
||||||
* | first | Middle | last |
|
* | first | Middle | last |
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (map_idx = 0; map_idx < count; map_idx++) {
|
for (map_idx = 0; map_idx < count; map_idx++) {
|
||||||
ENV_BUG_ON(map[map_idx].status == LOOKUP_MISS);
|
ENV_BUG_ON(map[map_idx].status == LOOKUP_MISS);
|
||||||
|
|
||||||
start_bit = 0;
|
start_bit = ocf_map_line_start_sector(req, map_idx);
|
||||||
end_bit = ocf_line_end_sector(cache);
|
end_bit = ocf_map_line_end_sector(req, map_idx);
|
||||||
|
|
||||||
if (map_idx == 0) {
|
|
||||||
/* First */
|
|
||||||
|
|
||||||
start_bit = BYTES_TO_SECTORS(req->byte_position)
|
|
||||||
% ocf_line_sectors(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (map_idx == (count - 1)) {
|
|
||||||
/* Last */
|
|
||||||
|
|
||||||
end_bit = BYTES_TO_SECTORS(req->byte_position +
|
|
||||||
req->byte_length - 1)
|
|
||||||
% ocf_line_sectors(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
set_cache_line_valid(cache, start_bit, end_bit, req, map_idx);
|
set_cache_line_valid(cache, start_bit, end_bit, req, map_idx);
|
||||||
}
|
}
|
||||||
@ -286,24 +293,8 @@ static inline void ocf_set_dirty_map_info(struct ocf_request *req)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
for (map_idx = 0; map_idx < count; map_idx++) {
|
for (map_idx = 0; map_idx < count; map_idx++) {
|
||||||
start_bit = 0;
|
start_bit = ocf_map_line_start_sector(req, map_idx);
|
||||||
end_bit = ocf_line_end_sector(cache);
|
end_bit = ocf_map_line_end_sector(req, map_idx);
|
||||||
|
|
||||||
if (map_idx == 0) {
|
|
||||||
/* First */
|
|
||||||
|
|
||||||
start_bit = BYTES_TO_SECTORS(req->byte_position)
|
|
||||||
% ocf_line_sectors(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (map_idx == (count - 1)) {
|
|
||||||
/* Last */
|
|
||||||
|
|
||||||
end_bit = BYTES_TO_SECTORS(req->byte_position +
|
|
||||||
req->byte_length - 1) %
|
|
||||||
ocf_line_sectors(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
set_cache_line_dirty(cache, start_bit, end_bit, req, map_idx);
|
set_cache_line_dirty(cache, start_bit, end_bit, req, map_idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -324,25 +315,8 @@ static inline void ocf_set_clean_map_info(struct ocf_request *req)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
for (map_idx = 0; map_idx < count; map_idx++) {
|
for (map_idx = 0; map_idx < count; map_idx++) {
|
||||||
start_bit = 0;
|
start_bit = ocf_map_line_start_sector(req, map_idx);
|
||||||
end_bit = ocf_line_end_sector(cache);
|
end_bit = ocf_map_line_end_sector(req, map_idx);
|
||||||
|
|
||||||
if (map_idx == 0) {
|
|
||||||
/* First */
|
|
||||||
|
|
||||||
start_bit = BYTES_TO_SECTORS(req->byte_position)
|
|
||||||
% ocf_line_sectors(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (map_idx == (count - 1)) {
|
|
||||||
/* Last */
|
|
||||||
|
|
||||||
end_bit = BYTES_TO_SECTORS(req->byte_position +
|
|
||||||
req->byte_length - 1) %
|
|
||||||
ocf_line_sectors(cache);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
set_cache_line_clean(cache, start_bit, end_bit, req, map_idx);
|
set_cache_line_clean(cache, start_bit, end_bit, req, map_idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user