netfs: Add retry stat counters
Add stat counters to count the number of request and subrequest retries and display them in /proc/fs/netfs/stats. Signed-off-by: David Howells <dhowells@redhat.com> Link: https://lore.kernel.org/r/20250212222402.3618494-3-dhowells@redhat.com cc: Jeff Layton <jlayton@kernel.org> cc: netfs@lists.linux.dev cc: linux-fsdevel@vger.kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
1d0013962d
commit
d01c495f43
5 changed files with 19 additions and 0 deletions
|
@ -135,6 +135,8 @@ extern atomic_t netfs_n_rh_write_begin;
|
|||
extern atomic_t netfs_n_rh_write_done;
|
||||
extern atomic_t netfs_n_rh_write_failed;
|
||||
extern atomic_t netfs_n_rh_write_zskip;
|
||||
extern atomic_t netfs_n_rh_retry_read_req;
|
||||
extern atomic_t netfs_n_rh_retry_read_subreq;
|
||||
extern atomic_t netfs_n_wh_buffered_write;
|
||||
extern atomic_t netfs_n_wh_writethrough;
|
||||
extern atomic_t netfs_n_wh_dio_write;
|
||||
|
@ -147,6 +149,8 @@ extern atomic_t netfs_n_wh_upload_failed;
|
|||
extern atomic_t netfs_n_wh_write;
|
||||
extern atomic_t netfs_n_wh_write_done;
|
||||
extern atomic_t netfs_n_wh_write_failed;
|
||||
extern atomic_t netfs_n_wh_retry_write_req;
|
||||
extern atomic_t netfs_n_wh_retry_write_subreq;
|
||||
extern atomic_t netfs_n_wb_lock_skip;
|
||||
extern atomic_t netfs_n_wb_lock_wait;
|
||||
extern atomic_t netfs_n_folioq;
|
||||
|
|
|
@ -14,6 +14,7 @@ static void netfs_reissue_read(struct netfs_io_request *rreq,
|
|||
{
|
||||
__clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags);
|
||||
__set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags);
|
||||
netfs_stat(&netfs_n_rh_retry_read_subreq);
|
||||
subreq->rreq->netfs_ops->issue_read(subreq);
|
||||
}
|
||||
|
||||
|
@ -260,6 +261,8 @@ void netfs_retry_reads(struct netfs_io_request *rreq)
|
|||
struct netfs_io_stream *stream = &rreq->io_streams[0];
|
||||
DEFINE_WAIT(myself);
|
||||
|
||||
netfs_stat(&netfs_n_rh_retry_read_req);
|
||||
|
||||
set_bit(NETFS_RREQ_RETRYING, &rreq->flags);
|
||||
|
||||
/* Wait for all outstanding I/O to quiesce before performing retries as
|
||||
|
|
|
@ -29,6 +29,8 @@ atomic_t netfs_n_rh_write_begin;
|
|||
atomic_t netfs_n_rh_write_done;
|
||||
atomic_t netfs_n_rh_write_failed;
|
||||
atomic_t netfs_n_rh_write_zskip;
|
||||
atomic_t netfs_n_rh_retry_read_req;
|
||||
atomic_t netfs_n_rh_retry_read_subreq;
|
||||
atomic_t netfs_n_wh_buffered_write;
|
||||
atomic_t netfs_n_wh_writethrough;
|
||||
atomic_t netfs_n_wh_dio_write;
|
||||
|
@ -41,6 +43,8 @@ atomic_t netfs_n_wh_upload_failed;
|
|||
atomic_t netfs_n_wh_write;
|
||||
atomic_t netfs_n_wh_write_done;
|
||||
atomic_t netfs_n_wh_write_failed;
|
||||
atomic_t netfs_n_wh_retry_write_req;
|
||||
atomic_t netfs_n_wh_retry_write_subreq;
|
||||
atomic_t netfs_n_wb_lock_skip;
|
||||
atomic_t netfs_n_wb_lock_wait;
|
||||
atomic_t netfs_n_folioq;
|
||||
|
@ -81,6 +85,11 @@ int netfs_stats_show(struct seq_file *m, void *v)
|
|||
atomic_read(&netfs_n_wh_write),
|
||||
atomic_read(&netfs_n_wh_write_done),
|
||||
atomic_read(&netfs_n_wh_write_failed));
|
||||
seq_printf(m, "Retries: rq=%u rs=%u wq=%u ws=%u\n",
|
||||
atomic_read(&netfs_n_rh_retry_read_req),
|
||||
atomic_read(&netfs_n_rh_retry_read_subreq),
|
||||
atomic_read(&netfs_n_wh_retry_write_req),
|
||||
atomic_read(&netfs_n_wh_retry_write_subreq));
|
||||
seq_printf(m, "Objs : rr=%u sr=%u foq=%u wsc=%u\n",
|
||||
atomic_read(&netfs_n_rh_rreq),
|
||||
atomic_read(&netfs_n_rh_sreq),
|
||||
|
|
|
@ -253,6 +253,7 @@ void netfs_reissue_write(struct netfs_io_stream *stream,
|
|||
subreq->retry_count++;
|
||||
__clear_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags);
|
||||
__set_bit(NETFS_SREQ_IN_PROGRESS, &subreq->flags);
|
||||
netfs_stat(&netfs_n_wh_retry_write_subreq);
|
||||
netfs_do_issue_write(stream, subreq);
|
||||
}
|
||||
|
||||
|
|
|
@ -203,6 +203,8 @@ void netfs_retry_writes(struct netfs_io_request *wreq)
|
|||
struct netfs_io_stream *stream;
|
||||
int s;
|
||||
|
||||
netfs_stat(&netfs_n_wh_retry_write_req);
|
||||
|
||||
/* Wait for all outstanding I/O to quiesce before performing retries as
|
||||
* we may need to renegotiate the I/O sizes.
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue