登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情~
代码拉取完成,页面将自动刷新
开源项目
>
开发工具
>
编译/构建/部署
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
16
Star
72
Fork
42
anolis
/
coolbpf
代码
Issues
12
Pull Requests
2
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
ebpf程序运行报错object:-22
已拒绝
#I71KR3
缺陷
潘希刚
创建于
2023-05-09 14:51
### 问题描述 + 内核版本:3.10.0-1062.12.1.el7.x86_64 + OS 版本:CentOS Linux release 8.4.2105 + 平台架构:x86_64 + 相关日志: bpf.c文件: #include <vmlinux.h> #include <bpf/bpf_helpers.h> #include <bpf/bpf_core_read.h> #include "bits.bpf.h" #include "maps.bpf.h" // Max number of disks we expect to see on the host #define MAX_DISKS 255 // 27 buckets for latency, max range is 33.6s .. 67.1s #define MAX_LATENCY_SLOT 27 #define MKDEV(ma, mi) ((mi & 0xff) | (ma << 8) | ((mi & ~0xff) << 12)) #define REQ_OP_BITS 8 #define REQ_OP_MASK ((1 << REQ_OP_BITS) - 1) struct disk_latency_key_t { u32 dev; u8 op; u64 slot; }; extern int LINUX_KERNEL_VERSION __kconfig; struct { __uint(type, BPF_MAP_TYPE_HASH); __uint(max_entries, 10000); __type(key, struct request *); __type(value, u64); } start SEC(".maps"); struct { __uint(type, BPF_MAP_TYPE_HASH); __uint(max_entries, (MAX_LATENCY_SLOT + 1) * MAX_DISKS); __type(key, struct disk_latency_key_t); __type(value, u64); } bio_latency_seconds SEC(".maps"); /** * commit d152c682f03c ("block: add an explicit ->disk backpointer to the * request_queue") and commit f3fa33acca9f ("block: remove the ->rq_disk * field in struct request") make some changes to `struct request` and * `struct request_queue`. Now, to get the `struct gendisk *` field in a CO-RE * way, we need both `struct request` and `struct request_queue`. * see: * https://github.com/torvalds/linux/commit/d152c682f03c * https://github.com/torvalds/linux/commit/f3fa33acca9f */ struct request_queue___x { struct gendisk *disk; } __attribute__((preserve_access_index)); struct request___x { struct request_queue___x *q; struct gendisk *rq_disk; } __attribute__((preserve_access_index)); static __always_inline struct gendisk *get_disk(void *request) { struct request___x *r = request; if (bpf_core_field_exists(r->rq_disk)) return BPF_CORE_READ(r, rq_disk); return BPF_CORE_READ(r, q, disk); } static __always_inline int trace_rq_start(struct request *rq) { u64 ts = bpf_ktime_get_ns(); bpf_map_update_elem(&start, &rq, &ts, 0); return 0; } SEC("raw_tp/block_rq_insert") int block_rq_insert(struct bpf_raw_tracepoint_args *ctx) { /** * commit a54895fa (v5.11-rc1) changed tracepoint argument list * from TP_PROTO(struct request_queue *q, struct request *rq) * to TP_PROTO(struct request *rq) */ if (LINUX_KERNEL_VERSION < KERNEL_VERSION(5, 11, 0)) { return trace_rq_start((void *) ctx->args[1]); } else { return trace_rq_start((void *) ctx->args[0]); } } SEC("raw_tp/block_rq_issue") int block_rq_issue(struct bpf_raw_tracepoint_args *ctx) { /** * commit a54895fa (v5.11-rc1) changed tracepoint argument list * from TP_PROTO(struct request_queue *q, struct request *rq) * to TP_PROTO(struct request *rq) */ if (LINUX_KERNEL_VERSION < KERNEL_VERSION(5, 11, 0)) { return trace_rq_start((void *) ctx->args[1]); } else { return trace_rq_start((void *) ctx->args[0]); } } SEC("raw_tp/block_rq_complete") int block_rq_complete(struct bpf_raw_tracepoint_args *ctx) { u64 *tsp, flags, delta_us, latency_slot; struct gendisk *disk; struct request *rq = (struct request *) ctx->args[0]; struct disk_latency_key_t latency_key = {}; tsp = bpf_map_lookup_elem(&start, &rq); if (!tsp) { return 0; } // Delta in microseconds delta_us = (bpf_ktime_get_ns() - *tsp) / 1000; // Latency histogram key latency_slot = log2l(delta_us); // Cap latency bucket at max value if (latency_slot > MAX_LATENCY_SLOT) { latency_slot = MAX_LATENCY_SLOT; } disk = get_disk(rq); flags = BPF_CORE_READ(rq, cmd_flags); latency_key.slot = latency_slot; latency_key.dev = disk ? MKDEV(BPF_CORE_READ(disk, major), BPF_CORE_READ(disk, first_minor)) : 0; latency_key.op = flags & REQ_OP_MASK; increment_map(&bio_latency_seconds, &latency_key, 1); latency_key.slot = MAX_LATENCY_SLOT + 1; increment_map(&bio_latency_seconds, &latency_key, delta_us); bpf_map_delete_elem(&start, &rq); return 0; } char LICENSE[] SEC("license") = "GPL"; 运行ebpf程序后报错日志: ./lcc/clcc/example/example --btf=/root/vmlinux --debug libbpf: loading object 'example_bpf' from buffer libbpf: elf: section(2) raw_tp/block_rq_insert, size 176, link 0, flags 6, type=1 libbpf: sec 'raw_tp/block_rq_insert': found program 'block_rq_insert' at insn offset 0 (0 bytes), code size 22 insns (176 bytes) libbpf: elf: section(3) raw_tp/block_rq_issue, size 176, link 0, flags 6, type=1 libbpf: sec 'raw_tp/block_rq_issue': found program 'block_rq_issue' at insn offset 0 (0 bytes), code size 22 insns (176 bytes) libbpf: elf: section(4) raw_tp/block_rq_complete, size 1616, link 0, flags 6, type=1 libbpf: sec 'raw_tp/block_rq_complete': found program 'block_rq_complete' at insn offset 0 (0 bytes), code size 202 insns (1616 bytes) libbpf: elf: section(5) .maps, size 64, link 0, flags 3, type=1 libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1 libbpf: license of example_bpf is GPL libbpf: elf: section(7) .BTF, size 7598, link 0, flags 0, type=1 libbpf: elf: section(8) .BTF.ext, size 1996, link 0, flags 0, type=1 libbpf: elf: section(9) .symtab, size 816, link 16, flags 0, type=2 libbpf: elf: section(10) .relraw_tp/block_rq_insert, size 32, link 9, flags 0, type=9 libbpf: elf: section(11) .relraw_tp/block_rq_issue, size 32, link 9, flags 0, type=9 libbpf: elf: section(12) .relraw_tp/block_rq_complete, size 128, link 9, flags 0, type=9 libbpf: looking for externs among 34 symbols... libbpf: collected 1 externs total libbpf: extern (kcfg) #0: symbol 28, off 0, name LINUX_KERNEL_VERSION libbpf: map 'start': at sec_idx 5, offset 0. libbpf: map 'start': found type = 1. libbpf: map 'start': found key [8], sz = 8. libbpf: map 'start': found value [17], sz = 8. libbpf: map 'start': found max_entries = 10000. libbpf: map 'bio_latency_seconds': at sec_idx 5, offset 32. libbpf: map 'bio_latency_seconds': found type = 1. libbpf: map 'bio_latency_seconds': found key [73], sz = 16. libbpf: map 'bio_latency_seconds': found value [17], sz = 8. libbpf: map 'bio_latency_seconds': found max_entries = 7140. libbpf: map 'example.kconfig' (global data): at sec_idx 9, offset 0, flags 480. libbpf: map 2 is "example.kconfig" libbpf: sec '.relraw_tp/block_rq_insert': collecting relocation for section(2) 'raw_tp/block_rq_insert' libbpf: sec '.relraw_tp/block_rq_insert': relo #0: insn #0 against 'LINUX_KERNEL_VERSION' libbpf: prog 'block_rq_insert': found extern #0 'LINUX_KERNEL_VERSION' (sym 28) for insn #0 libbpf: sec '.relraw_tp/block_rq_insert': relo #1: insn #16 against 'start' libbpf: prog 'block_rq_insert': found map 0 (start, sec 5, off 0) for insn #16 libbpf: sec '.relraw_tp/block_rq_issue': collecting relocation for section(3) 'raw_tp/block_rq_issue' libbpf: sec '.relraw_tp/block_rq_issue': relo #0: insn #0 against 'LINUX_KERNEL_VERSION' libbpf: prog 'block_rq_issue': found extern #0 'LINUX_KERNEL_VERSION' (sym 28) for insn #0 libbpf: sec '.relraw_tp/block_rq_issue': relo #1: insn #16 against 'start' libbpf: prog 'block_rq_issue': found map 0 (start, sec 5, off 0) for insn #16 libbpf: sec '.relraw_tp/block_rq_complete': collecting relocation for section(4) 'raw_tp/block_rq_complete' libbpf: sec '.relraw_tp/block_rq_complete': relo #0: insn #7 against 'start' libbpf: prog 'block_rq_complete': found map 0 (start, sec 5, off 0) for insn #7 libbpf: sec '.relraw_tp/block_rq_complete': relo #1: insn #150 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #150 libbpf: sec '.relraw_tp/block_rq_complete': relo #2: insn #158 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #158 libbpf: sec '.relraw_tp/block_rq_complete': relo #3: insn #163 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #163 libbpf: sec '.relraw_tp/block_rq_complete': relo #4: insn #176 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #176 libbpf: sec '.relraw_tp/block_rq_complete': relo #5: insn #184 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #184 libbpf: sec '.relraw_tp/block_rq_complete': relo #6: insn #189 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #189 libbpf: sec '.relraw_tp/block_rq_complete': relo #7: insn #197 against 'start' libbpf: prog 'block_rq_complete': found map 0 (start, sec 5, off 0) for insn #197 libbpf: extern (kcfg) LINUX_KERNEL_VERSION=0x30a00 libbpf: Kernel doesn't support BTF, skipping uploading it. libbpf: map 'start': created successfully, fd=3 libbpf: map 'bio_latency_seconds': created successfully, fd=4 libbpf: sec 'raw_tp/block_rq_insert': found 2 CO-RE relocations libbpf: CO-RE relocating [0] struct bpf_raw_tracepoint_args: found target candidate [27771] struct bpf_raw_tracepoint_args in [vmlinux] libbpf: prog 'block_rq_insert': relo #0: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_insert': relo #0: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_insert': relo #0: patched insn #6 (LDX/ST/STX) off 8 -> 8 libbpf: prog 'block_rq_insert': relo #1: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_insert': relo #1: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_insert': relo #1: patched insn #8 (LDX/ST/STX) off 0 -> 0 libbpf: sec 'raw_tp/block_rq_issue': found 2 CO-RE relocations libbpf: prog 'block_rq_issue': relo #0: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_issue': relo #0: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_issue': relo #0: patched insn #6 (LDX/ST/STX) off 8 -> 8 libbpf: prog 'block_rq_issue': relo #1: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_issue': relo #1: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_issue': relo #1: patched insn #8 (LDX/ST/STX) off 0 -> 0 libbpf: sec 'raw_tp/block_rq_complete': found 8 CO-RE relocations libbpf: prog 'block_rq_complete': relo #0: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #0: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #0: patched insn #0 (LDX/ST/STX) off 0 -> 0 libbpf: CO-RE relocating [0] struct request___x: found target candidate [26735] struct request in [vmlinux] libbpf: prog 'block_rq_complete': relo #1: kind <field_exists> (2), spec is [86] struct request___x.rq_disk (0:1 @ offset 8) libbpf: prog 'block_rq_complete': relo #1: matching candidate #0 [26735] struct request.rq_disk (0:13 @ offset 88) libbpf: prog 'block_rq_complete': relo #1: patched insn #81 (ALU/ALU64) imm 1 -> 1 libbpf: prog 'block_rq_complete': relo #2: kind <byte_off> (0), spec is [86] struct request___x.rq_disk (0:1 @ offset 8) libbpf: prog 'block_rq_complete': relo #2: matching candidate #0 [26735] struct request.rq_disk (0:13 @ offset 88) libbpf: prog 'block_rq_complete': relo #2: patched insn #83 (ALU/ALU64) imm 8 -> 88 libbpf: prog 'block_rq_complete': relo #3: kind <byte_off> (0), spec is [86] struct request___x.q (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #3: matching candidate #0 [26735] struct request.q (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #3: patched insn #85 (ALU/ALU64) imm 0 -> 0 libbpf: CO-RE relocating [0] struct request_queue___x: found target candidate [1523] struct request_queue in [vmlinux] libbpf: prog 'block_rq_complete': relo #4: kind <byte_off> (0), spec is [88] struct request_queue___x.disk (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #4: matching candidate #0 [1523] struct request_queue.disk (0:15 @ offset 120) libbpf: prog 'block_rq_complete': relo #4: patched insn #91 (ALU/ALU64) imm 0 -> 120 libbpf: CO-RE relocating [0] struct request: found target candidate [26735] struct request in [vmlinux] libbpf: prog 'block_rq_complete': relo #5: kind <byte_off> (0), spec is [9] struct request.cmd_flags (0:3 @ offset 24) libbpf: prog 'block_rq_complete': relo #5: matching candidate #0 [26735] struct request.cmd_flags (0:3 @ offset 24) libbpf: prog 'block_rq_complete': relo #5: patched insn #99 (ALU/ALU64) imm 24 -> 24 libbpf: CO-RE relocating [0] struct gendisk: found target candidate [2022] struct gendisk in [vmlinux] libbpf: prog 'block_rq_complete': relo #6: kind <byte_off> (0), spec is [89] struct gendisk.first_minor (0:1 @ offset 4) libbpf: prog 'block_rq_complete': relo #6: matching candidate #0 [2022] struct gendisk.first_minor (0:1 @ offset 4) libbpf: prog 'block_rq_complete': relo #6: patched insn #111 (ALU/ALU64) imm 4 -> 4 libbpf: prog 'block_rq_complete': relo #7: kind <byte_off> (0), spec is [89] struct gendisk.major (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #7: matching candidate #0 [2022] struct gendisk.major (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #7: patched insn #120 (ALU/ALU64) imm 0 -> 0 libbpf: load bpf program failed: Invalid argument libbpf: failed to load program 'block_rq_insert' libbpf: failed to load object 'example_bpf' libbpf: failed to load BPF skeleton 'example_bpf': -22 failed to load BPF object: -22 ### 复现方法 ### 实际效果 ### 期望效果
### 问题描述 + 内核版本:3.10.0-1062.12.1.el7.x86_64 + OS 版本:CentOS Linux release 8.4.2105 + 平台架构:x86_64 + 相关日志: bpf.c文件: #include <vmlinux.h> #include <bpf/bpf_helpers.h> #include <bpf/bpf_core_read.h> #include "bits.bpf.h" #include "maps.bpf.h" // Max number of disks we expect to see on the host #define MAX_DISKS 255 // 27 buckets for latency, max range is 33.6s .. 67.1s #define MAX_LATENCY_SLOT 27 #define MKDEV(ma, mi) ((mi & 0xff) | (ma << 8) | ((mi & ~0xff) << 12)) #define REQ_OP_BITS 8 #define REQ_OP_MASK ((1 << REQ_OP_BITS) - 1) struct disk_latency_key_t { u32 dev; u8 op; u64 slot; }; extern int LINUX_KERNEL_VERSION __kconfig; struct { __uint(type, BPF_MAP_TYPE_HASH); __uint(max_entries, 10000); __type(key, struct request *); __type(value, u64); } start SEC(".maps"); struct { __uint(type, BPF_MAP_TYPE_HASH); __uint(max_entries, (MAX_LATENCY_SLOT + 1) * MAX_DISKS); __type(key, struct disk_latency_key_t); __type(value, u64); } bio_latency_seconds SEC(".maps"); /** * commit d152c682f03c ("block: add an explicit ->disk backpointer to the * request_queue") and commit f3fa33acca9f ("block: remove the ->rq_disk * field in struct request") make some changes to `struct request` and * `struct request_queue`. Now, to get the `struct gendisk *` field in a CO-RE * way, we need both `struct request` and `struct request_queue`. * see: * https://github.com/torvalds/linux/commit/d152c682f03c * https://github.com/torvalds/linux/commit/f3fa33acca9f */ struct request_queue___x { struct gendisk *disk; } __attribute__((preserve_access_index)); struct request___x { struct request_queue___x *q; struct gendisk *rq_disk; } __attribute__((preserve_access_index)); static __always_inline struct gendisk *get_disk(void *request) { struct request___x *r = request; if (bpf_core_field_exists(r->rq_disk)) return BPF_CORE_READ(r, rq_disk); return BPF_CORE_READ(r, q, disk); } static __always_inline int trace_rq_start(struct request *rq) { u64 ts = bpf_ktime_get_ns(); bpf_map_update_elem(&start, &rq, &ts, 0); return 0; } SEC("raw_tp/block_rq_insert") int block_rq_insert(struct bpf_raw_tracepoint_args *ctx) { /** * commit a54895fa (v5.11-rc1) changed tracepoint argument list * from TP_PROTO(struct request_queue *q, struct request *rq) * to TP_PROTO(struct request *rq) */ if (LINUX_KERNEL_VERSION < KERNEL_VERSION(5, 11, 0)) { return trace_rq_start((void *) ctx->args[1]); } else { return trace_rq_start((void *) ctx->args[0]); } } SEC("raw_tp/block_rq_issue") int block_rq_issue(struct bpf_raw_tracepoint_args *ctx) { /** * commit a54895fa (v5.11-rc1) changed tracepoint argument list * from TP_PROTO(struct request_queue *q, struct request *rq) * to TP_PROTO(struct request *rq) */ if (LINUX_KERNEL_VERSION < KERNEL_VERSION(5, 11, 0)) { return trace_rq_start((void *) ctx->args[1]); } else { return trace_rq_start((void *) ctx->args[0]); } } SEC("raw_tp/block_rq_complete") int block_rq_complete(struct bpf_raw_tracepoint_args *ctx) { u64 *tsp, flags, delta_us, latency_slot; struct gendisk *disk; struct request *rq = (struct request *) ctx->args[0]; struct disk_latency_key_t latency_key = {}; tsp = bpf_map_lookup_elem(&start, &rq); if (!tsp) { return 0; } // Delta in microseconds delta_us = (bpf_ktime_get_ns() - *tsp) / 1000; // Latency histogram key latency_slot = log2l(delta_us); // Cap latency bucket at max value if (latency_slot > MAX_LATENCY_SLOT) { latency_slot = MAX_LATENCY_SLOT; } disk = get_disk(rq); flags = BPF_CORE_READ(rq, cmd_flags); latency_key.slot = latency_slot; latency_key.dev = disk ? MKDEV(BPF_CORE_READ(disk, major), BPF_CORE_READ(disk, first_minor)) : 0; latency_key.op = flags & REQ_OP_MASK; increment_map(&bio_latency_seconds, &latency_key, 1); latency_key.slot = MAX_LATENCY_SLOT + 1; increment_map(&bio_latency_seconds, &latency_key, delta_us); bpf_map_delete_elem(&start, &rq); return 0; } char LICENSE[] SEC("license") = "GPL"; 运行ebpf程序后报错日志: ./lcc/clcc/example/example --btf=/root/vmlinux --debug libbpf: loading object 'example_bpf' from buffer libbpf: elf: section(2) raw_tp/block_rq_insert, size 176, link 0, flags 6, type=1 libbpf: sec 'raw_tp/block_rq_insert': found program 'block_rq_insert' at insn offset 0 (0 bytes), code size 22 insns (176 bytes) libbpf: elf: section(3) raw_tp/block_rq_issue, size 176, link 0, flags 6, type=1 libbpf: sec 'raw_tp/block_rq_issue': found program 'block_rq_issue' at insn offset 0 (0 bytes), code size 22 insns (176 bytes) libbpf: elf: section(4) raw_tp/block_rq_complete, size 1616, link 0, flags 6, type=1 libbpf: sec 'raw_tp/block_rq_complete': found program 'block_rq_complete' at insn offset 0 (0 bytes), code size 202 insns (1616 bytes) libbpf: elf: section(5) .maps, size 64, link 0, flags 3, type=1 libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1 libbpf: license of example_bpf is GPL libbpf: elf: section(7) .BTF, size 7598, link 0, flags 0, type=1 libbpf: elf: section(8) .BTF.ext, size 1996, link 0, flags 0, type=1 libbpf: elf: section(9) .symtab, size 816, link 16, flags 0, type=2 libbpf: elf: section(10) .relraw_tp/block_rq_insert, size 32, link 9, flags 0, type=9 libbpf: elf: section(11) .relraw_tp/block_rq_issue, size 32, link 9, flags 0, type=9 libbpf: elf: section(12) .relraw_tp/block_rq_complete, size 128, link 9, flags 0, type=9 libbpf: looking for externs among 34 symbols... libbpf: collected 1 externs total libbpf: extern (kcfg) #0: symbol 28, off 0, name LINUX_KERNEL_VERSION libbpf: map 'start': at sec_idx 5, offset 0. libbpf: map 'start': found type = 1. libbpf: map 'start': found key [8], sz = 8. libbpf: map 'start': found value [17], sz = 8. libbpf: map 'start': found max_entries = 10000. libbpf: map 'bio_latency_seconds': at sec_idx 5, offset 32. libbpf: map 'bio_latency_seconds': found type = 1. libbpf: map 'bio_latency_seconds': found key [73], sz = 16. libbpf: map 'bio_latency_seconds': found value [17], sz = 8. libbpf: map 'bio_latency_seconds': found max_entries = 7140. libbpf: map 'example.kconfig' (global data): at sec_idx 9, offset 0, flags 480. libbpf: map 2 is "example.kconfig" libbpf: sec '.relraw_tp/block_rq_insert': collecting relocation for section(2) 'raw_tp/block_rq_insert' libbpf: sec '.relraw_tp/block_rq_insert': relo #0: insn #0 against 'LINUX_KERNEL_VERSION' libbpf: prog 'block_rq_insert': found extern #0 'LINUX_KERNEL_VERSION' (sym 28) for insn #0 libbpf: sec '.relraw_tp/block_rq_insert': relo #1: insn #16 against 'start' libbpf: prog 'block_rq_insert': found map 0 (start, sec 5, off 0) for insn #16 libbpf: sec '.relraw_tp/block_rq_issue': collecting relocation for section(3) 'raw_tp/block_rq_issue' libbpf: sec '.relraw_tp/block_rq_issue': relo #0: insn #0 against 'LINUX_KERNEL_VERSION' libbpf: prog 'block_rq_issue': found extern #0 'LINUX_KERNEL_VERSION' (sym 28) for insn #0 libbpf: sec '.relraw_tp/block_rq_issue': relo #1: insn #16 against 'start' libbpf: prog 'block_rq_issue': found map 0 (start, sec 5, off 0) for insn #16 libbpf: sec '.relraw_tp/block_rq_complete': collecting relocation for section(4) 'raw_tp/block_rq_complete' libbpf: sec '.relraw_tp/block_rq_complete': relo #0: insn #7 against 'start' libbpf: prog 'block_rq_complete': found map 0 (start, sec 5, off 0) for insn #7 libbpf: sec '.relraw_tp/block_rq_complete': relo #1: insn #150 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #150 libbpf: sec '.relraw_tp/block_rq_complete': relo #2: insn #158 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #158 libbpf: sec '.relraw_tp/block_rq_complete': relo #3: insn #163 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #163 libbpf: sec '.relraw_tp/block_rq_complete': relo #4: insn #176 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #176 libbpf: sec '.relraw_tp/block_rq_complete': relo #5: insn #184 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #184 libbpf: sec '.relraw_tp/block_rq_complete': relo #6: insn #189 against 'bio_latency_seconds' libbpf: prog 'block_rq_complete': found map 1 (bio_latency_seconds, sec 5, off 32) for insn #189 libbpf: sec '.relraw_tp/block_rq_complete': relo #7: insn #197 against 'start' libbpf: prog 'block_rq_complete': found map 0 (start, sec 5, off 0) for insn #197 libbpf: extern (kcfg) LINUX_KERNEL_VERSION=0x30a00 libbpf: Kernel doesn't support BTF, skipping uploading it. libbpf: map 'start': created successfully, fd=3 libbpf: map 'bio_latency_seconds': created successfully, fd=4 libbpf: sec 'raw_tp/block_rq_insert': found 2 CO-RE relocations libbpf: CO-RE relocating [0] struct bpf_raw_tracepoint_args: found target candidate [27771] struct bpf_raw_tracepoint_args in [vmlinux] libbpf: prog 'block_rq_insert': relo #0: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_insert': relo #0: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_insert': relo #0: patched insn #6 (LDX/ST/STX) off 8 -> 8 libbpf: prog 'block_rq_insert': relo #1: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_insert': relo #1: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_insert': relo #1: patched insn #8 (LDX/ST/STX) off 0 -> 0 libbpf: sec 'raw_tp/block_rq_issue': found 2 CO-RE relocations libbpf: prog 'block_rq_issue': relo #0: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_issue': relo #0: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[1] (0:0:1 @ offset 8) libbpf: prog 'block_rq_issue': relo #0: patched insn #6 (LDX/ST/STX) off 8 -> 8 libbpf: prog 'block_rq_issue': relo #1: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_issue': relo #1: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_issue': relo #1: patched insn #8 (LDX/ST/STX) off 0 -> 0 libbpf: sec 'raw_tp/block_rq_complete': found 8 CO-RE relocations libbpf: prog 'block_rq_complete': relo #0: kind <byte_off> (0), spec is [78] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #0: matching candidate #0 [27771] struct bpf_raw_tracepoint_args.args[0] (0:0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #0: patched insn #0 (LDX/ST/STX) off 0 -> 0 libbpf: CO-RE relocating [0] struct request___x: found target candidate [26735] struct request in [vmlinux] libbpf: prog 'block_rq_complete': relo #1: kind <field_exists> (2), spec is [86] struct request___x.rq_disk (0:1 @ offset 8) libbpf: prog 'block_rq_complete': relo #1: matching candidate #0 [26735] struct request.rq_disk (0:13 @ offset 88) libbpf: prog 'block_rq_complete': relo #1: patched insn #81 (ALU/ALU64) imm 1 -> 1 libbpf: prog 'block_rq_complete': relo #2: kind <byte_off> (0), spec is [86] struct request___x.rq_disk (0:1 @ offset 8) libbpf: prog 'block_rq_complete': relo #2: matching candidate #0 [26735] struct request.rq_disk (0:13 @ offset 88) libbpf: prog 'block_rq_complete': relo #2: patched insn #83 (ALU/ALU64) imm 8 -> 88 libbpf: prog 'block_rq_complete': relo #3: kind <byte_off> (0), spec is [86] struct request___x.q (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #3: matching candidate #0 [26735] struct request.q (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #3: patched insn #85 (ALU/ALU64) imm 0 -> 0 libbpf: CO-RE relocating [0] struct request_queue___x: found target candidate [1523] struct request_queue in [vmlinux] libbpf: prog 'block_rq_complete': relo #4: kind <byte_off> (0), spec is [88] struct request_queue___x.disk (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #4: matching candidate #0 [1523] struct request_queue.disk (0:15 @ offset 120) libbpf: prog 'block_rq_complete': relo #4: patched insn #91 (ALU/ALU64) imm 0 -> 120 libbpf: CO-RE relocating [0] struct request: found target candidate [26735] struct request in [vmlinux] libbpf: prog 'block_rq_complete': relo #5: kind <byte_off> (0), spec is [9] struct request.cmd_flags (0:3 @ offset 24) libbpf: prog 'block_rq_complete': relo #5: matching candidate #0 [26735] struct request.cmd_flags (0:3 @ offset 24) libbpf: prog 'block_rq_complete': relo #5: patched insn #99 (ALU/ALU64) imm 24 -> 24 libbpf: CO-RE relocating [0] struct gendisk: found target candidate [2022] struct gendisk in [vmlinux] libbpf: prog 'block_rq_complete': relo #6: kind <byte_off> (0), spec is [89] struct gendisk.first_minor (0:1 @ offset 4) libbpf: prog 'block_rq_complete': relo #6: matching candidate #0 [2022] struct gendisk.first_minor (0:1 @ offset 4) libbpf: prog 'block_rq_complete': relo #6: patched insn #111 (ALU/ALU64) imm 4 -> 4 libbpf: prog 'block_rq_complete': relo #7: kind <byte_off> (0), spec is [89] struct gendisk.major (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #7: matching candidate #0 [2022] struct gendisk.major (0:0 @ offset 0) libbpf: prog 'block_rq_complete': relo #7: patched insn #120 (ALU/ALU64) imm 0 -> 0 libbpf: load bpf program failed: Invalid argument libbpf: failed to load program 'block_rq_insert' libbpf: failed to load object 'example_bpf' libbpf: failed to load BPF skeleton 'example_bpf': -22 failed to load BPF object: -22 ### 复现方法 ### 实际效果 ### 期望效果
评论 (
9
)
登录
后才可以发表评论
状态
已拒绝
误报
上游未修复
待确认
已确认
修复中
已修复
已重复
已验收
已拒绝
负责人
未设置
标签
未设置
项目
未立项任务
未立项任务
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
预计工期
(小时)
参与者(2)
C
1
https://gitee.com/anolis/coolbpf.git
git@gitee.com:anolis/coolbpf.git
anolis
coolbpf
coolbpf
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册