mirror of
https://github.com/RGBCube/serenity
synced 2025-05-22 19:35:06 +00:00
Kernel: Update atime/ctime/mtime timestamps atomically
Instead of having three separate APIs (one for each timestamp), there's now only Inode::update_timestamps() and it takes 3x optional timestamps. The non-empty timestamps are updated while holding the inode mutex, and the outside world no longer has to look at intermediate timestamp states.
This commit is contained in:
parent
35b2e9c663
commit
280694bb46
18 changed files with 34 additions and 109 deletions
|
@ -49,7 +49,7 @@ ErrorOr<size_t> InodeFile::write(OpenFileDescription& description, u64 offset, U
|
|||
nwritten = TRY(m_inode->write_bytes(offset, count, data, &description));
|
||||
}
|
||||
if (nwritten > 0) {
|
||||
auto mtime_result = m_inode->set_mtime(kgettimeofday().to_truncated_seconds());
|
||||
auto mtime_result = m_inode->update_timestamps({}, {}, kgettimeofday().to_truncated_seconds());
|
||||
Thread::current()->did_file_write(nwritten);
|
||||
evaluate_block_conditions();
|
||||
if (mtime_result.is_error())
|
||||
|
@ -106,7 +106,7 @@ ErrorOr<NonnullOwnPtr<KString>> InodeFile::pseudo_path(OpenFileDescription const
|
|||
ErrorOr<void> InodeFile::truncate(u64 size)
|
||||
{
|
||||
TRY(m_inode->truncate(size));
|
||||
TRY(m_inode->set_mtime(kgettimeofday().to_truncated_seconds()));
|
||||
TRY(m_inode->update_timestamps({}, {}, kgettimeofday().to_truncated_seconds()));
|
||||
return {};
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue