mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
nvmet-fc: fix failing max io queue connections
fc transport is treating NVMET_NR_QUEUES as maximum queue count, e.g. admin queue plus NVMET_NR_QUEUES-1 io queues. But NVMET_NR_QUEUES is the number of io queues, so maximum queue count is really NVMET_NR_QUEUES+1. Fix the handling in the target fc transport Signed-off-by: James Smart <james.smart@broadcom.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
d9d34c0b23
commit
deb61742e0
1 changed files with 3 additions and 3 deletions
|
@ -148,7 +148,7 @@ struct nvmet_fc_tgt_assoc {
|
||||||
u32 a_id;
|
u32 a_id;
|
||||||
struct nvmet_fc_tgtport *tgtport;
|
struct nvmet_fc_tgtport *tgtport;
|
||||||
struct list_head a_list;
|
struct list_head a_list;
|
||||||
struct nvmet_fc_tgt_queue *queues[NVMET_NR_QUEUES];
|
struct nvmet_fc_tgt_queue *queues[NVMET_NR_QUEUES + 1];
|
||||||
struct kref ref;
|
struct kref ref;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -608,7 +608,7 @@ nvmet_fc_alloc_target_queue(struct nvmet_fc_tgt_assoc *assoc,
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (qid >= NVMET_NR_QUEUES)
|
if (qid > NVMET_NR_QUEUES)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
queue = kzalloc((sizeof(*queue) +
|
queue = kzalloc((sizeof(*queue) +
|
||||||
|
@ -888,7 +888,7 @@ nvmet_fc_delete_target_assoc(struct nvmet_fc_tgt_assoc *assoc)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
spin_lock_irqsave(&tgtport->lock, flags);
|
spin_lock_irqsave(&tgtport->lock, flags);
|
||||||
for (i = NVMET_NR_QUEUES - 1; i >= 0; i--) {
|
for (i = NVMET_NR_QUEUES; i >= 0; i--) {
|
||||||
queue = assoc->queues[i];
|
queue = assoc->queues[i];
|
||||||
if (queue) {
|
if (queue) {
|
||||||
if (!nvmet_fc_tgt_q_get(queue))
|
if (!nvmet_fc_tgt_q_get(queue))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue