From e3706837b9bb0a44a483a95c77d171d59a1edd26 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Tue, 8 Mar 2022 15:57:27 +0100 Subject: [PATCH] VFS server: foster batching of acknowledgements With the consolidation of the file-system session's signal handlers implemented by commit "file_system_session: merge ack and submit sigh", we can now change the VFS server to produce batches of acknowledgements before explicitly waking up the client. (in contrast to the traditional 'acknowledge_packet', the new 'try_ack_packet' triggers no signal) Issue #4388 --- repos/os/src/server/vfs/main.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/repos/os/src/server/vfs/main.cc b/repos/os/src/server/vfs/main.cc index b780b1fdd7..4823ffdde5 100644 --- a/repos/os/src/server/vfs/main.cc +++ b/repos/os/src/server/vfs/main.cc @@ -193,7 +193,7 @@ class Vfs_server::Session_component : private Session_resources, { drop_packet_from_submit_queue(); packet.succeeded(false); - _stream.acknowledge_packet(packet); + _stream.try_ack_packet(packet); overall_progress = true; progress_in_iteration = true; @@ -335,6 +335,9 @@ class Vfs_server::Session_component : private Session_resources, overall_progress |= progress_in_iteration; } + + _stream.wakeup(); + return overall_progress ? Process_packets_result::PROGRESS : Process_packets_result::NONE; }