From 99b632f86cdc7152b4e2d7c40ee4284558a595d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Tue, 9 Apr 2019 16:25:53 +0200 Subject: [PATCH] server/vfs: add modification time Issue #1784. --- repos/os/src/server/vfs/main.cc | 1 + repos/os/src/server/vfs/node.h | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/repos/os/src/server/vfs/main.cc b/repos/os/src/server/vfs/main.cc index 9449399bff..6543a79807 100644 --- a/repos/os/src/server/vfs/main.cc +++ b/repos/os/src/server/vfs/main.cc @@ -512,6 +512,7 @@ class Vfs_server::Session_component : private Session_resources, } fs_stat.size = vfs_stat.size; + fs_stat.modification_time.value = vfs_stat.modification_time.value; }); return fs_stat; } diff --git a/repos/os/src/server/vfs/node.h b/repos/os/src/server/vfs/node.h index db9425c926..c991991551 100644 --- a/repos/os/src/server/vfs/node.h +++ b/repos/os/src/server/vfs/node.h @@ -379,6 +379,20 @@ class Vfs_server::Io_node : public Vfs_server::Node, /* discard this packet */ _drop_packet(); break; + + case Packet_descriptor::WRITE_TIMESTAMP: + try { + _packet.with_timestamp([&] (File_system::Timestamp const time) { + Vfs::Timestamp ts { .value = time.value }; + _handle.fs().update_modification_timestamp(&_handle, ts); + }); + _packet.succeeded(true); + _ack_packet(0); + } catch (Vfs::File_io_service::Insufficient_buffer) { + /* packet is pending */ + result = false; + } + break; } return result;