lkml.org 
[lkml]   [2009]   [Nov]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] vfs: Add a trace point in the mark_inode_dirty function
    > +/*
    > + * Tracepoint for dirtying an inode:
    > + */
    > +TRACE_EVENT(dirty_inode,
    > +
    > + TP_PROTO(struct inode *inode, struct task_struct *task),
    > +
    > + TP_ARGS(inode, task),
    > +
    > + TP_STRUCT__entry(
    > + __array( char, comm, TASK_COMM_LEN )
    > + __field( pid_t, pid )
    > + __array( char, dev, 16 )
    > + __array( char, file, 32 )
    > + ),
    > +
    > + TP_fast_assign(
    > + if (inode->i_ino || strcmp(inode->i_sb->s_id, "bdev")) {
    > + struct dentry *dentry;
    > + const char *name = "?";
    > +
    > + dentry = d_find_alias(inode);
    > + if (dentry) {
    > + spin_lock(&dentry->d_lock);
    > + name = (const char *) dentry->d_name.name;
    > + }
    > +
    > + memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
    > + __entry->pid = task->pid;
    > + strlcpy(__entry->file, name, 32);
    > + strlcpy(__entry->dev, inode->i_sb->s_id, 16);
    > +
    > + if (dentry) {
    > + spin_unlock(&dentry->d_lock);
    > + dput(dentry);
    > + }
    > + }

    This will leave __entry->comm, __entry->file and __entry->dev
    uninitialized in the "else" case..

    And is there any reason that we have to use __array() but can't
    use __string()?

    > + ),
    > +
    > + TP_printk("task=%i (%s) file=%s dev=%s",
    > + __entry->pid, __entry->comm, __entry->file, __entry->dev)
    > +);
    > +
    > +#endif /* _TRACE_VFS_H */


    \
     
     \ /
      Last update: 2009-11-11 03:37    [W:8.325 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site