From: Daniel Hokka Zakrisson Date: Sat, 24 Oct 2009 21:38:07 +0000 (+0000) Subject: Optimize the 0.0.0.0 case, and get it working on 2.3 kernels. X-Git-Tag: util-vserver-pl-0.3-19~5 X-Git-Url: http://git.onelab.eu/?p=util-vserver-pl.git;a=commitdiff_plain;h=ecf0a3d24dc06f44a39a385af43fd804b2e45efa Optimize the 0.0.0.0 case, and get it working on 2.3 kernels. --- diff --git a/python/vserver.py b/python/vserver.py index 8aa410e..081fd8a 100644 --- a/python/vserver.py +++ b/python/vserver.py @@ -129,6 +129,26 @@ class VServerConfig: os.path.walk(self.dir, add_to_cache, self.cache) +def adjust_lim(goal, curr): + gh = goal[0] + gs = goal[1] + gm = goal[2] + soft = curr[0] + hard = curr[1] + if gm != VC_LIM_KEEP: + if gm > soft: + soft = gm + if gm > hard: + hard = gm + if gs != VC_LIM_KEEP: + if gs > soft: + soft = gs + if gh != VC_LIM_KEEP: + if gh > hard: + hard = gh + return (soft, hard) + + class VServer: INITSCRIPTS = [('/etc/rc.vinit', 'start'), @@ -181,6 +201,9 @@ class VServer: resource_type = RLIMITS[type] try: vserverimpl.setrlimit(self.ctx, resource_type, hard, soft, min) + lim = resource.getrlimit(resource_type) + lim = adjust_lim((hard, soft, min), lim) + resource.setrlimit(resource_type, lim) except OSError, e: self.log("Error: setrlimit(%d, %s, %d, %d, %d): %s" % (self.ctx, type.lower(), hard, soft, min))