Thread (14 messages) 14 messages, 4 authors, 2012-06-01

Re: [PATCH 2/2] block: Convert BDI proportion calculations to flexible proportions

From: Peter Zijlstra <peterz@infradead.org>
Date: 2012-05-31 22:26:17
Also in: lkml

On Fri, 2012-06-01 at 00:11 +0200, Jan Kara wrote:
quoted hunk ↗ jump to hunk
 bool fprop_new_period(struct fprop_global *p, int periods)
 {
-       u64 events = percpu_counter_sum(&p->events);
+       u64 events;
+       unsigned long flags;
 
+       local_irq_save(flags);
+       events = percpu_counter_sum(&p->events);
+       local_irq_restore(flags);
        /*
         * Don't do anything if there are no events.
         */
@@ -73,7 +77,9 @@ bool fprop_new_period(struct fprop_global *p, int periods)
        if (periods < 64)
                events -= events >> periods;
        /* Use addition to avoid losing events happening between sum and set */
+       local_irq_save(flags);
        percpu_counter_add(&p->events, -events);
+       local_irq_restore(flags);
        p->period += periods;
        write_seqcount_end(&p->sequence); 
Uhm, why bother enabling it in between? Just wrap the whole function in
a single IRQ disable.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help