f2fs: enhance scalability of trace macro
[sfrench/cifs-2.6.git] / include / trace / events / f2fs.h
index c80fcad0a6c97b6975628fe6dcd236863f295c51..15da88c5c3a4d12ef12ff56a7e6cde8a039920b7 100644 (file)
@@ -15,6 +15,8 @@ TRACE_DEFINE_ENUM(META);
 TRACE_DEFINE_ENUM(META_FLUSH);
 TRACE_DEFINE_ENUM(INMEM);
 TRACE_DEFINE_ENUM(INMEM_DROP);
+TRACE_DEFINE_ENUM(INMEM_INVALIDATE);
+TRACE_DEFINE_ENUM(INMEM_REVOKE);
 TRACE_DEFINE_ENUM(IPU);
 TRACE_DEFINE_ENUM(OPU);
 TRACE_DEFINE_ENUM(CURSEG_HOT_DATA);
@@ -42,6 +44,7 @@ TRACE_DEFINE_ENUM(CP_FASTBOOT);
 TRACE_DEFINE_ENUM(CP_SYNC);
 TRACE_DEFINE_ENUM(CP_RECOVERY);
 TRACE_DEFINE_ENUM(CP_DISCARD);
+TRACE_DEFINE_ENUM(CP_TRIMMED);
 
 #define show_block_type(type)                                          \
        __print_symbolic(type,                                          \
@@ -51,12 +54,13 @@ TRACE_DEFINE_ENUM(CP_DISCARD);
                { META_FLUSH,   "META_FLUSH" },                         \
                { INMEM,        "INMEM" },                              \
                { INMEM_DROP,   "INMEM_DROP" },                         \
+               { INMEM_INVALIDATE,     "INMEM_INVALIDATE" },           \
                { INMEM_REVOKE, "INMEM_REVOKE" },                       \
                { IPU,          "IN-PLACE" },                           \
                { OPU,          "OUT-OF-PLACE" })
 
-#define F2FS_OP_FLAGS (REQ_RAHEAD | REQ_SYNC | REQ_PREFLUSH | REQ_META |\
-                       REQ_PRIO)
+#define F2FS_OP_FLAGS (REQ_RAHEAD | REQ_SYNC | REQ_META | REQ_PRIO |   \
+                       REQ_PREFLUSH | REQ_FUA)
 #define F2FS_BIO_FLAG_MASK(t)  (t & F2FS_OP_FLAGS)
 
 #define show_bio_type(op,op_flags)     show_bio_op(op),                \
@@ -75,16 +79,13 @@ TRACE_DEFINE_ENUM(CP_DISCARD);
                { REQ_OP_WRITE_ZEROES,          "WRITE_ZEROES" })
 
 #define show_bio_op_flags(flags)                                       \
-       __print_symbolic(F2FS_BIO_FLAG_MASK(flags),                     \
-               { REQ_RAHEAD,           "(RA)" },                       \
-               { REQ_SYNC,             "(S)" },                        \
-               { REQ_SYNC | REQ_PRIO,  "(SP)" },                       \
-               { REQ_META,             "(M)" },                        \
-               { REQ_META | REQ_PRIO,  "(MP)" },                       \
-               { REQ_SYNC | REQ_PREFLUSH , "(SF)" },                   \
-               { REQ_SYNC | REQ_META | REQ_PRIO, "(SMP)" },            \
-               { REQ_PREFLUSH | REQ_META | REQ_PRIO, "(FMP)" },        \
-               { 0, " \b" })
+       __print_flags(F2FS_BIO_FLAG_MASK(flags), "|",                   \
+               { REQ_RAHEAD,           "R" },                          \
+               { REQ_SYNC,             "S" },                          \
+               { REQ_META,             "M" },                          \
+               { REQ_PRIO,             "P" },                          \
+               { REQ_PREFLUSH,         "PF" },                         \
+               { REQ_FUA,              "FUA" })
 
 #define show_data_type(type)                                           \
        __print_symbolic(type,                                          \
@@ -117,12 +118,14 @@ TRACE_DEFINE_ENUM(CP_DISCARD);
                { GC_CB,        "Cost-Benefit" })
 
 #define show_cpreason(type)                                            \
-       __print_symbolic(type,                                          \
+       __print_flags(type, "|",                                        \
                { CP_UMOUNT,    "Umount" },                             \
                { CP_FASTBOOT,  "Fastboot" },                           \
                { CP_SYNC,      "Sync" },                               \
                { CP_RECOVERY,  "Recovery" },                           \
-               { CP_DISCARD,   "Discard" })
+               { CP_DISCARD,   "Discard" },                            \
+               { CP_UMOUNT,    "Umount" },                             \
+               { CP_TRIMMED,   "Trimmed" })
 
 struct victim_sel_policy;
 struct f2fs_map_blocks;
@@ -769,7 +772,7 @@ DECLARE_EVENT_CLASS(f2fs__submit_page_bio,
        ),
 
        TP_printk("dev = (%d,%d), ino = %lu, page_index = 0x%lx, "
-               "oldaddr = 0x%llx, newaddr = 0x%llx, rw = %s%s, type = %s",
+               "oldaddr = 0x%llx, newaddr = 0x%llx, rw = %s(%s), type = %s",
                show_dev_ino(__entry),
                (unsigned long)__entry->index,
                (unsigned long long)__entry->old_blkaddr,
@@ -822,7 +825,7 @@ DECLARE_EVENT_CLASS(f2fs__bio,
                __entry->size           = bio->bi_iter.bi_size;
        ),
 
-       TP_printk("dev = (%d,%d)/(%d,%d), rw = %s%s, %s, sector = %lld, size = %u",
+       TP_printk("dev = (%d,%d)/(%d,%d), rw = %s(%s), %s, sector = %lld, size = %u",
                show_dev(__entry->target),
                show_dev(__entry->dev),
                show_bio_type(__entry->op, __entry->op_flags),
@@ -1126,7 +1129,7 @@ TRACE_EVENT(f2fs_write_checkpoint,
                __entry->msg)
 );
 
-TRACE_EVENT(f2fs_issue_discard,
+DECLARE_EVENT_CLASS(f2fs_discard,
 
        TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),
 
@@ -1150,6 +1153,20 @@ TRACE_EVENT(f2fs_issue_discard,
                (unsigned long long)__entry->blklen)
 );
 
+DEFINE_EVENT(f2fs_discard, f2fs_queue_discard,
+
+       TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),
+
+       TP_ARGS(dev, blkstart, blklen)
+);
+
+DEFINE_EVENT(f2fs_discard, f2fs_issue_discard,
+
+       TP_PROTO(struct block_device *dev, block_t blkstart, block_t blklen),
+
+       TP_ARGS(dev, blkstart, blklen)
+);
+
 TRACE_EVENT(f2fs_issue_reset_zone,
 
        TP_PROTO(struct block_device *dev, block_t blkstart),
@@ -1174,26 +1191,29 @@ TRACE_EVENT(f2fs_issue_reset_zone,
 TRACE_EVENT(f2fs_issue_flush,
 
        TP_PROTO(struct block_device *dev, unsigned int nobarrier,
-                                       unsigned int flush_merge),
+                               unsigned int flush_merge, int ret),
 
-       TP_ARGS(dev, nobarrier, flush_merge),
+       TP_ARGS(dev, nobarrier, flush_merge, ret),
 
        TP_STRUCT__entry(
                __field(dev_t,  dev)
                __field(unsigned int, nobarrier)
                __field(unsigned int, flush_merge)
+               __field(int,  ret)
        ),
 
        TP_fast_assign(
                __entry->dev    = dev->bd_dev;
                __entry->nobarrier = nobarrier;
                __entry->flush_merge = flush_merge;
+               __entry->ret = ret;
        ),
 
-       TP_printk("dev = (%d,%d), %s %s",
+       TP_printk("dev = (%d,%d), %s %s, ret = %d",
                show_dev(__entry->dev),
                __entry->nobarrier ? "skip (nobarrier)" : "issue",
-               __entry->flush_merge ? " with flush_merge" : "")
+               __entry->flush_merge ? " with flush_merge" : "",
+               __entry->ret)
 );
 
 TRACE_EVENT(f2fs_lookup_extent_tree_start,