From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758259Ab2EaW0R (ORCPT ); Thu, 31 May 2012 18:26:17 -0400 Received: from casper.infradead.org ([85.118.1.10]:42632 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757545Ab2EaW0Q convert rfc822-to-8bit (ORCPT ); Thu, 31 May 2012 18:26:16 -0400 Message-ID: <1338503165.28384.134.camel@twins> Subject: Re: [PATCH 2/2] block: Convert BDI proportion calculations to flexible proportions From: Peter Zijlstra To: Jan Kara Cc: Sasha Levin , Wu Fengguang , linux-mm@kvack.org, LKML Date: Fri, 01 Jun 2012 00:26:05 +0200 In-Reply-To: <20120531221146.GA19050@quack.suse.cz> References: <1337878751-22942-1-git-send-email-jack@suse.cz> <1337878751-22942-3-git-send-email-jack@suse.cz> <1338220185.4284.19.camel@lappy> <20120529123408.GA23991@quack.suse.cz> <1338295111.26856.57.camel@twins> <20120529125452.GB23991@quack.suse.cz> <20120531221146.GA19050@quack.suse.cz> Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7BIT X-Mailer: Evolution 3.2.2- Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2012-06-01 at 00:11 +0200, Jan Kara wrote: > 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.