diff options
-rw-r--r-- | Kernel/FileSystem/Ext2FileSystem.cpp | 4 | ||||
-rw-r--r-- | Kernel/FileSystem/Inode.cpp | 8 | ||||
-rw-r--r-- | Kernel/FileSystem/Inode.h | 4 | ||||
-rw-r--r-- | Kernel/FileSystem/InodeWatcher.cpp | 10 | ||||
-rw-r--r-- | Kernel/FileSystem/InodeWatcher.h | 6 | ||||
-rw-r--r-- | Kernel/FileSystem/TmpFS.cpp | 5 |
6 files changed, 19 insertions, 18 deletions
diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index f250e8cd4c..2f76b063a5 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -1027,7 +1027,7 @@ KResult Ext2FSInode::add_child(Inode& child, const StringView& name, mode_t mode if (success) m_lookup_cache.set(name, child.index()); - did_add_child(name); + did_add_child(child.identifier()); return KSuccess; } @@ -1072,7 +1072,7 @@ KResult Ext2FSInode::remove_child(const StringView& name) if (result.is_error()) return result; - did_remove_child(name); + did_remove_child(child_id); return KSuccess; } diff --git a/Kernel/FileSystem/Inode.cpp b/Kernel/FileSystem/Inode.cpp index b0e91bafc5..62e425dccb 100644 --- a/Kernel/FileSystem/Inode.cpp +++ b/Kernel/FileSystem/Inode.cpp @@ -229,19 +229,19 @@ void Inode::set_metadata_dirty(bool metadata_dirty) } } -void Inode::did_add_child(const String& name) +void Inode::did_add_child(const InodeIdentifier& child_id) { LOCKER(m_lock); for (auto& watcher : m_watchers) { - watcher->notify_child_added({}, name); + watcher->notify_child_added({}, child_id); } } -void Inode::did_remove_child(const String& name) +void Inode::did_remove_child(const InodeIdentifier& child_id) { LOCKER(m_lock); for (auto& watcher : m_watchers) { - watcher->notify_child_removed({}, name); + watcher->notify_child_removed({}, child_id); } } diff --git a/Kernel/FileSystem/Inode.h b/Kernel/FileSystem/Inode.h index d506ab0d18..62962bedf5 100644 --- a/Kernel/FileSystem/Inode.h +++ b/Kernel/FileSystem/Inode.h @@ -126,8 +126,8 @@ protected: void inode_size_changed(size_t old_size, size_t new_size); KResult prepare_to_write_data(); - void did_add_child(const String& name); - void did_remove_child(const String& name); + void did_add_child(const InodeIdentifier&); + void did_remove_child(const InodeIdentifier&); mutable Lock m_lock { "Inode" }; diff --git a/Kernel/FileSystem/InodeWatcher.cpp b/Kernel/FileSystem/InodeWatcher.cpp index 50cb5db065..193095de4d 100644 --- a/Kernel/FileSystem/InodeWatcher.cpp +++ b/Kernel/FileSystem/InodeWatcher.cpp @@ -96,19 +96,19 @@ String InodeWatcher::absolute_path(const FileDescription&) const void InodeWatcher::notify_inode_event(Badge<Inode>, Event::Type event_type) { LOCKER(m_lock); - m_queue.enqueue({ event_type, {} }); + m_queue.enqueue({ event_type }); } -void InodeWatcher::notify_child_added(Badge<Inode>, const String& child_name) +void InodeWatcher::notify_child_added(Badge<Inode>, const InodeIdentifier& child_id) { LOCKER(m_lock); - m_queue.enqueue({ Event::Type::ChildAdded, child_name }); + m_queue.enqueue({ Event::Type::ChildAdded, child_id.index() }); } -void InodeWatcher::notify_child_removed(Badge<Inode>, const String& child_name) +void InodeWatcher::notify_child_removed(Badge<Inode>, const InodeIdentifier& child_id) { LOCKER(m_lock); - m_queue.enqueue({ Event::Type::ChildRemoved, child_name }); + m_queue.enqueue({ Event::Type::ChildRemoved, child_id.index() }); } } diff --git a/Kernel/FileSystem/InodeWatcher.h b/Kernel/FileSystem/InodeWatcher.h index cd371e2f1a..3396159064 100644 --- a/Kernel/FileSystem/InodeWatcher.h +++ b/Kernel/FileSystem/InodeWatcher.h @@ -50,7 +50,7 @@ public: }; Type type { Type::Invalid }; - String string; + unsigned inode_index { 0 }; }; virtual bool can_read(const FileDescription&, size_t) const override; @@ -61,8 +61,8 @@ public: virtual const char* class_name() const override { return "InodeWatcher"; }; void notify_inode_event(Badge<Inode>, Event::Type); - void notify_child_added(Badge<Inode>, const String& child_name); - void notify_child_removed(Badge<Inode>, const String& child_name); + void notify_child_added(Badge<Inode>, const InodeIdentifier& child_id); + void notify_child_removed(Badge<Inode>, const InodeIdentifier& child_id); private: explicit InodeWatcher(Inode&); diff --git a/Kernel/FileSystem/TmpFS.cpp b/Kernel/FileSystem/TmpFS.cpp index 31222d6e87..24b7acc638 100644 --- a/Kernel/FileSystem/TmpFS.cpp +++ b/Kernel/FileSystem/TmpFS.cpp @@ -298,7 +298,7 @@ KResult TmpFSInode::add_child(Inode& child, const StringView& name, mode_t) ASSERT(child.fsid() == fsid()); m_children.set(name, { name, static_cast<TmpFSInode&>(child) }); - did_add_child(name); + did_add_child(child.identifier()); return KSuccess; } @@ -313,8 +313,9 @@ KResult TmpFSInode::remove_child(const StringView& name) auto it = m_children.find(name); if (it == m_children.end()) return KResult(-ENOENT); + auto child_id = it->value.inode->identifier(); m_children.remove(it); - did_remove_child(name); + did_remove_child(child_id); return KSuccess; } |