Skip to content

Commit 964fc73

Browse files
committed
T7819: VPP do not override driver if it is already done
Fixes this case: Traceback (most recent call last): File "/usr/libexec/vyos/services/vyos-configd", line 156, in run_script script.apply(c) File "/usr/libexec/vyos/conf_mode/vpp.py", line 613, in apply control_host.override_driver( File "/usr/lib/python3/dist-packages/vyos/vpp/control_host.py", line 138, in override_driver Path('/sys/module/vfio_pci/drivers/pci:vfio-pci/new_id').write_text( File "/usr/lib/python3.11/pathlib.py", line 1079, in write_text with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f: FileExistsError: [Errno 17] File exists
1 parent 5a7e82c commit 964fc73

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/conf_mode/vpp.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -742,10 +742,21 @@ def apply(config):
742742
iface_config['kernel_module'] in override_drivers
743743
or override_xdp_to_dpdk
744744
):
745+
bus_id = config['persist_config'][iface]['bus_id']
746+
dev_id = config['persist_config'][iface]['dev_id']
747+
desired_driver = override_drivers[k_module]
748+
# Check driver before override
749+
drv_path = Path(f'/sys/bus/{bus_id}/devices/{dev_id}/driver')
750+
if drv_path.exists():
751+
current_driver = drv_path.resolve().name
752+
# already correctly overridden
753+
if current_driver == desired_driver:
754+
continue
755+
745756
control_host.override_driver(
746-
config['persist_config'][iface]['bus_id'],
747-
config['persist_config'][iface]['dev_id'],
748-
override_drivers[k_module],
757+
bus_id,
758+
dev_id,
759+
desired_driver,
749760
)
750761

751762
call('systemctl daemon-reload')

0 commit comments

Comments
 (0)