@@ -221,6 +221,8 @@ impl Device for Zoned {
221221 }
222222
223223 fn evict ( & self , locations : EvictTarget , cache : Arc < Cache > ) -> io:: Result < ( ) > {
224+ println ! ( "Current device usage is at: {}" , self . get_use_percentage( ) ) ;
225+
224226 match locations {
225227 EvictTarget :: Chunk ( mut chunk_locations) => {
226228 // Check all zones are the same, this isn't a
@@ -304,6 +306,14 @@ impl Device for Zoned {
304306 fn get_block_size ( & self ) -> usize {
305307 self . nvme_config . logical_block_size as usize
306308 }
309+
310+ fn get_use_percentage ( & self ) -> f32 {
311+ let ( zones, _) = & * self . zones ;
312+ let zones = zones. lock ( ) . unwrap ( ) ;
313+ let total_chunks = ( self . config . chunks_per_zone * self . config . num_zones ) as f32 ;
314+ let available_chunks = zones. get_num_available_chunks ( ) as f32 ;
315+ ( total_chunks - available_chunks) / total_chunks
316+ }
307317}
308318
309319impl BlockInterface {
@@ -445,4 +455,11 @@ impl Device for BlockInterface {
445455 fn get_block_size ( & self ) -> usize {
446456 self . nvme_config . logical_block_size as usize
447457 }
458+
459+ fn get_use_percentage ( & self ) -> f32 {
460+ let state = & * self . state . lock ( ) . unwrap ( ) ;
461+ let total_chunks = ( self . chunks_per_zone * self . num_zones ) as f32 ;
462+ let available_chunks = state. active_zones . get_num_available_chunks ( ) as f32 ;
463+ ( total_chunks - available_chunks) / total_chunks
464+ }
448465}
0 commit comments