/* This function doesn't grant the blocked lock instantly, but rather moves the block to the head of nlm_blocked where it can be picked up by lockd.  */
static void nlmsvc_notify_blocked(struct file_lock *fl)
/* This function doesn't grant the blocked lock instantly, but rather moves the block to the head of nlm_blocked where it can be picked up by lockd.  */
static void nlmsvc_notify_blocked(struct file_lock *fl)
{
	struct nlm_block	*block;
	dprintk("lockd: VFS unblock notification for block %p\n", fl);
	list_for_each_entry(block, &nlm_blocked, b_list) {
		if (nlm_compare_locks(&block->b_call->a_args.lock.fl, fl)) {
			nlmsvc_insert_block(block, 0);
			svc_wake_up(block->b_daemon);
			return;
		}
	}
	printk(KERN_WARNING "lockd: notification for unknown block!\n");
}