|
@@ -29,15 +29,14 @@ static int nfs_get_cb_ident_idr(struct nfs_client *clp, int minorversion)
|
|
|
|
|
|
if (clp->rpc_ops->version != 4 || minorversion != 0)
|
|
|
return ret;
|
|
|
-retry:
|
|
|
- if (!idr_pre_get(&nn->cb_ident_idr, GFP_KERNEL))
|
|
|
- return -ENOMEM;
|
|
|
+ idr_preload(GFP_KERNEL);
|
|
|
spin_lock(&nn->nfs_client_lock);
|
|
|
- ret = idr_get_new(&nn->cb_ident_idr, clp, &clp->cl_cb_ident);
|
|
|
+ ret = idr_alloc(&nn->cb_ident_idr, clp, 0, 0, GFP_NOWAIT);
|
|
|
+ if (ret >= 0)
|
|
|
+ clp->cl_cb_ident = ret;
|
|
|
spin_unlock(&nn->nfs_client_lock);
|
|
|
- if (ret == -EAGAIN)
|
|
|
- goto retry;
|
|
|
- return ret;
|
|
|
+ idr_preload_end();
|
|
|
+ return ret < 0 ? ret : 0;
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_NFS_V4_1
|