Skip to content

Commit

Permalink
scsi: sd: sd_zbc: Trace zone append emulation
Browse files Browse the repository at this point in the history
Add tracepoints to the SCSI zone append emulation in order to trace the
zone start to write-pointer aligned LBA translation and the corresponding
completion.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Link: https://lore.kernel.org/r/d103bcf5f90139143469f2a0084c74bd9e03ad4a.1669804487.git.johannes.thumshirn@wdc.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jason Yan <yanaijie@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
Johannes Thumshirn authored and Martin K. Petersen committed Dec 1, 2022
1 parent 6456ab5 commit 9f5436f
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 0 deletions.
84 changes: 84 additions & 0 deletions drivers/scsi/sd_trace.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2022 Western Digital Corporation or its affiliates.
*/
#undef TRACE_SYSTEM
#define TRACE_SYSTEM sd

#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE sd_trace

#if !defined(_SD_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_host.h>
#include <linux/tracepoint.h>

TRACE_EVENT(scsi_prepare_zone_append,

TP_PROTO(struct scsi_cmnd *cmnd, sector_t lba,
unsigned int wp_offset),

TP_ARGS(cmnd, lba, wp_offset),

TP_STRUCT__entry(
__field( unsigned int, host_no )
__field( unsigned int, channel )
__field( unsigned int, id )
__field( unsigned int, lun )
__field( sector_t, lba )
__field( unsigned int, wp_offset )
),

TP_fast_assign(
__entry->host_no = cmnd->device->host->host_no;
__entry->channel = cmnd->device->channel;
__entry->id = cmnd->device->id;
__entry->lun = cmnd->device->lun;
__entry->lba = lba;
__entry->wp_offset = wp_offset;
),

TP_printk("host_no=%u, channel=%u id=%u lun=%u lba=%llu wp_offset=%u",
__entry->host_no, __entry->channel, __entry->id,
__entry->lun, __entry->lba, __entry->wp_offset)
);

TRACE_EVENT(scsi_zone_wp_update,

TP_PROTO(struct scsi_cmnd *cmnd, sector_t rq_sector,
unsigned int wp_offset, unsigned int good_bytes),

TP_ARGS(cmnd, rq_sector, wp_offset, good_bytes),

TP_STRUCT__entry(
__field( unsigned int, host_no )
__field( unsigned int, channel )
__field( unsigned int, id )
__field( unsigned int, lun )
__field( sector_t, rq_sector )
__field( unsigned int, wp_offset )
__field( unsigned int, good_bytes )
),

TP_fast_assign(
__entry->host_no = cmnd->device->host->host_no;
__entry->channel = cmnd->device->channel;
__entry->id = cmnd->device->id;
__entry->lun = cmnd->device->lun;
__entry->rq_sector = rq_sector;
__entry->wp_offset = wp_offset;
__entry->good_bytes = good_bytes;
),

TP_printk("host_no=%u, channel=%u id=%u lun=%u rq_sector=%llu" \
" wp_offset=%u good_bytes=%u",
__entry->host_no, __entry->channel, __entry->id,
__entry->lun, __entry->rq_sector, __entry->wp_offset,
__entry->good_bytes)
);
#endif /* _SD_TRACE_H */

/* This part must be outside protection */
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH ../../drivers/scsi
#include <trace/define_trace.h>
6 changes: 6 additions & 0 deletions drivers/scsi/sd_zbc.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@

#include "sd.h"

#define CREATE_TRACE_POINTS
#include "sd_trace.h"

/**
* sd_zbc_get_zone_wp_offset - Get zone write pointer offset.
* @zone: Zone for which to return the write pointer offset.
Expand Down Expand Up @@ -450,6 +453,7 @@ blk_status_t sd_zbc_prepare_zone_append(struct scsi_cmnd *cmd, sector_t *lba,
break;
}

trace_scsi_prepare_zone_append(cmd, *lba, wp_offset);
*lba += wp_offset;
}
spin_unlock_irqrestore(&sdkp->zones_wp_offset_lock, flags);
Expand Down Expand Up @@ -558,6 +562,8 @@ static unsigned int sd_zbc_zone_wp_update(struct scsi_cmnd *cmd,

switch (op) {
case REQ_OP_ZONE_APPEND:
trace_scsi_zone_wp_update(cmd, rq->__sector,
sdkp->zones_wp_offset[zno], good_bytes);
rq->__sector += sdkp->zones_wp_offset[zno];
fallthrough;
case REQ_OP_WRITE_ZEROES:
Expand Down

0 comments on commit 9f5436f

Please sign in to comment.