Whamcloud - gitweb
LU-8969 llite: sanity test_56x read failed: Invalid argument 52/24552/2
authorYang Sheng <yang.sheng@intel.com>
Fri, 30 Dec 2016 21:09:31 +0000 (05:09 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 9 Jan 2017 05:55:50 +0000 (05:55 +0000)
In generic_file_read_iter() does not check EOF before invoke
direct_IO callback. So we have to check it by ourselves.

Signed-off-by: Yang Sheng <yang.sheng@intel.com>
Change-Id: Ia30d2a42da81beb6c5217f081c18ce4d93553540
Reviewed-on: https://review.whamcloud.com/24552
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/rw26.c

index d38c79f..80eb9fc 100644 (file)
@@ -357,6 +357,9 @@ ll_direct_IO(
        ssize_t tot_bytes = 0, result = 0;
        size_t size = MAX_DIO_SIZE;
 
+       /* Check EOF by ourselves */
+       if (iov_iter_rw(iter) == READ && file_offset >= i_size_read(inode))
+               return 0;
        /* FIXME: io smaller than PAGE_SIZE is broken on ia64 ??? */
        if ((file_offset & ~PAGE_MASK) || (count & ~PAGE_MASK))
                return -EINVAL;