Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1510378

Re: [RFC v1 05/14] bus1: util - pool utility library

From Peter Zijlstra <peterz@infradead.org>
Newsgroups linux.kernel
Subject Re: [RFC v1 05/14] bus1: util - pool utility library
Date 2016-10-27 17:20 +0200
Message-ID <swUDf-3BS-1@gated-at.bofh.it> (permalink)
References <swC3D-87o-1@gated-at.bofh.it> <swC3D-87o-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Wed, Oct 26, 2016 at 09:18:01PM +0200, David Herrmann wrote:

All small nits..

> +void bus1_pool_deinit(struct bus1_pool *pool)
> +{
> +	struct bus1_pool_slice *slice;
> +
> +	if (!pool || !pool->f)
> +		return;
> +
> +	while ((slice = list_first_entry_or_null(&pool->slices,
> +						 struct bus1_pool_slice,
> +						 entry))) {
> +		WARN_ON(slice->ref_kernel);
> +		list_del(&slice->entry);
> +		bus1_pool_slice_free(slice);
> +	}

I prefer to write that loop like:

	while (!list_empty(&pool->slices)) {
		slice = list_first_entry(&pool->slices, struct bus1_pool_slice, entry);
		list_del(&slice->entry);

		// ...
	}



> +static void bus1_pool_free(struct bus1_pool *pool,
> +			   struct bus1_pool_slice *slice)
> +{
> +	struct bus1_pool_slice *ps;
> +
> +	/* don't free the slice if either has a reference */
> +	if (slice->ref_kernel || slice->ref_user || WARN_ON(slice->free))
> +		return;
> +
> +	/*
> +	 * To release a pool-slice, we first drop it from the busy-tree, then
> +	 * merge it with possible previous/following free slices and re-add it
> +	 * to the free-tree.
> +	 */
> +
> +	rb_erase(&slice->rb, &pool->slices_busy);
> +
> +	if (!WARN_ON(slice->size > pool->allocated_size))
> +		pool->allocated_size -= slice->size;
> +
> +	if (pool->slices.next != &slice->entry) {
> +		ps = container_of(slice->entry.prev, struct bus1_pool_slice,
> +				  entry);

		ps = list_prev_entry(slice, entry);

> +		if (ps->free) {
> +			rb_erase(&ps->rb, &pool->slices_free);
> +			list_del(&slice->entry);
> +			ps->size += slice->size;
> +			bus1_pool_slice_free(slice);
> +			slice = ps; /* switch to previous slice */
> +		}
> +	}
> +
> +	if (pool->slices.prev != &slice->entry) {
> +		ps = container_of(slice->entry.next, struct bus1_pool_slice,
> +				  entry);

		ps = list_next_entry(slice, entry);

> +		if (ps->free) {
> +			rb_erase(&ps->rb, &pool->slices_free);
> +			list_del(&ps->entry);
> +			slice->size += ps->size;
> +			bus1_pool_slice_free(ps);
> +		}
> +	}
> +
> +	slice->free = true;
> +	bus1_pool_slice_link_free(slice, pool);
> +}

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[RFC v1 00/14] Bus1 Kernel Message Bus David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
  [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
    Re: [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 Andy Lutomirski <luto@amacapital.net> - 2016-10-27 01:30 +0200
      Re: [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 Tom Gundersen <teg@jklm.no> - 2016-10-27 02:00 +0200
        Re: [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 Arnd Bergmann <arnd@arndb.de> - 2016-10-27 11:20 +0200
          Re: [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 Tom Gundersen <teg@jklm.no> - 2016-10-27 17:30 +0200
            Re: [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 Linus Torvalds <torvalds@linux-foundation.org> - 2016-10-27 18:40 +0200
              Re: [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 Tom Gundersen <teg@jklm.no> - 2016-10-27 18:50 +0200
            Re: [RFC v1 02/14] bus1: provide stub cdev /dev/bus1 Arnd Bergmann <arnd@arndb.de> - 2016-10-30 00:20 +0200
  [RFC v1 09/14] bus1: provide transaction context for multicasts David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
    Re: [RFC v1 09/14] bus1: provide transaction context for multicasts Peter Zijlstra <peterz@infradead.org> - 2016-10-28 16:40 +0200
  [RFC v1 07/14] bus1: tracking user contexts David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
  [RFC v1 03/14] bus1: util - active reference utility library David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
  [RFC v1 05/14] bus1: util - pool utility library David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
    Re: [RFC v1 05/14] bus1: util - pool utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-27 16:00 +0200
      Re: [RFC v1 05/14] bus1: util - pool utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-27 17:10 +0200
    Re: [RFC v1 05/14] bus1: util - pool utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-27 16:00 +0200
    Re: [RFC v1 05/14] bus1: util - pool utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-27 17:20 +0200
  [RFC v1 04/14] bus1: util - fixed list utility library David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
    Re: [RFC v1 04/14] bus1: util - fixed list utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-27 16:30 +0200
      Re: [RFC v1 04/14] bus1: util - fixed list utility library David Herrmann <dh.herrmann@gmail.com> - 2016-10-27 16:50 +0200
  [RFC v1 13/14] bus1: limit and protect resources David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
  [RFC v1 08/14] bus1: implement peer management context David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
    Re: [RFC v1 08/14] bus1: implement peer management context Richard Weinberger <richard.weinberger@gmail.com> - 2016-10-28 14:10 +0200
      Re: [RFC v1 08/14] bus1: implement peer management context Tom Gundersen <teg@jklm.no> - 2016-10-28 15:20 +0200
        Re: [RFC v1 08/14] bus1: implement peer management context Richard Weinberger <richard@nod.at> - 2016-10-28 15:30 +0200
    Re: [RFC v1 08/14] bus1: implement peer management context Richard Weinberger <richard.weinberger@gmail.com> - 2016-10-28 15:10 +0200
      Re: [RFC v1 08/14] bus1: implement peer management context Tom Gundersen <teg@jklm.no> - 2016-10-28 15:30 +0200
        Re: [RFC v1 08/14] bus1: implement peer management context Richard Weinberger <richard@nod.at> - 2016-10-28 16:00 +0200
  [RFC v1 14/14] bus1: basic user-space kselftests David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
  [RFC v1 12/14] bus1: hook up file-operations David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
  [RFC v1 01/14] bus1: add bus1(7) man-page David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
    Re: [RFC v1 01/14] bus1: add bus1(7) man-page "Kirill A. Shutemov" <kirill@shutemov.name> - 2016-10-29 22:30 +0200
  [RFC v1 11/14] bus1: implement message transmission David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
  [RFC v1 06/14] bus1: util - queue utility library David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 21:30 +0200
    Re: [RFC v1 06/14] bus1: util - queue utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-27 17:30 +0200
    Re: [RFC v1 06/14] bus1: util - queue utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-27 18:50 +0200
      Re: [RFC v1 06/14] bus1: util - queue utility library Tom Gundersen <teg@jklm.no> - 2016-10-28 13:40 +0200
        Re: [RFC v1 06/14] bus1: util - queue utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-28 15:40 +0200
          Re: [RFC v1 06/14] bus1: util - queue utility library Tom Gundersen <teg@jklm.no> - 2016-10-28 15:50 +0200
            Re: [RFC v1 06/14] bus1: util - queue utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-28 16:00 +0200
              Re: [RFC v1 06/14] bus1: util - queue utility library Tom Gundersen <teg@jklm.no> - 2016-10-28 16:40 +0200
                Re: [RFC v1 06/14] bus1: util - queue utility library Peter Zijlstra <peterz@infradead.org> - 2016-10-28 18:50 +0200
  Re: [RFC v1 00/14] Bus1 Kernel Message Bus Linus Torvalds <torvalds@linux-foundation.org> - 2016-10-26 21:50 +0200
    Re: [RFC v1 00/14] Bus1 Kernel Message Bus David Herrmann <dh.herrmann@gmail.com> - 2016-10-26 22:40 +0200
      Re: [RFC v1 00/14] Bus1 Kernel Message Bus "Kirill A. Shutemov" <kirill@shutemov.name> - 2016-10-29 22:30 +0200
        Re: [RFC v1 00/14] Bus1 Kernel Message Bus Josh Triplett <josh@joshtriplett.org> - 2016-10-29 23:10 +0200
        Re: [RFC v1 00/14] Bus1 Kernel Message Bus David Herrmann <dh.herrmann@gmail.com> - 2016-11-02 15:50 +0100
  Re: [RFC v1 04/14] bus1: util - fixed list utility library Arnd Bergmann <arnd@arndb.de> - 2016-10-27 16:00 +0200
    Re: [RFC v1 04/14] bus1: util - fixed list utility library David Herrmann <dh.herrmann@gmail.com> - 2016-10-27 16:00 +0200
  Re: [RFC v1 00/14] Bus1 Kernel Message Bus Michael Kerrisk <mtk.manpages@gmail.com> - 2016-10-27 16:40 +0200
  Re: [RFC v1 00/14] Bus1 Kernel Message Bus Richard Weinberger <richard.weinberger@gmail.com> - 2016-10-28 15:20 +0200
    Re: [RFC v1 00/14] Bus1 Kernel Message Bus Tom Gundersen <teg@jklm.no> - 2016-10-28 15:40 +0200

csiph-web