diff options
author | Hendiadyoin1 <leon.a@serenityos.org> | 2022-06-18 19:08:18 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-07-15 12:42:43 +0200 |
commit | c3e57bfccbfab78b4fce94edc8f2ffb33da69d29 (patch) | |
tree | c832b1c5ebc3c70704feba6a3d161b288fd00b01 | |
parent | 10d9bb93be15560f5a30e253028518109ca0c7c1 (diff) | |
download | serenity-c3e57bfccbfab78b4fce94edc8f2ffb33da69d29.zip |
Kernel: Try to set [cm]time in Inode::did_modify_contents
This indirectly resolves a fixme in sys$msync
-rw-r--r-- | Kernel/FileSystem/Inode.cpp | 6 | ||||
-rw-r--r-- | Kernel/Syscalls/mmap.cpp | 1 |
2 files changed, 6 insertions, 1 deletions
diff --git a/Kernel/FileSystem/Inode.cpp b/Kernel/FileSystem/Inode.cpp index 1f59a1d967..3721ccf777 100644 --- a/Kernel/FileSystem/Inode.cpp +++ b/Kernel/FileSystem/Inode.cpp @@ -232,6 +232,12 @@ void Inode::did_remove_child(InodeIdentifier, StringView name) void Inode::did_modify_contents() { + // FIXME: What happens if this fails? + // ENOTIMPL would be a meaningless error to return here + auto time = kgettimeofday().to_truncated_seconds(); + (void)set_mtime(time); + (void)set_ctime(time); + m_watchers.for_each([&](auto& watcher) { watcher->notify_inode_event({}, identifier(), InodeWatcherEvent::Type::ContentModified); }); diff --git a/Kernel/Syscalls/mmap.cpp b/Kernel/Syscalls/mmap.cpp index 8359709bc9..eb7f9b5490 100644 --- a/Kernel/Syscalls/mmap.cpp +++ b/Kernel/Syscalls/mmap.cpp @@ -600,7 +600,6 @@ ErrorOr<FlatPtr> Process::sys$msync(Userspace<void*> address, size_t size, int f // FIXME: Handle MS_ASYNC TRY(inode_vmobject.sync(offset / PAGE_SIZE, rounded_size / PAGE_SIZE)); // FIXME: Handle MS_INVALIDATE - // FIXME: If msync() causes any write to a file, the file's st_ctime and st_mtime fields shall be marked for update. } return 0; } |