aboutsummaryrefslogtreecommitdiffstats
path: root/fs/dlm/lock.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-02-27 20:04:49 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-27 22:10:19 -0500
commit2a86b3e74f12bcdd13ceb1bf333bc2d5f43b3c02 (patch)
tree142d8492bdeb66b6edfba7302ccc38dbd1e7227a /fs/dlm/lock.c
parenta1c36b166be76763cfab1a4308a00d6ffd8a2cc0 (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.c18
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)
1183static int create_lkb(struct dlm_ls *ls, struct dlm_lkb **lkb_ret) 1183static 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);