Date: Thu, 14 Jan 2010 18:14:37 +0100 From: Miroslav Lachman <000.fbsd@quip.cz> To: Alexander Leidinger <Alexander@Leidinger.net> Cc: jail@freebsd.org, remko@freebsd.org Subject: Re: starting jails in the background & dependencies Message-ID: <4B4F50FD.8090207@quip.cz> In-Reply-To: <20100114134059.1929551uvux5y3wo@webmail.leidinger.net> References: <20091207080353.66241t4vpmnmrilc@webmail.leidinger.net> <20100105112447.00005e71@unknown> <4B43184E.1010106@quip.cz> <20100114134059.1929551uvux5y3wo@webmail.leidinger.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Alexander Leidinger wrote: > Quoting Miroslav Lachman <000.fbsd@quip.cz> (from Tue, 05 Jan 2010 > 11:45:34 +0100): > >> Alexander Leidinger wrote: >>> On Mon, 07 Dec 2009 08:03:53 +0100 Alexander Leidinger >>> <Alexander@Leidinger.net> wrote: >>> >>>> Hi, >>>> >>>> now that jails are started in the background (which is good, to >>> >>> I just realized yesterday that it also stops in parallel (in the >>> background). This is bad. It may be the case that a jail is not fully >>> stopped via the rc scripts when the OS decides to kill the remaining >>> processes during a shutdown. >>> >>> My first reaction is to only allow to start in the background, but >>> everything else needs to be serialized. >>> >>> Any objections or better ideas out there? >> >> Maybe stopping can be done in parallel, but rc script should wait (in >> loop) until all jails are stopped or some configurable timeout (for >> example 60 seconds). > > Feel free to come up with a proof of concept... but the timeout on stop > should be "forever" IMO. If you have a busy software which needs to be > shutdown correctly for data safety or consistency reasons, I do not want > that a reboot or shutdown prevents the correct shutdown. I misunderstand the whole thing from the begining. It's all about wording "background" and "parallel". My first understanding was if I have 4 jails, they are started in parallel (each other) something like: for J in jail1 jail2 jail3 jail4 do jail_start $J & done and similar for stoping them. But now I see that it is just a start jails in serial as usual but rc.d/jail runs in the background, so next rc script will start right after rc.d/jail, not waiting to jails come up. Both approaches have its pros and cons. In the first case (starting and stopping each jail in the background) stopping can be easy as: for J in $jail_list do jail_stop $J & done while [ -n "`jls`" ] do sleep 1 done echo "all jails were stopped" For the second case, where jails are started / stopped as usual but whole rc.d/jail is backgrounded the only solution I got in my mind is the second rc script (for example bgjail_stop) with similar loop as above executed as one of the last rc scripts on system shutdown. (but I know it is ugly solution) I hope somebody will come with better idea :) Miroslav Lachman PS: as my english is not so well, it is sometimes hard to me to understand and sometimes hard to explain things
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B4F50FD.8090207>