]> granicus.if.org Git - zfs/commitdiff
SET_ERROR should print strings
authorRichard Yao <ryao@gentoo.org>
Wed, 13 Jan 2016 02:01:14 +0000 (21:01 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 15 Jan 2016 23:38:35 +0000 (15:38 -0800)
When debugging with tracepoints, we see string pointers:

zfs  3017 [006]  8878.728915: zfs:zfs_set__error: ffffffffa0eec3fc:3013:ffffffffa0ebcd60(): error 0x2
        ffffffffa0e1ca43 spa_open_common (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffffa0e1cbe3 spa_open (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffffa0e6f6ef zfs_ioc_stable (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffffa0e6f2a9 zfsdev_ioctl (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffff811909dd do_vfs_ioctl ([kernel.kallsyms])
        ffffffff81190c41 sys_ioctl ([kernel.kallsyms])
        ffffffff8156e2e9 system_call_fastpath ([kernel.kallsyms])
            7ff7d8be69c7 __GI___ioctl (/lib64/libc-2.19.so)
            7ff7d90cac53 lzc_ioctl.constprop.3 (/lib64/libzfs_core.so.1.0.0)
        636f695f637a6c00 [unknown] ([unknown])

Printing the actual strings is more convenient:

zfs  3461 [001] 10599.847692: zfs:zfs_set__error: spa.c:3013:spa_open_common(): error 0x2
        ffffffffa116ba43 spa_open_common (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffffa116bbe3 spa_open (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffffa11be8df zfs_ioc_stable (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffffa11be499 zfsdev_ioctl (/lib/modules/3.12.21-gentoo-r1/extra/zfs/zfs.ko)
        ffffffff811909dd do_vfs_ioctl ([kernel.kallsyms])
        ffffffff81190c41 sys_ioctl ([kernel.kallsyms])
        ffffffff8156e2e9 system_call_fastpath ([kernel.kallsyms])
            7f11b843c9c7 __GI___ioctl (/lib64/libc-2.19.so)
            7f11b8920c53 lzc_ioctl.constprop.3 (/lib64/libzfs_core.so.1.0.0)
        636f695f637a6c00 [unknown] ([unknown])

A few other tracepoints have strings as well, so switch to printing
the actual string values at the same time.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #4212

include/sys/trace_dbgmsg.h
include/sys/trace_dbuf.h
include/sys/trace_zrlock.h

index 314ddeb19adbecf34915e733f4a8f262b3a5918b..22f7fd9868ba94b9417bd7848d6cedaeacd04c12 100644 (file)
@@ -51,19 +51,20 @@ DECLARE_EVENT_CLASS(zfs_dprintf_class,
            const char *msg),
        TP_ARGS(file, function, line, msg),
        TP_STRUCT__entry(
-           __field(const char *,       file)
-           __field(const char *,       function)
+           __string(file, file)
+           __string(function, function)
            __field(int,                line)
            __string(msg, msg)
        ),
        TP_fast_assign(
-           __entry->file               = file;
-           __entry->function           = function;
+           __assign_str(file, strchr(file, '/') ?
+               strrchr(file, '/') + 1 : file)
+           __assign_str(function, function);
            __entry->line               = line;
            __assign_str(msg, msg);
        ),
-       TP_printk("%s:%d:%s(): %s", __entry->file, __entry->line,
-           __entry->function, __get_str(msg))
+       TP_printk("%s:%d:%s(): %s", __get_str(file), __entry->line,
+           __get_str(function), __get_str(msg))
 );
 
 #define        DEFINE_DPRINTF_EVENT(name) \
@@ -88,19 +89,20 @@ DECLARE_EVENT_CLASS(zfs_set_error_class,
            uintptr_t error),
        TP_ARGS(file, function, line, error),
        TP_STRUCT__entry(
-           __field(const char *,       file)
-           __field(const char *,       function)
+           __string(file, file)
+           __string(function, function)
            __field(int,                line)
            __field(uintptr_t,          error)
        ),
        TP_fast_assign(
-           __entry->file = strchr(file, '/') ? strrchr(file, '/') + 1 : file;
-           __entry->function           = function;
+           __assign_str(file, strchr(file, '/') ?
+               strrchr(file, '/') + 1 : file)
+           __assign_str(function, function);
            __entry->line               = line;
            __entry->error              = error;
        ),
-       TP_printk("%s:%d:%s(): error 0x%lx", __entry->file, __entry->line,
-           __entry->function, __entry->error)
+       TP_printk("%s:%d:%s(): error 0x%lx", __get_str(file), __entry->line,
+           __get_str(function), __entry->error)
 );
 
 #ifdef TP_CONDITION
index 49e35e3dcbfe2bd32a54deea7480b135d9f9dba2..aca6d6531f5cd148359854ebf9937a53d4bfc2e8 100644 (file)
@@ -42,7 +42,8 @@
  */
 
 #define        DBUF_TP_STRUCT_ENTRY                                    \
-       __field(const char *,   os_spa)                         \
+       __string(os_spa,                                        \
+           spa_name(DB_DNODE(db)->dn_objset->os_spa))          \
        __field(uint64_t,       ds_object)                      \
        __field(uint64_t,       db_object)                      \
        __field(uint64_t,       db_level)                       \
@@ -53,8 +54,8 @@
        __field(int64_t,        db_holds)                       \
 
 #define        DBUF_TP_FAST_ASSIGN                                     \
-       __entry->os_spa =                                       \
-           spa_name(DB_DNODE(db)->dn_objset->os_spa)         \
+       __assign_str(os_spa,                                    \
+           spa_name(DB_DNODE(db)->dn_objset->os_spa));         \
                                                                \
        __entry->ds_object = db->db_objset->os_dsl_dataset ?    \
            db->db_objset->os_dsl_dataset->ds_object : 0;       \
@@ -72,7 +73,7 @@
        "blkid %llu offset %llu size %llu state %llu holds %lld }"
 
 #define        DBUF_TP_PRINTK_ARGS                                     \
-       __entry->os_spa, __entry->ds_object,                    \
+       __get_str(os_spa), __entry->ds_object,                  \
        __entry->db_object, __entry->db_level,                  \
        __entry->db_blkid, __entry->db_offset,                  \
        __entry->db_size, __entry->db_state, __entry->db_holds
index e1399c468a74ad6e19b8621d14175aa926f4824f..356a86a6bb6e7e72f6a13583460cc3048a735fe1 100644 (file)
@@ -48,7 +48,7 @@ DECLARE_EVENT_CLASS(zfs_zrlock_class,
            __field(int32_t,            refcount)
 #ifdef ZFS_DEBUG
            __field(pid_t,              owner_pid)
-           __field(const char *,       caller)
+           __string(caller, zrl->zr_caller)
 #endif
            __field(uint32_t,           n)
        ),
@@ -56,13 +56,13 @@ DECLARE_EVENT_CLASS(zfs_zrlock_class,
            __entry->refcount   = zrl->zr_refcount;
 #ifdef ZFS_DEBUG
            __entry->owner_pid  = zrl->zr_owner ? zrl->zr_owner->pid : 0;
-           __entry->caller     = zrl->zr_caller;
+           __assign_str(caller, zrl->zr_caller);
 #endif
            __entry->n          = n;
        ),
 #ifdef ZFS_DEBUG
        TP_printk("zrl { refcount %d owner_pid %d caller %s } n %u",
-           __entry->refcount, __entry->owner_pid, __entry->caller,
+           __entry->refcount, __entry->owner_pid, __get_str(caller),
            __entry->n)
 #else
        TP_printk("zrl { refcount %d } n %u",