Monte
Monte
 Maybe the aim is improving performance, but what if no much `writev` in a short-time? Every `writev` will wait for a long time to be submitted to kernel?
After `readv` completed, the data from client is in the `conn->buf`, then echo_server `writev` it back to the client, and re-issue a `readv`. What if the later `readv` gets new...
 Any problem if we give a long-term data address to `sqe` just like above? It is the same as `send_headers()`.

Though we have allocate a large enough buffer(READ_SZ) for reading from client, it is possible that we don't receive a complete http request. Though `handle_client_request() ` checks for "\r\n" and...