On Tue, Jan 31, 2012 at 09:11:48AM +0800, Mi Jinlong wrote: > > > J. Bruce Fields 写道: > > From: "J. Bruce Fields" <bfields@xxxxxxxxxx> > > > > Move calculation of the default into a helper function. > > > > Get rid of an unused variable "err" while we're there. > > > > Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx> > > --- > > fs/nfsd/nfssvc.c | 44 ++++++++++++++++++++++++-------------------- > > 1 files changed, 24 insertions(+), 20 deletions(-) > > > > diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c > > index eda7d7e..2ad5ffe 100644 > > --- a/fs/nfsd/nfssvc.c > > +++ b/fs/nfsd/nfssvc.c > > @@ -307,33 +307,37 @@ static void set_max_drc(void) > > dprintk("%s nfsd_drc_max_mem %u ¥n", __func__, nfsd_drc_max_mem); > > } > > > > -int nfsd_create_serv(void) > > +static int nfsd_get_default_max_blksize(void) > > { > > - int err = 0; > > + struct sysinfo i; > > + unsigned long target; > > + unsigned long bytes; > > + > > + si_meminfo(&i); > > + target = i.totalram << PAGE_SHIFT; > > + /* > > + * Aim for 1/4096 of memory per thread This gives 1MB on 4Gig > > + * machines, but only uses 32K on 128M machines. Bottom out at > > + * 8K on 32M and smaller. Of course, this is only a default. > > + */ > > + target <<= 12; > > Should use target = i.totalram << (PAGE_SHIFT - 12); > > target = i.totalram << PAGE_SHIFT; and > target <<= 12; > means target = i.totalram << (PAGE_SHIFT + 12); Yes, thanks for catching that. Also, splitting up the calculation as I did above risks overflow at the first step. I'll fix that.... --b. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html