 +
 +	kfree(qinfo.gqi_lockinfo);
 +
-+	log_debug("global conflict %d %"PRIx64"-%"PRIx64" ex %d own %lu pid %u",
-+		  error, *start, *end, *ex, *rowner, current->pid);
++	log_debug("global conflict %d %"PRIx64"-%"PRIx64" ex %d own %lu",
++		  error, *start, *end, *ex, *rowner);
 + out:
-+	do_dlm_unlock_sync(lp);
-+	kfree(lp);
++	keep_null_lock(dlm, lp);
 + ret:
 +	return error;
 +}
 +
-+static int get_conflict_local(dlm_t *dlm, struct dlm_resource *r,
++static int get_local_conflict(dlm_t *dlm, struct dlm_resource *r,
 +			      struct lm_lockname *name, unsigned long owner,
 +			      uint64_t *start, uint64_t *end, int *ex,
 +			      unsigned long *rowner)

+	struct list_head	dlist;		/* delayed */
+	struct list_head	slist;		/* submit */
+
+	struct dlm_lock *	hold_null;
+	struct posix_lock *	posix;
+};
+
+#define NFL_SENT_CB             0

+
+	/* acquire a null lock on which to base the query */
+
+	lp = find_null_lock(dlm, name);
+	if (!lp) {
+		error = create_lp(dlm, name, &lp);
+		if (error)
+			goto ret;
+
+		lp->req = DLM_LOCK_NL;
+		lp->lkf = DLM_LKF_EXPEDITE;
+		set_bit(LFL_INLOCK, &lp->flags);
+		do_dlm_lock_sync(lp, NULL);
+	}
+
+	/* do query, repeating if insufficient space */
+
