From 4a6799617cea4a16a1e43ed9003728f3c5a008d2 Mon Sep 17 00:00:00 2001 From: Sergey Lisov Date: Wed, 10 Jul 2024 18:32:59 +0300 Subject: [PATCH] Kernel: Add virtio-blk devices to DeviceManager This was erroneously not done, because the VirtIOBlockDevice is created using a raw new statement, and not using DeviceManager::try_create_device. --- Kernel/Devices/Storage/VirtIO/VirtIOBlockDevice.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Kernel/Devices/Storage/VirtIO/VirtIOBlockDevice.cpp b/Kernel/Devices/Storage/VirtIO/VirtIOBlockDevice.cpp index dc003d5a2eec8d..d59fb8b0f4889e 100644 --- a/Kernel/Devices/Storage/VirtIO/VirtIOBlockDevice.cpp +++ b/Kernel/Devices/Storage/VirtIO/VirtIOBlockDevice.cpp @@ -120,7 +120,10 @@ UNMAP_AFTER_INIT ErrorOr VirtIOBlockDevice::initialize_virtio_resources() })); TRY(setup_queues(1)); // REQUESTQ finish_init(); - return {}; + + // This device is not added to DeviceManagement, as we've bypassed try_create_device, so we need to add it ourselves + // We can't call the method directly, as it is redeclared as private in the StorageDevice class, thus the cast + return static_cast(this)->after_inserting(); } ErrorOr VirtIOBlockDevice::handle_device_config_change()