On Wed, Jul 26, 2023 at 06:25:56PM +0800, Hao Xu wrote: > From: Hao Xu <howeyxu@xxxxxxxxxxx> > > This series adds lseek for io_uring, the motivation to import this > syscall is in previous io_uring getdents patchset, we lack a way to > rewind the file cursor when it goes to the end of file. Another reason > is lseek is a common syscall, it's good for coding consistency when > users use io_uring as their main loop. While I understand this it is a time consuming review to make sure things work correctly. So before we get this thing going we better get getdents correct first. > > Patch 1 is code clean for iomap > Patch 2 adds IOMAP_NOWAIT logic for iomap lseek > Patch 3 adds a nowait parameter to for IOMAP_NOWAIT control > Patch 4 adds llseek_nowait() for file_operations so that specific > filesystem can implement it for nowait lseek > Patch 5 adds llseek_nowait() implementation for xfs > Patch 6 adds a new vfs wrapper for io_uring use > Patch 7 is the main io_uring lseek implementation > > Note, this series depends on the previous io_uring getdents series. > > This is marked RFC since there is (at least) an issue to be discussed: > The work in this series is mainly to reslove a problem that the current > llseek() in struct file_operations doesn't have a place to deliver > nowait info, and adding an argument to it results in update for llseek > implementation of all filesystems (35 functions), so here I introduce > a new llseek_nowait() as a workaround. My intuition would be to update all filesystems. Adding new inode operations always starts as a temporary thing and then we live with two different methods for the next years or possibly forever. But it'd be good to hear what others think.