 + out_up:
 +	up(&r->sema);
 +	wait_async_list(r, owner);
-+ out_put:
++	wake_up_all(&r->waiters);
 +	put_resource(r);
 + out:
-+	log_debug("ex punlock %u error %d", current->pid, error);
++	log_debug("ex punlock %d", error);
 +	return error;
 +}
 +

+	dlm_lock_t *		update;
+	struct list_head	async_locks;
+	spinlock_t		async_spin;
+};
+
+struct posix_lock {

+	struct task_struct *	thread2;
+	atomic_t		lock_count;
+	unsigned long		drop_time;
+	unsigned long		shrink_time;
+
+	int			drop_locks_count;
+	int			drop_locks_period;
+
+	int			mg_local_id;
+	int			mg_last_start;
