nvme: init the recursive and shared ctrlr_lock for multi-process case
Change-Id: Id26f1da0b59045f000b9753e6b74a33dcab69197 Signed-off-by: GangCao <gang.cao@intel.com>
This commit is contained in:
parent
57c99c9027
commit
5ba51e5016
@ -920,8 +920,8 @@ nvme_ctrlr_start(struct spdk_nvme_ctrlr *ctrlr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int
|
int
|
||||||
pthread_mutex_init_recursive(pthread_mutex_t *mtx)
|
nvme_mutex_init_recursive_shared(pthread_mutex_t *mtx)
|
||||||
{
|
{
|
||||||
pthread_mutexattr_t attr;
|
pthread_mutexattr_t attr;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
@ -930,6 +930,7 @@ pthread_mutex_init_recursive(pthread_mutex_t *mtx)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) ||
|
if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) ||
|
||||||
|
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED) ||
|
||||||
pthread_mutex_init(mtx, &attr)) {
|
pthread_mutex_init(mtx, &attr)) {
|
||||||
rc = -1;
|
rc = -1;
|
||||||
}
|
}
|
||||||
@ -963,7 +964,7 @@ nvme_ctrlr_construct(struct spdk_nvme_ctrlr *ctrlr)
|
|||||||
|
|
||||||
TAILQ_INIT(&ctrlr->active_io_qpairs);
|
TAILQ_INIT(&ctrlr->active_io_qpairs);
|
||||||
|
|
||||||
pthread_mutex_init_recursive(&ctrlr->ctrlr_lock);
|
nvme_mutex_init_recursive_shared(&ctrlr->ctrlr_lock);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
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_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);
|
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);
|
void nvme_qpair_print_command(struct spdk_nvme_qpair *qpair, struct spdk_nvme_cmd *cmd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user