diff --git a/headers/private/file_systems/QueryParser.h b/headers/private/file_systems/QueryParser.h index e942e15409..7ca3b66d3d 100644 --- a/headers/private/file_systems/QueryParser.h +++ b/headers/private/file_systems/QueryParser.h @@ -1660,6 +1660,10 @@ Query::_EvaluateLiveUpdate(Entry* entry, Node* node, const char* at // entry was removed opcode = B_ENTRY_REMOVED; } else if ((fFlags & B_QUERY_WATCH_ALL) != 0) { + if (QueryPolicy::NodeIsDeleted(node)) { + // don't notify + return; + } // still in query, all attribute changes watched opcode = B_ATTR_CHANGED; } else { diff --git a/src/add-ons/kernel/file_systems/bfs/Query.cpp b/src/add-ons/kernel/file_systems/bfs/Query.cpp index 86f43dbf86..0b01257570 100644 --- a/src/add-ons/kernel/file_systems/bfs/Query.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Query.cpp @@ -283,6 +283,11 @@ struct Query::QueryPolicy { return NULL; } + static bool NodeIsDeleted(Node* node) + { + return node->IsDeleted(); + } + // Volume interface static dev_t ContextGetVolumeID(Context* context) diff --git a/src/add-ons/kernel/file_systems/packagefs/indices/Query.cpp b/src/add-ons/kernel/file_systems/packagefs/indices/Query.cpp index 66b26721ab..ef2e4434f6 100644 --- a/src/add-ons/kernel/file_systems/packagefs/indices/Query.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/indices/Query.cpp @@ -220,6 +220,11 @@ struct Query::QueryPolicy { return NULL; } + static bool NodeIsDeleted(Node* node) + { + return node->GetParentUnchecked() == NULL; + } + // Volume interface static dev_t ContextGetVolumeID(Context* context) diff --git a/src/add-ons/kernel/file_systems/ramfs/Query.cpp b/src/add-ons/kernel/file_systems/ramfs/Query.cpp index ae15e5bf68..b1cf94beea 100644 --- a/src/add-ons/kernel/file_systems/ramfs/Query.cpp +++ b/src/add-ons/kernel/file_systems/ramfs/Query.cpp @@ -276,6 +276,11 @@ struct Query::QueryPolicy { return node->GetNextReferrer(entry); } + static bool NodeIsDeleted(Node* node) + { + return node->GetFirstReferrer() == NULL; + } + // Volume interface static dev_t ContextGetVolumeID(Context* context)