LCOV - code coverage report
Current view: top level - fs/nfs - nfstrace.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 52 0.0 %
Date: 2014-04-16 Functions: 0 60 0.0 %
Branches: 0 730 0.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com>
       3                 :            :  */
       4                 :            : #undef TRACE_SYSTEM
       5                 :            : #define TRACE_SYSTEM nfs
       6                 :            : 
       7                 :            : #if !defined(_TRACE_NFS_H) || defined(TRACE_HEADER_MULTI_READ)
       8                 :            : #define _TRACE_NFS_H
       9                 :            : 
      10                 :            : #include <linux/tracepoint.h>
      11                 :            : 
      12                 :            : #define nfs_show_file_type(ftype) \
      13                 :            :         __print_symbolic(ftype, \
      14                 :            :                         { DT_UNKNOWN, "UNKNOWN" }, \
      15                 :            :                         { DT_FIFO, "FIFO" }, \
      16                 :            :                         { DT_CHR, "CHR" }, \
      17                 :            :                         { DT_DIR, "DIR" }, \
      18                 :            :                         { DT_BLK, "BLK" }, \
      19                 :            :                         { DT_REG, "REG" }, \
      20                 :            :                         { DT_LNK, "LNK" }, \
      21                 :            :                         { DT_SOCK, "SOCK" }, \
      22                 :            :                         { DT_WHT, "WHT" })
      23                 :            : 
      24                 :            : #define nfs_show_cache_validity(v) \
      25                 :            :         __print_flags(v, "|", \
      26                 :            :                         { NFS_INO_INVALID_ATTR, "INVALID_ATTR" }, \
      27                 :            :                         { NFS_INO_INVALID_DATA, "INVALID_DATA" }, \
      28                 :            :                         { NFS_INO_INVALID_ATIME, "INVALID_ATIME" }, \
      29                 :            :                         { NFS_INO_INVALID_ACCESS, "INVALID_ACCESS" }, \
      30                 :            :                         { NFS_INO_INVALID_ACL, "INVALID_ACL" }, \
      31                 :            :                         { NFS_INO_REVAL_PAGECACHE, "REVAL_PAGECACHE" }, \
      32                 :            :                         { NFS_INO_REVAL_FORCED, "REVAL_FORCED" }, \
      33                 :            :                         { NFS_INO_INVALID_LABEL, "INVALID_LABEL" })
      34                 :            : 
      35                 :            : #define nfs_show_nfsi_flags(v) \
      36                 :            :         __print_flags(v, "|", \
      37                 :            :                         { 1 << NFS_INO_ADVISE_RDPLUS, "ADVISE_RDPLUS" }, \
      38                 :            :                         { 1 << NFS_INO_STALE, "STALE" }, \
      39                 :            :                         { 1 << NFS_INO_INVALIDATING, "INVALIDATING" }, \
      40                 :            :                         { 1 << NFS_INO_FLUSHING, "FLUSHING" }, \
      41                 :            :                         { 1 << NFS_INO_FSCACHE, "FSCACHE" }, \
      42                 :            :                         { 1 << NFS_INO_COMMIT, "COMMIT" }, \
      43                 :            :                         { 1 << NFS_INO_LAYOUTCOMMIT, "NEED_LAYOUTCOMMIT" }, \
      44                 :            :                         { 1 << NFS_INO_LAYOUTCOMMITTING, "LAYOUTCOMMIT" })
      45                 :            : 
      46   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_inode_event,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
      47                 :            :                 TP_PROTO(
      48                 :            :                         const struct inode *inode
      49                 :            :                 ),
      50                 :            : 
      51                 :            :                 TP_ARGS(inode),
      52                 :            : 
      53                 :            :                 TP_STRUCT__entry(
      54                 :            :                         __field(dev_t, dev)
      55                 :            :                         __field(u32, fhandle)
      56                 :            :                         __field(u64, fileid)
      57                 :            :                         __field(u64, version)
      58                 :            :                 ),
      59                 :            : 
      60                 :            :                 TP_fast_assign(
      61                 :            :                         const struct nfs_inode *nfsi = NFS_I(inode);
      62                 :            :                         __entry->dev = inode->i_sb->s_dev;
      63                 :            :                         __entry->fileid = nfsi->fileid;
      64                 :            :                         __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
      65                 :            :                         __entry->version = inode->i_version;
      66                 :            :                 ),
      67                 :            : 
      68                 :            :                 TP_printk(
      69                 :            :                         "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu ",
      70                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
      71                 :            :                         (unsigned long long)__entry->fileid,
      72                 :            :                         __entry->fhandle,
      73                 :            :                         (unsigned long long)__entry->version
      74                 :            :                 )
      75                 :            : );
      76                 :            : 
      77   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_inode_event_done,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      78                 :            :                 TP_PROTO(
      79                 :            :                         const struct inode *inode,
      80                 :            :                         int error
      81                 :            :                 ),
      82                 :            : 
      83                 :            :                 TP_ARGS(inode, error),
      84                 :            : 
      85                 :            :                 TP_STRUCT__entry(
      86                 :            :                         __field(int, error)
      87                 :            :                         __field(dev_t, dev)
      88                 :            :                         __field(u32, fhandle)
      89                 :            :                         __field(unsigned char, type)
      90                 :            :                         __field(u64, fileid)
      91                 :            :                         __field(u64, version)
      92                 :            :                         __field(loff_t, size)
      93                 :            :                         __field(unsigned long, nfsi_flags)
      94                 :            :                         __field(unsigned long, cache_validity)
      95                 :            :                 ),
      96                 :            : 
      97                 :            :                 TP_fast_assign(
      98                 :            :                         const struct nfs_inode *nfsi = NFS_I(inode);
      99                 :            :                         __entry->error = error;
     100                 :            :                         __entry->dev = inode->i_sb->s_dev;
     101                 :            :                         __entry->fileid = nfsi->fileid;
     102                 :            :                         __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
     103                 :            :                         __entry->type = nfs_umode_to_dtype(inode->i_mode);
     104                 :            :                         __entry->version = inode->i_version;
     105                 :            :                         __entry->size = i_size_read(inode);
     106                 :            :                         __entry->nfsi_flags = nfsi->flags;
     107                 :            :                         __entry->cache_validity = nfsi->cache_validity;
     108                 :            :                 ),
     109                 :            : 
     110                 :            :                 TP_printk(
     111                 :            :                         "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
     112                 :            :                         "type=%u (%s) version=%llu size=%lld "
     113                 :            :                         "cache_validity=%lu (%s) nfs_flags=%ld (%s)",
     114                 :            :                         __entry->error,
     115                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     116                 :            :                         (unsigned long long)__entry->fileid,
     117                 :            :                         __entry->fhandle,
     118                 :            :                         __entry->type,
     119                 :            :                         nfs_show_file_type(__entry->type),
     120                 :            :                         (unsigned long long)__entry->version,
     121                 :            :                         (long long)__entry->size,
     122                 :            :                         __entry->cache_validity,
     123                 :            :                         nfs_show_cache_validity(__entry->cache_validity),
     124                 :            :                         __entry->nfsi_flags,
     125                 :            :                         nfs_show_nfsi_flags(__entry->nfsi_flags)
     126                 :            :                 )
     127                 :            : );
     128                 :            : 
     129                 :            : #define DEFINE_NFS_INODE_EVENT(name) \
     130                 :            :         DEFINE_EVENT(nfs_inode_event, name, \
     131                 :            :                         TP_PROTO( \
     132                 :            :                                 const struct inode *inode \
     133                 :            :                         ), \
     134                 :            :                         TP_ARGS(inode))
     135                 :            : #define DEFINE_NFS_INODE_EVENT_DONE(name) \
     136                 :            :         DEFINE_EVENT(nfs_inode_event_done, name, \
     137                 :            :                         TP_PROTO( \
     138                 :            :                                 const struct inode *inode, \
     139                 :            :                                 int error \
     140                 :            :                         ), \
     141                 :            :                         TP_ARGS(inode, error))
     142   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_refresh_inode_enter);
                 [ #  # ]
     143   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_refresh_inode_exit);
                 [ #  # ]
     144   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_revalidate_inode_enter);
                 [ #  # ]
     145   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_revalidate_inode_exit);
                 [ #  # ]
     146   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_invalidate_mapping_enter);
                 [ #  # ]
     147   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_invalidate_mapping_exit);
                 [ #  # ]
     148   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_getattr_enter);
                 [ #  # ]
     149   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_getattr_exit);
                 [ #  # ]
     150   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_setattr_enter);
                 [ #  # ]
     151   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_setattr_exit);
                 [ #  # ]
     152   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_writeback_page_enter);
                 [ #  # ]
     153   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_writeback_page_exit);
                 [ #  # ]
     154   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_writeback_inode_enter);
                 [ #  # ]
     155   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_writeback_inode_exit);
                 [ #  # ]
     156   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_fsync_enter);
                 [ #  # ]
     157   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_fsync_exit);
                 [ #  # ]
     158   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT(nfs_access_enter);
                 [ #  # ]
     159   [ #  #  #  # ]:          0 : DEFINE_NFS_INODE_EVENT_DONE(nfs_access_exit);
                 [ #  # ]
     160                 :            : 
     161                 :            : #define show_lookup_flags(flags) \
     162                 :            :         __print_flags((unsigned long)flags, "|", \
     163                 :            :                         { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
     164                 :            :                         { LOOKUP_DIRECTORY, "DIRECTORY" }, \
     165                 :            :                         { LOOKUP_OPEN, "OPEN" }, \
     166                 :            :                         { LOOKUP_CREATE, "CREATE" }, \
     167                 :            :                         { LOOKUP_EXCL, "EXCL" })
     168                 :            : 
     169 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_lookup_event,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     170                 :            :                 TP_PROTO(
     171                 :            :                         const struct inode *dir,
     172                 :            :                         const struct dentry *dentry,
     173                 :            :                         unsigned int flags
     174                 :            :                 ),
     175                 :            : 
     176                 :            :                 TP_ARGS(dir, dentry, flags),
     177                 :            : 
     178                 :            :                 TP_STRUCT__entry(
     179                 :            :                         __field(unsigned int, flags)
     180                 :            :                         __field(dev_t, dev)
     181                 :            :                         __field(u64, dir)
     182                 :            :                         __string(name, dentry->d_name.name)
     183                 :            :                 ),
     184                 :            : 
     185                 :            :                 TP_fast_assign(
     186                 :            :                         __entry->dev = dir->i_sb->s_dev;
     187                 :            :                         __entry->dir = NFS_FILEID(dir);
     188                 :            :                         __entry->flags = flags;
     189                 :            :                         __assign_str(name, dentry->d_name.name);
     190                 :            :                 ),
     191                 :            : 
     192                 :            :                 TP_printk(
     193                 :            :                         "flags=%u (%s) name=%02x:%02x:%llu/%s",
     194                 :            :                         __entry->flags,
     195                 :            :                         show_lookup_flags(__entry->flags),
     196                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     197                 :            :                         (unsigned long long)__entry->dir,
     198                 :            :                         __get_str(name)
     199                 :            :                 )
     200                 :            : );
     201                 :            : 
     202                 :            : #define DEFINE_NFS_LOOKUP_EVENT(name) \
     203                 :            :         DEFINE_EVENT(nfs_lookup_event, name, \
     204                 :            :                         TP_PROTO( \
     205                 :            :                                 const struct inode *dir, \
     206                 :            :                                 const struct dentry *dentry, \
     207                 :            :                                 unsigned int flags \
     208                 :            :                         ), \
     209                 :            :                         TP_ARGS(dir, dentry, flags))
     210                 :            : 
     211 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_lookup_event_done,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     212                 :            :                 TP_PROTO(
     213                 :            :                         const struct inode *dir,
     214                 :            :                         const struct dentry *dentry,
     215                 :            :                         unsigned int flags,
     216                 :            :                         int error
     217                 :            :                 ),
     218                 :            : 
     219                 :            :                 TP_ARGS(dir, dentry, flags, error),
     220                 :            : 
     221                 :            :                 TP_STRUCT__entry(
     222                 :            :                         __field(int, error)
     223                 :            :                         __field(unsigned int, flags)
     224                 :            :                         __field(dev_t, dev)
     225                 :            :                         __field(u64, dir)
     226                 :            :                         __string(name, dentry->d_name.name)
     227                 :            :                 ),
     228                 :            : 
     229                 :            :                 TP_fast_assign(
     230                 :            :                         __entry->dev = dir->i_sb->s_dev;
     231                 :            :                         __entry->dir = NFS_FILEID(dir);
     232                 :            :                         __entry->error = error;
     233                 :            :                         __entry->flags = flags;
     234                 :            :                         __assign_str(name, dentry->d_name.name);
     235                 :            :                 ),
     236                 :            : 
     237                 :            :                 TP_printk(
     238                 :            :                         "error=%d flags=%u (%s) name=%02x:%02x:%llu/%s",
     239                 :            :                         __entry->error,
     240                 :            :                         __entry->flags,
     241                 :            :                         show_lookup_flags(__entry->flags),
     242                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     243                 :            :                         (unsigned long long)__entry->dir,
     244                 :            :                         __get_str(name)
     245                 :            :                 )
     246                 :            : );
     247                 :            : 
     248                 :            : #define DEFINE_NFS_LOOKUP_EVENT_DONE(name) \
     249                 :            :         DEFINE_EVENT(nfs_lookup_event_done, name, \
     250                 :            :                         TP_PROTO( \
     251                 :            :                                 const struct inode *dir, \
     252                 :            :                                 const struct dentry *dentry, \
     253                 :            :                                 unsigned int flags, \
     254                 :            :                                 int error \
     255                 :            :                         ), \
     256                 :            :                         TP_ARGS(dir, dentry, flags, error))
     257                 :            : 
     258   [ #  #  #  # ]:          0 : DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_enter);
                 [ #  # ]
     259   [ #  #  #  # ]:          0 : DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
                 [ #  # ]
     260   [ #  #  #  # ]:          0 : DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
                 [ #  # ]
     261   [ #  #  #  # ]:          0 : DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
                 [ #  # ]
     262                 :            : 
     263                 :            : #define show_open_flags(flags) \
     264                 :            :         __print_flags((unsigned long)flags, "|", \
     265                 :            :                 { O_CREAT, "O_CREAT" }, \
     266                 :            :                 { O_EXCL, "O_EXCL" }, \
     267                 :            :                 { O_TRUNC, "O_TRUNC" }, \
     268                 :            :                 { O_APPEND, "O_APPEND" }, \
     269                 :            :                 { O_DSYNC, "O_DSYNC" }, \
     270                 :            :                 { O_DIRECT, "O_DIRECT" }, \
     271                 :            :                 { O_DIRECTORY, "O_DIRECTORY" })
     272                 :            : 
     273                 :            : #define show_fmode_flags(mode) \
     274                 :            :         __print_flags(mode, "|", \
     275                 :            :                 { ((__force unsigned long)FMODE_READ), "READ" }, \
     276                 :            :                 { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
     277                 :            :                 { ((__force unsigned long)FMODE_EXEC), "EXEC" })
     278                 :            : 
     279 [ #  # ][ #  # ]:          0 : TRACE_EVENT(nfs_atomic_open_enter,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     280                 :            :                 TP_PROTO(
     281                 :            :                         const struct inode *dir,
     282                 :            :                         const struct nfs_open_context *ctx,
     283                 :            :                         unsigned int flags
     284                 :            :                 ),
     285                 :            : 
     286                 :            :                 TP_ARGS(dir, ctx, flags),
     287                 :            : 
     288                 :            :                 TP_STRUCT__entry(
     289                 :            :                         __field(unsigned int, flags)
     290                 :            :                         __field(unsigned int, fmode)
     291                 :            :                         __field(dev_t, dev)
     292                 :            :                         __field(u64, dir)
     293                 :            :                         __string(name, ctx->dentry->d_name.name)
     294                 :            :                 ),
     295                 :            : 
     296                 :            :                 TP_fast_assign(
     297                 :            :                         __entry->dev = dir->i_sb->s_dev;
     298                 :            :                         __entry->dir = NFS_FILEID(dir);
     299                 :            :                         __entry->flags = flags;
     300                 :            :                         __entry->fmode = (__force unsigned int)ctx->mode;
     301                 :            :                         __assign_str(name, ctx->dentry->d_name.name);
     302                 :            :                 ),
     303                 :            : 
     304                 :            :                 TP_printk(
     305                 :            :                         "flags=%u (%s) fmode=%s name=%02x:%02x:%llu/%s",
     306                 :            :                         __entry->flags,
     307                 :            :                         show_open_flags(__entry->flags),
     308                 :            :                         show_fmode_flags(__entry->fmode),
     309                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     310                 :            :                         (unsigned long long)__entry->dir,
     311                 :            :                         __get_str(name)
     312                 :            :                 )
     313                 :            : );
     314                 :            : 
     315 [ #  # ][ #  # ]:          0 : TRACE_EVENT(nfs_atomic_open_exit,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     316                 :            :                 TP_PROTO(
     317                 :            :                         const struct inode *dir,
     318                 :            :                         const struct nfs_open_context *ctx,
     319                 :            :                         unsigned int flags,
     320                 :            :                         int error
     321                 :            :                 ),
     322                 :            : 
     323                 :            :                 TP_ARGS(dir, ctx, flags, error),
     324                 :            : 
     325                 :            :                 TP_STRUCT__entry(
     326                 :            :                         __field(int, error)
     327                 :            :                         __field(unsigned int, flags)
     328                 :            :                         __field(unsigned int, fmode)
     329                 :            :                         __field(dev_t, dev)
     330                 :            :                         __field(u64, dir)
     331                 :            :                         __string(name, ctx->dentry->d_name.name)
     332                 :            :                 ),
     333                 :            : 
     334                 :            :                 TP_fast_assign(
     335                 :            :                         __entry->error = error;
     336                 :            :                         __entry->dev = dir->i_sb->s_dev;
     337                 :            :                         __entry->dir = NFS_FILEID(dir);
     338                 :            :                         __entry->flags = flags;
     339                 :            :                         __entry->fmode = (__force unsigned int)ctx->mode;
     340                 :            :                         __assign_str(name, ctx->dentry->d_name.name);
     341                 :            :                 ),
     342                 :            : 
     343                 :            :                 TP_printk(
     344                 :            :                         "error=%d flags=%u (%s) fmode=%s "
     345                 :            :                         "name=%02x:%02x:%llu/%s",
     346                 :            :                         __entry->error,
     347                 :            :                         __entry->flags,
     348                 :            :                         show_open_flags(__entry->flags),
     349                 :            :                         show_fmode_flags(__entry->fmode),
     350                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     351                 :            :                         (unsigned long long)__entry->dir,
     352                 :            :                         __get_str(name)
     353                 :            :                 )
     354                 :            : );
     355                 :            : 
     356 [ #  # ][ #  # ]:          0 : TRACE_EVENT(nfs_create_enter,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     357                 :            :                 TP_PROTO(
     358                 :            :                         const struct inode *dir,
     359                 :            :                         const struct dentry *dentry,
     360                 :            :                         unsigned int flags
     361                 :            :                 ),
     362                 :            : 
     363                 :            :                 TP_ARGS(dir, dentry, flags),
     364                 :            : 
     365                 :            :                 TP_STRUCT__entry(
     366                 :            :                         __field(unsigned int, flags)
     367                 :            :                         __field(dev_t, dev)
     368                 :            :                         __field(u64, dir)
     369                 :            :                         __string(name, dentry->d_name.name)
     370                 :            :                 ),
     371                 :            : 
     372                 :            :                 TP_fast_assign(
     373                 :            :                         __entry->dev = dir->i_sb->s_dev;
     374                 :            :                         __entry->dir = NFS_FILEID(dir);
     375                 :            :                         __entry->flags = flags;
     376                 :            :                         __assign_str(name, dentry->d_name.name);
     377                 :            :                 ),
     378                 :            : 
     379                 :            :                 TP_printk(
     380                 :            :                         "flags=%u (%s) name=%02x:%02x:%llu/%s",
     381                 :            :                         __entry->flags,
     382                 :            :                         show_open_flags(__entry->flags),
     383                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     384                 :            :                         (unsigned long long)__entry->dir,
     385                 :            :                         __get_str(name)
     386                 :            :                 )
     387                 :            : );
     388                 :            : 
     389 [ #  # ][ #  # ]:          0 : TRACE_EVENT(nfs_create_exit,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     390                 :            :                 TP_PROTO(
     391                 :            :                         const struct inode *dir,
     392                 :            :                         const struct dentry *dentry,
     393                 :            :                         unsigned int flags,
     394                 :            :                         int error
     395                 :            :                 ),
     396                 :            : 
     397                 :            :                 TP_ARGS(dir, dentry, flags, error),
     398                 :            : 
     399                 :            :                 TP_STRUCT__entry(
     400                 :            :                         __field(int, error)
     401                 :            :                         __field(unsigned int, flags)
     402                 :            :                         __field(dev_t, dev)
     403                 :            :                         __field(u64, dir)
     404                 :            :                         __string(name, dentry->d_name.name)
     405                 :            :                 ),
     406                 :            : 
     407                 :            :                 TP_fast_assign(
     408                 :            :                         __entry->error = error;
     409                 :            :                         __entry->dev = dir->i_sb->s_dev;
     410                 :            :                         __entry->dir = NFS_FILEID(dir);
     411                 :            :                         __entry->flags = flags;
     412                 :            :                         __assign_str(name, dentry->d_name.name);
     413                 :            :                 ),
     414                 :            : 
     415                 :            :                 TP_printk(
     416                 :            :                         "error=%d flags=%u (%s) name=%02x:%02x:%llu/%s",
     417                 :            :                         __entry->error,
     418                 :            :                         __entry->flags,
     419                 :            :                         show_open_flags(__entry->flags),
     420                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     421                 :            :                         (unsigned long long)__entry->dir,
     422                 :            :                         __get_str(name)
     423                 :            :                 )
     424                 :            : );
     425                 :            : 
     426 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_directory_event,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     427                 :            :                 TP_PROTO(
     428                 :            :                         const struct inode *dir,
     429                 :            :                         const struct dentry *dentry
     430                 :            :                 ),
     431                 :            : 
     432                 :            :                 TP_ARGS(dir, dentry),
     433                 :            : 
     434                 :            :                 TP_STRUCT__entry(
     435                 :            :                         __field(dev_t, dev)
     436                 :            :                         __field(u64, dir)
     437                 :            :                         __string(name, dentry->d_name.name)
     438                 :            :                 ),
     439                 :            : 
     440                 :            :                 TP_fast_assign(
     441                 :            :                         __entry->dev = dir->i_sb->s_dev;
     442                 :            :                         __entry->dir = NFS_FILEID(dir);
     443                 :            :                         __assign_str(name, dentry->d_name.name);
     444                 :            :                 ),
     445                 :            : 
     446                 :            :                 TP_printk(
     447                 :            :                         "name=%02x:%02x:%llu/%s",
     448                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     449                 :            :                         (unsigned long long)__entry->dir,
     450                 :            :                         __get_str(name)
     451                 :            :                 )
     452                 :            : );
     453                 :            : 
     454                 :            : #define DEFINE_NFS_DIRECTORY_EVENT(name) \
     455                 :            :         DEFINE_EVENT(nfs_directory_event, name, \
     456                 :            :                         TP_PROTO( \
     457                 :            :                                 const struct inode *dir, \
     458                 :            :                                 const struct dentry *dentry \
     459                 :            :                         ), \
     460                 :            :                         TP_ARGS(dir, dentry))
     461                 :            : 
     462 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_directory_event_done,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     463                 :            :                 TP_PROTO(
     464                 :            :                         const struct inode *dir,
     465                 :            :                         const struct dentry *dentry,
     466                 :            :                         int error
     467                 :            :                 ),
     468                 :            : 
     469                 :            :                 TP_ARGS(dir, dentry, error),
     470                 :            : 
     471                 :            :                 TP_STRUCT__entry(
     472                 :            :                         __field(int, error)
     473                 :            :                         __field(dev_t, dev)
     474                 :            :                         __field(u64, dir)
     475                 :            :                         __string(name, dentry->d_name.name)
     476                 :            :                 ),
     477                 :            : 
     478                 :            :                 TP_fast_assign(
     479                 :            :                         __entry->dev = dir->i_sb->s_dev;
     480                 :            :                         __entry->dir = NFS_FILEID(dir);
     481                 :            :                         __entry->error = error;
     482                 :            :                         __assign_str(name, dentry->d_name.name);
     483                 :            :                 ),
     484                 :            : 
     485                 :            :                 TP_printk(
     486                 :            :                         "error=%d name=%02x:%02x:%llu/%s",
     487                 :            :                         __entry->error,
     488                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     489                 :            :                         (unsigned long long)__entry->dir,
     490                 :            :                         __get_str(name)
     491                 :            :                 )
     492                 :            : );
     493                 :            : 
     494                 :            : #define DEFINE_NFS_DIRECTORY_EVENT_DONE(name) \
     495                 :            :         DEFINE_EVENT(nfs_directory_event_done, name, \
     496                 :            :                         TP_PROTO( \
     497                 :            :                                 const struct inode *dir, \
     498                 :            :                                 const struct dentry *dentry, \
     499                 :            :                                 int error \
     500                 :            :                         ), \
     501                 :            :                         TP_ARGS(dir, dentry, error))
     502                 :            : 
     503   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT(nfs_mknod_enter);
                 [ #  # ]
     504   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_mknod_exit);
                 [ #  # ]
     505   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT(nfs_mkdir_enter);
                 [ #  # ]
     506   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_mkdir_exit);
                 [ #  # ]
     507   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT(nfs_rmdir_enter);
                 [ #  # ]
     508   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_rmdir_exit);
                 [ #  # ]
     509   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT(nfs_remove_enter);
                 [ #  # ]
     510   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_remove_exit);
                 [ #  # ]
     511   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT(nfs_unlink_enter);
                 [ #  # ]
     512   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_unlink_exit);
                 [ #  # ]
     513   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT(nfs_symlink_enter);
                 [ #  # ]
     514   [ #  #  #  # ]:          0 : DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_symlink_exit);
                 [ #  # ]
     515                 :            : 
     516 [ #  # ][ #  # ]:          0 : TRACE_EVENT(nfs_link_enter,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     517                 :            :                 TP_PROTO(
     518                 :            :                         const struct inode *inode,
     519                 :            :                         const struct inode *dir,
     520                 :            :                         const struct dentry *dentry
     521                 :            :                 ),
     522                 :            : 
     523                 :            :                 TP_ARGS(inode, dir, dentry),
     524                 :            : 
     525                 :            :                 TP_STRUCT__entry(
     526                 :            :                         __field(dev_t, dev)
     527                 :            :                         __field(u64, fileid)
     528                 :            :                         __field(u64, dir)
     529                 :            :                         __string(name, dentry->d_name.name)
     530                 :            :                 ),
     531                 :            : 
     532                 :            :                 TP_fast_assign(
     533                 :            :                         __entry->dev = inode->i_sb->s_dev;
     534                 :            :                         __entry->fileid = NFS_FILEID(inode);
     535                 :            :                         __entry->dir = NFS_FILEID(dir);
     536                 :            :                         __assign_str(name, dentry->d_name.name);
     537                 :            :                 ),
     538                 :            : 
     539                 :            :                 TP_printk(
     540                 :            :                         "fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
     541                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     542                 :            :                         __entry->fileid,
     543                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     544                 :            :                         (unsigned long long)__entry->dir,
     545                 :            :                         __get_str(name)
     546                 :            :                 )
     547                 :            : );
     548                 :            : 
     549 [ #  # ][ #  # ]:          0 : TRACE_EVENT(nfs_link_exit,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     550                 :            :                 TP_PROTO(
     551                 :            :                         const struct inode *inode,
     552                 :            :                         const struct inode *dir,
     553                 :            :                         const struct dentry *dentry,
     554                 :            :                         int error
     555                 :            :                 ),
     556                 :            : 
     557                 :            :                 TP_ARGS(inode, dir, dentry, error),
     558                 :            : 
     559                 :            :                 TP_STRUCT__entry(
     560                 :            :                         __field(int, error)
     561                 :            :                         __field(dev_t, dev)
     562                 :            :                         __field(u64, fileid)
     563                 :            :                         __field(u64, dir)
     564                 :            :                         __string(name, dentry->d_name.name)
     565                 :            :                 ),
     566                 :            : 
     567                 :            :                 TP_fast_assign(
     568                 :            :                         __entry->dev = inode->i_sb->s_dev;
     569                 :            :                         __entry->fileid = NFS_FILEID(inode);
     570                 :            :                         __entry->dir = NFS_FILEID(dir);
     571                 :            :                         __entry->error = error;
     572                 :            :                         __assign_str(name, dentry->d_name.name);
     573                 :            :                 ),
     574                 :            : 
     575                 :            :                 TP_printk(
     576                 :            :                         "error=%d fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
     577                 :            :                         __entry->error,
     578                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     579                 :            :                         __entry->fileid,
     580                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     581                 :            :                         (unsigned long long)__entry->dir,
     582                 :            :                         __get_str(name)
     583                 :            :                 )
     584                 :            : );
     585                 :            : 
     586 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_rename_event,
         [ #  # ][ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     587                 :            :                 TP_PROTO(
     588                 :            :                         const struct inode *old_dir,
     589                 :            :                         const struct dentry *old_dentry,
     590                 :            :                         const struct inode *new_dir,
     591                 :            :                         const struct dentry *new_dentry
     592                 :            :                 ),
     593                 :            : 
     594                 :            :                 TP_ARGS(old_dir, old_dentry, new_dir, new_dentry),
     595                 :            : 
     596                 :            :                 TP_STRUCT__entry(
     597                 :            :                         __field(dev_t, dev)
     598                 :            :                         __field(u64, old_dir)
     599                 :            :                         __field(u64, new_dir)
     600                 :            :                         __string(old_name, old_dentry->d_name.name)
     601                 :            :                         __string(new_name, new_dentry->d_name.name)
     602                 :            :                 ),
     603                 :            : 
     604                 :            :                 TP_fast_assign(
     605                 :            :                         __entry->dev = old_dir->i_sb->s_dev;
     606                 :            :                         __entry->old_dir = NFS_FILEID(old_dir);
     607                 :            :                         __entry->new_dir = NFS_FILEID(new_dir);
     608                 :            :                         __assign_str(old_name, old_dentry->d_name.name);
     609                 :            :                         __assign_str(new_name, new_dentry->d_name.name);
     610                 :            :                 ),
     611                 :            : 
     612                 :            :                 TP_printk(
     613                 :            :                         "old_name=%02x:%02x:%llu/%s new_name=%02x:%02x:%llu/%s",
     614                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     615                 :            :                         (unsigned long long)__entry->old_dir,
     616                 :            :                         __get_str(old_name),
     617                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     618                 :            :                         (unsigned long long)__entry->new_dir,
     619                 :            :                         __get_str(new_name)
     620                 :            :                 )
     621                 :            : );
     622                 :            : #define DEFINE_NFS_RENAME_EVENT(name) \
     623                 :            :         DEFINE_EVENT(nfs_rename_event, name, \
     624                 :            :                         TP_PROTO( \
     625                 :            :                                 const struct inode *old_dir, \
     626                 :            :                                 const struct dentry *old_dentry, \
     627                 :            :                                 const struct inode *new_dir, \
     628                 :            :                                 const struct dentry *new_dentry \
     629                 :            :                         ), \
     630                 :            :                         TP_ARGS(old_dir, old_dentry, new_dir, new_dentry))
     631                 :            : 
     632 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(nfs_rename_event_done,
         [ #  # ][ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     633                 :            :                 TP_PROTO(
     634                 :            :                         const struct inode *old_dir,
     635                 :            :                         const struct dentry *old_dentry,
     636                 :            :                         const struct inode *new_dir,
     637                 :            :                         const struct dentry *new_dentry,
     638                 :            :                         int error
     639                 :            :                 ),
     640                 :            : 
     641                 :            :                 TP_ARGS(old_dir, old_dentry, new_dir, new_dentry, error),
     642                 :            : 
     643                 :            :                 TP_STRUCT__entry(
     644                 :            :                         __field(dev_t, dev)
     645                 :            :                         __field(int, error)
     646                 :            :                         __field(u64, old_dir)
     647                 :            :                         __string(old_name, old_dentry->d_name.name)
     648                 :            :                         __field(u64, new_dir)
     649                 :            :                         __string(new_name, new_dentry->d_name.name)
     650                 :            :                 ),
     651                 :            : 
     652                 :            :                 TP_fast_assign(
     653                 :            :                         __entry->dev = old_dir->i_sb->s_dev;
     654                 :            :                         __entry->old_dir = NFS_FILEID(old_dir);
     655                 :            :                         __entry->new_dir = NFS_FILEID(new_dir);
     656                 :            :                         __entry->error = error;
     657                 :            :                         __assign_str(old_name, old_dentry->d_name.name);
     658                 :            :                         __assign_str(new_name, new_dentry->d_name.name);
     659                 :            :                 ),
     660                 :            : 
     661                 :            :                 TP_printk(
     662                 :            :                         "error=%d old_name=%02x:%02x:%llu/%s "
     663                 :            :                         "new_name=%02x:%02x:%llu/%s",
     664                 :            :                         __entry->error,
     665                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     666                 :            :                         (unsigned long long)__entry->old_dir,
     667                 :            :                         __get_str(old_name),
     668                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     669                 :            :                         (unsigned long long)__entry->new_dir,
     670                 :            :                         __get_str(new_name)
     671                 :            :                 )
     672                 :            : );
     673                 :            : #define DEFINE_NFS_RENAME_EVENT_DONE(name) \
     674                 :            :         DEFINE_EVENT(nfs_rename_event_done, name, \
     675                 :            :                         TP_PROTO( \
     676                 :            :                                 const struct inode *old_dir, \
     677                 :            :                                 const struct dentry *old_dentry, \
     678                 :            :                                 const struct inode *new_dir, \
     679                 :            :                                 const struct dentry *new_dentry, \
     680                 :            :                                 int error \
     681                 :            :                         ), \
     682                 :            :                         TP_ARGS(old_dir, old_dentry, new_dir, \
     683                 :            :                                 new_dentry, error))
     684                 :            : 
     685   [ #  #  #  # ]:          0 : DEFINE_NFS_RENAME_EVENT(nfs_rename_enter);
                 [ #  # ]
     686   [ #  #  #  # ]:          0 : DEFINE_NFS_RENAME_EVENT_DONE(nfs_rename_exit);
                 [ #  # ]
     687                 :            : 
     688   [ #  #  #  # ]:          0 : DEFINE_NFS_RENAME_EVENT_DONE(nfs_sillyrename_rename);
                 [ #  # ]
     689                 :            : 
     690   [ #  #  #  # ]:          0 : TRACE_EVENT(nfs_sillyrename_unlink,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     691                 :            :                 TP_PROTO(
     692                 :            :                         const struct nfs_unlinkdata *data,
     693                 :            :                         int error
     694                 :            :                 ),
     695                 :            : 
     696                 :            :                 TP_ARGS(data, error),
     697                 :            : 
     698                 :            :                 TP_STRUCT__entry(
     699                 :            :                         __field(dev_t, dev)
     700                 :            :                         __field(int, error)
     701                 :            :                         __field(u64, dir)
     702                 :            :                         __dynamic_array(char, name, data->args.name.len + 1)
     703                 :            :                 ),
     704                 :            : 
     705                 :            :                 TP_fast_assign(
     706                 :            :                         struct inode *dir = data->dir;
     707                 :            :                         size_t len = data->args.name.len;
     708                 :            :                         __entry->dev = dir->i_sb->s_dev;
     709                 :            :                         __entry->dir = NFS_FILEID(dir);
     710                 :            :                         __entry->error = error;
     711                 :            :                         memcpy(__get_dynamic_array(name),
     712                 :            :                                 data->args.name.name, len);
     713                 :            :                         ((char *)__get_dynamic_array(name))[len] = 0;
     714                 :            :                 ),
     715                 :            : 
     716                 :            :                 TP_printk(
     717                 :            :                         "error=%d name=%02x:%02x:%llu/%s",
     718                 :            :                         __entry->error,
     719                 :            :                         MAJOR(__entry->dev), MINOR(__entry->dev),
     720                 :            :                         (unsigned long long)__entry->dir,
     721                 :            :                         __get_str(name)
     722                 :            :                 )
     723                 :            : );
     724                 :            : #endif /* _TRACE_NFS_H */
     725                 :            : 
     726                 :            : #undef TRACE_INCLUDE_PATH
     727                 :            : #define TRACE_INCLUDE_PATH .
     728                 :            : #define TRACE_INCLUDE_FILE nfstrace
     729                 :            : /* This part must be outside protection */
     730                 :            : #include <trace/define_trace.h>

Generated by: LCOV version 1.9