Lines Matching full:proc
180 struct dlm_user_proc *proc; in dlm_user_add_ast() local
200 proc = ua->proc; in dlm_user_add_ast()
208 spin_lock(&proc->asts_spin); in dlm_user_add_ast()
212 spin_unlock(&proc->asts_spin); in dlm_user_add_ast()
218 list_add_tail(&lkb->lkb_cb_list, &proc->asts); in dlm_user_add_ast()
219 wake_up_interruptible(&proc->wait); in dlm_user_add_ast()
221 spin_unlock(&proc->asts_spin); in dlm_user_add_ast()
225 spin_lock(&proc->locks_spin); in dlm_user_add_ast()
230 spin_unlock(&proc->locks_spin); in dlm_user_add_ast()
236 static int device_user_lock(struct dlm_user_proc *proc, in device_user_lock() argument
244 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_lock()
256 ua->proc = proc; in device_user_lock()
290 static int device_user_unlock(struct dlm_user_proc *proc, in device_user_unlock() argument
297 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_unlock()
304 ua->proc = proc; in device_user_unlock()
319 static int device_user_deadlock(struct dlm_user_proc *proc, in device_user_deadlock() argument
325 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_deadlock()
380 static int device_user_purge(struct dlm_user_proc *proc, in device_user_purge() argument
386 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_purge()
390 error = dlm_user_purge(ls, proc, params->nodeid, params->pid); in device_user_purge()
504 struct dlm_user_proc *proc = file->private_data; in device_write() local
549 if (proc) in device_write()
550 set_bit(DLM_PROC_FLAGS_COMPAT, &proc->flags); in device_write()
559 (proc && test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags))) { in device_write()
569 if (!proc) { in device_write()
573 error = device_user_lock(proc, &kbuf->i.lock); in device_write()
577 if (!proc) { in device_write()
581 error = device_user_unlock(proc, &kbuf->i.lock); in device_write()
585 if (!proc) { in device_write()
589 error = device_user_deadlock(proc, &kbuf->i.lock); in device_write()
593 if (proc) { in device_write()
601 if (proc) { in device_write()
609 if (!proc) { in device_write()
613 error = device_user_purge(proc, &kbuf->i.purge); in device_write()
626 /* Every process that opens the lockspace device has its own "proc" structure
632 struct dlm_user_proc *proc; in device_open() local
639 proc = kzalloc(sizeof(struct dlm_user_proc), GFP_NOFS); in device_open()
640 if (!proc) { in device_open()
645 proc->lockspace = ls->ls_local_handle; in device_open()
646 INIT_LIST_HEAD(&proc->asts); in device_open()
647 INIT_LIST_HEAD(&proc->locks); in device_open()
648 INIT_LIST_HEAD(&proc->unlocking); in device_open()
649 spin_lock_init(&proc->asts_spin); in device_open()
650 spin_lock_init(&proc->locks_spin); in device_open()
651 init_waitqueue_head(&proc->wait); in device_open()
652 file->private_data = proc; in device_open()
659 struct dlm_user_proc *proc = file->private_data; in device_close() local
662 ls = dlm_find_lockspace_local(proc->lockspace); in device_close()
666 set_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags); in device_close()
668 dlm_clear_proc_locks(ls, proc); in device_close()
672 looking for lkb->ua->proc */ in device_close()
674 kfree(proc); in device_close()
779 struct dlm_user_proc *proc = file->private_data; in device_read() local
791 if (!proc) { in device_read()
806 if (test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags)) in device_read()
809 spin_lock(&proc->asts_spin); in device_read()
810 if (list_empty(&proc->asts)) { in device_read()
812 spin_unlock(&proc->asts_spin); in device_read()
816 add_wait_queue(&proc->wait, &wait); in device_read()
820 if (list_empty(&proc->asts) && !signal_pending(current)) { in device_read()
821 spin_unlock(&proc->asts_spin); in device_read()
823 spin_lock(&proc->asts_spin); in device_read()
827 remove_wait_queue(&proc->wait, &wait); in device_read()
830 spin_unlock(&proc->asts_spin); in device_read()
839 lkb = list_entry(proc->asts.next, struct dlm_lkb, lkb_cb_list); in device_read()
850 spin_unlock(&proc->asts_spin); in device_read()
851 /* removes ref for proc->asts, may cause lkb to be freed */ in device_read()
857 spin_unlock(&proc->asts_spin); in device_read()
860 /* removes ref for proc->asts, may cause lkb to be freed */ in device_read()
878 test_bit(DLM_PROC_FLAGS_COMPAT, &proc->flags), in device_read()
881 /* removes ref for proc->asts, may cause lkb to be freed */ in device_read()
890 struct dlm_user_proc *proc = file->private_data; in device_poll() local
892 poll_wait(file, &proc->wait, wait); in device_poll()
894 spin_lock(&proc->asts_spin); in device_poll()
895 if (!list_empty(&proc->asts)) { in device_poll()
896 spin_unlock(&proc->asts_spin); in device_poll()
899 spin_unlock(&proc->asts_spin); in device_poll()