On Mon, 28 Aug 2023 at 16:48, Bernd Schubert <bernd.schubert@xxxxxxxxxxx> wrote: > > On 8/28/23 13:59, Miklos Szeredi wrote: > > On Thu, 24 Aug 2023 at 17:07, Bernd Schubert <bschubert@xxxxxxx> wrote: > >> - if (!is_sync_kiocb(iocb) && iocb->ki_flags & IOCB_DIRECT) { > >> - res = fuse_direct_IO(iocb, from); > >> - } else { > >> - res = fuse_direct_io(&io, from, &iocb->ki_pos, > >> - FUSE_DIO_WRITE); > >> - fuse_write_update_attr(inode, iocb->ki_pos, res); > > > > While I think this is correct, I'd really like if the code to be > > replaced and the replacement are at least somewhat comparable. > > Sorry, I have a hard to time to understand "I'd really like if the code > to be replaced". What I meant is that generic_file_direct_write() is not an obvious replacement for the above lines of code. The reason is that fuse_direct_IO() is handling the sync and async cases in one function, while the above splits handling it based on IOCB_DIRECT (which is now lost) and is_sync_kiocb(iocb). If it's okay to lose IOCB_DIRECT then what's the explanation for the above condition? It could be historic garbage, but we still need to understand what is exactly happening. Thanks, Miklos