mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Dave Hansen <haveblue@us.ibm.com>
To: Herbert Poetzl <herbert@13thfloor.at>
Cc: linux-kernel@vger.kernel.org, serue@us.ibm.com,
	frankeh@watson.ibm.com, clg@fr.ibm.com,
	Sam Vilain <sam@vilain.net>
Subject: Re: [RFC][PATCH 1/6] prepare sysctls for containers
Date: Mon, 06 Mar 2006 18:00:21 -0800	[thread overview]
Message-ID: <1141696822.9274.54.camel@localhost.localdomain> (raw)
In-Reply-To: <20060307005002.GA15640@MAIL.13thfloor.at>

On Tue, 2006-03-07 at 01:50 +0100, Herbert Poetzl wrote:
> On Mon, Mar 06, 2006 at 03:52:49PM -0800, Dave Hansen wrote:
> > 
> > Right now, sysctls can only deal with global variables.  This
> > patch makes them a _little_ more flexible by allowing there to
> > be an accessor function to get at the variable being changed,
> > instead of it being global.
> > 
> > This allows the sysctls to be backed by variables that are,
> > for instance, dynamically allocated and not available at
> > compile-time.
> > 
> > This also provides a very simple mechanism to take things that
> > are currently global and containerize them.
> 
> hmm, why do you call the sysctl_table_data() over and
> over again? what's the purpose?

Letting me be lazy and code with s/// :)

For the current application, it doesn't really matter.  But, I can
imagine that other users could be a bit more costly.  

> what about sideeffects?

Require that there aren't any. ;)

It might be necessary to have something effectively implementing put and
get, but this certainly doesn't need it yet.

> > Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
> > ---
> > 
> >  work-dave/include/linux/sysctl.h |    8 ++++
> >  work-dave/kernel/sysctl.c        |   65 ++++++++++++++++++++++++++-------------
> >  2 files changed, 52 insertions(+), 21 deletions(-)
> > 
> > diff -puN include/linux/sysctl.h~sysctls-for-containers include/linux/sysctl.h
> > --- work/include/linux/sysctl.h~sysctls-for-containers	2006-03-06 15:41:55.000000000 -0800
> > +++ work-dave/include/linux/sysctl.h	2006-03-06 15:41:55.000000000 -0800
> > @@ -872,6 +872,7 @@ extern void sysctl_init(void);
> >  
> >  typedef struct ctl_table ctl_table;
> >  
> > +typedef void *ctl_data_access (void);
> >  typedef int ctl_handler (ctl_table *table, int __user *name, int nlen,
> >  			 void __user *oldval, size_t __user *oldlenp,
> >  			 void __user *newval, size_t newlen, 
> > @@ -957,6 +958,13 @@ struct ctl_table 
> >  	int ctl_name;			/* Binary ID */
> >  	const char *procname;		/* Text ID for /proc/sys, or zero */
> >  	void *data;
> > +	ctl_data_access *data_access;	/* set this to a function if you
> > +					 * don't have a static place to point
> > +					 * ->data at compile-time.  This
> > +					 * function will be called to dynamically
> > +					 * figure out a ->data pointer.  Do not
> > +					 * set this and ->data at once.
> > +					 */
> >  	int maxlen;
> >  	mode_t mode;
> >  	ctl_table *child;
> > diff -puN kernel/sysctl.c~sysctls-for-containers kernel/sysctl.c
> > --- work/kernel/sysctl.c~sysctls-for-containers	2006-03-06 15:41:55.000000000 -0800
> > +++ work-dave/kernel/sysctl.c	2006-03-06 15:41:55.000000000 -0800
> > @@ -1197,6 +1197,24 @@ repeat:
> >  	return -ENOTDIR;
> >  }
> >  
> 
> I'd expect that to be inline, and to vanish when
> containers are disabled ...

Unless we want non-container code to be able to use it.  I guess we
could restrict it to containers only, though.

> > +void *sysctl_table_data(ctl_table *table)
> > +{
> > +	void *data;
> > +
> > +	if (table->data && table->data_access) {
> > +		printk(KERN_WARNING
> > +			"sysctl: data and accessor function set for: '%s'\n",
> > +			table->procname);
> > +		table->data = NULL;
> 
> why is ->data and ->data_access evil?

As it stands, which one do you use?  What if they aren't consistent?  Do
you use both?  Just one?  Which first?  Easiest to just say that it
isn't allowed.

> wouldn't some get/set helper make more sense?
> i.e. some virtualizer and devirtualizer functions?

I'm not quite sure I know what you mean.  Can you elaborate some more?

-- Dave


  reply	other threads:[~2006-03-07  2:01 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-06 23:52 [RFC][PATCH 0/6] support separate namespaces for sysv Dave Hansen
2006-03-06 23:52 ` [RFC][PATCH 1/6] prepare sysctls for containers Dave Hansen
2006-03-07  0:50   ` Herbert Poetzl
2006-03-07  2:00     ` Dave Hansen [this message]
2006-03-07  2:45       ` Herbert Poetzl
2006-03-19 15:54         ` Eric W. Biederman
2006-03-07  1:01   ` Chris Wright
2006-03-07  2:04     ` Dave Hansen
2006-03-07  2:18       ` Chris Wright
2006-03-07  3:02       ` Sam Vilain
2006-03-07  1:24   ` Al Viro
2006-03-07  1:55     ` Dave Hansen
2006-03-07  1:57       ` Al Viro
2006-03-19 14:50         ` Eric W. Biederman
2006-03-19 15:29   ` Eric W. Biederman
2006-03-06 23:52 ` [RFC][PATCH 2/6] sysvmsg: containerize Dave Hansen
2006-03-07  1:57   ` Chris Wright
2006-03-07  2:08     ` Dave Hansen
2006-03-07  2:34       ` Chris Wright
2006-03-19 15:36         ` Eric W. Biederman
2006-03-20 19:34           ` Chris Wright
2006-03-20 21:29             ` Eric W. Biederman
2006-03-20 21:50               ` Chris Wright
2006-03-06 23:52 ` [RFC][PATCH 3/6] sysvmsg: containerize sysctls Dave Hansen
2006-03-06 23:52 ` [RFC][PATCH 4/6] sysvsem: containerize Dave Hansen
2006-03-07  2:44   ` Chris Wright
2006-03-07  5:08     ` Dave Hansen
2006-03-06 23:52 ` [RFC][PATCH 5/6] sysvshm: containerize Dave Hansen
2006-03-06 23:52 ` [RFC][PATCH 6/6] sysvshm: containerize sysctls Dave Hansen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1141696822.9274.54.camel@localhost.localdomain \
    --to=haveblue@us.ibm.com \
    --cc=clg@fr.ibm.com \
    --cc=frankeh@watson.ibm.com \
    --cc=herbert@13thfloor.at \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sam@vilain.net \
    --cc=serue@us.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome