On 10/11/22 01:40, Dave Chinner wrote: [...]
I note that there are changes to the the io_uring IO path and write IO end accounting in the io_uring stack that was merged, and there was no doubt about the success/failure of the reproducer at each step. Hence I think the bisect is good, and the problem is someone in the io-uring changes. Jens, over to you. The reproducer - generic/068 - is 100% reliable here, io_uring is being exercised by fsstress in the background whilst the filesystem is being frozen and thawed repeatedly. Some path in the io-uring code has an unbalanced sb_start_write()/sb_end_write() pair by the look of it....
A quick guess, it's probably b000145e99078 ("io_uring/rw: defer fsnotify calls to task context") From a quick look, it removes kiocb_end_write() -> sb_end_write() from kiocb_done(), which is a kind of buffered rw completion path. -- Pavel Begunkov