Commit 5ba51e50 authored by GangCao's avatar GangCao Committed by Daniel Verkamp
Browse files

nvme: init the recursive and shared ctrlr_lock for multi-process case



Change-Id: Id26f1da0b59045f000b9753e6b74a33dcab69197
Signed-off-by: default avatarGangCao <gang.cao@intel.com>
parent 57c99c90
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -920,8 +920,8 @@ nvme_ctrlr_start(struct spdk_nvme_ctrlr *ctrlr)
	return 0;
}

static inline int
pthread_mutex_init_recursive(pthread_mutex_t *mtx)
int
nvme_mutex_init_recursive_shared(pthread_mutex_t *mtx)
{
	pthread_mutexattr_t attr;
	int rc = 0;
@@ -930,6 +930,7 @@ pthread_mutex_init_recursive(pthread_mutex_t *mtx)
		return -1;
	}
	if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) ||
	    pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED) ||
	    pthread_mutex_init(mtx, &attr)) {
		rc = -1;
	}
@@ -963,7 +964,7 @@ nvme_ctrlr_construct(struct spdk_nvme_ctrlr *ctrlr)

	TAILQ_INIT(&ctrlr->active_io_qpairs);

	pthread_mutex_init_recursive(&ctrlr->ctrlr_lock);
	nvme_mutex_init_recursive_shared(&ctrlr->ctrlr_lock);

	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -602,6 +602,7 @@ bool nvme_intel_has_quirk(struct pci_id *id, uint64_t quirk);
void	spdk_nvme_ctrlr_opts_set_defaults(struct spdk_nvme_ctrlr_opts *opts);

int	nvme_mutex_init_shared(pthread_mutex_t *mtx);
int	nvme_mutex_init_recursive_shared(pthread_mutex_t *mtx);

bool	nvme_completion_is_retry(const struct spdk_nvme_cpl *cpl);
void	nvme_qpair_print_command(struct spdk_nvme_qpair *qpair, struct spdk_nvme_cmd *cmd);