1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (C) 2018 Intel Corporation. 3 * All rights reserved. 4 */ 5 6 #ifndef FTL_TRACE_H 7 #define FTL_TRACE_H 8 9 #include "ftl_internal.h" 10 11 #define FTL_TRACE_INVALID_ID ((uint64_t) -1) 12 13 enum ftl_trace_completion { 14 FTL_TRACE_COMPLETION_INVALID, 15 FTL_TRACE_COMPLETION_CACHE, 16 FTL_TRACE_COMPLETION_DISK, 17 }; 18 19 struct ftl_trace { 20 /* Monotonically incrementing event id */ 21 uint64_t id; 22 }; 23 24 struct spdk_ftl_dev; 25 struct ftl_trace; 26 struct ftl_io; 27 struct ftl_wbuf_entry; 28 struct ftl_band; 29 30 #if defined(DEBUG) 31 uint64_t ftl_trace_alloc_id(struct spdk_ftl_dev *dev); 32 void ftl_trace_reloc_band(struct spdk_ftl_dev *dev, const struct ftl_band *band); 33 void ftl_trace_write_band(struct spdk_ftl_dev *dev, const struct ftl_band *band); 34 void ftl_trace_lba_io_init(struct spdk_ftl_dev *dev, const struct ftl_io *io); 35 void ftl_trace_submission(struct spdk_ftl_dev *dev, const struct ftl_io *io, ftl_addr addr, 36 size_t addr_cnt); 37 void ftl_trace_completion(struct spdk_ftl_dev *dev, const struct ftl_io *io, 38 enum ftl_trace_completion type); 39 void ftl_trace_limits(struct spdk_ftl_dev *dev, int limit, size_t num_free); 40 #else /* defined(DEBUG) */ 41 #define ftl_trace_alloc_id(dev) FTL_TRACE_INVALID_ID 42 #define ftl_trace_reloc_band(dev, band) 43 #define ftl_trace_write_band(dev, band) 44 #define ftl_trace_lba_io_init(dev, io) 45 #define ftl_trace_submission(dev, io, addr, addr_cnt) 46 #define ftl_trace_completion(dev, io, type) 47 #define ftl_trace_limits(dev, limits, num_free) 48 #endif 49 50 #endif /* FTL_TRACE_H */ 51