00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <stdint.h>
00019 #include <errno.h>
00020
00021 #include "linux/vserver/switch.h"
00022 #include "linux/vserver/dlimit_cmd.h"
00023
00024 #include "vserver.h"
00025
00026 int dx_limit_add(xid_t xid, dx_limit_t *data)
00027 {
00028 struct vcmd_ctx_dlimit_base_v0 kdata;
00029
00030 if (!data)
00031 return errno = EINVAL, -1;
00032
00033 kdata.name = data->filename;
00034 kdata.flags = data->flags;
00035
00036 return vserver(VCMD_add_dlimit, xid, &kdata);
00037 }
00038
00039 int dx_limit_remove(xid_t xid, dx_limit_t *data)
00040 {
00041 struct vcmd_ctx_dlimit_base_v0 kdata;
00042
00043 if (!data)
00044 return errno = EINVAL, -1;
00045
00046 kdata.name = data->filename;
00047
00048 return vserver(VCMD_rem_dlimit, xid, &kdata);
00049 }
00050
00051 int dx_limit_set(xid_t xid, dx_limit_t *data)
00052 {
00053 struct vcmd_ctx_dlimit_v0 kdata;
00054
00055 if (!data)
00056 return errno = EINVAL, -1;
00057
00058 kdata.name = data->filename;
00059 kdata.space_used = data->space_used;
00060 kdata.space_total = data->space_total;
00061 kdata.inodes_used = data->inodes_used;
00062 kdata.inodes_total = data->inodes_total;
00063 kdata.reserved = data->reserved;
00064 kdata.flags = data->flags;
00065
00066 return vserver(VCMD_set_dlimit, xid, &kdata);
00067 }
00068
00069 int dx_limit_get(xid_t xid, dx_limit_t *data)
00070 {
00071 int rc;
00072 struct vcmd_ctx_dlimit_v0 kdata;
00073
00074 if (!data)
00075 return errno = EINVAL, -1;
00076
00077 kdata.name = data->filename;
00078
00079 rc = vserver(VCMD_get_dlimit, xid, &kdata);
00080
00081 if (rc == -1)
00082 return rc;
00083
00084 data->space_used = kdata.space_used;
00085 data->space_total = kdata.space_total;
00086 data->inodes_used = kdata.inodes_used;
00087 data->inodes_total = kdata.inodes_total;
00088 data->reserved = kdata.reserved;
00089 data->flags = kdata.flags;
00090
00091 return rc;
00092 }