Just had a quick look to see the general flow.
Only looked at the read path, which is roughly:
* filesystem receives read
* blocks on a semaphore (https://github.com/yarrick/pingfs/blob/master/chunk.c#L141)
* network thread wakes up semaphore when ICMP reply containing data is received
* filesystem thread copies data into new buffer to return from syscall
* filesystem relinquishes chunk back to network thread, which wakes up, sends it back to be echoed on the network via ICMP, and frees the in-memory buffer (https://github.com/yarrick/pingfs/blob/master/chunk.c#L107)
How silly :)