From: Marc Fiuczynski Date: Mon, 11 Jul 2005 18:40:11 +0000 (+0000) Subject: Implements set_dlimit and get_dlimit for vserver disk limits. X-Git-Tag: after-util-vserver-0_30_208-revert~165 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=59453e0c34a2f2814832260fc9db9170a86b6c82;p=util-vserver.git Implements set_dlimit and get_dlimit for vserver disk limits. NM should use set to initialize the disk limits, and can use get to export the disk limits of a vserver. --- diff --git a/python/vserverimpl.c b/python/vserverimpl.c index 58b0a61..3e76914 100644 --- a/python/vserverimpl.c +++ b/python/vserverimpl.c @@ -164,9 +164,39 @@ struct vcmd_ctx_dlimit_v0 { #define CDLIM_KEEP (~1ULL) static PyObject * -vserver_dlimit(PyObject *self, PyObject *args) +vserver_get_dlimit(PyObject *self, PyObject *args) { PyObject *res; + char* path; + unsigned xid; + struct vcmd_ctx_dlimit_v0 data; + int r; + + if (!PyArg_ParseTuple(args, "si", &path,&xid)) + return NULL; + + memset(&data, 0, sizeof(data)); + data.name = path; + data.flags = 0; + r = vserver(VCMD_get_dlimit, xid, &data); + if (r>=0) { + res = Py_BuildValue("(i,i,i,i,i)", + data.space_used, + data.space_total, + data.inodes_used, + data.inodes_total, + data.reserved); + } else { + res = PyErr_SetFromErrno(PyExc_OSError); + } + + return res; +} + + +static PyObject * +vserver_set_dlimit(PyObject *self, PyObject *args) +{ char* path; unsigned xid; struct vcmd_ctx_dlimit_base_v0 init; @@ -186,6 +216,7 @@ vserver_dlimit(PyObject *self, PyObject *args) data.name = path; data.flags = 0; + memset(&init, 0, sizeof(init)); init.name = path; init.flags = 0; @@ -195,23 +226,7 @@ vserver_dlimit(PyObject *self, PyObject *args) if (r<0){} r = vserver(VCMD_set_dlimit, xid, &data); if (r<0){} - - memset(&data, 0, sizeof(data)); - data.name = path; - data.flags = 0; - r = vserver(VCMD_get_dlimit, xid, &data); - if (r>=0) { - res = Py_BuildValue("(i,i,i,i,i)", - data.space_used, - data.space_total, - data.inodes_used, - data.inodes_total, - data.reserved); - } else { - res = PyErr_SetFromErrno(PyExc_OSError); - } - - return res; + return Py_None; } static PyMethodDef methods[] = { @@ -219,8 +234,10 @@ static PyMethodDef methods[] = { "Change to the given vserver context" }, { "setsched", vserver_setsched, METH_VARARGS, "Change vserver scheduling attributes for given vserver context" }, - { "dlimit", vserver_dlimit, METH_VARARGS, + { "setdlimit", vserver_set_dlimit, METH_VARARGS, "Set disk limits for given vserver context" }, + { "getdlimit", vserver_get_dlimit, METH_VARARGS, + "Get disk limits for given vserver context" }, { "tasklimit", vserver_tasklimit, METH_VARARGS, "Set task limits for given vserver context" }, { "memlimit", vserver_memlimit, METH_VARARGS,