linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
	rusty@rustcorp.com.au, bfields@fieldses.org,
	skinsbursky@parallels.com, jmorris@namei.org, axboe@kernel.dk
Subject: Re: [PATCHSET] idr: implement idr_alloc() and convert existing users
Date: Sun, 3 Feb 2013 06:13:53 -0800	[thread overview]
Message-ID: <CAOS58YPhSz4DQT5-hTkH-wW_P3b5LK1WuEbWiR8uyNZPZdf_Gw@mail.gmail.com> (raw)
In-Reply-To: <87a9rltszn.fsf@xmission.com>

Hey, Eric.

On Sun, Feb 3, 2013 at 5:41 AM, Eric W. Biederman <ebiederm@xmission.com> wrote:
> Why the deep percpu magic?

Eh? What's magical about it?  You preload percpu buffer if you're
gonna be allocating an id from context which doesn't allow permissive
allocation.  This is the same technique used by radix tree preloading.
 The only reason idr did its own preloading was probably because it
got implemented before we had proper percpu techniques.

> Why don't associate idr_preload with an idr structure.

Because then you end up with a lot more preloaded buffers which are
much less useful.  You can't guarantee your preload target is the only
one who's gonna use the preload buffer so you end up with this ugly
-EAGAIN retry loop.  It's inefficient & inconvenient.

> When reading code with idr_preload I get this deep down creepy feeling.
> What is this magic that is going on?

Seriously, if this gives you deep creepy feeling, you need to get on
with time.  It's a basic percpu technique.

> Can't we just put the preload list_head into struct idr make
> idr_preload and idr_preload_end take an idr argument?

Inefficient & inconvenient.

> Maybe we can have a special structure we put on the stack that has
> the list_head and the preload state instead.
>
> The way this works just weirds me out and I really really don't like it.
>
> I would rather continue to use the existing functions as problematic as
> they are as I don't need a course in deep magic to make sense of them.

Heh, this is the weirdest review I got in quite a while.  Please sit
down and read it again.

Thanks.

-- 
tejun

  reply	other threads:[~2013-02-03 14:13 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-03  1:20 [PATCHSET] idr: implement idr_alloc() and convert existing users Tejun Heo
2013-02-03  1:20 ` [PATCH 01/62] idr: cosmetic updates to struct / initializer definitions Tejun Heo
2013-02-03  1:20 ` [PATCH 02/62] idr: relocate idr_for_each_entry() and reorganize id[r|a]_get_new() Tejun Heo
2013-02-03  1:20 ` [PATCH 03/62] idr: remove _idr_rc_to_errno() hack Tejun Heo
2013-02-03  1:20 ` [PATCH 04/62] idr: refactor idr_get_new_above() Tejun Heo
2013-02-03  1:20 ` [PATCH 05/62] idr: implement idr_preload[_end]() and idr_alloc() Tejun Heo
2013-02-04 18:32   ` [PATCH v2 " Tejun Heo
2013-02-03  1:20 ` [PATCH 06/62] block: fix synchronization and limit check in blk_alloc_devt() Tejun Heo
2013-02-06 11:00   ` Jens Axboe
2013-02-03  1:20 ` [PATCH 07/62] block: convert to idr_alloc() Tejun Heo
2013-02-04 13:10   ` Jens Axboe
2013-02-03  1:20 ` [PATCH 08/62] block/loop: " Tejun Heo
2013-02-04 13:11   ` Jens Axboe
2013-02-03  1:20 ` [PATCH 09/62] atm/nicstar: " Tejun Heo
2013-02-04 14:04   ` chas williams - CONTRACTOR
2013-02-04 17:06     ` Tejun Heo
2013-02-04 18:06       ` chas williams - CONTRACTOR
2013-02-04 18:37   ` [PATCH v3 " Tejun Heo
2013-02-03  1:20 ` [PATCH 10/62] drbd: " Tejun Heo
2013-02-03  1:20 ` [PATCH 11/62] dca: " Tejun Heo
2013-02-03  1:20 ` [PATCH 12/62] dmaengine: " Tejun Heo
2013-02-03  1:20 ` [PATCH 13/62] firewire: " Tejun Heo
2013-02-03 11:03   ` Stefan Richter
2013-02-03 11:18     ` Stefan Richter
2013-02-04 16:57   ` [PATCH 12.5/62] firewire: add minor number range check to fw_device_init() Tejun Heo
2013-02-04 18:15     ` Stefan Richter
2013-02-04 16:58   ` [PATCH v2 13/62] firewire: convert to idr_alloc() Tejun Heo
2013-02-04 18:16     ` Stefan Richter
2013-02-03  1:20 ` [PATCH 14/62] gpio: " Tejun Heo
2013-02-04 20:40   ` Linus Walleij
2013-02-03  1:20 ` [PATCH 15/62] drm: " Tejun Heo
2013-02-03  1:20 ` [PATCH 16/62] drm/exynos: " Tejun Heo
2013-02-03  1:20 ` [PATCH 17/62] drm/i915: " Tejun Heo
2013-02-04 14:53   ` Daniel Vetter
2013-02-03  1:20 ` [PATCH 18/62] drm/sis: " Tejun Heo
2013-02-03  1:20 ` [PATCH 19/62] drm/via: " Tejun Heo
2013-02-03  1:20 ` [PATCH 20/62] drm/vmwgfx: " Tejun Heo
2013-02-03  1:20 ` [PATCH 21/62] i2c: " Tejun Heo
2013-02-03  1:20 ` [PATCH 22/62] infiniband/core: " Tejun Heo
2013-02-04 16:43   ` [PATCH v2 " Tejun Heo
2013-02-05  0:07     ` Hefty, Sean
2013-02-03  1:20 ` [PATCH 23/62] infiniband/amso1100: " Tejun Heo
2013-02-03 14:36   ` Steve Wise
2013-02-03  1:20 ` [PATCH 24/62] infiniband/cxgb3: " Tejun Heo
2013-02-03 14:37   ` Steve Wise
2013-02-03  1:20 ` [PATCH 25/62] infiniband/cxgb4: " Tejun Heo
2013-02-03 14:18   ` Steve Wise
2013-02-03 14:28     ` Tejun Heo
2013-02-04 15:32   ` Steve Wise
2013-02-03  1:20 ` [PATCH 26/62] infiniband/ehca: " Tejun Heo
2013-02-03  1:20 ` [PATCH 27/62] infiniband/ipath: " Tejun Heo
2013-02-04 16:15   ` Marciniszyn, Mike
2013-02-04 16:18     ` Tejun Heo
2013-02-03  1:20 ` [PATCH 28/62] infiniband/mlx4: " Tejun Heo
2013-02-03  1:20 ` [PATCH 29/62] infiniband/ocrdma: " Tejun Heo
2013-02-03  1:20 ` [PATCH 30/62] infiniband/qib: " Tejun Heo
2013-02-03  1:20 ` [PATCH 31/62] dm: " Tejun Heo
2013-02-03  1:20 ` [PATCH 32/62] memstick: " Tejun Heo
2013-02-03  1:20 ` [PATCH 33/62] mfd: " Tejun Heo
2013-02-03 22:32   ` Samuel Ortiz
2013-02-03  1:20 ` [PATCH 34/62] misc/c2port: " Tejun Heo
2013-02-03  1:20 ` [PATCH 35/62] misc/tifm_core: " Tejun Heo
2013-02-03  1:20 ` [PATCH 36/62] mmc: " Tejun Heo
2013-02-03  1:20 ` [PATCH 37/62] mtd: " Tejun Heo
2013-02-04 13:09   ` Ezequiel Garcia
2013-02-03  1:20 ` [PATCH 38/62] i2c: " Tejun Heo
2013-02-03  1:25   ` [PATCH UPDATED 38/62] macvtap: " Tejun Heo
2013-02-03  1:20 ` [PATCH 39/62] ppp: " Tejun Heo
2013-02-03  1:20 ` [PATCH 40/62] power: " Tejun Heo
2013-02-03  3:46   ` Anton Vorontsov
2013-02-03  1:20 ` [PATCH 41/62] pps: " Tejun Heo
2013-02-03  1:20 ` [PATCH 42/62] remoteproc: " Tejun Heo
2013-02-03  1:20 ` [PATCH 43/62] rpmsg: " Tejun Heo
2013-02-03  1:20 ` [PATCH 44/62] scsi/bfa: " Tejun Heo
2013-02-03  1:20 ` [PATCH 45/62] scsi: " Tejun Heo
2013-02-03  1:20 ` [PATCH 46/62] target/iscsi: " Tejun Heo
2013-02-03  1:20 ` [PATCH 47/62] scsi/lpfc: " Tejun Heo
2013-02-11 22:46   ` James Smart
2013-02-03  1:20 ` [PATCH 48/62] thermal: " Tejun Heo
2013-02-03  1:20 ` [PATCH 49/62] uio: " Tejun Heo
2013-02-03  7:05   ` Greg Kroah-Hartman
2013-02-03  1:20 ` [PATCH 50/62] vfio: " Tejun Heo
2013-02-04 16:06   ` Alex Williamson
2013-02-04 16:48   ` [PATCH v2 " Tejun Heo
2013-02-03  1:20 ` [PATCH 51/62] dlm: " Tejun Heo
2013-02-03  1:20 ` [PATCH 52/62] inotify: " Tejun Heo
2013-02-03  1:20 ` [PATCH 53/62] ocfs2: " Tejun Heo
2013-02-03  1:20 ` [PATCH 54/62] ipc: " Tejun Heo
2013-02-03  1:20 ` [PATCH 55/62] cgroup: " Tejun Heo
2013-02-04  2:49   ` Li Zefan
2013-02-03  1:20 ` [PATCH 56/62] events: " Tejun Heo
2013-02-03  1:20 ` [PATCH 57/62] posix-timers: " Tejun Heo
2013-02-03  1:20 ` [PATCH 58/62] net/9p: " Tejun Heo
2013-02-03  1:21 ` [PATCH 59/62] mac80211: " Tejun Heo
2013-02-04 17:40   ` Johannes Berg
2013-02-04 17:42     ` Tejun Heo
2013-02-03  1:21 ` [PATCH 60/62] sctp: " Tejun Heo
2013-02-03 16:55   ` Neil Horman
2013-02-04 16:22   ` Vlad Yasevich
2013-02-04 16:37     ` Tejun Heo
2013-02-04 16:42   ` [PATCH v2 " Tejun Heo
2013-02-05 15:22     ` Neil Horman
2013-02-03  1:21 ` [PATCH 61/62] nfs4client: " Tejun Heo
2013-02-03  1:21 ` [PATCH 62/62] idr: deprecate idr_pre_get() and idr_get_new[_above]() Tejun Heo
2013-02-03 13:41 ` [PATCHSET] idr: implement idr_alloc() and convert existing users Eric W. Biederman
2013-02-03 14:13   ` Tejun Heo [this message]
2013-02-03 15:24     ` Eric W. Biederman
2013-02-03 15:47       ` Tejun Heo
2013-02-03 17:02 ` J. Bruce Fields
2013-02-04  0:15   ` J. Bruce Fields
2013-02-04 17:10     ` Tejun Heo
2013-02-04 17:11       ` Tejun Heo
2013-02-04 18:15         ` J. Bruce Fields
2013-03-21 14:06         ` J. Bruce Fields
2013-03-21 18:35           ` Tejun Heo
2013-03-26 15:19             ` Jeff Layton
2013-03-26 15:26               ` Tejun Heo
2013-03-26 16:30                 ` J. Bruce Fields
2013-03-26 16:33                   ` Tejun Heo
2013-03-26 16:36                     ` Tejun Heo
2013-03-26 16:52                       ` Jeff Layton
2013-02-04 17:16       ` J. Bruce Fields
2013-02-04 19:17 ` Tejun Heo
2013-02-04 19:54   ` Marciniszyn, Mike
2013-02-04 21:42     ` Tejun Heo
2013-02-04 22:25       ` Marciniszyn, Mike
2013-02-04 20:08   ` Marciniszyn, Mike
2013-02-04 21:43     ` Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAOS58YPhSz4DQT5-hTkH-wW_P3b5LK1WuEbWiR8uyNZPZdf_Gw@mail.gmail.com \
    --to=tj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=bfields@fieldses.org \
    --cc=ebiederm@xmission.com \
    --cc=jmorris@namei.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=skinsbursky@parallels.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).