Lines Matching full:proc
148 /* should held proc->asts_spin lock */
201 struct dlm_user_proc *proc; in dlm_user_add_ast() local
223 proc = ua->proc; in dlm_user_add_ast()
231 spin_lock(&proc->asts_spin); in dlm_user_add_ast()
236 spin_unlock(&proc->asts_spin); in dlm_user_add_ast()
241 list_add_tail(&lkb->lkb_cb_list, &proc->asts); in dlm_user_add_ast()
242 wake_up_interruptible(&proc->wait); in dlm_user_add_ast()
250 spin_unlock(&proc->asts_spin); in dlm_user_add_ast()
254 spin_lock(&proc->locks_spin); in dlm_user_add_ast()
259 spin_unlock(&proc->locks_spin); in dlm_user_add_ast()
265 static int device_user_lock(struct dlm_user_proc *proc, in device_user_lock() argument
273 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_lock()
285 ua->proc = proc; in device_user_lock()
316 static int device_user_unlock(struct dlm_user_proc *proc, in device_user_unlock() argument
323 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_unlock()
330 ua->proc = proc; in device_user_unlock()
345 static int device_user_deadlock(struct dlm_user_proc *proc, in device_user_deadlock() argument
351 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_deadlock()
406 static int device_user_purge(struct dlm_user_proc *proc, in device_user_purge() argument
412 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_purge()
416 error = dlm_user_purge(ls, proc, params->nodeid, params->pid); in device_user_purge()
530 struct dlm_user_proc *proc = file->private_data; in device_write() local
575 if (proc) in device_write()
576 set_bit(DLM_PROC_FLAGS_COMPAT, &proc->flags); in device_write()
585 (proc && test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags))) { in device_write()
595 if (!proc) { in device_write()
599 error = device_user_lock(proc, &kbuf->i.lock); in device_write()
603 if (!proc) { in device_write()
607 error = device_user_unlock(proc, &kbuf->i.lock); in device_write()
611 if (!proc) { in device_write()
615 error = device_user_deadlock(proc, &kbuf->i.lock); in device_write()
619 if (proc) { in device_write()
627 if (proc) { in device_write()
635 if (!proc) { in device_write()
639 error = device_user_purge(proc, &kbuf->i.purge); in device_write()
652 /* Every process that opens the lockspace device has its own "proc" structure
658 struct dlm_user_proc *proc; in device_open() local
665 proc = kzalloc(sizeof(struct dlm_user_proc), GFP_NOFS); in device_open()
666 if (!proc) { in device_open()
671 proc->lockspace = ls->ls_local_handle; in device_open()
672 INIT_LIST_HEAD(&proc->asts); in device_open()
673 INIT_LIST_HEAD(&proc->locks); in device_open()
674 INIT_LIST_HEAD(&proc->unlocking); in device_open()
675 spin_lock_init(&proc->asts_spin); in device_open()
676 spin_lock_init(&proc->locks_spin); in device_open()
677 init_waitqueue_head(&proc->wait); in device_open()
678 file->private_data = proc; in device_open()
685 struct dlm_user_proc *proc = file->private_data; in device_close() local
688 ls = dlm_find_lockspace_local(proc->lockspace); in device_close()
692 set_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags); in device_close()
694 dlm_clear_proc_locks(ls, proc); in device_close()
698 looking for lkb->ua->proc */ in device_close()
700 kfree(proc); in device_close()
805 struct dlm_user_proc *proc = file->private_data; in device_read() local
817 if (!proc) { in device_read()
832 if (test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags)) in device_read()
835 spin_lock(&proc->asts_spin); in device_read()
836 if (list_empty(&proc->asts)) { in device_read()
838 spin_unlock(&proc->asts_spin); in device_read()
842 add_wait_queue(&proc->wait, &wait); in device_read()
846 if (list_empty(&proc->asts) && !signal_pending(current)) { in device_read()
847 spin_unlock(&proc->asts_spin); in device_read()
849 spin_lock(&proc->asts_spin); in device_read()
853 remove_wait_queue(&proc->wait, &wait); in device_read()
856 spin_unlock(&proc->asts_spin); in device_read()
865 lkb = list_first_entry(&proc->asts, struct dlm_lkb, lkb_cb_list); in device_read()
878 spin_unlock(&proc->asts_spin); in device_read()
879 /* removes ref for proc->asts, may cause lkb to be freed */ in device_read()
893 spin_unlock(&proc->asts_spin); in device_read()
910 test_bit(DLM_PROC_FLAGS_COMPAT, &proc->flags), in device_read()
915 /* removes ref for proc->asts, may cause lkb to be freed */ in device_read()
924 struct dlm_user_proc *proc = file->private_data; in device_poll() local
926 poll_wait(file, &proc->wait, wait); in device_poll()
928 spin_lock(&proc->asts_spin); in device_poll()
929 if (!list_empty(&proc->asts)) { in device_poll()
930 spin_unlock(&proc->asts_spin); in device_poll()
933 spin_unlock(&proc->asts_spin); in device_poll()