diff --git a/src/system/boot/loader/partitions.cpp b/src/system/boot/loader/partitions.cpp index 78a5d05d66..430f3fcd36 100644 --- a/src/system/boot/loader/partitions.cpp +++ b/src/system/boot/loader/partitions.cpp @@ -222,6 +222,7 @@ Partition::AddChild() status_t Partition::_Mount(file_system_module_info *module, Directory **_fileSystem) { + static int fileMapDiskDepth = 0; TRACE(("%p Partition::_Mount check for file_system: %s\n", this, module->pretty_name)); @@ -236,13 +237,16 @@ Partition::_Mount(file_system_module_info *module, Directory **_fileSystem) fIsFileSystem = true; - // see if it contains an image file we could mount in turn - // XXX: avoid recursing too much - FileMapDisk *disk = FileMapDisk::FindAnyFileMapDisk(fileSystem); - if (disk) { - TRACE(("%p Partition::_Mount: found FileMapDisk\n", this)); - add_partitions_for(disk, true, false); + // if we aren't already mounting an image + if (!fileMapDiskDepth++) { + // see if it contains an image file we could mount in turn + FileMapDisk *disk = FileMapDisk::FindAnyFileMapDisk(fileSystem); + if (disk) { + TRACE(("%p Partition::_Mount: found FileMapDisk\n", this)); + add_partitions_for(disk, true, false); + } } + fileMapDiskDepth--; return B_OK; }