in src/samplers/disk/bpf.c [40:65]
int trace_req_start(struct pt_regs *ctx, struct request *req)
{
u64 now = bpf_ktime_get_ns();
u64 rwflag = 0;
#ifdef REQ_WRITE
rwflag = !!(req->cmd_flags & REQ_WRITE);
#elif defined(REQ_OP_SHIFT)
rwflag = !!((req->cmd_flags >> REQ_OP_SHIFT) == REQ_OP_WRITE);
#else
rwflag = !!((req->cmd_flags & REQ_OP_MASK) == REQ_OP_WRITE);
#endif
u64 *enqueued;
enqueued = queue_start.lookup(&req);
if (enqueued != 0) {
unsigned int index = value_to_index2((now - *enqueued) / 1000);
if (rwflag == 1) {
queue_latency_write.increment(index);
} else {
queue_latency_read.increment(index);
}
}
request_start.update(&req, &now);
return 0;
}