aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/cluster
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-02-27 20:04:51 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-27 22:10:19 -0500
commit6b207ba3ebe7428a18878c58130e13a3e3bccef9 (patch)
tree964924c426dbf3ed16fe4a4e8e66350fa812af24 /fs/ocfs2/cluster
parent4542da631ad210716d097aa803a0828f9fed5e87 (diff)
ocfs2: convert to idr_alloc()
Convert to the much saner new idr interface. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Mark Fasheh <mfasheh@suse.com> Acked-by: Joel Becker <jlbec@evilplan.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ocfs2/cluster')
-rw-r--r--fs/ocfs2/cluster/tcp.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c
index 0d2bf566e39a..aa88bd8bcedc 100644
--- a/fs/ocfs2/cluster/tcp.c
+++ b/fs/ocfs2/cluster/tcp.c
@@ -304,28 +304,22 @@ static u8 o2net_num_from_nn(struct o2net_node *nn)
304 304
305static int o2net_prep_nsw(struct o2net_node *nn, struct o2net_status_wait *nsw) 305static int o2net_prep_nsw(struct o2net_node *nn, struct o2net_status_wait *nsw)
306{ 306{
307 int ret = 0; 307 int ret;
308
309 do {
310 if (!idr_pre_get(&nn->nn_status_idr, GFP_ATOMIC)) {
311 ret = -EAGAIN;
312 break;
313 }
314 spin_lock(&nn->nn_lock);
315 ret = idr_get_new(&nn->nn_status_idr, nsw, &nsw->ns_id);
316 if (ret == 0)
317 list_add_tail(&nsw->ns_node_item,
318 &nn->nn_status_list);
319 spin_unlock(&nn->nn_lock);
320 } while (ret == -EAGAIN);
321 308
322 if (ret == 0) { 309 spin_lock(&nn->nn_lock);
323 init_waitqueue_head(&nsw->ns_wq); 310 ret = idr_alloc(&nn->nn_status_idr, nsw, 0, 0, GFP_ATOMIC);
324 nsw->ns_sys_status = O2NET_ERR_NONE; 311 if (ret >= 0) {
325 nsw->ns_status = 0; 312 nsw->ns_id = ret;
313 list_add_tail(&nsw->ns_node_item, &nn->nn_status_list);
326 } 314 }
315 spin_unlock(&nn->nn_lock);
316 if (ret < 0)
317 return ret;
327 318
328 return ret; 319 init_waitqueue_head(&nsw->ns_wq);
320 nsw->ns_sys_status = O2NET_ERR_NONE;
321 nsw->ns_status = 0;
322 return 0;
329} 323}
330 324
331static void o2net_complete_nsw_locked(struct o2net_node *nn, 325static void o2net_complete_nsw_locked(struct o2net_node *nn,