From 5afb8ea7d703d548eb2e08a754b64e351a5b976f Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Thu, 25 Jun 2009 15:35:16 +0000 Subject: [PATCH] Patch by Bryce Groff: Implemented DeleteChild(). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31234 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../disk_device_manager/KPartitioningSystem.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp b/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp index 761ab9e9f4..a7c90c9f65 100644 --- a/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp +++ b/src/system/kernel/disk_device_manager/KPartitioningSystem.cpp @@ -451,8 +451,20 @@ KPartitioningSystem::CreateChild(KPartition* partition, off_t offset, status_t KPartitioningSystem::DeleteChild(KPartition* child, disk_job_id job) { - // to be implemented - return B_ERROR; + if (!child || !child->Parent()) + return B_BAD_VALUE; + if (!fModule->delete_child) + return B_NOT_SUPPORTED; + + int fd = -1; + KPartition* parent = child->Parent(); + status_t result = parent->Open(O_RDWR, &fd); + if (result != B_OK) + return result; + + result = fModule->delete_child(fd, parent->ID(), child->ID(), job); + close(fd); + return result; }