A computer-implemented method for remote direct memory access, RDMA, by a distributed storage node, the method comprising: receiving a request for an input/output, I/O, process associated with data, wherein the I/O process comprises a READ or WRITE operation; in response to the request, allocating using an operating system driver of the distributed storage node, a memory segment shared between the operating system and a user process running on the distributed storage node, wherein: the user process includes an I/O stack for processing the request; the shared memory segment includes a context memory portion storing context information associated with the I/O stack, a header memory portion storing header information for the I/O process, and a data memory portion for storing the data; and the shared memory segment is registered for RDMA access with a target storage node comprising a target RDMA memory; the target RDMA memory includes a header portion and a data portion; performing an RDMA transfer between the shared memory segment of the distributed storage node and the target storage node to complete the I/O process, wherein during a WRITE operation header information associated with the WRITE operation and stored in the header memory portion of the shared memory segment as well as data stored in the data memory portion of the shared memory segment is transferred to the header portion and the data portion respectively of the target RDMA memory; and wherein during a READ operation header information associated with the READ operation and stored in the header memory portion of the shared memory segment is transferred to the header portion of the target RDMA memory and data stored in the data portion of the target RDMA memory is transferred to the data memory portion of the shared memory segment; and deallocating the shared memory segment in response to receiving a status indicator of completion of the RDMA transfer. receiving a request for an input/output, I/O, process associated with data, wherein the I/O process comprises a READ or WRITE operation; in response to the request, allocating using an operating system driver of the distributed storage node, a memory segment shared between the operating system and a user process running on the distributed storage node, wherein: the user process includes an I/O stack for processing the request; the shared memory segment includes a context memory portion storing context information associated with the I/O stack, a header memory portion storing header information for the I/O process, and a data memory portion for storing the data; and the shared memory segment is registered for RDMA access with a target storage node comprising a target RDMA memory; the target RDMA memory includes a header portion and a data portion; the user process includes an I/O stack for processing the request; the shared memory segment includes a context memory portion storing context information associated with the I/O stack, a header memory portion storing header information for the I/O process, and a data memory portion for storing the data; and the shared memory segment is registered for RDMA access with a target storage node comprising a target RDMA memory; the target RDMA memory includes a header portion and a data portion; performing an RDMA transfer between the shared memory segment of the distributed storage node and the target storage node to complete the I/O process, wherein during a WRITE operation header information associated with the WRITE operation and stored in the header memory portion of the shared memory segment as well as data stored in the data memory portion of the shared memory segment is transferred to the header portion and the data portion respectively of the target RDMA memory; and wherein during a READ operation header information associated with the READ operation and stored in the header memory portion of the shared memory segment is transferred to the header portion of the target RDMA memory and data stored in the data portion of the target RDMA memory is transferred to the data memory portion of the shared memory segment; and deallocating the shared memory segment in response to receiving a status indicator of completion of the RDMA transfer.