svn commit: r286223 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs

Slawa Olhovchenkov slw at zxy.spb.ru
Mon Aug 3 11:32:19 UTC 2015


On Mon, Aug 03, 2015 at 02:19:42PM +0300, Konstantin Belousov wrote:

> > The whole thing has missing the point.
> > 
> > Changing the default for the entire kernel just because the zfs compat 
> > wrappers can't be bothered requesting a suitable value is.. unfortunate.. 
> > particularly when it is in freebsd-provided code, not upstream zfs code.
> > 
> > Fix the kproc_kthread_add() calls in do_thread_create() and zvol_geom_run() 
> > instead.  Enforce a lower bound there for zfs threads instead of making the 
> > entire rest of the kernel use more memory.
> > 
> > eg: I'm thinking along these lines:
> > Index: cddl/compat/opensolaris/sys/proc.h
> > ====================================================
> > --- cddl/compat/opensolaris/sys/proc.h	(revision 286224)
> > +++ cddl/compat/opensolaris/sys/proc.h	(working copy)
> > @@ -77,6 +77,8 @@
> >  	ASSERT(state == TS_RUN);
> >  	ASSERT(pp == &p0);
> >  
> > +	if (stksize < 16384)
> > +		stksize = 16384;	/* Enforce lower bound on ZFS threads */
> >  	error = kproc_kthread_add(proc, arg, &zfsproc, &td, RFSTOPPED,
> >  	    stksize / PAGE_SIZE, "zfskern", "solthread %p", proc);
> >  	if (error == 0) {
> > 
> > 
> > Beware, some platforms have large pages (eg: ia64 in -stable has 8k, 16k or 
> > 32k pages, from memory).  Specifying an arbitrary number of pages in code 
> > that's supposed to be portable isn't a good idea.
> 
> This would not help. Issue is the size of the thread0 stack, which
> overflows in this case.
> 
> I looked at the possibility of making default kernel stack size
> configurable by a loader tunable, and the issue is that thread0 gets its
> stack set up too early (locore for i386, hammer_time() for amd64).  I.e.,
> it is possible to make the setting effective for all threads after thread0,
> but not for the one which causes the issue.
> 
> I do not want to modify ABI between loader and kernel to pass the parameter.

Parsing kenv by asm too complex?


More information about the svn-src-head mailing list