Whamcloud - gitweb
LU-7371 osd-ldiskfs: fix wrong read length over isize 20/17020/5
authorLi Xi <lixi@ddn.com>
Mon, 2 Nov 2015 16:39:31 +0000 (00:39 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 11 Nov 2015 15:28:13 +0000 (15:28 +0000)
If the isize is 4095, a read length of 4096 will be
returned because a wrong calculation of EOF. This patch fixes the
problem.

Signed-off-by: Li Xi <lixi@ddn.com>
Change-Id: I73b18641f000a2d96067243c08c26e51d0d53244
Reviewed-on: http://review.whamcloud.com/17020
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Mike Pershin <mike.pershin@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osd-ldiskfs/osd_io.c

index 362ef7f..fb6316a 100644 (file)
@@ -1337,7 +1337,7 @@ static int osd_read_prep(const struct lu_env *env, struct dt_object *dt,
                         * lnb->lnb_rc == 0, so it's easy to detect later. */
                        break;
 
-               if (isize < lnb[i].lnb_file_offset + lnb[i].lnb_len - 1)
+               if (isize < lnb[i].lnb_file_offset + lnb[i].lnb_len)
                        lnb[i].lnb_rc = isize - lnb[i].lnb_file_offset;
                else
                        lnb[i].lnb_rc = lnb[i].lnb_len;