diff --git a/headers/private/kernel/disk_device_manager/KPartition.h b/headers/private/kernel/disk_device_manager/KPartition.h index c05e280902..82e1b073e2 100644 --- a/headers/private/kernel/disk_device_manager/KPartition.h +++ b/headers/private/kernel/disk_device_manager/KPartition.h @@ -130,6 +130,7 @@ public: bool RemoveAllChildren(); KPartition *ChildAt(int32 index) const; int32 CountChildren() const; + int32 CountDescendants() const; // Shadow Partition diff --git a/src/kernel/core/disk_device_manager/KPartition.cpp b/src/kernel/core/disk_device_manager/KPartition.cpp index 7ba762422f..011a3714f8 100644 --- a/src/kernel/core/disk_device_manager/KPartition.cpp +++ b/src/kernel/core/disk_device_manager/KPartition.cpp @@ -656,6 +656,16 @@ KPartition::CountChildren() const return fPartitionData.child_count; } +// CountDescendants +int32 +KPartition::CountDescendants() const +{ + int32 count = 1; + for (int32 i = 0; KPartition *child = ChildAt(i); i++) + count += child->CountDescendants(); + return count; +} + // CreateShadowPartition status_t KPartition::CreateShadowPartition()