vfs fifo pipe and file system session write

Stefan Thöni stefan.thoeni at gapfruit.com
Tue Dec 8 12:38:37 CET 2020


Hello Genodians

We are still trying to introduce a named pipe for communication between
libc components and pure genode components. Our vfs fifo pipe now works
with multiple threads in the same process, but only when it's hosted in
the vfs of that same component. As soon as we host it in separate vfs
component it stalls randomly.

Our analysis shows that the reason for this lies in the implementation
of the file system session interface, where the write operation doesn't
report back the number of bytes written but the receiving vfs component
instead retries the write operation. This leads to a permanent blocking
of the vfs component as no read operation can alleviate the full buffer
of the fifo pipe.

We think the only proper fix would be a change in the file system
session to allow the write operation to report back the number of bytes
written. Is there a specific reason to keep the write 'fire-and-forget',
other than simplicity?

Best regards

Stefan

-- 
Freundliche Grüsse

Stefan Thöni
Chairman of the Board
Senior Security Architect
+41 79 610 64 95

gapfruit AG
Baarerstrasse 135
6300 Zug
https://gapfruit.com



More information about the users mailing list