Skip to content

Commit eb5654b

Browse files
Trond Myklebustamschuma-ntap
authored andcommitted
NFS: Enable tracing of nfs_invalidate_folio() and nfs_launder_folio()
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
1 parent 96780ca commit eb5654b

File tree

2 files changed

+42
-8
lines changed

2 files changed

+42
-8
lines changed

fs/nfs/file.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,14 +411,16 @@ static int nfs_write_end(struct file *file, struct address_space *mapping,
411411
static void nfs_invalidate_folio(struct folio *folio, size_t offset,
412412
size_t length)
413413
{
414+
struct inode *inode = folio_file_mapping(folio)->host;
414415
dfprintk(PAGECACHE, "NFS: invalidate_folio(%lu, %zu, %zu)\n",
415416
folio->index, offset, length);
416417

417418
if (offset != 0 || length < folio_size(folio))
418419
return;
419420
/* Cancel any unstarted writes on this page */
420-
nfs_wb_folio_cancel(folio->mapping->host, folio);
421+
nfs_wb_folio_cancel(inode, folio);
421422
folio_wait_fscache(folio);
423+
trace_nfs_invalidate_folio(inode, folio);
422424
}
423425

424426
/*
@@ -479,12 +481,15 @@ static void nfs_check_dirty_writeback(struct folio *folio,
479481
static int nfs_launder_folio(struct folio *folio)
480482
{
481483
struct inode *inode = folio->mapping->host;
484+
int ret;
482485

483486
dfprintk(PAGECACHE, "NFS: launder_folio(%ld, %llu)\n",
484487
inode->i_ino, folio_pos(folio));
485488

486489
folio_wait_fscache(folio);
487-
return nfs_wb_folio(inode, folio);
490+
ret = nfs_wb_folio(inode, folio);
491+
trace_nfs_launder_folio_done(inode, folio, ret);
492+
return ret;
488493
}
489494

490495
static int nfs_swap_activate(struct swap_info_struct *sis, struct file *file,

fs/nfs/nfstrace.h

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -933,7 +933,7 @@ TRACE_EVENT(nfs_sillyrename_unlink,
933933
)
934934
);
935935

936-
TRACE_EVENT(nfs_aop_readpage,
936+
DECLARE_EVENT_CLASS(nfs_folio_event,
937937
TP_PROTO(
938938
const struct inode *inode,
939939
struct folio *folio
@@ -947,6 +947,7 @@ TRACE_EVENT(nfs_aop_readpage,
947947
__field(u64, fileid)
948948
__field(u64, version)
949949
__field(loff_t, offset)
950+
__field(u32, count)
950951
),
951952

952953
TP_fast_assign(
@@ -957,18 +958,28 @@ TRACE_EVENT(nfs_aop_readpage,
957958
__entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
958959
__entry->version = inode_peek_iversion_raw(inode);
959960
__entry->offset = folio_file_pos(folio);
961+
__entry->count = nfs_folio_length(folio);
960962
),
961963

962964
TP_printk(
963-
"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu offset=%lld",
965+
"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
966+
"offset=%lld count=%u",
964967
MAJOR(__entry->dev), MINOR(__entry->dev),
965968
(unsigned long long)__entry->fileid,
966969
__entry->fhandle, __entry->version,
967-
__entry->offset
970+
__entry->offset, __entry->count
968971
)
969972
);
970973

971-
TRACE_EVENT(nfs_aop_readpage_done,
974+
#define DEFINE_NFS_FOLIO_EVENT(name) \
975+
DEFINE_EVENT(nfs_folio_event, name, \
976+
TP_PROTO( \
977+
const struct inode *inode, \
978+
struct folio *folio \
979+
), \
980+
TP_ARGS(inode, folio))
981+
982+
DECLARE_EVENT_CLASS(nfs_folio_event_done,
972983
TP_PROTO(
973984
const struct inode *inode,
974985
struct folio *folio,
@@ -984,6 +995,7 @@ TRACE_EVENT(nfs_aop_readpage_done,
984995
__field(u64, fileid)
985996
__field(u64, version)
986997
__field(loff_t, offset)
998+
__field(u32, count)
987999
),
9881000

9891001
TP_fast_assign(
@@ -994,18 +1006,35 @@ TRACE_EVENT(nfs_aop_readpage_done,
9941006
__entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
9951007
__entry->version = inode_peek_iversion_raw(inode);
9961008
__entry->offset = folio_file_pos(folio);
1009+
__entry->count = nfs_folio_length(folio);
9971010
__entry->ret = ret;
9981011
),
9991012

10001013
TP_printk(
1001-
"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu offset=%lld ret=%d",
1014+
"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
1015+
"offset=%lld count=%u ret=%d",
10021016
MAJOR(__entry->dev), MINOR(__entry->dev),
10031017
(unsigned long long)__entry->fileid,
10041018
__entry->fhandle, __entry->version,
1005-
__entry->offset, __entry->ret
1019+
__entry->offset, __entry->count, __entry->ret
10061020
)
10071021
);
10081022

1023+
#define DEFINE_NFS_FOLIO_EVENT_DONE(name) \
1024+
DEFINE_EVENT(nfs_folio_event_done, name, \
1025+
TP_PROTO( \
1026+
const struct inode *inode, \
1027+
struct folio *folio, \
1028+
int ret \
1029+
), \
1030+
TP_ARGS(inode, folio, ret))
1031+
1032+
DEFINE_NFS_FOLIO_EVENT(nfs_aop_readpage);
1033+
DEFINE_NFS_FOLIO_EVENT_DONE(nfs_aop_readpage_done);
1034+
1035+
DEFINE_NFS_FOLIO_EVENT(nfs_invalidate_folio);
1036+
DEFINE_NFS_FOLIO_EVENT_DONE(nfs_launder_folio_done);
1037+
10091038
TRACE_EVENT(nfs_aop_readahead,
10101039
TP_PROTO(
10111040
const struct inode *inode,

0 commit comments

Comments
 (0)