Lines Matching refs:lock

46 static int nlmsvc_setgrantargs(struct nlm_rqst *call, struct nlm_lock *lock);
144 nlmsvc_lookup_block(struct nlm_file *file, struct nlm_lock *lock) in nlmsvc_lookup_block() argument
150 file, lock->fl.fl_pid, in nlmsvc_lookup_block()
151 (long long)lock->fl.fl_start, in nlmsvc_lookup_block()
152 (long long)lock->fl.fl_end, lock->fl.fl_type); in nlmsvc_lookup_block()
154 fl = &block->b_call->a_args.lock.fl; in nlmsvc_lookup_block()
160 if (block->b_file == file && nlm_compare_locks(fl, &lock->fl)) { in nlmsvc_lookup_block()
216 struct nlm_file *file, struct nlm_lock *lock, in nlmsvc_create_block() argument
234 if (!nlmsvc_setgrantargs(call, lock)) in nlmsvc_create_block()
238 call->a_args.lock.fl.fl_flags |= FL_SLEEP; in nlmsvc_create_block()
239 call->a_args.lock.fl.fl_lmops = &nlmsvc_lock_operations; in nlmsvc_create_block()
278 status = posix_unblock_lock(&block->b_call->a_args.lock.fl); in nlmsvc_unlink_block()
338 static int nlmsvc_setgrantargs(struct nlm_rqst *call, struct nlm_lock *lock) in nlmsvc_setgrantargs() argument
340 locks_copy_lock(&call->a_args.lock.fl, &lock->fl); in nlmsvc_setgrantargs()
341 memcpy(&call->a_args.lock.fh, &lock->fh, sizeof(call->a_args.lock.fh)); in nlmsvc_setgrantargs()
342 call->a_args.lock.caller = utsname()->nodename; in nlmsvc_setgrantargs()
343 call->a_args.lock.oh.len = lock->oh.len; in nlmsvc_setgrantargs()
346 call->a_args.lock.oh.data = call->a_owner; in nlmsvc_setgrantargs()
347 call->a_args.lock.svid = lock->fl.fl_pid; in nlmsvc_setgrantargs()
349 if (lock->oh.len > NLMCLNT_OHSIZE) { in nlmsvc_setgrantargs()
350 void *data = kmalloc(lock->oh.len, GFP_KERNEL); in nlmsvc_setgrantargs()
353 call->a_args.lock.oh.data = (u8 *) data; in nlmsvc_setgrantargs()
356 memcpy(call->a_args.lock.oh.data, lock->oh.data, lock->oh.len); in nlmsvc_setgrantargs()
362 if (call->a_args.lock.oh.data != call->a_owner) in nlmsvc_freegrantargs()
363 kfree(call->a_args.lock.oh.data); in nlmsvc_freegrantargs()
365 locks_release_private(&call->a_args.lock.fl); in nlmsvc_freegrantargs()
399 struct nlm_host *host, struct nlm_lock *lock, int wait, in nlmsvc_lock() argument
409 lock->fl.fl_type, lock->fl.fl_pid, in nlmsvc_lock()
410 (long long)lock->fl.fl_start, in nlmsvc_lock()
411 (long long)lock->fl.fl_end, in nlmsvc_lock()
419 block = nlmsvc_lookup_block(file, lock); in nlmsvc_lock()
421 block = nlmsvc_create_block(rqstp, host, file, lock, cookie); in nlmsvc_lock()
425 lock = &block->b_call->a_args.lock; in nlmsvc_lock()
427 lock->fl.fl_flags &= ~FL_SLEEP; in nlmsvc_lock()
456 lock->fl.fl_flags &= ~FL_SLEEP; in nlmsvc_lock()
457 error = vfs_lock_file(file->f_file, F_SETLK, &lock->fl, NULL); in nlmsvc_lock()
458 lock->fl.fl_flags &= ~FL_SLEEP; in nlmsvc_lock()
506 struct nlm_host *host, struct nlm_lock *lock, in nlmsvc_testlock() argument
515 lock->fl.fl_type, in nlmsvc_testlock()
516 (long long)lock->fl.fl_start, in nlmsvc_testlock()
517 (long long)lock->fl.fl_end); in nlmsvc_testlock()
524 error = vfs_test_lock(file->f_file, &lock->fl); in nlmsvc_testlock()
534 if (lock->fl.fl_type == F_UNLCK) { in nlmsvc_testlock()
540 lock->fl.fl_type, (long long)lock->fl.fl_start, in nlmsvc_testlock()
541 (long long)lock->fl.fl_end); in nlmsvc_testlock()
545 conflock->svid = lock->fl.fl_pid; in nlmsvc_testlock()
546 conflock->fl.fl_type = lock->fl.fl_type; in nlmsvc_testlock()
547 conflock->fl.fl_start = lock->fl.fl_start; in nlmsvc_testlock()
548 conflock->fl.fl_end = lock->fl.fl_end; in nlmsvc_testlock()
549 locks_release_private(&lock->fl); in nlmsvc_testlock()
563 nlmsvc_unlock(struct net *net, struct nlm_file *file, struct nlm_lock *lock) in nlmsvc_unlock() argument
570 lock->fl.fl_pid, in nlmsvc_unlock()
571 (long long)lock->fl.fl_start, in nlmsvc_unlock()
572 (long long)lock->fl.fl_end); in nlmsvc_unlock()
575 nlmsvc_cancel_blocked(net, file, lock); in nlmsvc_unlock()
577 lock->fl.fl_type = F_UNLCK; in nlmsvc_unlock()
578 error = vfs_lock_file(file->f_file, F_SETLK, &lock->fl, NULL); in nlmsvc_unlock()
591 nlmsvc_cancel_blocked(struct net *net, struct nlm_file *file, struct nlm_lock *lock) in nlmsvc_cancel_blocked() argument
599 lock->fl.fl_pid, in nlmsvc_cancel_blocked()
600 (long long)lock->fl.fl_start, in nlmsvc_cancel_blocked()
601 (long long)lock->fl.fl_end); in nlmsvc_cancel_blocked()
607 block = nlmsvc_lookup_block(file, lock); in nlmsvc_cancel_blocked()
611 &block->b_call->a_args.lock.fl); in nlmsvc_cancel_blocked()
644 if (nlm_compare_locks(&block->b_call->a_args.lock.fl, fl)) { in nlmsvc_grant_deferred()
683 if (nlm_compare_locks(&block->b_call->a_args.lock.fl, fl)) { in nlmsvc_notify_blocked()
732 struct nlm_lock *lock = &block->b_call->a_args.lock; in nlmsvc_grant_blocked() local
755 lock->fl.fl_flags |= FL_SLEEP; in nlmsvc_grant_blocked()
756 fl_start = lock->fl.fl_start; in nlmsvc_grant_blocked()
757 fl_end = lock->fl.fl_end; in nlmsvc_grant_blocked()
758 error = vfs_lock_file(file->f_file, F_SETLK, &lock->fl, NULL); in nlmsvc_grant_blocked()
759 lock->fl.fl_flags &= ~FL_SLEEP; in nlmsvc_grant_blocked()
760 lock->fl.fl_start = fl_start; in nlmsvc_grant_blocked()
761 lock->fl.fl_end = fl_end; in nlmsvc_grant_blocked()