+14
-7
drivers/nvme/host/core.c
+14
-7
drivers/nvme/host/core.c
···
3795
int srcu_idx;
3796
3797
srcu_idx = srcu_read_lock(&ctrl->srcu);
3798
-
list_for_each_entry_rcu(ns, &ctrl->namespaces, list) {
3799
if (ns->head->ns_id == nsid) {
3800
if (!nvme_get_ns(ns))
3801
continue;
···
4880
int srcu_idx;
4881
4882
srcu_idx = srcu_read_lock(&ctrl->srcu);
4883
-
list_for_each_entry_rcu(ns, &ctrl->namespaces, list)
4884
blk_mark_disk_dead(ns->disk);
4885
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4886
}
···
4893
int srcu_idx;
4894
4895
srcu_idx = srcu_read_lock(&ctrl->srcu);
4896
-
list_for_each_entry_rcu(ns, &ctrl->namespaces, list)
4897
blk_mq_unfreeze_queue(ns->queue);
4898
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4899
clear_bit(NVME_CTRL_FROZEN, &ctrl->flags);
···
4907
int srcu_idx;
4908
4909
srcu_idx = srcu_read_lock(&ctrl->srcu);
4910
-
list_for_each_entry_rcu(ns, &ctrl->namespaces, list) {
4911
timeout = blk_mq_freeze_queue_wait_timeout(ns->queue, timeout);
4912
if (timeout <= 0)
4913
break;
···
4924
int srcu_idx;
4925
4926
srcu_idx = srcu_read_lock(&ctrl->srcu);
4927
-
list_for_each_entry_rcu(ns, &ctrl->namespaces, list)
4928
blk_mq_freeze_queue_wait(ns->queue);
4929
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4930
}
···
4938
4939
set_bit(NVME_CTRL_FROZEN, &ctrl->flags);
4940
srcu_idx = srcu_read_lock(&ctrl->srcu);
4941
-
list_for_each_entry_rcu(ns, &ctrl->namespaces, list)
4942
blk_freeze_queue_start(ns->queue);
4943
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4944
}
···
4987
int srcu_idx;
4988
4989
srcu_idx = srcu_read_lock(&ctrl->srcu);
4990
-
list_for_each_entry_rcu(ns, &ctrl->namespaces, list)
4991
blk_sync_queue(ns->queue);
4992
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4993
}
···
3795
int srcu_idx;
3796
3797
srcu_idx = srcu_read_lock(&ctrl->srcu);
3798
+
list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
3799
+
srcu_read_lock_held(&ctrl->srcu)) {
3800
if (ns->head->ns_id == nsid) {
3801
if (!nvme_get_ns(ns))
3802
continue;
···
4879
int srcu_idx;
4880
4881
srcu_idx = srcu_read_lock(&ctrl->srcu);
4882
+
list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
4883
+
srcu_read_lock_held(&ctrl->srcu))
4884
blk_mark_disk_dead(ns->disk);
4885
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4886
}
···
4891
int srcu_idx;
4892
4893
srcu_idx = srcu_read_lock(&ctrl->srcu);
4894
+
list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
4895
+
srcu_read_lock_held(&ctrl->srcu))
4896
blk_mq_unfreeze_queue(ns->queue);
4897
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4898
clear_bit(NVME_CTRL_FROZEN, &ctrl->flags);
···
4904
int srcu_idx;
4905
4906
srcu_idx = srcu_read_lock(&ctrl->srcu);
4907
+
list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
4908
+
srcu_read_lock_held(&ctrl->srcu)) {
4909
timeout = blk_mq_freeze_queue_wait_timeout(ns->queue, timeout);
4910
if (timeout <= 0)
4911
break;
···
4920
int srcu_idx;
4921
4922
srcu_idx = srcu_read_lock(&ctrl->srcu);
4923
+
list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
4924
+
srcu_read_lock_held(&ctrl->srcu))
4925
blk_mq_freeze_queue_wait(ns->queue);
4926
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4927
}
···
4933
4934
set_bit(NVME_CTRL_FROZEN, &ctrl->flags);
4935
srcu_idx = srcu_read_lock(&ctrl->srcu);
4936
+
list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
4937
+
srcu_read_lock_held(&ctrl->srcu))
4938
blk_freeze_queue_start(ns->queue);
4939
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4940
}
···
4981
int srcu_idx;
4982
4983
srcu_idx = srcu_read_lock(&ctrl->srcu);
4984
+
list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
4985
+
srcu_read_lock_held(&ctrl->srcu))
4986
blk_sync_queue(ns->queue);
4987
srcu_read_unlock(&ctrl->srcu, srcu_idx);
4988
}