linux/drivers/block/null_blk/trace.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * null_blk device driver tracepoints.
   4 *
   5 * Copyright (C) 2020 Western Digital Corporation or its affiliates.
   6 */
   7
   8#undef TRACE_SYSTEM
   9#define TRACE_SYSTEM nullb
  10
  11#if !defined(_TRACE_NULLB_H) || defined(TRACE_HEADER_MULTI_READ)
  12#define _TRACE_NULLB_H
  13
  14#include <linux/tracepoint.h>
  15#include <linux/trace_seq.h>
  16
  17#include "null_blk.h"
  18
  19const char *nullb_trace_disk_name(struct trace_seq *p, char *name);
  20
  21#define __print_disk_name(name) nullb_trace_disk_name(p, name)
  22
  23#ifndef TRACE_HEADER_MULTI_READ
  24static inline void __assign_disk_name(char *name, struct gendisk *disk)
  25{
  26        if (disk)
  27                memcpy(name, disk->disk_name, DISK_NAME_LEN);
  28        else
  29                memset(name, 0, DISK_NAME_LEN);
  30}
  31#endif
  32
  33TRACE_EVENT(nullb_zone_op,
  34            TP_PROTO(struct nullb_cmd *cmd, unsigned int zone_no,
  35                     unsigned int zone_cond),
  36            TP_ARGS(cmd, zone_no, zone_cond),
  37            TP_STRUCT__entry(
  38                __array(char, disk, DISK_NAME_LEN)
  39                __field(enum req_opf, op)
  40                __field(unsigned int, zone_no)
  41                __field(unsigned int, zone_cond)
  42            ),
  43            TP_fast_assign(
  44                __entry->op = req_op(cmd->rq);
  45                __entry->zone_no = zone_no;
  46                __entry->zone_cond = zone_cond;
  47                __assign_disk_name(__entry->disk, cmd->rq->rq_disk);
  48            ),
  49            TP_printk("%s req=%-15s zone_no=%u zone_cond=%-10s",
  50                      __print_disk_name(__entry->disk),
  51                      blk_op_str(__entry->op),
  52                      __entry->zone_no,
  53                      blk_zone_cond_str(__entry->zone_cond))
  54);
  55
  56TRACE_EVENT(nullb_report_zones,
  57            TP_PROTO(struct nullb *nullb, unsigned int nr_zones),
  58            TP_ARGS(nullb, nr_zones),
  59            TP_STRUCT__entry(
  60                __array(char, disk, DISK_NAME_LEN)
  61                __field(unsigned int, nr_zones)
  62            ),
  63            TP_fast_assign(
  64                __entry->nr_zones = nr_zones;
  65                __assign_disk_name(__entry->disk, nullb->disk);
  66            ),
  67            TP_printk("%s nr_zones=%u",
  68                      __print_disk_name(__entry->disk), __entry->nr_zones)
  69);
  70
  71#endif /* _TRACE_NULLB_H */
  72
  73#undef TRACE_INCLUDE_PATH
  74#define TRACE_INCLUDE_PATH .
  75#undef TRACE_INCLUDE_FILE
  76#define TRACE_INCLUDE_FILE trace
  77
  78/* This part must be outside protection */
  79#include <trace/define_trace.h>
  80