@@ -1576,12 +1576,14 @@ fn test_object_map_handle_clone() {
15761576 assert_eq ! ( map. map_type( ) , handle1. map_type( ) ) ;
15771577 assert_eq ! ( map. key_size( ) , handle1. key_size( ) ) ;
15781578 assert_eq ! ( map. value_size( ) , handle1. value_size( ) ) ;
1579+ assert_eq ! ( map. max_entries( ) , handle1. max_entries( ) ) ;
15791580
15801581 let handle2 = MapHandle :: try_from ( & handle1) . expect ( "failed to duplicate existing handle" ) ;
15811582 assert_eq ! ( handle1. name( ) , handle2. name( ) ) ;
15821583 assert_eq ! ( handle1. map_type( ) , handle2. map_type( ) ) ;
15831584 assert_eq ! ( handle1. key_size( ) , handle2. key_size( ) ) ;
15841585 assert_eq ! ( handle1. value_size( ) , handle2. value_size( ) ) ;
1586+ assert_eq ! ( handle1. max_entries( ) , handle2. max_entries( ) ) ;
15851587
15861588 let info1 = map. info ( ) . expect ( "failed to get map info from map" ) ;
15871589 let info2 = handle2. info ( ) . expect ( "failed to get map info from handle" ) ;
@@ -1999,10 +2001,10 @@ fn test_map_autocreate_disable() {
19992001 open_obj. load ( ) . expect ( "failed to load object" ) ;
20002002}
20012003
2002- /// Check that we can resize a map.
2004+ /// Check that we can resize a map value .
20032005#[ tag( root) ]
20042006#[ test]
2005- fn test_map_resize ( ) {
2007+ fn test_map_resize_value ( ) {
20062008 bump_rlimit_mlock ( ) ;
20072009
20082010 let mut open_obj = open_test_object ( "map_auto_pin.bpf.o" ) ;
@@ -2021,6 +2023,41 @@ fn test_map_resize() {
20212023 assert_eq ! ( new_len, len * 2 ) ;
20222024}
20232025
2026+ /// Check that we can resize map max entries.
2027+ #[ tag( root) ]
2028+ #[ test]
2029+ fn test_object_map_max_entries ( ) {
2030+ bump_rlimit_mlock ( ) ;
2031+
2032+ let mut obj = open_test_object ( "runqslower.bpf.o" ) ;
2033+
2034+ // resize the map to have twice the number of entries
2035+ let mut start = obj
2036+ . maps_mut ( )
2037+ . find ( |map| map. name ( ) == OsStr :: new ( "start" ) )
2038+ . expect ( "failed to find `start` map" ) ;
2039+ let initial_max_entries = start. max_entries ( ) ;
2040+ let new_max_entries = initial_max_entries * 2 ;
2041+ start
2042+ . set_max_entries ( new_max_entries)
2043+ . expect ( "failed to set max entries" ) ;
2044+ // check that it reflects on the open map
2045+ assert_eq ! ( start. max_entries( ) , new_max_entries) ;
2046+
2047+ // check that it reflects after loading the map
2048+ let obj = obj. load ( ) . expect ( "failed to load object" ) ;
2049+ let start = obj
2050+ . maps ( )
2051+ . find ( |map| map. name ( ) == OsStr :: new ( "start" ) )
2052+ . expect ( "failed to find `start` map" ) ;
2053+ assert_eq ! ( start. max_entries( ) , new_max_entries) ;
2054+
2055+ // check that it reflects after recreating the map handle from map id
2056+ let start = MapHandle :: from_map_id ( start. info ( ) . expect ( "failed to get map info" ) . info . id )
2057+ . expect ( "failed to get map handle from id" ) ;
2058+ assert ! ( start. max_entries( ) == new_max_entries) ;
2059+ }
2060+
20242061/// Check that we are able to attach using ksyscall
20252062#[ tag( root) ]
20262063#[ test]
0 commit comments