diff options
Diffstat (limited to 'fs/nfs/nfs4filelayout.c')
| -rw-r--r-- | fs/nfs/nfs4filelayout.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c index a62d36b9a99..71ec08617e2 100644 --- a/fs/nfs/nfs4filelayout.c +++ b/fs/nfs/nfs4filelayout.c @@ -49,13 +49,14 @@ filelayout_get_dense_offset(struct nfs4_filelayout_segment *flseg,  			    loff_t offset)  {  	u32 stripe_width = flseg->stripe_unit * flseg->dsaddr->stripe_count; -	u64 tmp; +	u64 stripe_no; +	u32 rem;  	offset -= flseg->pattern_offset; -	tmp = offset; -	do_div(tmp, stripe_width); +	stripe_no = div_u64(offset, stripe_width); +	div_u64_rem(offset, flseg->stripe_unit, &rem); -	return tmp * flseg->stripe_unit + do_div(offset, flseg->stripe_unit); +	return stripe_no * flseg->stripe_unit + rem;  }  /* This function is used by the layout driver to calculate the  | 
