staging/lustre/lov: calculate file offset correctly
authorJinshan Xiong <jinshan.xiong@intel.com>
Mon, 6 Jun 2016 03:28:50 +0000 (23:28 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Jun 2016 05:39:41 +0000 (22:39 -0700)
In lov_stripe_pgoff(), it calls lov_stripe_size() to calculate the
file size by ost_size, which will be wrong if the stripe_index
happens to be stripe aligned.

Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-on: http://review.whamcloud.com/14462
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6482
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/lov/lov_offset.c

index 9302f06c34ef57154039e651678cf057f2aa4a95..7636bfa52380d5150f42776b858d08b3d850ba16 100644 (file)
@@ -74,7 +74,7 @@ pgoff_t lov_stripe_pgoff(struct lov_stripe_md *lsm, pgoff_t stripe_index,
 {
        loff_t offset;
 
-       offset = lov_stripe_size(lsm, stripe_index << PAGE_SHIFT, stripe);
+       offset = lov_stripe_size(lsm, (stripe_index << PAGE_SHIFT) + 1, stripe);
        return offset >> PAGE_SHIFT;
 }