mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
NFS: Replace dfprintks with tracepoints in fscache read and write page functions
Most of fscache and other NFS IO paths are now using tracepoints. Remove the dfprintks in the NFS fscache read/write page functions and replace with tracepoints at the begin and end of the functions. Signed-off-by: Dave Wysochanski <dwysocha@redhat.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
fc1c5abfca
commit
e3f0a7fe69
@ -19,6 +19,7 @@
|
||||
#include "internal.h"
|
||||
#include "iostat.h"
|
||||
#include "fscache.h"
|
||||
#include "nfstrace.h"
|
||||
|
||||
#define NFSDBG_FACILITY NFSDBG_FSCACHE
|
||||
|
||||
@ -321,30 +322,27 @@ int __nfs_fscache_read_page(struct inode *inode, struct page *page)
|
||||
{
|
||||
int ret;
|
||||
|
||||
dfprintk(FSCACHE,
|
||||
"NFS: readpage_from_fscache(fsc:%p/p:%p(i:%lx f:%lx)/0x%p)\n",
|
||||
nfs_i_fscache(inode), page, page->index, page->flags, inode);
|
||||
|
||||
trace_nfs_fscache_read_page(inode, page);
|
||||
if (PageChecked(page)) {
|
||||
dfprintk(FSCACHE, "NFS: readpage_from_fscache: PageChecked\n");
|
||||
ClearPageChecked(page);
|
||||
return 1;
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = fscache_fallback_read_page(inode, page);
|
||||
if (ret < 0) {
|
||||
nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_READ_FAIL);
|
||||
dfprintk(FSCACHE,
|
||||
"NFS: readpage_from_fscache failed %d\n", ret);
|
||||
SetPageChecked(page);
|
||||
return ret;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Read completed synchronously */
|
||||
dfprintk(FSCACHE, "NFS: readpage_from_fscache: read successful\n");
|
||||
nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_READ_OK);
|
||||
SetPageUptodate(page);
|
||||
return 0;
|
||||
ret = 0;
|
||||
out:
|
||||
trace_nfs_fscache_read_page_exit(inode, page, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -355,20 +353,15 @@ void __nfs_fscache_write_page(struct inode *inode, struct page *page)
|
||||
{
|
||||
int ret;
|
||||
|
||||
dfprintk(FSCACHE,
|
||||
"NFS: readpage_to_fscache(fsc:%p/p:%p(i:%lx f:%lx))\n",
|
||||
nfs_i_fscache(inode), page, page->index, page->flags);
|
||||
trace_nfs_fscache_write_page(inode, page);
|
||||
|
||||
ret = fscache_fallback_write_page(inode, page, true);
|
||||
|
||||
dfprintk(FSCACHE,
|
||||
"NFS: nfs_fscache_write_page: p:%p(i:%lu f:%lx) ret %d\n",
|
||||
page, page->index, page->flags, ret);
|
||||
|
||||
if (ret != 0) {
|
||||
nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_WRITTEN_FAIL);
|
||||
nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_UNCACHED);
|
||||
} else {
|
||||
nfs_inc_fscache_stats(inode, NFSIOS_FSCACHE_PAGES_WRITTEN_OK);
|
||||
}
|
||||
trace_nfs_fscache_write_page_exit(inode, page, ret);
|
||||
}
|
||||
|
@ -1215,6 +1215,97 @@ TRACE_EVENT(nfs_readpage_short,
|
||||
)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(nfs_fscache_page_event,
|
||||
TP_PROTO(
|
||||
const struct inode *inode,
|
||||
struct page *page
|
||||
),
|
||||
|
||||
TP_ARGS(inode, page),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(dev_t, dev)
|
||||
__field(u32, fhandle)
|
||||
__field(u64, fileid)
|
||||
__field(loff_t, offset)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
const struct nfs_inode *nfsi = NFS_I(inode);
|
||||
const struct nfs_fh *fh = &nfsi->fh;
|
||||
|
||||
__entry->offset = page_index(page) << PAGE_SHIFT;
|
||||
__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",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||
(unsigned long long)__entry->fileid,
|
||||
__entry->fhandle,
|
||||
(long long)__entry->offset
|
||||
)
|
||||
);
|
||||
DECLARE_EVENT_CLASS(nfs_fscache_page_event_done,
|
||||
TP_PROTO(
|
||||
const struct inode *inode,
|
||||
struct page *page,
|
||||
int error
|
||||
),
|
||||
|
||||
TP_ARGS(inode, page, error),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(int, error)
|
||||
__field(dev_t, dev)
|
||||
__field(u32, fhandle)
|
||||
__field(u64, fileid)
|
||||
__field(loff_t, offset)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
const struct nfs_inode *nfsi = NFS_I(inode);
|
||||
const struct nfs_fh *fh = &nfsi->fh;
|
||||
|
||||
__entry->offset = page_index(page) << PAGE_SHIFT;
|
||||
__entry->dev = inode->i_sb->s_dev;
|
||||
__entry->fileid = nfsi->fileid;
|
||||
__entry->fhandle = nfs_fhandle_hash(fh);
|
||||
__entry->error = error;
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
"fileid=%02x:%02x:%llu fhandle=0x%08x "
|
||||
"offset=%lld error=%d",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||
(unsigned long long)__entry->fileid,
|
||||
__entry->fhandle,
|
||||
(long long)__entry->offset, __entry->error
|
||||
)
|
||||
);
|
||||
#define DEFINE_NFS_FSCACHE_PAGE_EVENT(name) \
|
||||
DEFINE_EVENT(nfs_fscache_page_event, name, \
|
||||
TP_PROTO( \
|
||||
const struct inode *inode, \
|
||||
struct page *page \
|
||||
), \
|
||||
TP_ARGS(inode, page))
|
||||
#define DEFINE_NFS_FSCACHE_PAGE_EVENT_DONE(name) \
|
||||
DEFINE_EVENT(nfs_fscache_page_event_done, name, \
|
||||
TP_PROTO( \
|
||||
const struct inode *inode, \
|
||||
struct page *page, \
|
||||
int error \
|
||||
), \
|
||||
TP_ARGS(inode, page, error))
|
||||
DEFINE_NFS_FSCACHE_PAGE_EVENT(nfs_fscache_read_page);
|
||||
DEFINE_NFS_FSCACHE_PAGE_EVENT_DONE(nfs_fscache_read_page_exit);
|
||||
DEFINE_NFS_FSCACHE_PAGE_EVENT(nfs_fscache_write_page);
|
||||
DEFINE_NFS_FSCACHE_PAGE_EVENT_DONE(nfs_fscache_write_page_exit);
|
||||
|
||||
TRACE_EVENT(nfs_pgio_error,
|
||||
TP_PROTO(
|
||||
const struct nfs_pgio_header *hdr,
|
||||
|
Loading…
Reference in New Issue
Block a user