Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S943157AbcJ0PAu (ORCPT ); Thu, 27 Oct 2016 11:00:50 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:48280 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932442AbcJ0PAs (ORCPT ); Thu, 27 Oct 2016 11:00:48 -0400 Date: Thu, 27 Oct 2016 17:00:39 +0200 From: Peter Zijlstra To: David Herrmann Cc: linux-kernel@vger.kernel.org, Andy Lutomirski , Jiri Kosina , Greg KH , Hannes Reinecke , Steven Rostedt , Arnd Bergmann , Tom Gundersen , Josh Triplett , Linus Torvalds , Andrew Morton Subject: Re: [RFC v1 05/14] bus1: util - pool utility library Message-ID: <20161027150039.GK3157@twins.programming.kicks-ass.net> References: <20161026191810.12275-1-dh.herrmann@gmail.com> <20161026191810.12275-6-dh.herrmann@gmail.com> <20161027125907.GF3175@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20161027125907.GF3175@twins.programming.kicks-ass.net> User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 907 Lines: 28 On Thu, Oct 27, 2016 at 02:59:07PM +0200, Peter Zijlstra wrote: > On Wed, Oct 26, 2016 at 09:18:01PM +0200, David Herrmann wrote: > > +/* insert slice into the free tree */ > > +static void bus1_pool_slice_link_free(struct bus1_pool_slice *slice, > > + struct bus1_pool *pool) > > +{ > > + struct rb_node **n, *prev = NULL; > > + struct bus1_pool_slice *ps; > > + > > + n = &pool->slices_free.rb_node; > > + while (*n) { > > + prev = *n; > > + ps = container_of(prev, struct bus1_pool_slice, rb); > > + if (slice->size < ps->size) > > + n = &prev->rb_left; > > + else > > + n = &prev->rb_right; > > + } > > + > > + rb_link_node(&slice->rb, prev, n); > > + rb_insert_color(&slice->rb, &pool->slices_free); > > +} > > If you only sort free slices by size, how do you merge contiguous free > slices? Ah, I see, you also keep an ordered list of slices and use that one function up from here.