Re: [lxc-devel] share_via_fs patch for 2.6.33 ?

2010-05-06 Thread Julian Thomé


Is the share_via_fs patch intended to be integrated into the kernel ?



> Hello Mr Lezcano,
> 
> i have tested your patch with kernel version 2.6.33.2 and it worked
> very well for me.
> 
> For testing purposes i have written a little script using socat and the
> util-linux-ng tool unshare - i send it as attachment of this mail.
> 
> Thank you very much :-).
>   Julian
> 
>> Daniel Lezcano wrote:
>>
>> That helped ?
>>
> 
> 
> 
> --
> Download Intel® Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> 
> 
> 
> ___
> Lxc-devel mailing list
> Lxc-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel




___ 
Der fr�he Vogel f�ngt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: 
http://mail.yahoo.de

--
___
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel


Re: [lxc-devel] share_via_fs patch for 2.6.33 ?

2010-05-06 Thread Daniel Lezcano
Julian Thomé wrote:
> 
> Is the share_via_fs patch intended to be integrated into the kernel ?

Not in this form. From the userspace pov, there is no changes, but in 
the kernel there are some cleanup and robustness to do around 
SCM_CREDENTIALS and co.

I think nobody will be against sharing af_unix across the namespaces and 
the patchset will be likely merged upstream IMO, it is just a question 
of time for writing, testing and sending the patchset out. Something I 
don't have for the moment :(

--
___
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel


Re: [lxc-devel] share_via_fs patch for 2.6.33 ?

2010-05-06 Thread Daniel Lezcano
Julian Thomé wrote:
> 
> Is the share_via_fs patch intended to be integrated into the kernel ?

Not in this form. From the userspace pov, there is no changes, but in 
the kernel there are some cleanup and robustness to do around 
SCM_CREDENTIALS and co.

I think nobody will be against sharing af_unix across the namespaces and 
the patchset will be likely merged upstream IMO, it is just a question 
of time for writing, testing and sending the patchset out. Something I 
don't have for the moment :(

--
___
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel


Re: [lxc-devel] lxc-start leaves temporary pivot dir behind

2010-05-06 Thread Daniel Lezcano
Ferenc Wagner wrote:
> Ferenc Wagner  writes:
> 
>> Daniel Lezcano  writes:
>>
>>> Ferenc Wagner wrote:
>>>
 Daniel Lezcano  writes:

> Ferenc Wagner wrote:
>
>> While playing with lxc-start, I noticed that /tmp is infested by
>> empty lxc-r* directories: [...] Ok, this name comes from lxc-rootfs
>> in conf.c:setup_rootfs.  After setup_rootfs_pivot_root returns, the
>> original /tmp is not available anymore, so rmdir(tmpname) at the
>> bottom of setup_rootfs can't achieve much.  Why is this temporary
>> name needed anyway?  Is pivoting impossible without it?
> That was put in place with chroot, before pivot_root, so the distro's
> scripts can remount their '/' without failing.
>
> Now we have pivot_root, I suppose we can change that to something 
> cleaner...
 Like simply nuking it?  Shall I send a patch?
>>> Sure, if we can kill it, I will be glad to take your patch :)
>> I can't see any reason why lxc-start couldn't do without that temporary
>> recursive bind mount of the original root.  If neither do you, I'll
>> patch it out and see if it still flies.
> 
> For my purposes the patch below works fine.  I only run applications,
> though, not full systems, so wider testing is definitely needed.
> 
> Thanks,
> Feri.
> 
> From 98b24c13f809f18ab8969fb4d84defe6f812b25c Mon Sep 17 00:00:00 2001
> From: Ferenc Wagner 
> Date: Thu, 6 May 2010 14:47:39 +0200
> Subject: [PATCH] no need to use a temporary directory for pivoting
> 
> That was put in place before lxc-start started using pivot_root, so
> the distro scripts can remount / without problems.
> 
> Signed-off-by: Ferenc Wagner 
> ---
>  src/lxc/conf.c |   28 +++-
>  1 files changed, 3 insertions(+), 25 deletions(-)
> 
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index b27a11d..4379a32 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -588,37 +588,15 @@ static int setup_rootfs_pivot_root(const char *rootfs, 
> const char *pivotdir)
> 
>  static int setup_rootfs(const char *rootfs, const char *pivotdir)
>  {
> - char *tmpname;
> - int ret = -1;
> -
>   if (!rootfs)
>   return 0;
> 
> - tmpname = tempnam("/tmp", "lxc-rootfs");
> - if (!tmpname) {
> - SYSERROR("failed to generate temporary name");
> - return -1;
> - }
> -
> - if (mkdir(tmpname, 0700)) {
> - SYSERROR("failed to create temporary directory '%s'", tmpname);
> - return -1;
> - }
> -
> - if (mount(rootfs, tmpname, "none", MS_BIND|MS_REC, NULL)) {
> - SYSERROR("failed to mount '%s'->'%s'", rootfs, tmpname);
> - goto out;
> - }
> -
> - if (setup_rootfs_pivot_root(tmpname, pivotdir)) {
> + if (setup_rootfs_pivot_root(rootfs, pivotdir)) {
>   ERROR("failed to pivot_root to '%s'", rootfs);
> - goto out;
> + return -1;
>   }
> 
> - ret = 0;
> -out:
> - rmdir(tmpname);
> - return ret;
> + return 0;
>  }
> 
>  static int setup_pts(int pts)

Thanks, I will test it with another patch I have in my backlog fixing 
the pivot_root. I Cc'ed the lxc-devel mailing list which is more 
adequate for this kind of discussion.

Thanks again.
   -- Daniel

--
___
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel


Re: [lxc-devel] lxc-unshare woes and signal forwarding in lxc-start

2010-05-06 Thread Daniel Lezcano
Ferenc Wagner wrote:
> Daniel Lezcano  writes:
>
>   
>> Ferenc Wagner wrote:
>>
>> 
>>> Daniel Lezcano  writes:
>>>   
>>>   
 Ferenc Wagner wrote:
 
 
> I'd like to use lxc-start as a wrapper, invisible to the parent and
> the (jailed) child.  Of course I could hack around this by not
> exec-ing lxc-start but keeping the shell around, trap all signals and
> lxc-killing them forward.  But it's kind of ugly in my opinion.
>   
   
 Ok, got it. I think that makes sense to forward the signals,
 especially for job management.  What signals do you want to forward?
 
>>> Basically all of them.  I couldn't find a definitive list of signals
>>> used for job control in SGE, but the following is probably a good
>>> approximation: SIGTTOU, SIGTTIN, SIGUSR1, SIGUSR2, SIGCONT, SIGWINCH and
>>> SIGTSTP.  
>>>   
>> Yes, that could be a good starting point. I was wondering about
>> SIGSTOP being sent to lxc-start which is not forwardable of course, is
>> it a problem ?
>> 
>
> I suppose not, SIGSTOP and SIGKILL are impossible to use in application-
> specific ways.  On the other hand, SIGXCPU and SIGXFSZ should probably
> be forwarded, too.  Naturally, this business can't be perfected, but a
> "good enough" solution could still be valuable.
>   
Agree.

>>> Looking at the source, the SIGCHLD mechanism could be
>>> mimicked, but LXC_TTY_ADD_HANDLER may get in the way.
>>>   
>> We should remove LXC_TTY_ADD_HANDLER and do everything in the signal
>> handler of SIGCHLD by extending the handler. I have a pending fix
>> changing a bit the signal handler function.
>> 
>
> Could you please send along your pending fix?  I'd like to experiment
> with signal forwarding, but without stomping on that.
>   

Sure, no problem.

> I noticed something strange:
>
> # lxc-start -n jail -s lxc.mount.entry="/ /tmp/jail none bind 0 0" -s 
> lxc.rootfs=/tmp/jail -s lxc.pivotdir=/mnt /bin/sleep 1000
> (in another terminal)
> # lxc-ps --lxc
> CONTAINERPID TTY  TIME CMD
> jail4173 pts/100:00:00 sleep
> # kill 4173
> (this does not kill the sleep!)
> # strace -p 4173
> Process 4173 attached - interrupt to quit
> restart_syscall(<... resuming interrupted call ...> = ? ERESTART_RESTARTBLOCK 
> (To be restarted)
> --- SIGTERM (Terminated) @ 0 (0) ---
> Process 4173 detached
> # lxc-ps --lxc
> CONTAINERPID TTY  TIME CMD
> jail4173 pts/100:00:00 sleep
> # fgrep -i sig /proc/4173/status 
> SigQ: 1/16382
> SigPnd:   
> SigBlk:   
> SigIgn:   
> SigCgt:   
> # kill -9 4173
>
> That is, the jailed sleep process could be killed by SIGKILL only, even
> though (according to strace) SIGTERM was delivered and it isn't handled
> specially.  Why does this happen?
>   

I sent a separate email for this problem in order to avoid confusion 
with the signal forwarding discussion.

>>> I'm also worried about signals sent to the whole process group: they
>>> may be impossible to distinguish from the targeted signals and thus
>>> can't propagate correctly.
>>>   
>>   
>> Good point. Maybe we can setpgrp the first process of the container?
>> 
>
> We've got three options:
>   A) do nothing, as now
>   B) forward to our child
>   C) forward to our child's process group
>
> The signal could arrive because it was sent to
>   1) the PID of lxc-start
>   2) the process group of lxc-start
>
> If we don't put the first process of the container into a new process
> group (as now), this is what happens:
>
> AB C
> 1   swallowedOKothers also killed
> 2  OK   child gets extraeverybody gets extra
>
> If we put the first process of the container into a new process group:
>
> AB C
> 1   swallowedOKothers also killed
> 2   swallowed   only the child killed  OK
>
> Neither is a clear winner, although the latter is somewhat more
> symmetrical.  I'm not sure about wanting all this configurable...
>   
hmm ... Maybe Greg, (it's an expert with signals and processes), has an 
idea on how to deal with that.

  -- Daniel

--
___
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel