Hi Jens, On 8/17/2023 3:27 AM, Jens Axboe wrote: >> static const struct file_operations shmem_file_operations = { >> .mmap = shmem_mmap, >> - .open = generic_file_open, >> + .open = shmem_file_open, >> .get_unmapped_area = shmem_get_unmapped_area, >> #ifdef CONFIG_TMPFS >> .llseek = shmem_file_llseek, >> >> The performance change when running stress-ng.io_uring with testing file >> in tmpfs is gone. >> >> This is just the information FYI. I may miss something obviously here. Thanks. > This actually highlighted a problem with the old nowait logic, in that > it assumed !bdev would mean that nowait was fine. Looking at shmem, we > definitely need IOCB_NOWAIT handling in there to make that safe. So the > old code was buggy, and conversely, we can't also just add the > FMODE_NOWAIT without first making those improvements to shmem first. Thanks a lot for the explanation. > > Basically you'd want to ensure that the read_iter and write_iter paths > honor IOCB_NOWAIT. Once that's done, then FMODE_NOWAIT can indeed be set > in the open helper. > > I might take a stab at this, but I'm out sick right now so don't think > it'd be cohesive if I did it right now. Take care. Regards Yin, Fengwei