Kernel/Ramdisk: Propagate error during Ramdisk initialize

Use the same pattern for Ramdisk similar to other storage devices during
device initialization. This will propagate errors if the Ramdisk fails
to initialize.
This commit is contained in:
Pankaj Raghav 2023-03-14 10:24:27 +01:00 committed by Andreas Kling
parent b204da94b0
commit 6ff85aa19a
Notes: sideshowbarker 2024-07-17 03:10:07 +09:00
3 changed files with 9 additions and 4 deletions

View File

@ -11,9 +11,9 @@
namespace Kernel {
NonnullRefPtr<RamdiskController> RamdiskController::initialize()
ErrorOr<NonnullRefPtr<RamdiskController>> RamdiskController::try_initialize()
{
return adopt_ref(*new RamdiskController());
return TRY(adopt_nonnull_ref_or_enomem(new (nothrow) RamdiskController()));
}
bool RamdiskController::reset()

View File

@ -19,7 +19,7 @@ class AsyncBlockDeviceRequest;
class RamdiskController final : public StorageController {
public:
static NonnullRefPtr<RamdiskController> initialize();
static ErrorOr<NonnullRefPtr<RamdiskController>> try_initialize();
virtual ~RamdiskController() override;
virtual LockRefPtr<StorageDevice> device(u32 index) const override;

View File

@ -444,7 +444,12 @@ UNMAP_AFTER_INIT void StorageManagement::initialize(StringView root_device, bool
}
// Note: Whether PCI bus is present on the system or not, always try to attach
// a given ramdisk.
m_controllers.append(RamdiskController::initialize());
auto controller = RamdiskController::try_initialize();
if (controller.is_error()) {
dmesgln("Unable to initialize RAM controller: {}", controller.error());
} else {
m_controllers.append(controller.release_value());
}
enumerate_storage_devices();
enumerate_disk_partitions();