Implement utime() along with a naive /bin/touch.

This synchronous approach to inodes is silly, obviously. I need to rework
it so that the in-memory CoreInode object is the canonical inode, and then
we just need a sync() that flushes pending changes to disk.
This commit is contained in:
Andreas Kling 2018-12-19 21:14:55 +01:00
parent e03d341615
commit 038d8641f9
Notes: sideshowbarker 2024-07-19 16:08:06 +09:00
22 changed files with 122 additions and 22 deletions

View file

@ -716,16 +716,18 @@ bool Ext2FS::modify_link_count(InodeIndex inode, int delta)
return write_ext2_inode(inode, *e2inode);
}
bool Ext2FS::set_mtime(InodeIdentifier inode, dword timestamp)
int Ext2FS::set_atime_and_mtime(InodeIdentifier inode, dword atime, dword mtime)
{
ASSERT(inode.fsid() == id());
auto e2inode = lookup_ext2_inode(inode.index());
if (!e2inode)
return false;
return -EIO;
kprintf("changing inode %u mtime from %u to %u\n", inode.index(), e2inode->i_mtime, timestamp);
e2inode->i_mtime = timestamp;
dbgprintf("changing inode %u atime from %u to %u\n", inode.index(), e2inode->i_atime, atime);
dbgprintf("changing inode %u mtime from %u to %u\n", inode.index(), e2inode->i_mtime, mtime);
e2inode->i_mtime = mtime;
e2inode->i_atime = atime;
return write_ext2_inode(inode.index(), *e2inode);
}