diff options
Diffstat (limited to 'drivers/nvme/host/multipath.c')
| -rw-r--r-- | drivers/nvme/host/multipath.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c index af831d3d15d0..30de7efef003 100644 --- a/drivers/nvme/host/multipath.c +++ b/drivers/nvme/host/multipath.c @@ -509,14 +509,16 @@ static int nvme_update_ana_state(struct nvme_ctrl *ctrl,  	down_write(&ctrl->namespaces_rwsem);  	list_for_each_entry(ns, &ctrl->namespaces, list) { -		if (ns->head->ns_id != le32_to_cpu(desc->nsids[n])) +		unsigned nsid = le32_to_cpu(desc->nsids[n]); + +		if (ns->head->ns_id < nsid)  			continue; -		nvme_update_ns_ana_state(desc, ns); +		if (ns->head->ns_id == nsid) +			nvme_update_ns_ana_state(desc, ns);  		if (++n == nr_nsids)  			break;  	}  	up_write(&ctrl->namespaces_rwsem); -	WARN_ON_ONCE(n < nr_nsids);  	return 0;  }  |