Lines Matching refs:op

49 	struct plock_op *op = NULL, *iter;
60 op = iter;
65 return op;
85 static void dlm_release_plock_op(struct plock_op *op)
87 kfree(op->data);
88 kfree(op);
91 static void send_op(struct plock_op *op)
93 set_version(&op->info);
95 list_add_tail(&op->list, &send_list);
102 struct plock_op *op;
105 op = kzalloc(sizeof(*op), GFP_NOFS);
106 if (!op)
109 op->info = *orig_info;
110 op->info.optype = DLM_PLOCK_OP_CANCEL;
111 op->info.wait = 0;
113 send_op(op);
114 wait_event(recv_wq, (op->done != 0));
116 rv = op->info.rv;
118 dlm_release_plock_op(op);
127 struct plock_op *op;
134 op = kzalloc(sizeof(*op), GFP_NOFS);
135 if (!op) {
140 op->info.optype = DLM_PLOCK_OP_LOCK;
141 op->info.pid = fl->fl_pid;
142 op->info.ex = (fl->fl_type == F_WRLCK);
143 op->info.wait = IS_SETLKW(cmd);
144 op->info.fsid = ls->ls_global_id;
145 op->info.number = number;
146 op->info.start = fl->fl_start;
147 op->info.end = fl->fl_end;
152 dlm_release_plock_op(op);
159 op->info.owner = (__u64) fl->fl_pid;
166 op->data = op_data;
168 send_op(op);
172 op->info.owner = (__u64)(long) fl->fl_owner;
175 send_op(op);
177 if (op->info.wait) {
178 rv = wait_event_interruptible(recv_wq, (op->done != 0));
184 if (op->done != 0) {
190 rv = do_lock_cancel(&op->info);
199 list_del(&op->list);
204 /* cancellation wasn't successful but op should be done */
213 (unsigned long long)number, op->info.pid);
214 dlm_release_plock_op(op);
219 wait_event(recv_wq, (op->done != 0));
224 WARN_ON(!list_empty(&op->list));
226 rv = op->info.rv;
234 dlm_release_plock_op(op);
242 static int dlm_plock_callback(struct plock_op *op)
244 struct plock_async_data *op_data = op->data;
251 WARN_ON(!list_empty(&op->list));
259 if (op->info.rv) {
260 notify(fl, op->info.rv);
276 (unsigned long long)op->info.number, file, fl);
288 dlm_release_plock_op(op);
296 struct plock_op *op;
304 op = kzalloc(sizeof(*op), GFP_NOFS);
305 if (!op) {
323 op->info.optype = DLM_PLOCK_OP_UNLOCK;
324 op->info.pid = fl->fl_pid;
325 op->info.fsid = ls->ls_global_id;
326 op->info.number = number;
327 op->info.start = fl->fl_start;
328 op->info.end = fl->fl_end;
330 op->info.owner = (__u64) fl->fl_pid;
332 op->info.owner = (__u64)(long) fl->fl_owner;
335 op->info.flags |= DLM_PLOCK_FL_CLOSE;
336 send_op(op);
341 send_op(op);
342 wait_event(recv_wq, (op->done != 0));
344 WARN_ON(!list_empty(&op->list));
346 rv = op->info.rv;
352 dlm_release_plock_op(op);
370 struct plock_op *op;
401 op = plock_lookup_waiter(&info);
402 if (WARN_ON_ONCE(!op)) {
408 list_del(&op->list);
410 WARN_ON(op->info.optype != DLM_PLOCK_OP_LOCK);
411 op->data->callback(op->data->fl, -EINTR);
412 dlm_release_plock_op(op);
433 struct plock_op *op;
440 op = kzalloc(sizeof(*op), GFP_NOFS);
441 if (!op) {
446 op->info.optype = DLM_PLOCK_OP_GET;
447 op->info.pid = fl->fl_pid;
448 op->info.ex = (fl->fl_type == F_WRLCK);
449 op->info.fsid = ls->ls_global_id;
450 op->info.number = number;
451 op->info.start = fl->fl_start;
452 op->info.end = fl->fl_end;
454 op->info.owner = (__u64) fl->fl_pid;
456 op->info.owner = (__u64)(long) fl->fl_owner;
458 send_op(op);
459 wait_event(recv_wq, (op->done != 0));
461 WARN_ON(!list_empty(&op->list));
466 rv = op->info.rv;
473 fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK;
475 fl->fl_pid = op->info.pid;
476 if (op->info.nodeid != dlm_our_nodeid())
478 fl->fl_start = op->info.start;
479 fl->fl_end = op->info.end;
483 dlm_release_plock_op(op);
495 struct plock_op *op = NULL;
502 op = list_first_entry(&send_list, struct plock_op, list);
503 if (op->info.flags & DLM_PLOCK_FL_CLOSE)
504 list_del(&op->list);
506 list_move_tail(&op->list, &recv_list);
507 memcpy(&info, &op->info, sizeof(info));
511 if (!op)
520 if (op->info.flags & DLM_PLOCK_FL_CLOSE)
521 dlm_release_plock_op(op);
533 struct plock_op *op = NULL, *iter;
550 * order, so match all fields to find the op. The results for
552 * to userspace, so match the result with the first non-waiting op.
556 op = plock_lookup_waiter(&info);
561 op = iter;
567 if (op) {
568 /* Sanity check that op and info match. */
570 WARN_ON(op->info.optype != DLM_PLOCK_OP_LOCK);
572 WARN_ON(op->info.number != info.number ||
573 op->info.owner != info.owner ||
574 op->info.optype != info.optype);
576 list_del_init(&op->list);
577 memcpy(&op->info, &info, sizeof(info));
578 if (op->data)
581 op->done = 1;
585 if (op) {
587 dlm_plock_callback(op);
591 pr_debug("%s: no op %x %llx", __func__,