Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3476f114 authored by Chris Metcalf's avatar Chris Metcalf Committed by Trond Myklebust
Browse files

nfs: fix a minor do_div portability issue



This change modifies filelayout_get_dense_offset() to use the functions
in math64.h and thus avoid a 32-bit platform compile error trying to
use do_div() on an s64 type.

Signed-off-by: default avatarChris Metcalf <cmetcalf@tilera.com>
Reviewed-by: default avatarBoaz Harrosh <bharrosh@panasas.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 0b1c8fc4
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -49,13 +49,14 @@ filelayout_get_dense_offset(struct nfs4_filelayout_segment *flseg,
			    loff_t offset)
			    loff_t offset)
{
{
	u32 stripe_width = flseg->stripe_unit * flseg->dsaddr->stripe_count;
	u32 stripe_width = flseg->stripe_unit * flseg->dsaddr->stripe_count;
	u64 tmp;
	u64 stripe_no;
	u32 rem;


	offset -= flseg->pattern_offset;
	offset -= flseg->pattern_offset;
	tmp = offset;
	stripe_no = div_u64(offset, stripe_width);
	do_div(tmp, 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
/* This function is used by the layout driver to calculate the