Lines Matching full:proc
147 /* should held proc->asts_spin lock */
200 struct dlm_user_proc *proc; in dlm_user_add_ast() local
222 proc = ua->proc; in dlm_user_add_ast()
230 spin_lock(&proc->asts_spin); in dlm_user_add_ast()
235 spin_unlock(&proc->asts_spin); in dlm_user_add_ast()
240 list_add_tail(&lkb->lkb_cb_list, &proc->asts); in dlm_user_add_ast()
241 wake_up_interruptible(&proc->wait); in dlm_user_add_ast()
249 spin_unlock(&proc->asts_spin); in dlm_user_add_ast()
253 spin_lock(&proc->locks_spin); in dlm_user_add_ast()
258 spin_unlock(&proc->locks_spin); in dlm_user_add_ast()
264 static int device_user_lock(struct dlm_user_proc *proc, in device_user_lock() argument
272 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_lock()
284 ua->proc = proc; in device_user_lock()
315 static int device_user_unlock(struct dlm_user_proc *proc, in device_user_unlock() argument
322 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_unlock()
329 ua->proc = proc; in device_user_unlock()
344 static int device_user_deadlock(struct dlm_user_proc *proc, in device_user_deadlock() argument
350 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_deadlock()
405 static int device_user_purge(struct dlm_user_proc *proc, in device_user_purge() argument
411 ls = dlm_find_lockspace_local(proc->lockspace); in device_user_purge()
415 error = dlm_user_purge(ls, proc, params->nodeid, params->pid); in device_user_purge()
529 struct dlm_user_proc *proc = file->private_data; in device_write() local
574 if (proc) in device_write()
575 set_bit(DLM_PROC_FLAGS_COMPAT, &proc->flags); in device_write()
584 (proc && test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags))) { in device_write()
594 if (!proc) { in device_write()
598 error = device_user_lock(proc, &kbuf->i.lock); in device_write()
602 if (!proc) { in device_write()
606 error = device_user_unlock(proc, &kbuf->i.lock); in device_write()
610 if (!proc) { in device_write()
614 error = device_user_deadlock(proc, &kbuf->i.lock); in device_write()
618 if (proc) { in device_write()
626 if (proc) { in device_write()
634 if (!proc) { in device_write()
638 error = device_user_purge(proc, &kbuf->i.purge); in device_write()
651 /* Every process that opens the lockspace device has its own "proc" structure
657 struct dlm_user_proc *proc; in device_open() local
664 proc = kzalloc(sizeof(struct dlm_user_proc), GFP_NOFS); in device_open()
665 if (!proc) { in device_open()
670 proc->lockspace = ls->ls_local_handle; in device_open()
671 INIT_LIST_HEAD(&proc->asts); in device_open()
672 INIT_LIST_HEAD(&proc->locks); in device_open()
673 INIT_LIST_HEAD(&proc->unlocking); in device_open()
674 spin_lock_init(&proc->asts_spin); in device_open()
675 spin_lock_init(&proc->locks_spin); in device_open()
676 init_waitqueue_head(&proc->wait); in device_open()
677 file->private_data = proc; in device_open()
684 struct dlm_user_proc *proc = file->private_data; in device_close() local
687 ls = dlm_find_lockspace_local(proc->lockspace); in device_close()
691 set_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags); in device_close()
693 dlm_clear_proc_locks(ls, proc); in device_close()
697 looking for lkb->ua->proc */ in device_close()
699 kfree(proc); in device_close()
804 struct dlm_user_proc *proc = file->private_data; in device_read() local
815 if (!proc) { in device_read()
830 if (test_bit(DLM_PROC_FLAGS_CLOSING, &proc->flags)) in device_read()
833 spin_lock(&proc->asts_spin); in device_read()
834 if (list_empty(&proc->asts)) { in device_read()
836 spin_unlock(&proc->asts_spin); in device_read()
840 add_wait_queue(&proc->wait, &wait); in device_read()
844 if (list_empty(&proc->asts) && !signal_pending(current)) { in device_read()
845 spin_unlock(&proc->asts_spin); in device_read()
847 spin_lock(&proc->asts_spin); in device_read()
851 remove_wait_queue(&proc->wait, &wait); in device_read()
854 spin_unlock(&proc->asts_spin); in device_read()
863 lkb = list_first_entry(&proc->asts, struct dlm_lkb, lkb_cb_list); in device_read()
873 spin_unlock(&proc->asts_spin); in device_read()
874 /* removes ref for proc->asts, may cause lkb to be freed */ in device_read()
888 spin_unlock(&proc->asts_spin); in device_read()
899 test_bit(DLM_PROC_FLAGS_COMPAT, &proc->flags), in device_read()
904 /* removes ref for proc->asts, may cause lkb to be freed */ in device_read()
913 struct dlm_user_proc *proc = file->private_data; in device_poll() local
915 poll_wait(file, &proc->wait, wait); in device_poll()
917 spin_lock(&proc->asts_spin); in device_poll()
918 if (!list_empty(&proc->asts)) { in device_poll()
919 spin_unlock(&proc->asts_spin); in device_poll()
922 spin_unlock(&proc->asts_spin); in device_poll()