Lines Matching refs:op
49 struct plock_op *op = NULL, *iter; in plock_lookup_waiter() local
60 op = iter; in plock_lookup_waiter()
65 return op; in plock_lookup_waiter()
85 static void dlm_release_plock_op(struct plock_op *op) in dlm_release_plock_op() argument
87 kfree(op->data); in dlm_release_plock_op()
88 kfree(op); in dlm_release_plock_op()
91 static void send_op(struct plock_op *op) in send_op() argument
93 set_version(&op->info); in send_op()
95 list_add_tail(&op->list, &send_list); in send_op()
102 struct plock_op *op; in do_lock_cancel() local
105 op = kzalloc(sizeof(*op), GFP_NOFS); in do_lock_cancel()
106 if (!op) in do_lock_cancel()
109 op->info = *orig_info; in do_lock_cancel()
110 op->info.optype = DLM_PLOCK_OP_CANCEL; in do_lock_cancel()
111 op->info.wait = 0; in do_lock_cancel()
113 send_op(op); in do_lock_cancel()
114 wait_event(recv_wq, (op->done != 0)); in do_lock_cancel()
116 rv = op->info.rv; in do_lock_cancel()
118 dlm_release_plock_op(op); in do_lock_cancel()
127 struct plock_op *op; in dlm_posix_lock() local
134 op = kzalloc(sizeof(*op), GFP_NOFS); in dlm_posix_lock()
135 if (!op) { in dlm_posix_lock()
140 op->info.optype = DLM_PLOCK_OP_LOCK; in dlm_posix_lock()
141 op->info.pid = fl->c.flc_pid; in dlm_posix_lock()
142 op->info.ex = lock_is_write(fl); in dlm_posix_lock()
143 op->info.wait = !!(fl->c.flc_flags & FL_SLEEP); in dlm_posix_lock()
144 op->info.fsid = ls->ls_global_id; in dlm_posix_lock()
145 op->info.number = number; in dlm_posix_lock()
146 op->info.start = fl->fl_start; in dlm_posix_lock()
147 op->info.end = fl->fl_end; in dlm_posix_lock()
148 op->info.owner = (__u64)(long) fl->c.flc_owner; in dlm_posix_lock()
153 dlm_release_plock_op(op); in dlm_posix_lock()
164 op->data = op_data; in dlm_posix_lock()
166 send_op(op); in dlm_posix_lock()
171 send_op(op); in dlm_posix_lock()
173 if (op->info.wait) { in dlm_posix_lock()
174 rv = wait_event_interruptible(recv_wq, (op->done != 0)); in dlm_posix_lock()
180 if (op->done != 0) { in dlm_posix_lock()
186 rv = do_lock_cancel(&op->info); in dlm_posix_lock()
195 list_del(&op->list); in dlm_posix_lock()
209 (unsigned long long)number, op->info.pid); in dlm_posix_lock()
210 dlm_release_plock_op(op); in dlm_posix_lock()
215 wait_event(recv_wq, (op->done != 0)); in dlm_posix_lock()
220 WARN_ON(!list_empty(&op->list)); in dlm_posix_lock()
222 rv = op->info.rv; in dlm_posix_lock()
230 dlm_release_plock_op(op); in dlm_posix_lock()
238 static int dlm_plock_callback(struct plock_op *op) in dlm_plock_callback() argument
240 struct plock_async_data *op_data = op->data; in dlm_plock_callback()
247 WARN_ON(!list_empty(&op->list)); in dlm_plock_callback()
255 if (op->info.rv) { in dlm_plock_callback()
256 notify(fl, op->info.rv); in dlm_plock_callback()
272 (unsigned long long)op->info.number, file, fl); in dlm_plock_callback()
284 dlm_release_plock_op(op); in dlm_plock_callback()
292 struct plock_op *op; in dlm_posix_unlock() local
300 op = kzalloc(sizeof(*op), GFP_NOFS); in dlm_posix_unlock()
301 if (!op) { in dlm_posix_unlock()
319 op->info.optype = DLM_PLOCK_OP_UNLOCK; in dlm_posix_unlock()
320 op->info.pid = fl->c.flc_pid; in dlm_posix_unlock()
321 op->info.fsid = ls->ls_global_id; in dlm_posix_unlock()
322 op->info.number = number; in dlm_posix_unlock()
323 op->info.start = fl->fl_start; in dlm_posix_unlock()
324 op->info.end = fl->fl_end; in dlm_posix_unlock()
325 op->info.owner = (__u64)(long) fl->c.flc_owner; in dlm_posix_unlock()
328 op->info.flags |= DLM_PLOCK_FL_CLOSE; in dlm_posix_unlock()
329 send_op(op); in dlm_posix_unlock()
334 send_op(op); in dlm_posix_unlock()
335 wait_event(recv_wq, (op->done != 0)); in dlm_posix_unlock()
337 WARN_ON(!list_empty(&op->list)); in dlm_posix_unlock()
339 rv = op->info.rv; in dlm_posix_unlock()
345 dlm_release_plock_op(op); in dlm_posix_unlock()
363 struct plock_op *op; in dlm_posix_cancel() local
394 op = plock_lookup_waiter(&info); in dlm_posix_cancel()
395 if (WARN_ON_ONCE(!op)) { in dlm_posix_cancel()
401 list_del(&op->list); in dlm_posix_cancel()
403 WARN_ON(op->info.optype != DLM_PLOCK_OP_LOCK); in dlm_posix_cancel()
404 op->data->callback(op->data->fl, -EINTR); in dlm_posix_cancel()
405 dlm_release_plock_op(op); in dlm_posix_cancel()
426 struct plock_op *op; in dlm_posix_get() local
433 op = kzalloc(sizeof(*op), GFP_NOFS); in dlm_posix_get()
434 if (!op) { in dlm_posix_get()
439 op->info.optype = DLM_PLOCK_OP_GET; in dlm_posix_get()
440 op->info.pid = fl->c.flc_pid; in dlm_posix_get()
441 op->info.ex = lock_is_write(fl); in dlm_posix_get()
442 op->info.fsid = ls->ls_global_id; in dlm_posix_get()
443 op->info.number = number; in dlm_posix_get()
444 op->info.start = fl->fl_start; in dlm_posix_get()
445 op->info.end = fl->fl_end; in dlm_posix_get()
446 op->info.owner = (__u64)(long) fl->c.flc_owner; in dlm_posix_get()
448 send_op(op); in dlm_posix_get()
449 wait_event(recv_wq, (op->done != 0)); in dlm_posix_get()
451 WARN_ON(!list_empty(&op->list)); in dlm_posix_get()
456 rv = op->info.rv; in dlm_posix_get()
463 fl->c.flc_type = (op->info.ex) ? F_WRLCK : F_RDLCK; in dlm_posix_get()
465 fl->c.flc_pid = op->info.pid; in dlm_posix_get()
466 if (op->info.nodeid != dlm_our_nodeid()) in dlm_posix_get()
468 fl->fl_start = op->info.start; in dlm_posix_get()
469 fl->fl_end = op->info.end; in dlm_posix_get()
473 dlm_release_plock_op(op); in dlm_posix_get()
485 struct plock_op *op = NULL; in dev_read() local
492 op = list_first_entry(&send_list, struct plock_op, list); in dev_read()
493 if (op->info.flags & DLM_PLOCK_FL_CLOSE) in dev_read()
494 list_del(&op->list); in dev_read()
496 list_move_tail(&op->list, &recv_list); in dev_read()
497 memcpy(&info, &op->info, sizeof(info)); in dev_read()
501 if (!op) in dev_read()
510 if (op->info.flags & DLM_PLOCK_FL_CLOSE) in dev_read()
511 dlm_release_plock_op(op); in dev_read()
523 struct plock_op *op = NULL, *iter; in dev_write() local
546 op = plock_lookup_waiter(&info); in dev_write()
551 op = iter; in dev_write()
557 if (op) { in dev_write()
560 WARN_ON(op->info.optype != DLM_PLOCK_OP_LOCK); in dev_write()
562 WARN_ON(op->info.number != info.number || in dev_write()
563 op->info.owner != info.owner || in dev_write()
564 op->info.optype != info.optype); in dev_write()
566 list_del_init(&op->list); in dev_write()
567 memcpy(&op->info, &info, sizeof(info)); in dev_write()
568 if (op->data) in dev_write()
571 op->done = 1; in dev_write()
575 if (op) { in dev_write()
577 dlm_plock_callback(op); in dev_write()