| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Copyright (c) 2013 Trond Myklebust <Trond.Myklebust@netapp.com>
- */
- #undef TRACE_SYSTEM
- #define TRACE_SYSTEM nfs
- #if !defined(_TRACE_NFS_H) || defined(TRACE_HEADER_MULTI_READ)
- #define _TRACE_NFS_H
- #include <linux/tracepoint.h>
- #include <linux/iversion.h>
- #include <trace/misc/fs.h>
- #include <trace/misc/nfs.h>
- #include <trace/misc/sunrpc.h>
- #define nfs_show_cache_validity(v) \
- __print_flags(v, "|", \
- { NFS_INO_INVALID_DATA, "INVALID_DATA" }, \
- { NFS_INO_INVALID_ATIME, "INVALID_ATIME" }, \
- { NFS_INO_INVALID_ACCESS, "INVALID_ACCESS" }, \
- { NFS_INO_INVALID_ACL, "INVALID_ACL" }, \
- { NFS_INO_REVAL_FORCED, "REVAL_FORCED" }, \
- { NFS_INO_INVALID_LABEL, "INVALID_LABEL" }, \
- { NFS_INO_INVALID_CHANGE, "INVALID_CHANGE" }, \
- { NFS_INO_INVALID_CTIME, "INVALID_CTIME" }, \
- { NFS_INO_INVALID_MTIME, "INVALID_MTIME" }, \
- { NFS_INO_INVALID_SIZE, "INVALID_SIZE" }, \
- { NFS_INO_INVALID_OTHER, "INVALID_OTHER" }, \
- { NFS_INO_DATA_INVAL_DEFER, "DATA_INVAL_DEFER" }, \
- { NFS_INO_INVALID_BLOCKS, "INVALID_BLOCKS" }, \
- { NFS_INO_INVALID_XATTR, "INVALID_XATTR" }, \
- { NFS_INO_INVALID_NLINK, "INVALID_NLINK" }, \
- { NFS_INO_INVALID_MODE, "INVALID_MODE" }, \
- { NFS_INO_INVALID_BTIME, "INVALID_BTIME" })
- #define nfs_show_nfsi_flags(v) \
- __print_flags(v, "|", \
- { BIT(NFS_INO_STALE), "STALE" }, \
- { BIT(NFS_INO_ACL_LRU_SET), "ACL_LRU_SET" }, \
- { BIT(NFS_INO_INVALIDATING), "INVALIDATING" }, \
- { BIT(NFS_INO_LAYOUTCOMMIT), "NEED_LAYOUTCOMMIT" }, \
- { BIT(NFS_INO_LAYOUTCOMMITTING), "LAYOUTCOMMIT" }, \
- { BIT(NFS_INO_LAYOUTSTATS), "LAYOUTSTATS" }, \
- { BIT(NFS_INO_ODIRECT), "ODIRECT" })
- #define nfs_show_wb_flags(v) \
- __print_flags(v, "|", \
- { BIT(PG_BUSY), "BUSY" }, \
- { BIT(PG_MAPPED), "MAPPED" }, \
- { BIT(PG_FOLIO), "FOLIO" }, \
- { BIT(PG_CLEAN), "CLEAN" }, \
- { BIT(PG_COMMIT_TO_DS), "COMMIT_TO_DS" }, \
- { BIT(PG_INODE_REF), "INODE_REF" }, \
- { BIT(PG_HEADLOCK), "HEADLOCK" }, \
- { BIT(PG_TEARDOWN), "TEARDOWN" }, \
- { BIT(PG_UNLOCKPAGE), "UNLOCKPAGE" }, \
- { BIT(PG_UPTODATE), "UPTODATE" }, \
- { BIT(PG_WB_END), "WB_END" }, \
- { BIT(PG_REMOVE), "REMOVE" }, \
- { BIT(PG_CONTENDED1), "CONTENDED1" }, \
- { BIT(PG_CONTENDED2), "CONTENDED2" })
- DECLARE_EVENT_CLASS(nfs_inode_event,
- TP_PROTO(
- const struct inode *inode
- ),
- TP_ARGS(inode),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(u64, version)
- __field(unsigned long, cache_validity)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->cache_validity = nfsi->cache_validity;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu cache_validity=0x%lx (%s)",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (unsigned long long)__entry->version,
- __entry->cache_validity,
- nfs_show_cache_validity(__entry->cache_validity)
- )
- );
- DECLARE_EVENT_CLASS(nfs_inode_event_done,
- TP_PROTO(
- const struct inode *inode,
- int error
- ),
- TP_ARGS(inode, error),
- TP_STRUCT__entry(
- __field(unsigned long, error)
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(unsigned char, type)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, size)
- __field(unsigned long, nfsi_flags)
- __field(unsigned long, cache_validity)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->error = error < 0 ? -error : 0;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->type = nfs_umode_to_dtype(inode->i_mode);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->size = i_size_read(inode);
- __entry->nfsi_flags = nfsi->flags;
- __entry->cache_validity = nfsi->cache_validity;
- ),
- TP_printk(
- "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
- "type=%u (%s) version=%llu size=%lld "
- "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s)",
- -__entry->error, show_nfs_status(__entry->error),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- __entry->type,
- show_fs_dirent_type(__entry->type),
- (unsigned long long)__entry->version,
- (long long)__entry->size,
- __entry->cache_validity,
- nfs_show_cache_validity(__entry->cache_validity),
- __entry->nfsi_flags,
- nfs_show_nfsi_flags(__entry->nfsi_flags)
- )
- );
- #define DEFINE_NFS_INODE_EVENT(name) \
- DEFINE_EVENT(nfs_inode_event, name, \
- TP_PROTO( \
- const struct inode *inode \
- ), \
- TP_ARGS(inode))
- #define DEFINE_NFS_INODE_EVENT_DONE(name) \
- DEFINE_EVENT(nfs_inode_event_done, name, \
- TP_PROTO( \
- const struct inode *inode, \
- int error \
- ), \
- TP_ARGS(inode, error))
- DEFINE_NFS_INODE_EVENT(nfs_set_inode_stale);
- DEFINE_NFS_INODE_EVENT(nfs_refresh_inode_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_refresh_inode_exit);
- DEFINE_NFS_INODE_EVENT(nfs_revalidate_inode_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_revalidate_inode_exit);
- DEFINE_NFS_INODE_EVENT(nfs_invalidate_mapping_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_invalidate_mapping_exit);
- DEFINE_NFS_INODE_EVENT(nfs_getattr_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_getattr_exit);
- DEFINE_NFS_INODE_EVENT(nfs_setattr_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_setattr_exit);
- DEFINE_NFS_INODE_EVENT(nfs_writeback_inode_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_writeback_inode_exit);
- DEFINE_NFS_INODE_EVENT(nfs_fsync_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_fsync_exit);
- DEFINE_NFS_INODE_EVENT(nfs_access_enter);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_set_cache_invalid);
- DEFINE_NFS_INODE_EVENT(nfs_readdir_force_readdirplus);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_readdir_cache_fill_done);
- DEFINE_NFS_INODE_EVENT_DONE(nfs_readdir_uncached_done);
- TRACE_EVENT(nfs_access_exit,
- TP_PROTO(
- const struct inode *inode,
- unsigned int mask,
- unsigned int permitted,
- int error
- ),
- TP_ARGS(inode, mask, permitted, error),
- TP_STRUCT__entry(
- __field(unsigned long, error)
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(unsigned char, type)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, size)
- __field(unsigned long, nfsi_flags)
- __field(unsigned long, cache_validity)
- __field(unsigned int, mask)
- __field(unsigned int, permitted)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->error = error < 0 ? -error : 0;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->type = nfs_umode_to_dtype(inode->i_mode);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->size = i_size_read(inode);
- __entry->nfsi_flags = nfsi->flags;
- __entry->cache_validity = nfsi->cache_validity;
- __entry->mask = mask;
- __entry->permitted = permitted;
- ),
- TP_printk(
- "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
- "type=%u (%s) version=%llu size=%lld "
- "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s) "
- "mask=0x%x permitted=0x%x",
- -__entry->error, show_nfs_status(__entry->error),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- __entry->type,
- show_fs_dirent_type(__entry->type),
- (unsigned long long)__entry->version,
- (long long)__entry->size,
- __entry->cache_validity,
- nfs_show_cache_validity(__entry->cache_validity),
- __entry->nfsi_flags,
- nfs_show_nfsi_flags(__entry->nfsi_flags),
- __entry->mask, __entry->permitted
- )
- );
- DECLARE_EVENT_CLASS(nfs_update_size_class,
- TP_PROTO(
- const struct inode *inode,
- loff_t new_size
- ),
- TP_ARGS(inode, new_size),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, cur_size)
- __field(loff_t, new_size)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->fileid = nfsi->fileid;
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->cur_size = i_size_read(inode);
- __entry->new_size = new_size;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu cursize=%lld newsize=%lld",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->version,
- __entry->cur_size, __entry->new_size
- )
- );
- #define DEFINE_NFS_UPDATE_SIZE_EVENT(name) \
- DEFINE_EVENT(nfs_update_size_class, nfs_size_##name, \
- TP_PROTO( \
- const struct inode *inode, \
- loff_t new_size \
- ), \
- TP_ARGS(inode, new_size))
- DEFINE_NFS_UPDATE_SIZE_EVENT(truncate);
- DEFINE_NFS_UPDATE_SIZE_EVENT(truncate_folio);
- DEFINE_NFS_UPDATE_SIZE_EVENT(wcc);
- DEFINE_NFS_UPDATE_SIZE_EVENT(update);
- DEFINE_NFS_UPDATE_SIZE_EVENT(grow);
- DECLARE_EVENT_CLASS(nfs_inode_range_event,
- TP_PROTO(
- const struct inode *inode,
- loff_t range_start,
- loff_t range_end
- ),
- TP_ARGS(inode, range_start, range_end),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, range_start)
- __field(loff_t, range_end)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->fileid = nfsi->fileid;
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->range_start = range_start;
- __entry->range_end = range_end;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
- "range=[%lld, %lld]",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->version,
- __entry->range_start, __entry->range_end
- )
- );
- #define DEFINE_NFS_INODE_RANGE_EVENT(name) \
- DEFINE_EVENT(nfs_inode_range_event, name, \
- TP_PROTO( \
- const struct inode *inode, \
- loff_t range_start, \
- loff_t range_end \
- ), \
- TP_ARGS(inode, range_start, range_end))
- DEFINE_NFS_INODE_RANGE_EVENT(nfs_readdir_invalidate_cache_range);
- DECLARE_EVENT_CLASS(nfs_readdir_event,
- TP_PROTO(
- const struct file *file,
- const __be32 *verifier,
- u64 cookie,
- pgoff_t page_index,
- unsigned int dtsize
- ),
- TP_ARGS(file, verifier, cookie, page_index, dtsize),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(u64, version)
- __array(char, verifier, NFS4_VERIFIER_SIZE)
- __field(u64, cookie)
- __field(pgoff_t, index)
- __field(unsigned int, dtsize)
- ),
- TP_fast_assign(
- const struct inode *dir = file_inode(file);
- const struct nfs_inode *nfsi = NFS_I(dir);
- __entry->dev = dir->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->version = inode_peek_iversion_raw(dir);
- if (cookie != 0)
- memcpy(__entry->verifier, verifier,
- NFS4_VERIFIER_SIZE);
- else
- memset(__entry->verifier, 0,
- NFS4_VERIFIER_SIZE);
- __entry->cookie = cookie;
- __entry->index = page_index;
- __entry->dtsize = dtsize;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
- "cookie=%s:0x%llx cache_index=%lu dtsize=%u",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid, __entry->fhandle,
- __entry->version, show_nfs4_verifier(__entry->verifier),
- (unsigned long long)__entry->cookie, __entry->index,
- __entry->dtsize
- )
- );
- #define DEFINE_NFS_READDIR_EVENT(name) \
- DEFINE_EVENT(nfs_readdir_event, name, \
- TP_PROTO( \
- const struct file *file, \
- const __be32 *verifier, \
- u64 cookie, \
- pgoff_t page_index, \
- unsigned int dtsize \
- ), \
- TP_ARGS(file, verifier, cookie, page_index, dtsize))
- DEFINE_NFS_READDIR_EVENT(nfs_readdir_cache_fill);
- DEFINE_NFS_READDIR_EVENT(nfs_readdir_uncached);
- DECLARE_EVENT_CLASS(nfs_lookup_event,
- TP_PROTO(
- const struct inode *dir,
- const struct dentry *dentry,
- unsigned int flags
- ),
- TP_ARGS(dir, dentry, flags),
- TP_STRUCT__entry(
- __field(unsigned long, flags)
- __field(dev_t, dev)
- __field(u64, dir)
- __field(u64, fileid)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->flags = flags;
- __entry->fileid = d_is_negative(dentry) ? 0 : NFS_FILEID(d_inode(dentry));
- __assign_str(name);
- ),
- TP_printk(
- "flags=0x%lx (%s) name=%02x:%02x:%llu/%s fileid=%llu",
- __entry->flags,
- show_fs_lookup_flags(__entry->flags),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name),
- __entry->fileid
- )
- );
- #define DEFINE_NFS_LOOKUP_EVENT(name) \
- DEFINE_EVENT(nfs_lookup_event, name, \
- TP_PROTO( \
- const struct inode *dir, \
- const struct dentry *dentry, \
- unsigned int flags \
- ), \
- TP_ARGS(dir, dentry, flags))
- DECLARE_EVENT_CLASS(nfs_lookup_event_done,
- TP_PROTO(
- const struct inode *dir,
- const struct dentry *dentry,
- unsigned int flags,
- int error
- ),
- TP_ARGS(dir, dentry, flags, error),
- TP_STRUCT__entry(
- __field(unsigned long, error)
- __field(unsigned long, flags)
- __field(dev_t, dev)
- __field(u64, dir)
- __field(u64, fileid)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->error = error < 0 ? -error : 0;
- __entry->flags = flags;
- __entry->fileid = d_is_negative(dentry) ? 0 : NFS_FILEID(d_inode(dentry));
- __assign_str(name);
- ),
- TP_printk(
- "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s fileid=%llu",
- -__entry->error, show_nfs_status(__entry->error),
- __entry->flags,
- show_fs_lookup_flags(__entry->flags),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name),
- __entry->fileid
- )
- );
- #define DEFINE_NFS_LOOKUP_EVENT_DONE(name) \
- DEFINE_EVENT(nfs_lookup_event_done, name, \
- TP_PROTO( \
- const struct inode *dir, \
- const struct dentry *dentry, \
- unsigned int flags, \
- int error \
- ), \
- TP_ARGS(dir, dentry, flags, error))
- DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_enter);
- DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
- DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
- DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
- DEFINE_NFS_LOOKUP_EVENT(nfs_readdir_lookup);
- DEFINE_NFS_LOOKUP_EVENT(nfs_readdir_lookup_revalidate_failed);
- DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_readdir_lookup_revalidate);
- TRACE_EVENT(nfs_atomic_open_enter,
- TP_PROTO(
- const struct inode *dir,
- const struct nfs_open_context *ctx,
- unsigned int flags
- ),
- TP_ARGS(dir, ctx, flags),
- TP_STRUCT__entry(
- __field(unsigned long, flags)
- __field(unsigned long, fmode)
- __field(dev_t, dev)
- __field(u64, dir)
- __string(name, ctx->dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->flags = flags;
- __entry->fmode = (__force unsigned long)ctx->mode;
- __assign_str(name);
- ),
- TP_printk(
- "flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s",
- __entry->flags,
- show_fs_fcntl_open_flags(__entry->flags),
- show_fs_fmode_flags(__entry->fmode),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- TRACE_EVENT(nfs_atomic_open_exit,
- TP_PROTO(
- const struct inode *dir,
- const struct nfs_open_context *ctx,
- unsigned int flags,
- int error
- ),
- TP_ARGS(dir, ctx, flags, error),
- TP_STRUCT__entry(
- __field(unsigned long, error)
- __field(unsigned long, flags)
- __field(unsigned long, fmode)
- __field(dev_t, dev)
- __field(u64, dir)
- __string(name, ctx->dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->error = -error;
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->flags = flags;
- __entry->fmode = (__force unsigned long)ctx->mode;
- __assign_str(name);
- ),
- TP_printk(
- "error=%ld (%s) flags=0x%lx (%s) fmode=%s "
- "name=%02x:%02x:%llu/%s",
- -__entry->error, show_nfs_status(__entry->error),
- __entry->flags,
- show_fs_fcntl_open_flags(__entry->flags),
- show_fs_fmode_flags(__entry->fmode),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- TRACE_EVENT(nfs_create_enter,
- TP_PROTO(
- const struct inode *dir,
- const struct dentry *dentry,
- unsigned int flags
- ),
- TP_ARGS(dir, dentry, flags),
- TP_STRUCT__entry(
- __field(unsigned long, flags)
- __field(dev_t, dev)
- __field(u64, dir)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->flags = flags;
- __assign_str(name);
- ),
- TP_printk(
- "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
- __entry->flags,
- show_fs_fcntl_open_flags(__entry->flags),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- TRACE_EVENT(nfs_create_exit,
- TP_PROTO(
- const struct inode *dir,
- const struct dentry *dentry,
- unsigned int flags,
- int error
- ),
- TP_ARGS(dir, dentry, flags, error),
- TP_STRUCT__entry(
- __field(unsigned long, error)
- __field(unsigned long, flags)
- __field(dev_t, dev)
- __field(u64, dir)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->error = -error;
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->flags = flags;
- __assign_str(name);
- ),
- TP_printk(
- "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
- -__entry->error, show_nfs_status(__entry->error),
- __entry->flags,
- show_fs_fcntl_open_flags(__entry->flags),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- DECLARE_EVENT_CLASS(nfs_directory_event,
- TP_PROTO(
- const struct inode *dir,
- const struct dentry *dentry
- ),
- TP_ARGS(dir, dentry),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u64, dir)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __assign_str(name);
- ),
- TP_printk(
- "name=%02x:%02x:%llu/%s",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- #define DEFINE_NFS_DIRECTORY_EVENT(name) \
- DEFINE_EVENT(nfs_directory_event, name, \
- TP_PROTO( \
- const struct inode *dir, \
- const struct dentry *dentry \
- ), \
- TP_ARGS(dir, dentry))
- DECLARE_EVENT_CLASS(nfs_directory_event_done,
- TP_PROTO(
- const struct inode *dir,
- const struct dentry *dentry,
- int error
- ),
- TP_ARGS(dir, dentry, error),
- TP_STRUCT__entry(
- __field(unsigned long, error)
- __field(dev_t, dev)
- __field(u64, dir)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->error = error < 0 ? -error : 0;
- __assign_str(name);
- ),
- TP_printk(
- "error=%ld (%s) name=%02x:%02x:%llu/%s",
- -__entry->error, show_nfs_status(__entry->error),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- #define DEFINE_NFS_DIRECTORY_EVENT_DONE(name) \
- DEFINE_EVENT(nfs_directory_event_done, name, \
- TP_PROTO( \
- const struct inode *dir, \
- const struct dentry *dentry, \
- int error \
- ), \
- TP_ARGS(dir, dentry, error))
- DEFINE_NFS_DIRECTORY_EVENT(nfs_mknod_enter);
- DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_mknod_exit);
- DEFINE_NFS_DIRECTORY_EVENT(nfs_mkdir_enter);
- DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_mkdir_exit);
- DEFINE_NFS_DIRECTORY_EVENT(nfs_rmdir_enter);
- DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_rmdir_exit);
- DEFINE_NFS_DIRECTORY_EVENT(nfs_remove_enter);
- DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_remove_exit);
- DEFINE_NFS_DIRECTORY_EVENT(nfs_unlink_enter);
- DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_unlink_exit);
- DEFINE_NFS_DIRECTORY_EVENT(nfs_symlink_enter);
- DEFINE_NFS_DIRECTORY_EVENT_DONE(nfs_symlink_exit);
- TRACE_EVENT(nfs_link_enter,
- TP_PROTO(
- const struct inode *inode,
- const struct inode *dir,
- const struct dentry *dentry
- ),
- TP_ARGS(inode, dir, dentry),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u64, fileid)
- __field(u64, dir)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = NFS_FILEID(inode);
- __entry->dir = NFS_FILEID(dir);
- __assign_str(name);
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- __entry->fileid,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- TRACE_EVENT(nfs_link_exit,
- TP_PROTO(
- const struct inode *inode,
- const struct inode *dir,
- const struct dentry *dentry,
- int error
- ),
- TP_ARGS(inode, dir, dentry, error),
- TP_STRUCT__entry(
- __field(unsigned long, error)
- __field(dev_t, dev)
- __field(u64, fileid)
- __field(u64, dir)
- __string(name, dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = NFS_FILEID(inode);
- __entry->dir = NFS_FILEID(dir);
- __entry->error = error < 0 ? -error : 0;
- __assign_str(name);
- ),
- TP_printk(
- "error=%ld (%s) fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
- -__entry->error, show_nfs_status(__entry->error),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- __entry->fileid,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- DECLARE_EVENT_CLASS(nfs_rename_event,
- TP_PROTO(
- const struct inode *old_dir,
- const struct dentry *old_dentry,
- const struct inode *new_dir,
- const struct dentry *new_dentry
- ),
- TP_ARGS(old_dir, old_dentry, new_dir, new_dentry),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u64, old_dir)
- __field(u64, new_dir)
- __string(old_name, old_dentry->d_name.name)
- __string(new_name, new_dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = old_dir->i_sb->s_dev;
- __entry->old_dir = NFS_FILEID(old_dir);
- __entry->new_dir = NFS_FILEID(new_dir);
- __assign_str(old_name);
- __assign_str(new_name);
- ),
- TP_printk(
- "old_name=%02x:%02x:%llu/%s new_name=%02x:%02x:%llu/%s",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->old_dir,
- __get_str(old_name),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->new_dir,
- __get_str(new_name)
- )
- );
- #define DEFINE_NFS_RENAME_EVENT(name) \
- DEFINE_EVENT(nfs_rename_event, name, \
- TP_PROTO( \
- const struct inode *old_dir, \
- const struct dentry *old_dentry, \
- const struct inode *new_dir, \
- const struct dentry *new_dentry \
- ), \
- TP_ARGS(old_dir, old_dentry, new_dir, new_dentry))
- DECLARE_EVENT_CLASS(nfs_rename_event_done,
- TP_PROTO(
- const struct inode *old_dir,
- const struct dentry *old_dentry,
- const struct inode *new_dir,
- const struct dentry *new_dentry,
- int error
- ),
- TP_ARGS(old_dir, old_dentry, new_dir, new_dentry, error),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(unsigned long, error)
- __field(u64, old_dir)
- __string(old_name, old_dentry->d_name.name)
- __field(u64, new_dir)
- __string(new_name, new_dentry->d_name.name)
- ),
- TP_fast_assign(
- __entry->dev = old_dir->i_sb->s_dev;
- __entry->error = -error;
- __entry->old_dir = NFS_FILEID(old_dir);
- __entry->new_dir = NFS_FILEID(new_dir);
- __assign_str(old_name);
- __assign_str(new_name);
- ),
- TP_printk(
- "error=%ld (%s) old_name=%02x:%02x:%llu/%s "
- "new_name=%02x:%02x:%llu/%s",
- -__entry->error, show_nfs_status(__entry->error),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->old_dir,
- __get_str(old_name),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->new_dir,
- __get_str(new_name)
- )
- );
- #define DEFINE_NFS_RENAME_EVENT_DONE(name) \
- DEFINE_EVENT(nfs_rename_event_done, name, \
- TP_PROTO( \
- const struct inode *old_dir, \
- const struct dentry *old_dentry, \
- const struct inode *new_dir, \
- const struct dentry *new_dentry, \
- int error \
- ), \
- TP_ARGS(old_dir, old_dentry, new_dir, \
- new_dentry, error))
- DEFINE_NFS_RENAME_EVENT(nfs_rename_enter);
- DEFINE_NFS_RENAME_EVENT_DONE(nfs_rename_exit);
- DEFINE_NFS_RENAME_EVENT_DONE(nfs_async_rename_done);
- TRACE_EVENT(nfs_sillyrename_unlink,
- TP_PROTO(
- const struct nfs_unlinkdata *data,
- int error
- ),
- TP_ARGS(data, error),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(unsigned long, error)
- __field(u64, dir)
- __dynamic_array(char, name, data->args.name.len + 1)
- ),
- TP_fast_assign(
- struct inode *dir = d_inode(data->dentry->d_parent);
- size_t len = data->args.name.len;
- __entry->dev = dir->i_sb->s_dev;
- __entry->dir = NFS_FILEID(dir);
- __entry->error = -error;
- memcpy(__get_str(name),
- data->args.name.name, len);
- __get_str(name)[len] = 0;
- ),
- TP_printk(
- "error=%ld (%s) name=%02x:%02x:%llu/%s",
- -__entry->error, show_nfs_status(__entry->error),
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->dir,
- __get_str(name)
- )
- );
- DECLARE_EVENT_CLASS(nfs_folio_event,
- TP_PROTO(
- const struct inode *inode,
- loff_t offset,
- size_t count
- ),
- TP_ARGS(inode, offset, count),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, offset)
- __field(size_t, count)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->offset = offset;
- __entry->count = count;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
- "offset=%lld count=%zu",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->version,
- __entry->offset, __entry->count
- )
- );
- #define DEFINE_NFS_FOLIO_EVENT(name) \
- DEFINE_EVENT(nfs_folio_event, name, \
- TP_PROTO( \
- const struct inode *inode, \
- loff_t offset, \
- size_t count \
- ), \
- TP_ARGS(inode, offset, count))
- DECLARE_EVENT_CLASS(nfs_folio_event_done,
- TP_PROTO(
- const struct inode *inode,
- loff_t offset,
- size_t count,
- int ret
- ),
- TP_ARGS(inode, offset, count, ret),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(int, ret)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, offset)
- __field(size_t, count)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->offset = offset;
- __entry->count = count;
- __entry->ret = ret;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
- "offset=%lld count=%zu ret=%d",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->version,
- __entry->offset, __entry->count, __entry->ret
- )
- );
- #define DEFINE_NFS_FOLIO_EVENT_DONE(name) \
- DEFINE_EVENT(nfs_folio_event_done, name, \
- TP_PROTO( \
- const struct inode *inode, \
- loff_t offset, \
- size_t count, \
- int ret \
- ), \
- TP_ARGS(inode, offset, count, ret))
- DEFINE_NFS_FOLIO_EVENT(nfs_aop_readpage);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_aop_readpage_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_writeback_folio_reclaim);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_writeback_folio_reclaim_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_writeback_folio);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_writeback_folio_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_invalidate_folio);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_launder_folio_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_try_to_update_request);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_try_to_update_request_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_update_folio);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_update_folio_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_write_begin);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_write_begin_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_write_end);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_write_end_done);
- DEFINE_NFS_FOLIO_EVENT(nfs_writepages);
- DEFINE_NFS_FOLIO_EVENT_DONE(nfs_writepages_done);
- DECLARE_EVENT_CLASS(nfs_kiocb_event,
- TP_PROTO(
- const struct kiocb *iocb,
- const struct iov_iter *iter
- ),
- TP_ARGS(iocb, iter),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, offset)
- __field(size_t, count)
- __field(int, flags)
- ),
- TP_fast_assign(
- const struct inode *inode = file_inode(iocb->ki_filp);
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->offset = iocb->ki_pos;
- __entry->count = iov_iter_count(iter);
- __entry->flags = iocb->ki_flags;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu offset=%lld count=%zu ki_flags=%s",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->version,
- __entry->offset, __entry->count,
- __print_flags(__entry->flags, "|", TRACE_IOCB_STRINGS)
- )
- );
- #define DEFINE_NFS_KIOCB_EVENT(name) \
- DEFINE_EVENT(nfs_kiocb_event, name, \
- TP_PROTO( \
- const struct kiocb *iocb, \
- const struct iov_iter *iter \
- ), \
- TP_ARGS(iocb, iter))
- DEFINE_NFS_KIOCB_EVENT(nfs_file_read);
- DEFINE_NFS_KIOCB_EVENT(nfs_file_write);
- TRACE_EVENT(nfs_aop_readahead,
- TP_PROTO(
- const struct inode *inode,
- loff_t pos,
- unsigned int nr_pages
- ),
- TP_ARGS(inode, pos, nr_pages),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, offset)
- __field(unsigned int, nr_pages)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->offset = pos;
- __entry->nr_pages = nr_pages;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu offset=%lld nr_pages=%u",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->version,
- __entry->offset, __entry->nr_pages
- )
- );
- TRACE_EVENT(nfs_aop_readahead_done,
- TP_PROTO(
- const struct inode *inode,
- unsigned int nr_pages,
- int ret
- ),
- TP_ARGS(inode, nr_pages, ret),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(int, ret)
- __field(u64, fileid)
- __field(u64, version)
- __field(loff_t, offset)
- __field(unsigned int, nr_pages)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->version = inode_peek_iversion_raw(inode);
- __entry->nr_pages = nr_pages;
- __entry->ret = ret;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu nr_pages=%u ret=%d",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->version,
- __entry->nr_pages, __entry->ret
- )
- );
- TRACE_EVENT(nfs_initiate_read,
- TP_PROTO(
- const struct nfs_pgio_header *hdr
- ),
- TP_ARGS(hdr),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(u32, count)
- ),
- TP_fast_assign(
- const struct inode *inode = hdr->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = hdr->args.fh ?
- hdr->args.fh : &nfsi->fh;
- __entry->offset = hdr->args.offset;
- __entry->count = hdr->args.count;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (long long)__entry->offset, __entry->count
- )
- );
- TRACE_EVENT(nfs_readpage_done,
- TP_PROTO(
- const struct rpc_task *task,
- const struct nfs_pgio_header *hdr
- ),
- TP_ARGS(task, hdr),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(u32, arg_count)
- __field(u32, res_count)
- __field(bool, eof)
- __field(int, error)
- ),
- TP_fast_assign(
- const struct inode *inode = hdr->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = hdr->args.fh ?
- hdr->args.fh : &nfsi->fh;
- __entry->error = task->tk_status;
- __entry->offset = hdr->args.offset;
- __entry->arg_count = hdr->args.count;
- __entry->res_count = hdr->res.count;
- __entry->eof = hdr->res.eof;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u res=%u%s", __entry->error,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (long long)__entry->offset, __entry->arg_count,
- __entry->res_count, __entry->eof ? " eof" : ""
- )
- );
- TRACE_EVENT(nfs_readpage_short,
- TP_PROTO(
- const struct rpc_task *task,
- const struct nfs_pgio_header *hdr
- ),
- TP_ARGS(task, hdr),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(u32, arg_count)
- __field(u32, res_count)
- __field(bool, eof)
- __field(int, error)
- ),
- TP_fast_assign(
- const struct inode *inode = hdr->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = hdr->args.fh ?
- hdr->args.fh : &nfsi->fh;
- __entry->error = task->tk_status;
- __entry->offset = hdr->args.offset;
- __entry->arg_count = hdr->args.count;
- __entry->res_count = hdr->res.count;
- __entry->eof = hdr->res.eof;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u res=%u%s", __entry->error,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (long long)__entry->offset, __entry->arg_count,
- __entry->res_count, __entry->eof ? " eof" : ""
- )
- );
- TRACE_EVENT(nfs_pgio_error,
- TP_PROTO(
- const struct nfs_pgio_header *hdr,
- int error,
- loff_t pos
- ),
- TP_ARGS(hdr, error, pos),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(u32, arg_count)
- __field(u32, res_count)
- __field(loff_t, pos)
- __field(int, error)
- ),
- TP_fast_assign(
- const struct inode *inode = hdr->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = hdr->args.fh ?
- hdr->args.fh : &nfsi->fh;
- __entry->error = error;
- __entry->offset = hdr->args.offset;
- __entry->arg_count = hdr->args.count;
- __entry->res_count = hdr->res.count;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk("error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u res=%u pos=%llu", __entry->error,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid, __entry->fhandle,
- (long long)__entry->offset, __entry->arg_count, __entry->res_count,
- __entry->pos
- )
- );
- TRACE_EVENT(nfs_initiate_write,
- TP_PROTO(
- const struct nfs_pgio_header *hdr
- ),
- TP_ARGS(hdr),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(u32, count)
- __field(unsigned long, stable)
- ),
- TP_fast_assign(
- const struct inode *inode = hdr->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = hdr->args.fh ?
- hdr->args.fh : &nfsi->fh;
- __entry->offset = hdr->args.offset;
- __entry->count = hdr->args.count;
- __entry->stable = hdr->args.stable;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u stable=%s",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (long long)__entry->offset, __entry->count,
- show_nfs_stable_how(__entry->stable)
- )
- );
- TRACE_EVENT(nfs_writeback_done,
- TP_PROTO(
- const struct rpc_task *task,
- const struct nfs_pgio_header *hdr
- ),
- TP_ARGS(task, hdr),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(u32, arg_count)
- __field(u32, res_count)
- __field(int, error)
- __field(unsigned long, stable)
- __array(char, verifier, NFS4_VERIFIER_SIZE)
- ),
- TP_fast_assign(
- const struct inode *inode = hdr->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = hdr->args.fh ?
- hdr->args.fh : &nfsi->fh;
- const struct nfs_writeverf *verf = hdr->res.verf;
- __entry->error = task->tk_status;
- __entry->offset = hdr->args.offset;
- __entry->arg_count = hdr->args.count;
- __entry->res_count = hdr->res.count;
- __entry->stable = verf->committed;
- memcpy(__entry->verifier,
- &verf->verifier,
- NFS4_VERIFIER_SIZE);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u res=%u stable=%s "
- "verifier=%s", __entry->error,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (long long)__entry->offset, __entry->arg_count,
- __entry->res_count,
- show_nfs_stable_how(__entry->stable),
- show_nfs4_verifier(__entry->verifier)
- )
- );
- DECLARE_EVENT_CLASS(nfs_page_class,
- TP_PROTO(
- const struct nfs_page *req
- ),
- TP_ARGS(req),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(const struct nfs_page *__private, req)
- __field(loff_t, offset)
- __field(unsigned int, count)
- __field(unsigned long, flags)
- ),
- TP_fast_assign(
- const struct inode *inode = folio_inode(req->wb_folio);
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->req = req;
- __entry->offset = req_offset(req);
- __entry->count = req->wb_bytes;
- __entry->flags = req->wb_flags;
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x req=%p offset=%lld count=%u flags=%s",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid, __entry->fhandle,
- __entry->req, __entry->offset, __entry->count,
- nfs_show_wb_flags(__entry->flags)
- )
- );
- #define DEFINE_NFS_PAGE_EVENT(name) \
- DEFINE_EVENT(nfs_page_class, name, \
- TP_PROTO( \
- const struct nfs_page *req \
- ), \
- TP_ARGS(req))
- DEFINE_NFS_PAGE_EVENT(nfs_writepage_setup);
- DEFINE_NFS_PAGE_EVENT(nfs_do_writepage);
- DECLARE_EVENT_CLASS(nfs_page_error_class,
- TP_PROTO(
- const struct inode *inode,
- const struct nfs_page *req,
- int error
- ),
- TP_ARGS(inode, req, error),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(unsigned int, count)
- __field(int, error)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
- __entry->offset = req_offset(req);
- __entry->count = req->wb_bytes;
- __entry->error = error;
- ),
- TP_printk(
- "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u", __entry->error,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->offset,
- __entry->count
- )
- );
- #define DEFINE_NFS_PAGEERR_EVENT(name) \
- DEFINE_EVENT(nfs_page_error_class, name, \
- TP_PROTO( \
- const struct inode *inode, \
- const struct nfs_page *req, \
- int error \
- ), \
- TP_ARGS(inode, req, error))
- DEFINE_NFS_PAGEERR_EVENT(nfs_write_error);
- DEFINE_NFS_PAGEERR_EVENT(nfs_comp_error);
- DEFINE_NFS_PAGEERR_EVENT(nfs_commit_error);
- TRACE_EVENT(nfs_initiate_commit,
- TP_PROTO(
- const struct nfs_commit_data *data
- ),
- TP_ARGS(data),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(u32, count)
- ),
- TP_fast_assign(
- const struct inode *inode = data->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = data->args.fh ?
- data->args.fh : &nfsi->fh;
- __entry->offset = data->args.offset;
- __entry->count = data->args.count;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%u",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (long long)__entry->offset, __entry->count
- )
- );
- TRACE_EVENT(nfs_commit_done,
- TP_PROTO(
- const struct rpc_task *task,
- const struct nfs_commit_data *data
- ),
- TP_ARGS(task, data),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- __field(loff_t, offset)
- __field(int, error)
- __field(unsigned long, stable)
- __array(char, verifier, NFS4_VERIFIER_SIZE)
- ),
- TP_fast_assign(
- const struct inode *inode = data->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = data->args.fh ?
- data->args.fh : &nfsi->fh;
- const struct nfs_writeverf *verf = data->res.verf;
- __entry->error = task->tk_status;
- __entry->offset = data->args.offset;
- __entry->stable = verf->committed;
- memcpy(__entry->verifier,
- &verf->verifier,
- NFS4_VERIFIER_SIZE);
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld stable=%s verifier=%s", __entry->error,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle,
- (long long)__entry->offset,
- show_nfs_stable_how(__entry->stable),
- show_nfs4_verifier(__entry->verifier)
- )
- );
- #define nfs_show_direct_req_flags(v) \
- __print_flags(v, "|", \
- { NFS_ODIRECT_DO_COMMIT, "DO_COMMIT" }, \
- { NFS_ODIRECT_RESCHED_WRITES, "RESCHED_WRITES" }, \
- { NFS_ODIRECT_SHOULD_DIRTY, "SHOULD DIRTY" }, \
- { NFS_ODIRECT_DONE, "DONE" } )
- DECLARE_EVENT_CLASS(nfs_direct_req_class,
- TP_PROTO(
- const struct nfs_direct_req *dreq
- ),
- TP_ARGS(dreq),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u64, fileid)
- __field(u32, fhandle)
- __field(loff_t, offset)
- __field(ssize_t, count)
- __field(ssize_t, error)
- __field(int, flags)
- ),
- TP_fast_assign(
- const struct inode *inode = dreq->inode;
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = &nfsi->fh;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- __entry->offset = dreq->io_start;
- __entry->count = dreq->count;
- __entry->error = dreq->error;
- __entry->flags = dreq->flags;
- ),
- TP_printk(
- "error=%zd fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%zd flags=%s",
- __entry->error, MAJOR(__entry->dev),
- MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->offset,
- __entry->count,
- nfs_show_direct_req_flags(__entry->flags)
- )
- );
- #define DEFINE_NFS_DIRECT_REQ_EVENT(name) \
- DEFINE_EVENT(nfs_direct_req_class, name, \
- TP_PROTO( \
- const struct nfs_direct_req *dreq \
- ), \
- TP_ARGS(dreq))
- DEFINE_NFS_DIRECT_REQ_EVENT(nfs_direct_commit_complete);
- DEFINE_NFS_DIRECT_REQ_EVENT(nfs_direct_resched_write);
- DEFINE_NFS_DIRECT_REQ_EVENT(nfs_direct_write_complete);
- DEFINE_NFS_DIRECT_REQ_EVENT(nfs_direct_write_completion);
- DEFINE_NFS_DIRECT_REQ_EVENT(nfs_direct_write_schedule_iovec);
- DEFINE_NFS_DIRECT_REQ_EVENT(nfs_direct_write_reschedule_io);
- #if IS_ENABLED(CONFIG_NFS_LOCALIO)
- DECLARE_EVENT_CLASS(nfs_local_dio_class,
- TP_PROTO(
- const struct inode *inode,
- loff_t offset,
- ssize_t count,
- const struct nfs_local_dio *local_dio
- ),
- TP_ARGS(inode, offset, count, local_dio),
- TP_STRUCT__entry(
- __field(dev_t, dev)
- __field(u64, fileid)
- __field(u32, fhandle)
- __field(loff_t, offset)
- __field(ssize_t, count)
- __field(u32, mem_align)
- __field(u32, offset_align)
- __field(loff_t, start)
- __field(ssize_t, start_len)
- __field(loff_t, middle)
- __field(ssize_t, middle_len)
- __field(loff_t, end)
- __field(ssize_t, end_len)
- ),
- TP_fast_assign(
- const struct nfs_inode *nfsi = NFS_I(inode);
- const struct nfs_fh *fh = &nfsi->fh;
- __entry->dev = inode->i_sb->s_dev;
- __entry->fileid = nfsi->fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- __entry->offset = offset;
- __entry->count = count;
- __entry->mem_align = local_dio->mem_align;
- __entry->offset_align = local_dio->offset_align;
- __entry->start = offset;
- __entry->start_len = local_dio->start_len;
- __entry->middle = local_dio->middle_offset;
- __entry->middle_len = local_dio->middle_len;
- __entry->end = local_dio->end_offset;
- __entry->end_len = local_dio->end_len;
- ),
- TP_printk("fileid=%02x:%02x:%llu fhandle=0x%08x "
- "offset=%lld count=%zd "
- "mem_align=%u offset_align=%u "
- "start=%llu+%zd middle=%llu+%zd end=%llu+%zd",
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle, __entry->offset, __entry->count,
- __entry->mem_align, __entry->offset_align,
- __entry->start, __entry->start_len,
- __entry->middle, __entry->middle_len,
- __entry->end, __entry->end_len)
- )
- #define DEFINE_NFS_LOCAL_DIO_EVENT(name) \
- DEFINE_EVENT(nfs_local_dio_class, nfs_local_dio_##name, \
- TP_PROTO(const struct inode *inode, \
- loff_t offset, \
- ssize_t count, \
- const struct nfs_local_dio *local_dio),\
- TP_ARGS(inode, offset, count, local_dio))
- DEFINE_NFS_LOCAL_DIO_EVENT(read);
- DEFINE_NFS_LOCAL_DIO_EVENT(write);
- DEFINE_NFS_LOCAL_DIO_EVENT(misaligned);
- #endif /* CONFIG_NFS_LOCALIO */
- TRACE_EVENT(nfs_fh_to_dentry,
- TP_PROTO(
- const struct super_block *sb,
- const struct nfs_fh *fh,
- u64 fileid,
- int error
- ),
- TP_ARGS(sb, fh, fileid, error),
- TP_STRUCT__entry(
- __field(int, error)
- __field(dev_t, dev)
- __field(u32, fhandle)
- __field(u64, fileid)
- ),
- TP_fast_assign(
- __entry->error = error;
- __entry->dev = sb->s_dev;
- __entry->fileid = fileid;
- __entry->fhandle = nfs_fhandle_hash(fh);
- ),
- TP_printk(
- "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x ",
- __entry->error,
- MAJOR(__entry->dev), MINOR(__entry->dev),
- (unsigned long long)__entry->fileid,
- __entry->fhandle
- )
- );
- TRACE_EVENT(nfs_mount_assign,
- TP_PROTO(
- const char *option,
- const char *value
- ),
- TP_ARGS(option, value),
- TP_STRUCT__entry(
- __string(option, option)
- __string(value, value)
- ),
- TP_fast_assign(
- __assign_str(option);
- __assign_str(value);
- ),
- TP_printk("option %s=%s",
- __get_str(option), __get_str(value)
- )
- );
- TRACE_EVENT(nfs_mount_option,
- TP_PROTO(
- const struct fs_parameter *param
- ),
- TP_ARGS(param),
- TP_STRUCT__entry(
- __string(option, param->key)
- ),
- TP_fast_assign(
- __assign_str(option);
- ),
- TP_printk("option %s", __get_str(option))
- );
- TRACE_EVENT(nfs_mount_path,
- TP_PROTO(
- const char *path
- ),
- TP_ARGS(path),
- TP_STRUCT__entry(
- __string(path, path)
- ),
- TP_fast_assign(
- __assign_str(path);
- ),
- TP_printk("path='%s'", __get_str(path))
- );
- TRACE_EVENT(nfs_local_open_fh,
- TP_PROTO(
- const struct nfs_fh *fh,
- fmode_t fmode,
- int error
- ),
- TP_ARGS(fh, fmode, error),
- TP_STRUCT__entry(
- __field(int, error)
- __field(u32, fhandle)
- __field(unsigned int, fmode)
- ),
- TP_fast_assign(
- __entry->error = error;
- __entry->fhandle = nfs_fhandle_hash(fh);
- __entry->fmode = (__force unsigned int)fmode;
- ),
- TP_printk(
- "fhandle=0x%08x mode=%s result=%d",
- __entry->fhandle,
- show_fs_fmode_flags(__entry->fmode),
- __entry->error
- )
- );
- DECLARE_EVENT_CLASS(nfs_xdr_event,
- TP_PROTO(
- const struct xdr_stream *xdr,
- int error
- ),
- TP_ARGS(xdr, error),
- TP_STRUCT__entry(
- __field(unsigned int, task_id)
- __field(unsigned int, client_id)
- __field(u32, xid)
- __field(int, version)
- __field(unsigned long, error)
- __string(program,
- xdr->rqst->rq_task->tk_client->cl_program->name)
- __string(procedure,
- xdr->rqst->rq_task->tk_msg.rpc_proc->p_name)
- ),
- TP_fast_assign(
- const struct rpc_rqst *rqstp = xdr->rqst;
- const struct rpc_task *task = rqstp->rq_task;
- __entry->task_id = task->tk_pid;
- __entry->client_id = task->tk_client->cl_clid;
- __entry->xid = be32_to_cpu(rqstp->rq_xid);
- __entry->version = task->tk_client->cl_vers;
- __entry->error = error;
- __assign_str(program);
- __assign_str(procedure);
- ),
- TP_printk(SUNRPC_TRACE_TASK_SPECIFIER
- " xid=0x%08x %sv%d %s error=%ld (%s)",
- __entry->task_id, __entry->client_id, __entry->xid,
- __get_str(program), __entry->version,
- __get_str(procedure), -__entry->error,
- show_nfs_status(__entry->error)
- )
- );
- #define DEFINE_NFS_XDR_EVENT(name) \
- DEFINE_EVENT(nfs_xdr_event, name, \
- TP_PROTO( \
- const struct xdr_stream *xdr, \
- int error \
- ), \
- TP_ARGS(xdr, error))
- DEFINE_NFS_XDR_EVENT(nfs_xdr_status);
- DEFINE_NFS_XDR_EVENT(nfs_xdr_bad_filehandle);
- #endif /* _TRACE_NFS_H */
- #undef TRACE_INCLUDE_PATH
- #define TRACE_INCLUDE_PATH .
- #define TRACE_INCLUDE_FILE nfstrace
- /* This part must be outside protection */
- #include <trace/define_trace.h>
|