diff --git a/headers/private/kernel/disk_device_manager/ddm_userland_interface.h b/headers/private/kernel/disk_device_manager/ddm_userland_interface.h index 5d1d214018..27c12e9ac4 100644 --- a/headers/private/kernel/disk_device_manager/ddm_userland_interface.h +++ b/headers/private/kernel/disk_device_manager/ddm_userland_interface.h @@ -152,6 +152,10 @@ status_t _kern_validate_set_partition_content_name(disk_system_id diskSystemID, status_t _kern_validate_set_partition_type(disk_system_id diskSystemID, partition_id partitionID, const char *type); +status_t _kern_validate_initialize_partition(disk_system_id diskSystemID, + partition_id partitionID, + char *name, + const char *parameters); status_t _kern_validate_create_child_partition(disk_system_id diskSystemID, partition_id partitionID, off_t *offset, off_t *size, diff --git a/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp b/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp index 189c3fbef6..0870abbad0 100644 --- a/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp +++ b/src/kernel/core/disk_device_manager/ddm_userland_interface.cpp @@ -749,6 +749,31 @@ _kern_validate_set_partition_type(disk_system_id diskSystemID, return B_ERROR; } +// _kern_validate_initialize_partition +status_t +_kern_validate_initialize_partition(disk_system_id diskSystemID, + partition_id partitionID, char *name, + const char *parameters) +{ + KDiskDeviceManager *manager = KDiskDeviceManager::Default(); + // get the partition + KPartition *partition = manager->ReadLockPartition(partitionID); + if (!partition) + return B_ENTRY_NOT_FOUND; + PartitionRegistrar registrar1(partition, true); + PartitionRegistrar registrar2(partition->Device(), true); + DeviceReadLocker locker(partition->Device(), true); + if (!check_shadow_partition(partition)) + return B_BAD_VALUE; + // get the disk system + KDiskSystem *diskSystem = manager->LoadDiskSystem(diskSystemID); + if (!diskSystem) + return B_ENTRY_NOT_FOUND; + DiskSystemLoader loader(diskSystem, true); + // get the info + return diskSystem->ValidateInitialize(partition, name, parameters); +} + // _kern_validate_create_child_partition status_t _kern_validate_create_child_partition(disk_system_id diskSystemID,