Lines Matching defs:res

117 	struct dlm_lock_resource *res;
119 res = arg;
120 res->sync_locking_done = true;
121 wake_up(&res->sync_locking);
124 static int dlm_lock_sync(struct dlm_lock_resource *res, int mode)
128 ret = dlm_lock(res->ls, mode, &res->lksb,
129 res->flags, res->name, strlen(res->name),
130 0, sync_ast, res, res->bast);
133 wait_event(res->sync_locking, res->sync_locking_done);
134 res->sync_locking_done = false;
135 if (res->lksb.sb_status == 0)
136 res->mode = mode;
137 return res->lksb.sb_status;
140 static int dlm_unlock_sync(struct dlm_lock_resource *res)
142 return dlm_lock_sync(res, DLM_LOCK_NL);
149 static int dlm_lock_sync_interruptible(struct dlm_lock_resource *res, int mode,
154 ret = dlm_lock(res->ls, mode, &res->lksb,
155 res->flags, res->name, strlen(res->name),
156 0, sync_ast, res, res->bast);
160 wait_event(res->sync_locking, res->sync_locking_done
163 if (!res->sync_locking_done) {
169 ret = dlm_unlock(res->ls, res->lksb.sb_lkid, DLM_LKF_CANCEL,
170 &res->lksb, res);
171 res->sync_locking_done = false;
174 "%s return %d\n", res->name, ret);
177 res->sync_locking_done = false;
178 if (res->lksb.sb_status == 0)
179 res->mode = mode;
180 return res->lksb.sb_status;
186 struct dlm_lock_resource *res = NULL;
190 res = kzalloc(sizeof(struct dlm_lock_resource), GFP_KERNEL);
191 if (!res)
193 init_waitqueue_head(&res->sync_locking);
194 res->sync_locking_done = false;
195 res->ls = cinfo->lockspace;
196 res->mddev = mddev;
197 res->mode = DLM_LOCK_IV;
199 res->name = kzalloc(namelen + 1, GFP_KERNEL);
200 if (!res->name) {
204 strscpy(res->name, name, namelen + 1);
206 res->lksb.sb_lvbptr = kzalloc(LVB_SIZE, GFP_KERNEL);
207 if (!res->lksb.sb_lvbptr) {
211 res->flags = DLM_LKF_VALBLK;
215 res->bast = bastfn;
217 res->flags |= DLM_LKF_EXPEDITE;
219 ret = dlm_lock_sync(res, DLM_LOCK_NL);
224 res->flags &= ~DLM_LKF_EXPEDITE;
225 res->flags |= DLM_LKF_CONVERT;
227 return res;
229 kfree(res->lksb.sb_lvbptr);
230 kfree(res->name);
231 kfree(res);
235 static void lockres_free(struct dlm_lock_resource *res)
239 if (!res)
246 ret = dlm_unlock(res->ls, res->lksb.sb_lkid, DLM_LKF_FORCEUNLOCK,
247 &res->lksb, res);
249 pr_err("failed to unlock %s return %d\n", res->name, ret);
251 wait_event(res->sync_locking, res->sync_locking_done);
253 kfree(res->name);
254 kfree(res->lksb.sb_lvbptr);
255 kfree(res);
421 struct dlm_lock_resource *res = arg;
422 struct md_cluster_info *cinfo = res->mddev->cluster_info;