stats.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Statistics for NFS server.
  4. *
  5. * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
  6. */
  7. #ifndef _NFSD_STATS_H
  8. #define _NFSD_STATS_H
  9. #include <uapi/linux/nfsd/stats.h>
  10. #include <linux/percpu_counter.h>
  11. struct proc_dir_entry *nfsd_proc_stat_init(struct net *net);
  12. void nfsd_proc_stat_shutdown(struct net *net);
  13. static inline void nfsd_stats_rc_hits_inc(struct nfsd_net *nn)
  14. {
  15. percpu_counter_inc(&nn->counter[NFSD_STATS_RC_HITS]);
  16. }
  17. static inline void nfsd_stats_rc_misses_inc(struct nfsd_net *nn)
  18. {
  19. percpu_counter_inc(&nn->counter[NFSD_STATS_RC_MISSES]);
  20. }
  21. static inline void nfsd_stats_rc_nocache_inc(struct nfsd_net *nn)
  22. {
  23. percpu_counter_inc(&nn->counter[NFSD_STATS_RC_NOCACHE]);
  24. }
  25. static inline void nfsd_stats_fh_stale_inc(struct nfsd_net *nn,
  26. struct svc_export *exp)
  27. {
  28. percpu_counter_inc(&nn->counter[NFSD_STATS_FH_STALE]);
  29. if (exp && exp->ex_stats)
  30. percpu_counter_inc(&exp->ex_stats->counter[EXP_STATS_FH_STALE]);
  31. }
  32. static inline void nfsd_stats_io_read_add(struct nfsd_net *nn,
  33. struct svc_export *exp, s64 amount)
  34. {
  35. percpu_counter_add(&nn->counter[NFSD_STATS_IO_READ], amount);
  36. if (exp && exp->ex_stats)
  37. percpu_counter_add(&exp->ex_stats->counter[EXP_STATS_IO_READ], amount);
  38. }
  39. static inline void nfsd_stats_io_write_add(struct nfsd_net *nn,
  40. struct svc_export *exp, s64 amount)
  41. {
  42. percpu_counter_add(&nn->counter[NFSD_STATS_IO_WRITE], amount);
  43. if (exp && exp->ex_stats)
  44. percpu_counter_add(&exp->ex_stats->counter[EXP_STATS_IO_WRITE], amount);
  45. }
  46. static inline void nfsd_stats_payload_misses_inc(struct nfsd_net *nn)
  47. {
  48. percpu_counter_inc(&nn->counter[NFSD_STATS_PAYLOAD_MISSES]);
  49. }
  50. static inline void nfsd_stats_drc_mem_usage_add(struct nfsd_net *nn, s64 amount)
  51. {
  52. percpu_counter_add(&nn->counter[NFSD_STATS_DRC_MEM_USAGE], amount);
  53. }
  54. static inline void nfsd_stats_drc_mem_usage_sub(struct nfsd_net *nn, s64 amount)
  55. {
  56. percpu_counter_sub(&nn->counter[NFSD_STATS_DRC_MEM_USAGE], amount);
  57. }
  58. #ifdef CONFIG_NFSD_V4
  59. static inline void nfsd_stats_wdeleg_getattr_inc(struct nfsd_net *nn)
  60. {
  61. percpu_counter_inc(&nn->counter[NFSD_STATS_WDELEG_GETATTR]);
  62. }
  63. #endif
  64. #endif /* _NFSD_STATS_H */