]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
net/9p: convert to idr_alloc()
authorTejun Heo <tj@kernel.org>
Thu, 7 Feb 2013 01:31:51 +0000 (12:31 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 18 Feb 2013 05:47:39 +0000 (16:47 +1100)
Convert to the much saner new idr interface.

Only compile tested.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Eric Van Hensbergen <ericvh@gmail.com>
Cc: Ron Minnich <rminnich@sandia.gov>
Cc: Latchesar Ionkov <lucho@ionkov.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
net/9p/util.c

index 6ceeeb384de73cbd4583b9b22a41c27b8b0885bb..59f278e64f584b726225fdf02a5f4a88f18fca0e 100644 (file)
@@ -87,23 +87,18 @@ EXPORT_SYMBOL(p9_idpool_destroy);
 
 int p9_idpool_get(struct p9_idpool *p)
 {
-       int i = 0;
-       int error;
+       int i;
        unsigned long flags;
 
-retry:
-       if (idr_pre_get(&p->pool, GFP_NOFS) == 0)
-               return -1;
-
+       idr_preload(GFP_NOFS);
        spin_lock_irqsave(&p->lock, flags);
 
        /* no need to store exactly p, we just need something non-null */
-       error = idr_get_new(&p->pool, p, &i);
-       spin_unlock_irqrestore(&p->lock, flags);
+       i = idr_alloc(&p->pool, p, 0, 0, GFP_NOWAIT);
 
-       if (error == -EAGAIN)
-               goto retry;
-       else if (error)
+       spin_unlock_irqrestore(&p->lock, flags);
+       idr_preload_end();
+       if (i < 0)
                return -1;
 
        p9_debug(P9_DEBUG_MUX, " id %d pool %p\n", i, p);