[PATCH 5/5] nfs: add tracepoints to nfs_writepages()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Show the inode info and requested range.

Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
---
 fs/nfs/nfstrace.h |  2 ++
 fs/nfs/write.c    | 10 ++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h
index 63dec30226153a78dd9017fdb1104ba3301f7372..dcf339adcf5cb40a71eea4c9b5d4a500eb0223bb 100644
--- a/fs/nfs/nfstrace.h
+++ b/fs/nfs/nfstrace.h
@@ -1074,6 +1074,8 @@ 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(
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index b5632f18813bee4e6a45cae3651399c753631958..638c8334082086df2fe5ef143219ab2fe186ae1b 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -710,12 +710,14 @@ int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
 	int priority = 0;
 	int err;
 
+	trace_nfs_writepages(inode, wbc->range_start, wbc->range_end - wbc->range_start);
+
 	/* Wait with writeback until write congestion eases */
 	if (wbc->sync_mode == WB_SYNC_NONE && nfss->write_congested) {
 		err = wait_event_killable(nfss->write_congestion_wait,
 					  nfss->write_congested == 0);
 		if (err)
-			return err;
+			goto out_err;
 	}
 
 	nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGES);
@@ -746,10 +748,10 @@ int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
 	} while (err < 0 && !nfs_error_is_fatal(err));
 	nfs_io_completion_put(ioc);
 
-	if (err < 0)
-		goto out_err;
-	return 0;
+	if (err > 0)
+		err = 0;
 out_err:
+	trace_nfs_writepages_done(inode, wbc->range_start, wbc->range_end - wbc->range_start, err);
 	return err;
 }
 

-- 
2.50.1





[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux