diff options
author | Tejun Heo <tj@kernel.org> | 2013-02-27 20:04:49 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-27 22:10:19 -0500 |
commit | 2a86b3e74f12bcdd13ceb1bf333bc2d5f43b3c02 (patch) | |
tree | 142d8492bdeb66b6edfba7302ccc38dbd1e7227a /fs/dlm/lock.c | |
parent | a1c36b166be76763cfab1a4308a00d6ffd8a2cc0 (diff) |
dlm: convert to idr_alloc()
Convert to the much saner new idr interface. Error return values from
recover_idr_add() mix -1 and -errno. The conversion doesn't change
that but it looks iffy.
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/dlm/lock.c')
-rw-r--r-- | fs/dlm/lock.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/dlm/lock.c b/fs/dlm/lock.c index f7501651762d..1b1146670c4b 100644 --- a/fs/dlm/lock.c +++ b/fs/dlm/lock.c | |||
@@ -1183,7 +1183,7 @@ static void detach_lkb(struct dlm_lkb *lkb) | |||
1183 | static int create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret) | 1183 | static int create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret) |
1184 | { | 1184 | { |
1185 | struct dlm_lkb *lkb; | 1185 | struct dlm_lkb *lkb; |
1186 | int rv, id; | 1186 | int rv; |
1187 | 1187 | ||
1188 | lkb = dlm_allocate_lkb(ls); | 1188 | lkb = dlm_allocate_lkb(ls); |
1189 | if (!lkb) | 1189 | if (!lkb) |
@@ -1199,19 +1199,13 @@ static int create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret) | |||
1199 | mutex_init(&lkb->lkb_cb_mutex); | 1199 | mutex_init(&lkb->lkb_cb_mutex); |
1200 | INIT_WORK(&lkb->lkb_cb_work, dlm_callback_work); | 1200 | INIT_WORK(&lkb->lkb_cb_work, dlm_callback_work); |
1201 | 1201 | ||
1202 | retry: | 1202 | idr_preload(GFP_NOFS); |
1203 | rv = idr_pre_get(&ls->ls_lkbidr, GFP_NOFS); | ||
1204 | if (!rv) | ||
1205 | return -ENOMEM; | ||
1206 | |||
1207 | spin_lock(&ls->ls_lkbidr_spin); | 1203 | spin_lock(&ls->ls_lkbidr_spin); |
1208 | rv = idr_get_new_above(&ls->ls_lkbidr, lkb, 1, &id); | 1204 | rv = idr_alloc(&ls->ls_lkbidr, lkb, 1, 0, GFP_NOWAIT); |
1209 | if (!rv) | 1205 | if (rv >= 0) |
1210 | lkb->lkb_id = id; | 1206 | lkb->lkb_id = rv; |
1211 | spin_unlock(&ls->ls_lkbidr_spin); | 1207 | spin_unlock(&ls->ls_lkbidr_spin); |
1212 | 1208 | idr_preload_end(); | |
1213 | if (rv == -EAGAIN) | ||
1214 | goto retry; | ||
1215 | 1209 | ||
1216 | if (rv < 0) { | 1210 | if (rv < 0) { |
1217 | log_error(ls, "create_lkb idr error %d", rv); | 1211 | log_error(ls, "create_lkb idr error %d", rv); |