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

Generated by: LCOV version 1.9