Added set_dlimit and get_dlimit to be used by NM to enforce disk limits.
authorMarc Fiuczynski <mef@cs.princeton.edu>
Mon, 11 Jul 2005 19:08:45 +0000 (19:08 +0000)
committerMarc Fiuczynski <mef@cs.princeton.edu>
Mon, 11 Jul 2005 19:08:45 +0000 (19:08 +0000)
python/vserver.py

index 64cc681..2d72bd0 100644 (file)
@@ -12,7 +12,7 @@ import mountimpl
 import linuxcaps
 import passfdimpl
 import utmp
-import vserverimpl
+import vserverimpl, vduimpl
 
 from util_vserver_vars import *
 
@@ -81,6 +81,24 @@ class VServer:
 
         return os.chroot("%s/%s" % (VROOTDIR, self.name))
 
+    def set_dlimit(self, blocktotal):
+        path = "%s/%s" % (VROOTDIR, self.name)
+        inodes, blockcount, size = vduimpl.vdu(path)
+        vserverimpl.setdlimit(path, self.ctx, blockcount>>1, blocktotal, inodes, -1, 2)
+
+    def get_dlimit(self):
+        path = "%s/%s" % (VROOTDIR, self.name)
+        try:
+            blocksused, blocktotal, inodesused, inodestotal, reserved = \
+                        vserverimpl.getdlimit(path,self.ctx)
+        except OSError, ex:
+            if ex.errno == 3:
+                # get here if no vserver disk limit has been set for xid
+                # set blockused to -1 to indicate no limit
+                blocktotal = -1
+
+        return blocktotal
+
     def open(self, filename, mode = "r", bufsize = -1):
 
         (sendsock, recvsock) = passfdimpl.socketpair()