From 04c9b279cb68235df8b491372537afaca68561d9 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 9 Oct 2024 23:29:03 -0400 Subject: [PATCH] packagefs: Followups to the directory locking change. * Fix the build with DEBUG enabled. * Add some more read-locks, to be safe. --- src/add-ons/kernel/file_systems/packagefs/indices/Index.cpp | 2 +- src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp | 2 +- src/add-ons/kernel/file_systems/packagefs/volume/Volume.cpp | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/file_systems/packagefs/indices/Index.cpp b/src/add-ons/kernel/file_systems/packagefs/indices/Index.cpp index 82e15ed041..b091ca307c 100644 --- a/src/add-ons/kernel/file_systems/packagefs/indices/Index.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/indices/Index.cpp @@ -77,7 +77,7 @@ Index::Dump() if (GetIterator(it)) { while (Node* node = it.Next()) { PRINT(" node: `%s', dir: %" B_PRIdINO "\n", - node->Name().Data(), node->Parent()->ID()); + node->Name().Data(), node->GetParentUnchecked()->ID()); } } ) diff --git a/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp index b0d02cbffd..124bc937ed 100644 --- a/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp @@ -148,7 +148,7 @@ packagefs_lookup(fs_volume* fsVolume, fs_vnode* fsDir, const char* entryName, Node* node = (Node*)fsDir->private_node; FUNCTION("volume: %p, dir: %p (%" B_PRId64 "), entry: \"%s\"\n", volume, - dir, dir->ID(), entryName); + node, node->ID(), entryName); if (!S_ISDIR(node->Mode())) return B_NOT_A_DIRECTORY; diff --git a/src/add-ons/kernel/file_systems/packagefs/volume/Volume.cpp b/src/add-ons/kernel/file_systems/packagefs/volume/Volume.cpp index 188b0d3a31..cb93d48b1f 100644 --- a/src/add-ons/kernel/file_systems/packagefs/volume/Volume.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/volume/Volume.cpp @@ -1923,6 +1923,7 @@ Volume::_AddPackageLinksNode(Node* node) // If this is a directory, recursively add descendants. The directory tree // for the package links isn't deep, so we can do recursion. if (Directory* directory = dynamic_cast(node)) { + DirectoryReadLocker directoryReadLocker(directory); for (Node* child = directory->FirstChild(); child != NULL; child = directory->NextChild(child)) { _AddPackageLinksNode(child); @@ -1937,6 +1938,7 @@ Volume::_RemovePackageLinksNode(Node* node) // If this is a directory, recursively remove descendants. The directory // tree for the package links isn't deep, so we can do recursion. if (Directory* directory = dynamic_cast(node)) { + DirectoryReadLocker directoryReadLocker(directory); for (Node* child = directory->FirstChild(); child != NULL; child = directory->NextChild(child)) { _RemovePackageLinksNode(child);