From 8a3b65759e936e3d2125af719dcc3f003bc97bf6 Mon Sep 17 00:00:00 2001 From: Omer Majeed Date: Thu, 18 Jul 2024 18:45:30 +0500 Subject: [PATCH] memory leak fix, mvpn set barrier bug fix --- src/ssd/Address_Mapping_Unit_Page_Level.cpp | 2 +- src/ssd/Data_Cache_Manager_Flash_Advanced.cpp | 4 +++- src/ssd/Data_Cache_Manager_Flash_Simple.cpp | 4 +++- src/ssd/Host_Interface_NVMe.cpp | 1 - 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ssd/Address_Mapping_Unit_Page_Level.cpp b/src/ssd/Address_Mapping_Unit_Page_Level.cpp index 37995d59..1db2d452 100644 --- a/src/ssd/Address_Mapping_Unit_Page_Level.cpp +++ b/src/ssd/Address_Mapping_Unit_Page_Level.cpp @@ -1777,8 +1777,8 @@ namespace SSD_Components MVPN_type mpvn = (MVPN_type)flash_controller->Get_metadata(addr.ChannelID, addr.ChipID, addr.DieID, addr.PlaneID, addr.BlockID, addr.PageID); if (domains[block->Stream_id]->GlobalTranslationDirectory[mpvn].MPPN != Convert_address_to_ppa(addr)) { PRINT_ERROR("Inconsistency in the global translation directory when locking an MPVN!") - Set_barrier_for_accessing_mvpn(block->Stream_id, mpvn); } + Set_barrier_for_accessing_mvpn(block->Stream_id, mpvn); } else { LPA_type lpa = flash_controller->Get_metadata(addr.ChannelID, addr.ChipID, addr.DieID, addr.PlaneID, addr.BlockID, addr.PageID); LPA_type ppa = domains[block->Stream_id]->GlobalMappingTable[lpa].PPA; diff --git a/src/ssd/Data_Cache_Manager_Flash_Advanced.cpp b/src/ssd/Data_Cache_Manager_Flash_Advanced.cpp index 60b9bb07..b6f74daa 100644 --- a/src/ssd/Data_Cache_Manager_Flash_Advanced.cpp +++ b/src/ssd/Data_Cache_Manager_Flash_Advanced.cpp @@ -328,7 +328,9 @@ namespace SSD_Components read_transfer_info->next_event_type = Data_Cache_Simulation_Event_Type::MEMORY_READ_FOR_CACHE_EVICTION_FINISHED; read_transfer_info->Stream_id = user_request->Stream_id; service_dram_access_request(read_transfer_info); - } + } else { + delete evicted_cache_slots; + } //Issue memory write to write data to DRAM if (dram_write_size_in_sectors) { diff --git a/src/ssd/Data_Cache_Manager_Flash_Simple.cpp b/src/ssd/Data_Cache_Manager_Flash_Simple.cpp index af158d7f..4e2c72a6 100644 --- a/src/ssd/Data_Cache_Manager_Flash_Simple.cpp +++ b/src/ssd/Data_Cache_Manager_Flash_Simple.cpp @@ -181,7 +181,9 @@ namespace SSD_Components read_transfer_info->next_event_type = Data_Cache_Simulation_Event_Type::MEMORY_READ_FOR_CACHE_EVICTION_FINISHED; read_transfer_info->Stream_id = user_request->Stream_id; service_dram_access_request(read_transfer_info); - } + } else { + delete evicted_cache_slots; + } //Issue memory write to write data to DRAM if (dram_write_size_in_sectors) { diff --git a/src/ssd/Host_Interface_NVMe.cpp b/src/ssd/Host_Interface_NVMe.cpp index f5c89a5a..0406e6b8 100644 --- a/src/ssd/Host_Interface_NVMe.cpp +++ b/src/ssd/Host_Interface_NVMe.cpp @@ -170,7 +170,6 @@ inline void Input_Stream_Manager_NVMe::inform_host_request_completed(stream_id_t void Input_Stream_Manager_NVMe::segment_user_request(User_Request *user_request) { LHA_type lsa = user_request->Start_LBA; - LHA_type lsa2 = user_request->Start_LBA; unsigned int req_size = user_request->SizeInSectors; page_status_type access_status_bitmap = 0;