mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-15 06:34:03 +00:00
dragonball: Convert VirtioNetDeviceMgr function to method
Convert VirtioNetDeviceMgr::insert_device and VirtioNetDeviceMgr::update_device_ratelimiters to method. Fixes: #6880 Signed-off-by: Shuaiyi Zhang <zhang_syi@qq.com>
This commit is contained in:
parent
4659facb74
commit
c477ac551f
@ -549,7 +549,9 @@ impl VmmService {
|
|||||||
}
|
}
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
VirtioNetDeviceMgr::insert_device(vm.device_manager_mut(), ctx, config)
|
vm.device_manager_mut()
|
||||||
|
.virtio_net_manager
|
||||||
|
.insert_device(ctx, config)
|
||||||
.map(|_| VmmData::Empty)
|
.map(|_| VmmData::Empty)
|
||||||
.map_err(VmmActionError::VirtioNet)
|
.map_err(VmmActionError::VirtioNet)
|
||||||
}
|
}
|
||||||
@ -562,7 +564,9 @@ impl VmmService {
|
|||||||
) -> VmmRequestResult {
|
) -> VmmRequestResult {
|
||||||
let vm = vmm.get_vm_mut().ok_or(VmmActionError::InvalidVMID)?;
|
let vm = vmm.get_vm_mut().ok_or(VmmActionError::InvalidVMID)?;
|
||||||
|
|
||||||
VirtioNetDeviceMgr::update_device_ratelimiters(vm.device_manager_mut(), config)
|
vm.device_manager_mut()
|
||||||
|
.virtio_net_manager
|
||||||
|
.update_device_ratelimiters(config)
|
||||||
.map(|_| VmmData::Empty)
|
.map(|_| VmmData::Empty)
|
||||||
.map_err(VmmActionError::VirtioNet)
|
.map_err(VmmActionError::VirtioNet)
|
||||||
}
|
}
|
||||||
|
@ -223,7 +223,7 @@ impl VirtioNetDeviceMgr {
|
|||||||
|
|
||||||
/// Insert or update a virtio net device into the manager.
|
/// Insert or update a virtio net device into the manager.
|
||||||
pub fn insert_device(
|
pub fn insert_device(
|
||||||
device_mgr: &mut DeviceManager,
|
&mut self,
|
||||||
mut ctx: DeviceOpContext,
|
mut ctx: DeviceOpContext,
|
||||||
config: VirtioNetDeviceConfigInfo,
|
config: VirtioNetDeviceConfigInfo,
|
||||||
) -> std::result::Result<(), VirtioNetDeviceError> {
|
) -> std::result::Result<(), VirtioNetDeviceError> {
|
||||||
@ -234,8 +234,6 @@ impl VirtioNetDeviceMgr {
|
|||||||
return Err(VirtioNetDeviceError::UpdateNotAllowedPostBoot);
|
return Err(VirtioNetDeviceError::UpdateNotAllowedPostBoot);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mgr = &mut device_mgr.virtio_net_manager;
|
|
||||||
|
|
||||||
slog::info!(
|
slog::info!(
|
||||||
ctx.logger(),
|
ctx.logger(),
|
||||||
"add virtio-net device configuration";
|
"add virtio-net device configuration";
|
||||||
@ -244,7 +242,7 @@ impl VirtioNetDeviceMgr {
|
|||||||
"host_dev_name" => &config.host_dev_name,
|
"host_dev_name" => &config.host_dev_name,
|
||||||
);
|
);
|
||||||
|
|
||||||
let device_index = mgr.info_list.insert_or_update(&config)?;
|
let device_index = self.info_list.insert_or_update(&config)?;
|
||||||
|
|
||||||
if ctx.is_hotplug {
|
if ctx.is_hotplug {
|
||||||
slog::info!(
|
slog::info!(
|
||||||
@ -260,17 +258,17 @@ impl VirtioNetDeviceMgr {
|
|||||||
let dev = DeviceManager::create_mmio_virtio_device(
|
let dev = DeviceManager::create_mmio_virtio_device(
|
||||||
device,
|
device,
|
||||||
&mut ctx,
|
&mut ctx,
|
||||||
config.use_shared_irq.unwrap_or(mgr.use_shared_irq),
|
config.use_shared_irq.unwrap_or(self.use_shared_irq),
|
||||||
config.use_generic_irq.unwrap_or(USE_GENERIC_IRQ),
|
config.use_generic_irq.unwrap_or(USE_GENERIC_IRQ),
|
||||||
)
|
)
|
||||||
.map_err(VirtioNetDeviceError::DeviceManager)?;
|
.map_err(VirtioNetDeviceError::DeviceManager)?;
|
||||||
ctx.insert_hotplug_mmio_device(&dev, None)
|
ctx.insert_hotplug_mmio_device(&dev, None)
|
||||||
.map_err(VirtioNetDeviceError::DeviceManager)?;
|
.map_err(VirtioNetDeviceError::DeviceManager)?;
|
||||||
// live-upgrade need save/restore device from info.device.
|
// live-upgrade need save/restore device from info.device.
|
||||||
mgr.info_list[device_index].set_device(dev);
|
self.info_list[device_index].set_device(dev);
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
mgr.info_list.remove(device_index);
|
self.info_list.remove(device_index);
|
||||||
return Err(VirtioNetDeviceError::Virtio(e));
|
return Err(VirtioNetDeviceError::Virtio(e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,16 +279,15 @@ impl VirtioNetDeviceMgr {
|
|||||||
|
|
||||||
/// Update the ratelimiter settings of a virtio net device.
|
/// Update the ratelimiter settings of a virtio net device.
|
||||||
pub fn update_device_ratelimiters(
|
pub fn update_device_ratelimiters(
|
||||||
device_mgr: &mut DeviceManager,
|
&mut self,
|
||||||
new_cfg: VirtioNetDeviceConfigUpdateInfo,
|
new_cfg: VirtioNetDeviceConfigUpdateInfo,
|
||||||
) -> std::result::Result<(), VirtioNetDeviceError> {
|
) -> std::result::Result<(), VirtioNetDeviceError> {
|
||||||
let mgr = &mut device_mgr.virtio_net_manager;
|
match self.get_index_of_iface_id(&new_cfg.iface_id) {
|
||||||
match mgr.get_index_of_iface_id(&new_cfg.iface_id) {
|
|
||||||
Some(index) => {
|
Some(index) => {
|
||||||
let config = &mut mgr.info_list[index].config;
|
let config = &mut self.info_list[index].config;
|
||||||
config.rx_rate_limiter = new_cfg.rx_rate_limiter.clone();
|
config.rx_rate_limiter = new_cfg.rx_rate_limiter.clone();
|
||||||
config.tx_rate_limiter = new_cfg.tx_rate_limiter.clone();
|
config.tx_rate_limiter = new_cfg.tx_rate_limiter.clone();
|
||||||
let device = mgr.info_list[index].device.as_mut().ok_or_else(|| {
|
let device = self.info_list[index].device.as_mut().ok_or_else(|| {
|
||||||
VirtioNetDeviceError::InvalidIfaceId(new_cfg.iface_id.clone())
|
VirtioNetDeviceError::InvalidIfaceId(new_cfg.iface_id.clone())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user