diff options
author | Tejun Heo <tj@kernel.org> | 2013-02-27 20:04:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-27 22:10:19 -0500 |
commit | 6b207ba3ebe7428a18878c58130e13a3e3bccef9 (patch) | |
tree | 964924c426dbf3ed16fe4a4e8e66350fa812af24 /fs/ocfs2/cluster | |
parent | 4542da631ad210716d097aa803a0828f9fed5e87 (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.c | 32 |
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 | ||
305 | static int o2net_prep_nsw(struct o2net_node *nn, struct o2net_status_wait *nsw) | 305 | static 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 | ||
331 | static void o2net_complete_nsw_locked(struct o2net_node *nn, | 325 | static void o2net_complete_nsw_locked(struct o2net_node *nn, |