Fix calculation in move_freepages_block for counting pages
[sfrench/cifs-2.6.git] / kernel / delayacct.c
index 766d5912b26a4533edd2b07ac767dd36db581ca3..09e9574eeb26f0273054e1111224521e0a072c67 100644 (file)
@@ -31,11 +31,7 @@ __setup("nodelayacct", delayacct_setup_disable);
 
 void delayacct_init(void)
 {
-       delayacct_cache = kmem_cache_create("delayacct_cache",
-                                       sizeof(struct task_delay_info),
-                                       0,
-                                       SLAB_PANIC,
-                                       NULL, NULL);
+       delayacct_cache = KMEM_CACHE(task_delay_info, SLAB_PANIC);
        delayacct_tsk_init(&init_task);
 }
 
@@ -103,9 +99,10 @@ void __delayacct_blkio_end(void)
 int __delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk)
 {
        s64 tmp;
-       struct timespec ts;
-       unsigned long t1,t2,t3;
+       unsigned long t1;
+       unsigned long long t2, t3;
        unsigned long flags;
+       struct timespec ts;
 
        /* Though tsk->delays accessed later, early exit avoids
         * unnecessary returning of other data
@@ -122,17 +119,16 @@ int __delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk)
         * No locking available for sched_info (and too expensive to add one)
         * Mitigate by taking snapshot of values
         */
-       t1 = tsk->sched_info.pcnt;
+       t1 = tsk->sched_info.pcount;
        t2 = tsk->sched_info.run_delay;
        t3 = tsk->sched_info.cpu_time;
 
        d->cpu_count += t1;
 
-       jiffies_to_timespec(t2, &ts);
-       tmp = (s64)d->cpu_delay_total + timespec_to_ns(&ts);
+       tmp = (s64)d->cpu_delay_total + t2;
        d->cpu_delay_total = (tmp < (s64)d->cpu_delay_total) ? 0 : tmp;
 
-       tmp = (s64)d->cpu_run_virtual_total + (s64)jiffies_to_usecs(t3) * 1000;
+       tmp = (s64)d->cpu_run_virtual_total + t3;
        d->cpu_run_virtual_total =
                (tmp < (s64)d->cpu_run_virtual_total) ? 0 : tmp;