glusterfs icon indicating copy to clipboard operation
glusterfs copied to clipboard

Implement an I/O framework

Open xhernandez opened this issue 3 years ago • 2 comments

A new framework will be implemented to abstract I/O operations so that we can easily use the existing synchronous I/O or a new infrastructure based on io_uring (or even other future implementations) in a transparent way (once the framework is used).

xhernandez avatar Feb 06 '21 17:02 xhernandez

This is the high level roadmap I'm planning to execute to roll out the I/O framework globally for Gluster. Each step will require detailed analysis of the existing implementation to be able to provide a backward compatible solution where the old and newer APIs can coexist.

  • [ ] Context implementation This will provide en efficient and easy to use way to pass data between asynchronous functions, which are the core component of the I/O framework.

  • [ ] Basic features Some basic low level features will be needed, like a way to mimic mutexes, condition variables and some others inside the I/O framework.

  • [ ] Synctask migration It's not the easiest thing to migrate, but it will make it possible to migrate other things in an incremental way (i.e. the features could be used either using the new I/O framework APIs or the old API in a transparent way, so that we don't need to change all users a given feature in one shot).

    This will replace the thread-pool used for synctasks and integrate them into the I/O framework's thread pool.

  • [ ] Timer migration Timer implementation will be migrated into the I/O framework using io_uring-based timers.

  • [ ] Posix I/O migration All I/O done in the posix xlator will be moved to the I/O framework.

  • [ ] Fuse I/O migration All I/O done in the fuse xlator will be moved to the I/O framework.

  • [ ] Network I/O migration All I/O done by the network layer will be moved to the I/O framework.

  • [ ] Migrate threads Many (ideally all) of the worker threads created by xlators to do some particular job will be migrated to the I/O framework using timers or asynchronous callbacks, whatever best fits their needs.

xhernandez avatar Nov 29 '21 11:11 xhernandez

Thank you for your contributions. Noticed that this issue is not having any activity in last ~6 months! We are marking this issue as stale because it has not had recent activity. It will be closed in 2 weeks if no one responds with a comment here.

stale[bot] avatar Jul 10 '22 06:07 stale[bot]

Thank you for your contributions. Noticed that this issue is not having any activity in last ~6 months! We are marking this issue as stale because it has not had recent activity. It will be closed in 2 weeks if no one responds with a comment here.

stale[bot] avatar Mar 19 '23 22:03 stale[bot]