Kernel: Make Inode::flush_metadata() return a KResult

Even if this goes nowhere yet, we have to start building an error
propagation path somewhere.
This commit is contained in:
Andreas Kling 2021-10-21 17:01:52 +02:00
parent 6337d742bb
commit 6f69d5204f
Notes: sideshowbarker 2024-07-18 02:05:05 +09:00
18 changed files with 28 additions and 20 deletions

View File

@ -145,8 +145,9 @@ KResultOr<NonnullRefPtr<Inode>> DevPtsFSInode::lookup(StringView name)
});
}
void DevPtsFSInode::flush_metadata()
KResult DevPtsFSInode::flush_metadata()
{
return KSuccess;
}
KResult DevPtsFSInode::add_child(Inode&, const StringView&, mode_t)

View File

@ -51,7 +51,7 @@ private:
virtual InodeMetadata metadata() const override;
virtual KResult traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual KResultOr<NonnullRefPtr<Inode>> lookup(StringView name) override;
virtual void flush_metadata() override;
virtual KResult flush_metadata() override;
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override;
virtual KResultOr<NonnullRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override;
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;

View File

@ -70,8 +70,9 @@ KResultOr<NonnullRefPtr<Inode>> DevTmpFSInode::lookup(StringView)
VERIFY_NOT_REACHED();
}
void DevTmpFSInode::flush_metadata()
KResult DevTmpFSInode::flush_metadata()
{
return KSuccess;
}
KResultOr<size_t> DevTmpFSInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, OpenFileDescription*)

View File

@ -51,7 +51,7 @@ protected:
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override;
virtual KResult traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual KResultOr<NonnullRefPtr<Inode>> lookup(StringView name) override;
virtual void flush_metadata() override;
virtual KResult flush_metadata() override;
virtual InodeMetadata metadata() const override final;
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override;
virtual KResultOr<NonnullRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override;

View File

@ -773,7 +773,7 @@ InodeMetadata Ext2FSInode::metadata() const
return metadata;
}
void Ext2FSInode::flush_metadata()
KResult Ext2FSInode::flush_metadata()
{
MutexLocker locker(m_inode_lock);
dbgln_if(EXT2_DEBUG, "Ext2FSInode[{}]::flush_metadata(): Flushing inode", identifier());
@ -786,6 +786,7 @@ void Ext2FSInode::flush_metadata()
}
}
set_metadata_dirty(false);
return KSuccess;
}
KResultOr<NonnullRefPtr<Inode>> Ext2FS::get_inode(InodeIdentifier inode) const

View File

@ -42,7 +42,7 @@ private:
virtual InodeMetadata metadata() const override;
virtual KResult traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual KResultOr<NonnullRefPtr<Inode>> lookup(StringView name) override;
virtual void flush_metadata() override;
virtual KResult flush_metadata() override;
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& data, OpenFileDescription*) override;
virtual KResultOr<NonnullRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override;
virtual KResult add_child(Inode& child, const StringView& name, mode_t) override;

View File

@ -499,8 +499,9 @@ KResultOr<NonnullRefPtr<Inode>> ISO9660Inode::lookup(StringView name)
return inode.release_nonnull();
}
void ISO9660Inode::flush_metadata()
KResult ISO9660Inode::flush_metadata()
{
return KSuccess;
}
KResultOr<size_t> ISO9660Inode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, OpenFileDescription*)

View File

@ -351,7 +351,7 @@ public:
virtual InodeMetadata metadata() const override;
virtual KResult traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual KResultOr<NonnullRefPtr<Inode>> lookup(StringView name) override;
virtual void flush_metadata() override;
virtual KResult flush_metadata() override;
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override;
virtual KResultOr<NonnullRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override;
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;

View File

@ -41,14 +41,14 @@ void Inode::sync_all()
for (auto& inode : inodes) {
VERIFY(inode.is_metadata_dirty());
inode.flush_metadata();
(void)inode.flush_metadata();
}
}
void Inode::sync()
{
if (is_metadata_dirty())
flush_metadata();
(void)flush_metadata();
fs().flush_writes();
}
@ -103,7 +103,7 @@ void Inode::will_be_destroyed()
{
MutexLocker locker(m_inode_lock);
if (m_metadata_dirty)
flush_metadata();
(void)flush_metadata();
}
KResult Inode::set_atime(time_t)

View File

@ -81,7 +81,7 @@ public:
virtual KResult increment_link_count();
virtual KResult decrement_link_count();
virtual void flush_metadata() = 0;
virtual KResult flush_metadata() = 0;
void will_be_destroyed();

View File

@ -822,9 +822,10 @@ InodeMetadata Plan9FSInode::metadata() const
return metadata;
}
void Plan9FSInode::flush_metadata()
KResult Plan9FSInode::flush_metadata()
{
// Do nothing.
return KSuccess;
}
KResult Plan9FSInode::traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)> callback) const

View File

@ -155,7 +155,7 @@ public:
// ^Inode
virtual InodeMetadata metadata() const override;
virtual void flush_metadata() override;
virtual KResult flush_metadata() override;
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override;
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& data, OpenFileDescription*) override;
virtual KResult traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)>) const override;

View File

@ -70,8 +70,9 @@ ProcFSInode::~ProcFSInode()
{
}
void ProcFSInode::flush_metadata()
KResult ProcFSInode::flush_metadata()
{
return KSuccess;
}
KResult ProcFSInode::add_child(Inode&, const StringView&, mode_t)

View File

@ -56,7 +56,7 @@ protected:
// ^Inode
virtual KResult attach(OpenFileDescription& description) = 0;
virtual void did_seek(OpenFileDescription&, off_t) = 0;
virtual void flush_metadata() override final;
virtual KResult flush_metadata() override final;
virtual KResultOr<NonnullRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override final;
virtual KResult add_child(Inode&, const StringView& name, mode_t) override final;
virtual KResult remove_child(const StringView& name) override final;

View File

@ -148,8 +148,9 @@ InodeMetadata SysFSInode::metadata() const
return metadata;
}
void SysFSInode::flush_metadata()
KResult SysFSInode::flush_metadata()
{
return KSuccess;
}
KResultOr<size_t> SysFSInode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& buffer, OpenFileDescription* fd)

View File

@ -137,7 +137,7 @@ protected:
virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override;
virtual KResult traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual KResultOr<NonnullRefPtr<Inode>> lookup(StringView name) override;
virtual void flush_metadata() override;
virtual KResult flush_metadata() override;
virtual InodeMetadata metadata() const override;
virtual KResultOr<size_t> write_bytes(off_t, size_t, UserOrKernelBuffer const&, OpenFileDescription*) override;
virtual KResultOr<NonnullRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override;

View File

@ -216,7 +216,7 @@ void TmpFSInode::notify_watchers()
set_metadata_dirty(false);
}
void TmpFSInode::flush_metadata()
KResult TmpFSInode::flush_metadata()
{
// We don't really have any metadata that could become dirty.
// The only reason we even call set_metadata_dirty() is
@ -224,6 +224,7 @@ void TmpFSInode::flush_metadata()
// switched to a different mechanism, we can stop ever marking
// our metadata as dirty at all.
set_metadata_dirty(false);
return KSuccess;
}
KResult TmpFSInode::chmod(mode_t mode)

View File

@ -56,7 +56,7 @@ public:
virtual InodeMetadata metadata() const override;
virtual KResult traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual KResultOr<NonnullRefPtr<Inode>> lookup(StringView name) override;
virtual void flush_metadata() override;
virtual KResult flush_metadata() override;
virtual KResultOr<size_t> write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override;
virtual KResultOr<NonnullRefPtr<Inode>> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override;
virtual KResult add_child(Inode&, const StringView& name, mode_t) override;