]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - include/trace/events/writeback.h
vfs: add support for a lazytime mount option
[mirror_ubuntu-zesty-kernel.git] / include / trace / events / writeback.h
index cee02d65ab3f1707080902de3375d828f1e0a526..5ecb4c2346257a47df301c8153cedc9f8d621699 100644 (file)
@@ -18,6 +18,8 @@
                {I_FREEING,             "I_FREEING"},           \
                {I_CLEAR,               "I_CLEAR"},             \
                {I_SYNC,                "I_SYNC"},              \
+               {I_DIRTY_TIME,          "I_DIRTY_TIME"},        \
+               {I_DIRTY_TIME_EXPIRED,  "I_DIRTY_TIME_EXPIRED"}, \
                {I_REFERENCED,          "I_REFERENCED"}         \
        )
 
@@ -68,6 +70,7 @@ DECLARE_EVENT_CLASS(writeback_dirty_inode_template,
        TP_STRUCT__entry (
                __array(char, name, 32)
                __field(unsigned long, ino)
+               __field(unsigned long, state)
                __field(unsigned long, flags)
        ),
 
@@ -78,16 +81,25 @@ DECLARE_EVENT_CLASS(writeback_dirty_inode_template,
                strncpy(__entry->name,
                        bdi->dev ? dev_name(bdi->dev) : "(unknown)", 32);
                __entry->ino            = inode->i_ino;
+               __entry->state          = inode->i_state;
                __entry->flags          = flags;
        ),
 
-       TP_printk("bdi %s: ino=%lu flags=%s",
+       TP_printk("bdi %s: ino=%lu state=%s flags=%s",
                __entry->name,
                __entry->ino,
+               show_inode_state(__entry->state),
                show_inode_state(__entry->flags)
        )
 );
 
+DEFINE_EVENT(writeback_dirty_inode_template, writeback_mark_inode_dirty,
+
+       TP_PROTO(struct inode *inode, int flags),
+
+       TP_ARGS(inode, flags)
+);
+
 DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode_start,
 
        TP_PROTO(struct inode *inode, int flags),
@@ -598,6 +610,52 @@ DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode,
        TP_ARGS(inode, wbc, nr_to_write)
 );
 
+DECLARE_EVENT_CLASS(writeback_lazytime_template,
+       TP_PROTO(struct inode *inode),
+
+       TP_ARGS(inode),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,  dev                     )
+               __field(unsigned long,  ino                     )
+               __field(unsigned long,  state                   )
+               __field(        __u16, mode                     )
+               __field(unsigned long, dirtied_when             )
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = inode->i_sb->s_dev;
+               __entry->ino    = inode->i_ino;
+               __entry->state  = inode->i_state;
+               __entry->mode   = inode->i_mode;
+               __entry->dirtied_when = inode->dirtied_when;
+       ),
+
+       TP_printk("dev %d,%d ino %lu dirtied %lu state %s mode 0%o",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->ino, __entry->dirtied_when,
+                 show_inode_state(__entry->state), __entry->mode)
+);
+
+DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime,
+       TP_PROTO(struct inode *inode),
+
+       TP_ARGS(inode)
+);
+
+DEFINE_EVENT(writeback_lazytime_template, writeback_lazytime_iput,
+       TP_PROTO(struct inode *inode),
+
+       TP_ARGS(inode)
+);
+
+DEFINE_EVENT(writeback_lazytime_template, writeback_dirty_inode_enqueue,
+
+       TP_PROTO(struct inode *inode),
+
+       TP_ARGS(inode)
+);
+
 #endif /* _TRACE_WRITEBACK_H */
 
 /* This part must be outside protection */