@@ -56,6 +56,7 @@ static struct netfs_read_request *netfs_alloc_read_request(
5656 refcount_set (& rreq -> usage , 1 );
5757 __set_bit (NETFS_RREQ_IN_PROGRESS , & rreq -> flags );
5858 ops -> init_rreq (rreq , file );
59+ netfs_stat (& netfs_n_rh_rreq );
5960 }
6061
6162 return rreq ;
@@ -88,6 +89,7 @@ static void netfs_free_read_request(struct work_struct *work)
8889 rreq -> netfs_ops -> cleanup (rreq -> mapping , rreq -> netfs_priv );
8990 trace_netfs_rreq (rreq , netfs_rreq_trace_free );
9091 kfree (rreq );
92+ netfs_stat_d (& netfs_n_rh_rreq );
9193}
9294
9395static void netfs_put_read_request (struct netfs_read_request * rreq , bool was_async )
@@ -117,6 +119,7 @@ static struct netfs_read_subrequest *netfs_alloc_subrequest(
117119 refcount_set (& subreq -> usage , 2 );
118120 subreq -> rreq = rreq ;
119121 netfs_get_read_request (rreq );
122+ netfs_stat (& netfs_n_rh_sreq );
120123 }
121124
122125 return subreq ;
@@ -134,6 +137,7 @@ static void __netfs_put_subrequest(struct netfs_read_subrequest *subreq,
134137
135138 trace_netfs_sreq (subreq , netfs_sreq_trace_free );
136139 kfree (subreq );
140+ netfs_stat_d (& netfs_n_rh_sreq );
137141 netfs_put_read_request (rreq , was_async );
138142}
139143
@@ -156,6 +160,7 @@ static void netfs_clear_unread(struct netfs_read_subrequest *subreq)
156160static void netfs_fill_with_zeroes (struct netfs_read_request * rreq ,
157161 struct netfs_read_subrequest * subreq )
158162{
163+ netfs_stat (& netfs_n_rh_zero );
159164 __set_bit (NETFS_SREQ_CLEAR_TAIL , & subreq -> flags );
160165 netfs_subreq_terminated (subreq , 0 , false);
161166}
@@ -179,6 +184,7 @@ static void netfs_fill_with_zeroes(struct netfs_read_request *rreq,
179184static void netfs_read_from_server (struct netfs_read_request * rreq ,
180185 struct netfs_read_subrequest * subreq )
181186{
187+ netfs_stat (& netfs_n_rh_download );
182188 rreq -> netfs_ops -> issue_op (subreq );
183189}
184190
@@ -288,6 +294,7 @@ static void netfs_rreq_short_read(struct netfs_read_request *rreq,
288294 __clear_bit (NETFS_SREQ_SHORT_READ , & subreq -> flags );
289295 __set_bit (NETFS_SREQ_SEEK_DATA_READ , & subreq -> flags );
290296
297+ netfs_stat (& netfs_n_rh_short_read );
291298 trace_netfs_sreq (subreq , netfs_sreq_trace_resubmit_short );
292299
293300 netfs_get_read_subrequest (subreq );
@@ -319,6 +326,7 @@ static bool netfs_rreq_perform_resubmissions(struct netfs_read_request *rreq)
319326 break ;
320327 subreq -> source = NETFS_DOWNLOAD_FROM_SERVER ;
321328 subreq -> error = 0 ;
329+ netfs_stat (& netfs_n_rh_download_instead );
322330 trace_netfs_sreq (subreq , netfs_sreq_trace_download_instead );
323331 netfs_get_read_subrequest (subreq );
324332 atomic_inc (& rreq -> nr_rd_ops );
@@ -414,6 +422,17 @@ void netfs_subreq_terminated(struct netfs_read_subrequest *subreq,
414422 subreq -> debug_index , subreq -> start , subreq -> flags ,
415423 transferred_or_error );
416424
425+ switch (subreq -> source ) {
426+ case NETFS_READ_FROM_CACHE :
427+ netfs_stat (& netfs_n_rh_read_done );
428+ break ;
429+ case NETFS_DOWNLOAD_FROM_SERVER :
430+ netfs_stat (& netfs_n_rh_download_done );
431+ break ;
432+ default :
433+ break ;
434+ }
435+
417436 if (IS_ERR_VALUE (transferred_or_error )) {
418437 subreq -> error = transferred_or_error ;
419438 goto failed ;
@@ -470,8 +489,10 @@ void netfs_subreq_terminated(struct netfs_read_subrequest *subreq,
470489
471490failed :
472491 if (subreq -> source == NETFS_READ_FROM_CACHE ) {
492+ netfs_stat (& netfs_n_rh_read_failed );
473493 set_bit (NETFS_RREQ_INCOMPLETE_IO , & rreq -> flags );
474494 } else {
495+ netfs_stat (& netfs_n_rh_download_failed );
475496 set_bit (NETFS_RREQ_FAILED , & rreq -> flags );
476497 rreq -> error = subreq -> error ;
477498 }
@@ -653,6 +674,7 @@ void netfs_readahead(struct readahead_control *ractl,
653674 rreq -> start = readahead_pos (ractl );
654675 rreq -> len = readahead_length (ractl );
655676
677+ netfs_stat (& netfs_n_rh_readahead );
656678 trace_netfs_read (rreq , readahead_pos (ractl ), readahead_length (ractl ),
657679 netfs_read_trace_readahead );
658680
@@ -722,6 +744,7 @@ int netfs_readpage(struct file *file,
722744 rreq -> start = page_index (page ) * PAGE_SIZE ;
723745 rreq -> len = thp_size (page );
724746
747+ netfs_stat (& netfs_n_rh_readpage );
725748 trace_netfs_read (rreq , rreq -> start , rreq -> len , netfs_read_trace_readpage );
726749
727750 netfs_get_read_request (rreq );
0 commit comments