From 119f6792787fc75e3f35b960c25751f78886fe4d Mon Sep 17 00:00:00 2001 From: Johannes Schlatow Date: Mon, 28 Aug 2023 13:44:39 +0200 Subject: [PATCH] fs_report: handle WRITE_ERR_WOULD_BLOCK A WRITE_ERR_WOULD_BLOCK may occur when large reports are written to a file system because this fills up the submit queue of the packet-stream interface. Fixes genodelabs/genode#4988 --- repos/os/src/server/fs_report/main.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/repos/os/src/server/fs_report/main.cc b/repos/os/src/server/fs_report/main.cc index 26d640d4c5..0dc2098c35 100644 --- a/repos/os/src/server/fs_report/main.cc +++ b/repos/os/src/server/fs_report/main.cc @@ -162,7 +162,9 @@ class Fs_report::Session_component : public Genode::Rpc_object Write_result res = handle->fs().write(handle, src, n); - if (res != Write_result::WRITE_OK) { + if (res == Write_result::WRITE_ERR_WOULD_BLOCK) + _io.commit_and_wait(); + else if (res != Write_result::WRITE_OK) { /* do not spam the log */ if (_success) error("failed to write report to '", _path, "'");