Skip to content

Commit d5da1f7

Browse files
authored
nvme_test: Added NvmeWorkersContext input for the NvmeWorkers struct (#1913)
This is a support PR being made to reduce size of #1858. Added `NvmeWorkersContext` that stores the input for `NvmeWorkers`. This will subsequently be used to create new `NvmeWorkers` when FLR is issued to the test controller.
1 parent 380a579 commit d5da1f7

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

vm/devices/storage/nvme_test/src/pci.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use crate::VENDOR_ID;
1515
use crate::spec;
1616
use crate::workers::IoQueueEntrySizes;
1717
use crate::workers::NvmeWorkers;
18+
use crate::workers::NvmeWorkersContext;
1819
use chipset_device::ChipsetDevice;
1920
use chipset_device::io::IoError;
2021
use chipset_device::io::IoError::InvalidRegister;
@@ -146,16 +147,16 @@ impl NvmeFaultController {
146147
.collect();
147148

148149
let qe_sizes = Arc::new(Default::default());
149-
let admin = NvmeWorkers::new(
150+
let admin = NvmeWorkers::new(NvmeWorkersContext {
150151
driver_source,
151-
guest_memory,
152+
mem: guest_memory,
152153
interrupts,
153-
caps.max_io_queues,
154-
caps.max_io_queues,
155-
Arc::clone(&qe_sizes),
156-
caps.subsystem_id,
154+
max_sqs: caps.max_io_queues,
155+
max_cqs: caps.max_io_queues,
156+
qe_sizes: Arc::clone(&qe_sizes),
157+
subsystem_id: caps.subsystem_id,
157158
fault_configuration,
158-
);
159+
});
159160

160161
Self {
161162
cfg_space,

vm/devices/storage/nvme_test/src/workers.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ mod io;
1010
pub use admin::NsidConflict;
1111
pub use coordinator::NvmeFaultControllerClient;
1212
pub use coordinator::NvmeWorkers;
13+
pub use coordinator::NvmeWorkersContext;
1314

1415
use crate::PAGE_SIZE;
1516
use inspect::Inspect;

vm/devices/storage/nvme_test/src/workers/coordinator.rs

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ use vmcore::interrupt::Interrupt;
3131
use vmcore::vm_task::VmTaskDriver;
3232
use vmcore::vm_task::VmTaskDriverSource;
3333

34+
/// An input context for the NvmeWorkers
35+
pub struct NvmeWorkersContext<'a> {
36+
pub driver_source: &'a VmTaskDriverSource,
37+
pub mem: GuestMemory,
38+
pub interrupts: Vec<Interrupt>,
39+
pub max_sqs: u16,
40+
pub max_cqs: u16,
41+
pub qe_sizes: Arc<Mutex<IoQueueEntrySizes>>,
42+
pub subsystem_id: Guid,
43+
pub fault_configuration: FaultConfiguration,
44+
}
45+
3446
pub struct NvmeWorkers {
3547
_task: Task<()>,
3648
send: mesh::Sender<CoordinatorRequest>,
@@ -53,16 +65,18 @@ impl InspectMut for NvmeWorkers {
5365
}
5466

5567
impl NvmeWorkers {
56-
pub fn new(
57-
driver_source: &VmTaskDriverSource,
58-
mem: GuestMemory,
59-
interrupts: Vec<Interrupt>,
60-
max_sqs: u16,
61-
max_cqs: u16,
62-
qe_sizes: Arc<Mutex<IoQueueEntrySizes>>,
63-
subsystem_id: Guid,
64-
fault_configuration: FaultConfiguration,
65-
) -> Self {
68+
pub fn new(context: NvmeWorkersContext<'_>) -> Self {
69+
let NvmeWorkersContext {
70+
driver_source,
71+
mem,
72+
interrupts,
73+
subsystem_id,
74+
max_sqs,
75+
max_cqs,
76+
qe_sizes,
77+
fault_configuration,
78+
} = context;
79+
6680
let num_qids = 2 + max_sqs.max(max_cqs) * 2;
6781
let doorbells: Vec<_> = (0..num_qids)
6882
.map(|_| Arc::new(DoorbellRegister::new()))

0 commit comments

Comments
 (0)