stripe size for single striped file is not reliable, it shouldn't
be used to split I/O.
Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com>
Change-Id: I47c31d59b46b07d4a6760b8985e1c19da4765a5c
Reviewed-on: https://review.whamcloud.com/28451
Tested-by: Jenkins
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
struct cl_io_range *range = &io->u.ci_rw.rw_range;
loff_t start = range->cir_pos;
loff_t next;
struct cl_io_range *range = &io->u.ci_rw.rw_range;
loff_t start = range->cir_pos;
loff_t next;
int index;
LASSERT(io->ci_type == CIT_READ || io->ci_type == CIT_WRITE);
int index;
LASSERT(io->ci_type == CIT_READ || io->ci_type == CIT_WRITE);
lse = lov_lse(lio->lis_object, index);
lse = lov_lse(lio->lis_object, index);
- ssize = lse->lsme_stripe_size;
- lov_do_div64(start, ssize);
- next = (start + 1) * ssize;
- if (next <= start * ssize)
- next = ~0ull;
+ next = MAX_LFS_FILESIZE;
+ if (lse->lsme_stripe_count > 1) {
+ unsigned long ssize = lse->lsme_stripe_size;
+
+ lov_do_div64(start, ssize);
+ next = (start + 1) * ssize;
+ if (next <= start * ssize)
+ next = MAX_LFS_FILESIZE;
+ }
LASSERTF(range->cir_pos >= lse->lsme_extent.e_start,
"pos %lld, [%lld, %lld)\n", range->cir_pos,
LASSERTF(range->cir_pos >= lse->lsme_extent.e_start,
"pos %lld, [%lld, %lld)\n", range->cir_pos,