ssize_t nfs_file_direct_read (struct kiocb * iocb, char __user * buf, size_t count, loff_t pos);
byte offset in file where reading starts
We use this function for direct reads instead of calling generic_file_aio_read in order to avoid gfar's check to see if the request starts before the end of the file. For that check to work, we must generate a GETATTR before each direct read, and even then there is a window between the GETATTR and the subsequent READ where the file size could change. So our preference is simply to do all reads the application wants, and the server will take care of managing the end of file boundary.
This function also eliminates unnecessarily updating the file's atime locally, as the NFS server sets the file's atime, and this client must read the updated atime from the server back into its cache.