@@ -37,7 +37,7 @@ void test_pinning(void)
37
37
struct stat statbuf = {};
38
38
struct bpf_object * obj ;
39
39
struct bpf_map * map ;
40
- int err ;
40
+ int err , map_fd ;
41
41
DECLARE_LIBBPF_OPTS (bpf_object_open_opts , opts ,
42
42
.pin_root_path = custpath ,
43
43
);
@@ -213,6 +213,50 @@ void test_pinning(void)
213
213
if (CHECK (err , "stat custpinpath" , "err %d errno %d\n" , err , errno ))
214
214
goto out ;
215
215
216
+ /* remove the custom pin path to re-test it with reuse fd below */
217
+ err = unlink (custpinpath );
218
+ if (CHECK (err , "unlink custpinpath" , "err %d errno %d\n" , err , errno ))
219
+ goto out ;
220
+
221
+ err = rmdir (custpath );
222
+ if (CHECK (err , "rmdir custpindir" , "err %d errno %d\n" , err , errno ))
223
+ goto out ;
224
+
225
+ bpf_object__close (obj );
226
+
227
+ /* test pinning at custom path with reuse fd */
228
+ obj = bpf_object__open_file (file , NULL );
229
+ if (CHECK_FAIL (libbpf_get_error (obj ))) {
230
+ obj = NULL ;
231
+ goto out ;
232
+ }
233
+
234
+ map_fd = bpf_create_map (BPF_MAP_TYPE_ARRAY , sizeof (__u32 ),
235
+ sizeof (__u64 ), 1 , 0 );
236
+ if (CHECK (map_fd < 0 , "create pinmap manually" , "fd %d\n" , map_fd ))
237
+ goto out ;
238
+
239
+ map = bpf_object__find_map_by_name (obj , "pinmap" );
240
+ if (CHECK (!map , "find map" , "NULL map" ))
241
+ goto out ;
242
+
243
+ err = bpf_map__reuse_fd (map , map_fd );
244
+ if (CHECK (err , "reuse pinmap fd" , "err %d errno %d\n" , err , errno ))
245
+ goto out ;
246
+
247
+ err = bpf_map__set_pin_path (map , custpinpath );
248
+ if (CHECK (err , "set pin path" , "err %d errno %d\n" , err , errno ))
249
+ goto out ;
250
+
251
+ err = bpf_object__load (obj );
252
+ if (CHECK (err , "custom load" , "err %d errno %d\n" , err , errno ))
253
+ goto out ;
254
+
255
+ /* check that pinmap was pinned at the custom path */
256
+ err = stat (custpinpath , & statbuf );
257
+ if (CHECK (err , "stat custpinpath" , "err %d errno %d\n" , err , errno ))
258
+ goto out ;
259
+
216
260
out :
217
261
unlink (pinpath );
218
262
unlink (nopinpath );
0 commit comments