at master 3.7 kB view raw
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* Netfs support statistics 3 * 4 * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved. 5 * Written by David Howells (dhowells@redhat.com) 6 */ 7 8#include <linux/export.h> 9#include <linux/seq_file.h> 10#include "internal.h" 11 12atomic_t netfs_n_rh_dio_read; 13atomic_t netfs_n_rh_readahead; 14atomic_t netfs_n_rh_read_folio; 15atomic_t netfs_n_rh_read_single; 16atomic_t netfs_n_rh_rreq; 17atomic_t netfs_n_rh_sreq; 18atomic_t netfs_n_rh_download; 19atomic_t netfs_n_rh_download_done; 20atomic_t netfs_n_rh_download_failed; 21atomic_t netfs_n_rh_download_instead; 22atomic_t netfs_n_rh_read; 23atomic_t netfs_n_rh_read_done; 24atomic_t netfs_n_rh_read_failed; 25atomic_t netfs_n_rh_zero; 26atomic_t netfs_n_rh_short_read; 27atomic_t netfs_n_rh_write; 28atomic_t netfs_n_rh_write_begin; 29atomic_t netfs_n_rh_write_done; 30atomic_t netfs_n_rh_write_failed; 31atomic_t netfs_n_rh_write_zskip; 32atomic_t netfs_n_rh_retry_read_req; 33atomic_t netfs_n_rh_retry_read_subreq; 34atomic_t netfs_n_wh_buffered_write; 35atomic_t netfs_n_wh_writethrough; 36atomic_t netfs_n_wh_dio_write; 37atomic_t netfs_n_wh_writepages; 38atomic_t netfs_n_wh_copy_to_cache; 39atomic_t netfs_n_wh_wstream_conflict; 40atomic_t netfs_n_wh_upload; 41atomic_t netfs_n_wh_upload_done; 42atomic_t netfs_n_wh_upload_failed; 43atomic_t netfs_n_wh_write; 44atomic_t netfs_n_wh_write_done; 45atomic_t netfs_n_wh_write_failed; 46atomic_t netfs_n_wh_retry_write_req; 47atomic_t netfs_n_wh_retry_write_subreq; 48atomic_t netfs_n_wb_lock_skip; 49atomic_t netfs_n_wb_lock_wait; 50atomic_t netfs_n_folioq; 51 52int netfs_stats_show(struct seq_file *m, void *v) 53{ 54 seq_printf(m, "Reads : DR=%u RA=%u RF=%u RS=%u WB=%u WBZ=%u\n", 55 atomic_read(&netfs_n_rh_dio_read), 56 atomic_read(&netfs_n_rh_readahead), 57 atomic_read(&netfs_n_rh_read_folio), 58 atomic_read(&netfs_n_rh_read_single), 59 atomic_read(&netfs_n_rh_write_begin), 60 atomic_read(&netfs_n_rh_write_zskip)); 61 seq_printf(m, "Writes : BW=%u WT=%u DW=%u WP=%u 2C=%u\n", 62 atomic_read(&netfs_n_wh_buffered_write), 63 atomic_read(&netfs_n_wh_writethrough), 64 atomic_read(&netfs_n_wh_dio_write), 65 atomic_read(&netfs_n_wh_writepages), 66 atomic_read(&netfs_n_wh_copy_to_cache)); 67 seq_printf(m, "ZeroOps: ZR=%u sh=%u sk=%u\n", 68 atomic_read(&netfs_n_rh_zero), 69 atomic_read(&netfs_n_rh_short_read), 70 atomic_read(&netfs_n_rh_write_zskip)); 71 seq_printf(m, "DownOps: DL=%u ds=%u df=%u di=%u\n", 72 atomic_read(&netfs_n_rh_download), 73 atomic_read(&netfs_n_rh_download_done), 74 atomic_read(&netfs_n_rh_download_failed), 75 atomic_read(&netfs_n_rh_download_instead)); 76 seq_printf(m, "CaRdOps: RD=%u rs=%u rf=%u\n", 77 atomic_read(&netfs_n_rh_read), 78 atomic_read(&netfs_n_rh_read_done), 79 atomic_read(&netfs_n_rh_read_failed)); 80 seq_printf(m, "UpldOps: UL=%u us=%u uf=%u\n", 81 atomic_read(&netfs_n_wh_upload), 82 atomic_read(&netfs_n_wh_upload_done), 83 atomic_read(&netfs_n_wh_upload_failed)); 84 seq_printf(m, "CaWrOps: WR=%u ws=%u wf=%u\n", 85 atomic_read(&netfs_n_wh_write), 86 atomic_read(&netfs_n_wh_write_done), 87 atomic_read(&netfs_n_wh_write_failed)); 88 seq_printf(m, "Retries: rq=%u rs=%u wq=%u ws=%u\n", 89 atomic_read(&netfs_n_rh_retry_read_req), 90 atomic_read(&netfs_n_rh_retry_read_subreq), 91 atomic_read(&netfs_n_wh_retry_write_req), 92 atomic_read(&netfs_n_wh_retry_write_subreq)); 93 seq_printf(m, "Objs : rr=%u sr=%u foq=%u wsc=%u\n", 94 atomic_read(&netfs_n_rh_rreq), 95 atomic_read(&netfs_n_rh_sreq), 96 atomic_read(&netfs_n_folioq), 97 atomic_read(&netfs_n_wh_wstream_conflict)); 98 seq_printf(m, "WbLock : skip=%u wait=%u\n", 99 atomic_read(&netfs_n_wb_lock_skip), 100 atomic_read(&netfs_n_wb_lock_wait)); 101 return fscache_stats_show(m); 102} 103EXPORT_SYMBOL(netfs_stats_show);