Skip to content

rsyzee/ringfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I/O uring File Transfer

An experimental asynchronous file server and client built on io_uring, serving a target directory over the network with efficient file listing and retrieval via completion-based I/O.

Project Goals

My goal is to learn and experiment with io_uring for asynchronous I/O and networking, build a modern asynchronous architecture based on it, and develop a minimal, high-performance networking system.

Features

Server:

  • Async I/O using io_uring & efficient multi-client handling (Connection pool)
  • Fetch & Download files from server
  • Directory traversal prevention

Usage

Commands : ./rinngfs server -h ./ringfs client -h

Build & Run

Requirements:

  • Linux kernel 5.6+ (for io_uring)
  • GCC or Clangient -g 127.0.0.1:8080 fi
  • liburing

Build:

$ mkdir build
$ cd build
$ cmake ..
$ make -j$(nproc)

Run server:

$ ./ringfs server -p 8080 -d /path/to/serve

Run client:

./ringfs client -l 127.0.0.1:8080
./ringfs client -g 127.0.0.1:8080 file.txt

License

This project is licensed under the GNU General Public License v2.0 (GPL-2.0) or later. You can redistribute and/or modify this software under the terms of the GPL as published by the Free Software Foundation.

For details, see the LICENSE file included with this project.

Author

Nafh4x - 2026

About

Async file transfer using io_uring

Topics

Resources

License

Stars

Watchers

Forks

Contributors