fix(so): reuse pinned dkapture bpf objects correctly - #97
yuKing123-king wants to merge 1 commit into
Conversation
Signed-off-by: Wang Yu <wangyu6@uniontech.com>
| struct bpf_map_info info = {}; | ||
| u32 len = sizeof(info); | ||
| std::string map_pin_path(PIN_PATH "/map-"); | ||
| std::string map_pin_path(PIN_PATH "/"); |
There was a problem hiding this comment.
因为在bpf-manager.cpp:207中bpf_object__pin_maps(m_obj->obj, PIN_PATH);这个函数会调用 libbpf,把当前 BPF object 里的所有 maps pin 到 PIN_PATH 下。但是libbpf 默认会用 map 自己的名字作为最后一级文件名,而没有map-这个前缀。以map-dk_shared_mem 这个map为例, 会导致
- 存在性判断永远看错地方,代码以为 /sys/fs/bpf/dkapture/map-dk_shared_mem 不存在,于是误判“需要新建”。
- 实际创建时又去创建真正的 dk_shared_mem, 但这个真实 pin 已经存在,于是 libbpf 报: failed to pin map: File exists
- 并且当前仓库里没有把 map pin 成 map-xxx 的定义
|
你好,这是对 libdkapture#97 fix(so): reuse pinned dkapture bpf objects correctly 的评审。 本轮为 DKapture 两仓(libdkapture / dkapture-bpf)全部以 fix 开头 open PR 的批量评审,共 17 个;汇总表如下,本 PR 加粗。逐项详评见分隔线下方。
本 PR 评审详情作者: yuKing123-king | 规模: +1/-1 | 文件: 1(so/bpf-manager.cpp) 总体结论: 该 PR 将 bpf_find_map 的存在性检查从 主要问题:
次要建议:
亮点:
已有讨论: 2 条行级评论。MEMBER 在 r3619802561 问'为什么改这';作者在 r3620572517 回复解释:bpf-manager.cpp:207 的 bpf_object__pin_maps 会把所有 map pin 到 PIN_PATH 下且以 map 原名命名(无 map- 前缀),导致 1) 存在性判断永远失败误判需新建;2) 重建时真实 pin 已存在,libbpf 报 failed to pin map: File exists;3) 仓库中无任何把 map pin 成 map-xxx 的代码。本评审核实该解释成立。无其他未决讨论,无 issue 评论。 证据核对:pin 创建点 so/bpf-manager.cpp:207(bpf_object__pin_maps);mock 命名 test/mock.cpp:358;mock stub test/mock.cpp:273-276;受影响断言 test/bpf-test.cpp:122-127、test/dkapture-test.cpp:118/124/130;全仓 grep 确认无生产代码创建 map- 前缀 pin、access() 未被 mock。静态评审,未运行构建/测试(BPF 无法本地编译),未访问网络。 |
No description provided.