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