linux/fs/nfs/iostat.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 *  linux/fs/nfs/iostat.h
   4 *
   5 *  Declarations for NFS client per-mount statistics
   6 *
   7 *  Copyright (C) 2005, 2006 Chuck Lever <cel@netapp.com>
   8 *
   9 */
  10
  11#ifndef _NFS_IOSTAT
  12#define _NFS_IOSTAT
  13
  14#include <linux/percpu.h>
  15#include <linux/cache.h>
  16#include <linux/nfs_iostat.h>
  17
  18struct nfs_iostats {
  19        unsigned long long      bytes[__NFSIOS_BYTESMAX];
  20#ifdef CONFIG_NFS_FSCACHE
  21        unsigned long long      fscache[__NFSIOS_FSCACHEMAX];
  22#endif
  23        unsigned long           events[__NFSIOS_COUNTSMAX];
  24} ____cacheline_aligned;
  25
  26static inline void nfs_inc_server_stats(const struct nfs_server *server,
  27                                        enum nfs_stat_eventcounters stat)
  28{
  29        this_cpu_inc(server->io_stats->events[stat]);
  30}
  31
  32static inline void nfs_inc_stats(const struct inode *inode,
  33                                 enum nfs_stat_eventcounters stat)
  34{
  35        nfs_inc_server_stats(NFS_SERVER(inode), stat);
  36}
  37
  38static inline void nfs_add_server_stats(const struct nfs_server *server,
  39                                        enum nfs_stat_bytecounters stat,
  40                                        long addend)
  41{
  42        this_cpu_add(server->io_stats->bytes[stat], addend);
  43}
  44
  45static inline void nfs_add_stats(const struct inode *inode,
  46                                 enum nfs_stat_bytecounters stat,
  47                                 long addend)
  48{
  49        nfs_add_server_stats(NFS_SERVER(inode), stat, addend);
  50}
  51
  52#ifdef CONFIG_NFS_FSCACHE
  53static inline void nfs_add_fscache_stats(struct inode *inode,
  54                                         enum nfs_stat_fscachecounters stat,
  55                                         long addend)
  56{
  57        this_cpu_add(NFS_SERVER(inode)->io_stats->fscache[stat], addend);
  58}
  59static inline void nfs_inc_fscache_stats(struct inode *inode,
  60                                         enum nfs_stat_fscachecounters stat)
  61{
  62        this_cpu_inc(NFS_SERVER(inode)->io_stats->fscache[stat]);
  63}
  64#endif
  65
  66static inline struct nfs_iostats __percpu *nfs_alloc_iostats(void)
  67{
  68        return alloc_percpu(struct nfs_iostats);
  69}
  70
  71static inline void nfs_free_iostats(struct nfs_iostats __percpu *stats)
  72{
  73        if (stats != NULL)
  74                free_percpu(stats);
  75}
  76
  77#endif /* _NFS_IOSTAT */
  78