@@ -167,7 +167,7 @@ static void netfs_rreq_copy_terminated(void *priv, ssize_t transferred_or_error,
167167 if (atomic_dec_and_test (& rreq -> nr_copy_ops ))
168168 netfs_rreq_unmark_after_write (rreq , was_async );
169169
170- netfs_put_subrequest (subreq , was_async );
170+ netfs_put_subrequest (subreq , was_async , netfs_sreq_trace_put_terminated );
171171}
172172
173173/*
@@ -191,7 +191,8 @@ static void netfs_rreq_do_write_to_cache(struct netfs_io_request *rreq)
191191 list_for_each_entry_safe (subreq , p , & rreq -> subrequests , rreq_link ) {
192192 if (!test_bit (NETFS_SREQ_COPY_TO_CACHE , & subreq -> flags )) {
193193 list_del_init (& subreq -> rreq_link );
194- netfs_put_subrequest (subreq , false);
194+ netfs_put_subrequest (subreq , false,
195+ netfs_sreq_trace_put_no_copy );
195196 }
196197 }
197198
@@ -203,7 +204,8 @@ static void netfs_rreq_do_write_to_cache(struct netfs_io_request *rreq)
203204 break ;
204205 subreq -> len += next -> len ;
205206 list_del_init (& next -> rreq_link );
206- netfs_put_subrequest (next , false);
207+ netfs_put_subrequest (next , false,
208+ netfs_sreq_trace_put_merged );
207209 }
208210
209211 ret = cres -> ops -> prepare_write (cres , & subreq -> start , & subreq -> len ,
@@ -219,7 +221,7 @@ static void netfs_rreq_do_write_to_cache(struct netfs_io_request *rreq)
219221
220222 atomic_inc (& rreq -> nr_copy_ops );
221223 netfs_stat (& netfs_n_rh_write );
222- netfs_get_subrequest (subreq );
224+ netfs_get_subrequest (subreq , netfs_sreq_trace_get_copy_to_cache );
223225 trace_netfs_sreq (subreq , netfs_sreq_trace_write );
224226 cres -> ops -> write (cres , subreq -> start , & iter ,
225227 netfs_rreq_copy_terminated , subreq );
@@ -342,7 +344,7 @@ static void netfs_rreq_short_read(struct netfs_io_request *rreq,
342344 netfs_stat (& netfs_n_rh_short_read );
343345 trace_netfs_sreq (subreq , netfs_sreq_trace_resubmit_short );
344346
345- netfs_get_subrequest (subreq );
347+ netfs_get_subrequest (subreq , netfs_sreq_trace_get_short_read );
346348 atomic_inc (& rreq -> nr_outstanding );
347349 if (subreq -> source == NETFS_READ_FROM_CACHE )
348350 netfs_read_from_cache (rreq , subreq , NETFS_READ_HOLE_CLEAR );
@@ -376,7 +378,7 @@ static bool netfs_rreq_perform_resubmissions(struct netfs_io_request *rreq)
376378 subreq -> error = 0 ;
377379 netfs_stat (& netfs_n_rh_download_instead );
378380 trace_netfs_sreq (subreq , netfs_sreq_trace_download_instead );
379- netfs_get_subrequest (subreq );
381+ netfs_get_subrequest (subreq , netfs_sreq_trace_get_resubmit );
380382 atomic_inc (& rreq -> nr_outstanding );
381383 netfs_read_from_server (rreq , subreq );
382384 } else if (test_bit (NETFS_SREQ_SHORT_IO , & subreq -> flags )) {
@@ -538,7 +540,7 @@ void netfs_subreq_terminated(struct netfs_io_subrequest *subreq,
538540 else if (u == 1 )
539541 wake_up_var (& rreq -> nr_outstanding );
540542
541- netfs_put_subrequest (subreq , was_async );
543+ netfs_put_subrequest (subreq , was_async , netfs_sreq_trace_put_terminated );
542544 return ;
543545
544546incomplete :
@@ -683,7 +685,7 @@ static bool netfs_rreq_submit_slice(struct netfs_io_request *rreq,
683685
684686subreq_failed :
685687 rreq -> error = subreq -> error ;
686- netfs_put_subrequest (subreq , false);
688+ netfs_put_subrequest (subreq , false, netfs_sreq_trace_put_failed );
687689 return false;
688690}
689691
@@ -1030,13 +1032,13 @@ int netfs_write_begin(struct file *file, struct address_space *mapping,
10301032 */
10311033 ractl ._nr_pages = folio_nr_pages (folio );
10321034 netfs_rreq_expand (rreq , & ractl );
1035+ netfs_get_request (rreq , netfs_rreq_trace_get_hold );
10331036
10341037 /* We hold the folio locks, so we can drop the references */
10351038 folio_get (folio );
10361039 while (readahead_folio (& ractl ))
10371040 ;
10381041
1039- netfs_get_request (rreq , netfs_rreq_trace_get_hold );
10401042 atomic_set (& rreq -> nr_outstanding , 1 );
10411043 do {
10421044 if (!netfs_rreq_submit_slice (rreq , & debug_index ))
0 commit comments