Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[powerpc.git] / fs / nfs / iostat.h
index dc080e5..6350ecb 100644 (file)
@@ -103,6 +103,7 @@ enum nfs_stat_eventcounters {
        NFSIOS_SILLYRENAME,
        NFSIOS_SHORTREAD,
        NFSIOS_SHORTWRITE,
+       NFSIOS_DELAY,
        __NFSIOS_COUNTSMAX,
 };
 
@@ -116,28 +117,38 @@ struct nfs_iostats {
        unsigned long           events[__NFSIOS_COUNTSMAX];
 } ____cacheline_aligned;
 
-static inline void nfs_inc_stats(struct inode *inode, enum nfs_stat_eventcounters stat)
+static inline void nfs_inc_server_stats(struct nfs_server *server, enum nfs_stat_eventcounters stat)
 {
        struct nfs_iostats *iostats;
        int cpu;
 
        cpu = get_cpu();
-       iostats = per_cpu_ptr(NFS_SERVER(inode)->io_stats, cpu);
+       iostats = per_cpu_ptr(server->io_stats, cpu);
        iostats->events[stat] ++;
        put_cpu_no_resched();
 }
 
-static inline void nfs_add_stats(struct inode *inode, enum nfs_stat_bytecounters stat, unsigned long addend)
+static inline void nfs_inc_stats(struct inode *inode, enum nfs_stat_eventcounters stat)
+{
+       nfs_inc_server_stats(NFS_SERVER(inode), stat);
+}
+
+static inline void nfs_add_server_stats(struct nfs_server *server, enum nfs_stat_bytecounters stat, unsigned long addend)
 {
        struct nfs_iostats *iostats;
        int cpu;
 
        cpu = get_cpu();
-       iostats = per_cpu_ptr(NFS_SERVER(inode)->io_stats, cpu);
+       iostats = per_cpu_ptr(server->io_stats, cpu);
        iostats->bytes[stat] += addend;
        put_cpu_no_resched();
 }
 
+static inline void nfs_add_stats(struct inode *inode, enum nfs_stat_bytecounters stat, unsigned long addend)
+{
+       nfs_add_server_stats(NFS_SERVER(inode), stat, addend);
+}
+
 static inline struct nfs_iostats *nfs_alloc_iostats(void)
 {
        return alloc_percpu(struct nfs_iostats);
@@ -145,7 +156,8 @@ static inline struct nfs_iostats *nfs_alloc_iostats(void)
 
 static inline void nfs_free_iostats(struct nfs_iostats *stats)
 {
-       free_percpu(stats);
+       if (stats != NULL)
+               free_percpu(stats);
 }
 
 #endif