mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									96780ca55e
								
							
						
					
					
						commit
						eb5654b3b8
					
				
					 2 changed files with 42 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -411,14 +411,16 @@ static int nfs_write_end(struct file *file, struct address_space *mapping,
 | 
			
		|||
static void nfs_invalidate_folio(struct folio *folio, size_t offset,
 | 
			
		||||
				size_t length)
 | 
			
		||||
{
 | 
			
		||||
	struct inode *inode = folio_file_mapping(folio)->host;
 | 
			
		||||
	dfprintk(PAGECACHE, "NFS: invalidate_folio(%lu, %zu, %zu)\n",
 | 
			
		||||
		 folio->index, offset, length);
 | 
			
		||||
 | 
			
		||||
	if (offset != 0 || length < folio_size(folio))
 | 
			
		||||
		return;
 | 
			
		||||
	/* Cancel any unstarted writes on this page */
 | 
			
		||||
	nfs_wb_folio_cancel(folio->mapping->host, folio);
 | 
			
		||||
	nfs_wb_folio_cancel(inode, folio);
 | 
			
		||||
	folio_wait_fscache(folio);
 | 
			
		||||
	trace_nfs_invalidate_folio(inode, folio);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -479,12 +481,15 @@ static void nfs_check_dirty_writeback(struct folio *folio,
 | 
			
		|||
static int nfs_launder_folio(struct folio *folio)
 | 
			
		||||
{
 | 
			
		||||
	struct inode *inode = folio->mapping->host;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	dfprintk(PAGECACHE, "NFS: launder_folio(%ld, %llu)\n",
 | 
			
		||||
		inode->i_ino, folio_pos(folio));
 | 
			
		||||
 | 
			
		||||
	folio_wait_fscache(folio);
 | 
			
		||||
	return nfs_wb_folio(inode, folio);
 | 
			
		||||
	ret = nfs_wb_folio(inode, folio);
 | 
			
		||||
	trace_nfs_launder_folio_done(inode, folio, ret);
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int nfs_swap_activate(struct swap_info_struct *sis, struct file *file,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -933,7 +933,7 @@ TRACE_EVENT(nfs_sillyrename_unlink,
 | 
			
		|||
		)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
TRACE_EVENT(nfs_aop_readpage,
 | 
			
		||||
DECLARE_EVENT_CLASS(nfs_folio_event,
 | 
			
		||||
		TP_PROTO(
 | 
			
		||||
			const struct inode *inode,
 | 
			
		||||
			struct folio *folio
 | 
			
		||||
| 
						 | 
				
			
			@ -947,6 +947,7 @@ TRACE_EVENT(nfs_aop_readpage,
 | 
			
		|||
			__field(u64, fileid)
 | 
			
		||||
			__field(u64, version)
 | 
			
		||||
			__field(loff_t, offset)
 | 
			
		||||
			__field(u32, count)
 | 
			
		||||
		),
 | 
			
		||||
 | 
			
		||||
		TP_fast_assign(
 | 
			
		||||
| 
						 | 
				
			
			@ -957,18 +958,28 @@ TRACE_EVENT(nfs_aop_readpage,
 | 
			
		|||
			__entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
 | 
			
		||||
			__entry->version = inode_peek_iversion_raw(inode);
 | 
			
		||||
			__entry->offset = folio_file_pos(folio);
 | 
			
		||||
			__entry->count = nfs_folio_length(folio);
 | 
			
		||||
		),
 | 
			
		||||
 | 
			
		||||
		TP_printk(
 | 
			
		||||
			"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu offset=%lld",
 | 
			
		||||
			"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
 | 
			
		||||
			"offset=%lld count=%u",
 | 
			
		||||
			MAJOR(__entry->dev), MINOR(__entry->dev),
 | 
			
		||||
			(unsigned long long)__entry->fileid,
 | 
			
		||||
			__entry->fhandle, __entry->version,
 | 
			
		||||
			__entry->offset
 | 
			
		||||
			__entry->offset, __entry->count
 | 
			
		||||
		)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
TRACE_EVENT(nfs_aop_readpage_done,
 | 
			
		||||
#define DEFINE_NFS_FOLIO_EVENT(name) \
 | 
			
		||||
	DEFINE_EVENT(nfs_folio_event, name, \
 | 
			
		||||
			TP_PROTO( \
 | 
			
		||||
				const struct inode *inode, \
 | 
			
		||||
				struct folio *folio \
 | 
			
		||||
			), \
 | 
			
		||||
			TP_ARGS(inode, folio))
 | 
			
		||||
 | 
			
		||||
DECLARE_EVENT_CLASS(nfs_folio_event_done,
 | 
			
		||||
		TP_PROTO(
 | 
			
		||||
			const struct inode *inode,
 | 
			
		||||
			struct folio *folio,
 | 
			
		||||
| 
						 | 
				
			
			@ -984,6 +995,7 @@ TRACE_EVENT(nfs_aop_readpage_done,
 | 
			
		|||
			__field(u64, fileid)
 | 
			
		||||
			__field(u64, version)
 | 
			
		||||
			__field(loff_t, offset)
 | 
			
		||||
			__field(u32, count)
 | 
			
		||||
		),
 | 
			
		||||
 | 
			
		||||
		TP_fast_assign(
 | 
			
		||||
| 
						 | 
				
			
			@ -994,18 +1006,35 @@ TRACE_EVENT(nfs_aop_readpage_done,
 | 
			
		|||
			__entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
 | 
			
		||||
			__entry->version = inode_peek_iversion_raw(inode);
 | 
			
		||||
			__entry->offset = folio_file_pos(folio);
 | 
			
		||||
			__entry->count = nfs_folio_length(folio);
 | 
			
		||||
			__entry->ret = ret;
 | 
			
		||||
		),
 | 
			
		||||
 | 
			
		||||
		TP_printk(
 | 
			
		||||
			"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu offset=%lld ret=%d",
 | 
			
		||||
			"fileid=%02x:%02x:%llu fhandle=0x%08x version=%llu "
 | 
			
		||||
			"offset=%lld count=%u ret=%d",
 | 
			
		||||
			MAJOR(__entry->dev), MINOR(__entry->dev),
 | 
			
		||||
			(unsigned long long)__entry->fileid,
 | 
			
		||||
			__entry->fhandle, __entry->version,
 | 
			
		||||
			__entry->offset, __entry->ret
 | 
			
		||||
			__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, \
 | 
			
		||||
				struct folio *folio, \
 | 
			
		||||
				int ret \
 | 
			
		||||
			), \
 | 
			
		||||
			TP_ARGS(inode, folio, ret))
 | 
			
		||||
 | 
			
		||||
DEFINE_NFS_FOLIO_EVENT(nfs_aop_readpage);
 | 
			
		||||
DEFINE_NFS_FOLIO_EVENT_DONE(nfs_aop_readpage_done);
 | 
			
		||||
 | 
			
		||||
DEFINE_NFS_FOLIO_EVENT(nfs_invalidate_folio);
 | 
			
		||||
DEFINE_NFS_FOLIO_EVENT_DONE(nfs_launder_folio_done);
 | 
			
		||||
 | 
			
		||||
TRACE_EVENT(nfs_aop_readahead,
 | 
			
		||||
		TP_PROTO(
 | 
			
		||||
			const struct inode *inode,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue