Hi All, Any comments on this case? Or should we definitely leave it to be handled in user space code? Thanks, Joseph On 18/1/18 09:12, Joseph Qi wrote: > > > On 18/1/17 22:25, Matthew Wilcox wrote: >> On Wed, Jan 17, 2018 at 10:09:28AM +0000, Steven Whitehouse wrote: >>> Hi, >>> >>> >>> On 17/01/18 09:28, Joseph Qi wrote: >>>> Hi All, >>>> >>>> commit 9fe55eea7e4b ("Fix race when checking i_size on direct i/o read") >>>> has removed the pos check due to the race case. >>>> >>>> Now if I want to do direct read on a file which size is not sector >>>> alignment, it will return EINVAL in the last round. That means I have to >>>> handle the case by checking file size in user space, which I think is a >>>> bit inconvenient. >>> What do you mean by "not sector alignment"? Are you intending to read files >>> with any arbitrary size, or those with 512 byte alignment on a filesystem >>> with some larger block size, or something else? >> I think he's saying that the file he's trying to read has a length which >> is not a multiple of 512. > Yes, suppose I am trying to read a file which size is 4000 bytes, and > the allocated buffer is 4096 bytes. > When running my test program, it returns 4000 for the first round and > -22 for the second. > While running my test program on 3.10, it returns 4000 and then 0, > which is my expected behavior. > > Sorry for the brought misunderstanding. >