Lines Matching refs:op

61 static void send_op(struct plock_op *op)  in send_op()  argument
63 set_version(&op->info); in send_op()
64 INIT_LIST_HEAD(&op->list); in send_op()
66 list_add_tail(&op->list, &send_list); in send_op()
80 struct plock_op *op; in do_unlock_close() local
82 op = kzalloc(sizeof(*op), GFP_NOFS); in do_unlock_close()
83 if (!op) in do_unlock_close()
86 op->info.optype = DLM_PLOCK_OP_UNLOCK; in do_unlock_close()
87 op->info.pid = fl->fl_pid; in do_unlock_close()
88 op->info.fsid = ls->ls_global_id; in do_unlock_close()
89 op->info.number = number; in do_unlock_close()
90 op->info.start = 0; in do_unlock_close()
91 op->info.end = OFFSET_MAX; in do_unlock_close()
93 op->info.owner = (__u64) fl->fl_pid; in do_unlock_close()
95 op->info.owner = (__u64)(long) fl->fl_owner; in do_unlock_close()
97 op->info.flags |= DLM_PLOCK_FL_CLOSE; in do_unlock_close()
98 send_op(op); in do_unlock_close()
105 struct plock_op *op; in dlm_posix_lock() local
119 op = &xop->xop; in dlm_posix_lock()
120 op->info.optype = DLM_PLOCK_OP_LOCK; in dlm_posix_lock()
121 op->info.pid = fl->fl_pid; in dlm_posix_lock()
122 op->info.ex = (fl->fl_type == F_WRLCK); in dlm_posix_lock()
123 op->info.wait = IS_SETLKW(cmd); in dlm_posix_lock()
124 op->info.fsid = ls->ls_global_id; in dlm_posix_lock()
125 op->info.number = number; in dlm_posix_lock()
126 op->info.start = fl->fl_start; in dlm_posix_lock()
127 op->info.end = fl->fl_end; in dlm_posix_lock()
131 op->info.owner = (__u64) fl->fl_pid; in dlm_posix_lock()
132 op->callback = fl->fl_lmops->lm_grant; in dlm_posix_lock()
138 op->info.owner = (__u64)(long) fl->fl_owner; in dlm_posix_lock()
141 send_op(op); in dlm_posix_lock()
143 if (!op->callback) { in dlm_posix_lock()
144 rv = wait_event_interruptible(recv_wq, (op->done != 0)); in dlm_posix_lock()
149 list_del(&op->list); in dlm_posix_lock()
161 if (!list_empty(&op->list)) { in dlm_posix_lock()
164 list_del(&op->list); in dlm_posix_lock()
168 rv = op->info.rv; in dlm_posix_lock()
184 static int dlm_plock_callback(struct plock_op *op) in dlm_plock_callback() argument
190 struct plock_xop *xop = (struct plock_xop *)op; in dlm_plock_callback()
194 if (!list_empty(&op->list)) { in dlm_plock_callback()
196 (unsigned long long)op->info.number); in dlm_plock_callback()
197 list_del(&op->list); in dlm_plock_callback()
205 notify = op->callback; in dlm_plock_callback()
207 if (op->info.rv) { in dlm_plock_callback()
208 notify(fl, op->info.rv); in dlm_plock_callback()
224 (unsigned long long)op->info.number, file, fl); in dlm_plock_callback()
244 struct plock_op *op; in dlm_posix_unlock() local
252 op = kzalloc(sizeof(*op), GFP_NOFS); in dlm_posix_unlock()
253 if (!op) { in dlm_posix_unlock()
271 op->info.optype = DLM_PLOCK_OP_UNLOCK; in dlm_posix_unlock()
272 op->info.pid = fl->fl_pid; in dlm_posix_unlock()
273 op->info.fsid = ls->ls_global_id; in dlm_posix_unlock()
274 op->info.number = number; in dlm_posix_unlock()
275 op->info.start = fl->fl_start; in dlm_posix_unlock()
276 op->info.end = fl->fl_end; in dlm_posix_unlock()
278 op->info.owner = (__u64) fl->fl_pid; in dlm_posix_unlock()
280 op->info.owner = (__u64)(long) fl->fl_owner; in dlm_posix_unlock()
283 op->info.flags |= DLM_PLOCK_FL_CLOSE; in dlm_posix_unlock()
284 send_op(op); in dlm_posix_unlock()
289 send_op(op); in dlm_posix_unlock()
290 wait_event(recv_wq, (op->done != 0)); in dlm_posix_unlock()
293 if (!list_empty(&op->list)) { in dlm_posix_unlock()
296 list_del(&op->list); in dlm_posix_unlock()
300 rv = op->info.rv; in dlm_posix_unlock()
306 kfree(op); in dlm_posix_unlock()
318 struct plock_op *op; in dlm_posix_get() local
325 op = kzalloc(sizeof(*op), GFP_NOFS); in dlm_posix_get()
326 if (!op) { in dlm_posix_get()
331 op->info.optype = DLM_PLOCK_OP_GET; in dlm_posix_get()
332 op->info.pid = fl->fl_pid; in dlm_posix_get()
333 op->info.ex = (fl->fl_type == F_WRLCK); in dlm_posix_get()
334 op->info.fsid = ls->ls_global_id; in dlm_posix_get()
335 op->info.number = number; in dlm_posix_get()
336 op->info.start = fl->fl_start; in dlm_posix_get()
337 op->info.end = fl->fl_end; in dlm_posix_get()
339 op->info.owner = (__u64) fl->fl_pid; in dlm_posix_get()
341 op->info.owner = (__u64)(long) fl->fl_owner; in dlm_posix_get()
343 send_op(op); in dlm_posix_get()
344 wait_event(recv_wq, (op->done != 0)); in dlm_posix_get()
347 if (!list_empty(&op->list)) { in dlm_posix_get()
350 list_del(&op->list); in dlm_posix_get()
357 rv = op->info.rv; in dlm_posix_get()
364 fl->fl_type = (op->info.ex) ? F_WRLCK : F_RDLCK; in dlm_posix_get()
366 fl->fl_pid = -op->info.pid; in dlm_posix_get()
367 fl->fl_start = op->info.start; in dlm_posix_get()
368 fl->fl_end = op->info.end; in dlm_posix_get()
372 kfree(op); in dlm_posix_get()
384 struct plock_op *op = NULL; in dev_read() local
391 op = list_entry(send_list.next, struct plock_op, list); in dev_read()
392 if (op->info.flags & DLM_PLOCK_FL_CLOSE) in dev_read()
393 list_del(&op->list); in dev_read()
395 list_move(&op->list, &recv_list); in dev_read()
396 memcpy(&info, &op->info, sizeof(info)); in dev_read()
400 if (!op) in dev_read()
407 if (op->info.flags & DLM_PLOCK_FL_CLOSE) in dev_read()
408 kfree(op); in dev_read()
421 struct plock_op *op; in dev_write() local
434 list_for_each_entry(op, &recv_list, list) { in dev_write()
435 if (op->info.fsid == info.fsid && in dev_write()
436 op->info.number == info.number && in dev_write()
437 op->info.owner == info.owner) { in dev_write()
438 list_del_init(&op->list); in dev_write()
439 memcpy(&op->info, &info, sizeof(info)); in dev_write()
440 if (op->callback) in dev_write()
443 op->done = 1; in dev_write()
452 dlm_plock_callback(op); in dev_write()