[CRIU] [PATCH v2 resent 1/4] ipc/sysctl: c/r fs.mqueue.msg_default fs.mqueue.msgsize_default
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Wed Jul 13 05:58:42 PDT 2016
On 07/13/2016 03:52 PM, Pavel Emelyanov wrote:
> On 07/04/2016 10:47 AM, Pavel Tikhomirov wrote:
>> we already have 3/5 fs.mqueue.xxx sysctls so why not have all:
>>
>> /proc/sys/fs/mqueue/msg_default is a read/write file for
>> setting/getting the default number of messages in a queue value
>> if attr parameter of mq_open(2) is NULL. If it exceed msg_max,
>> the default value is initialized msg_max.
>>
>> /proc/sys/fs/mqueue/msgsize_default is a read/write file for
>> setting/getting the default message size value if attr parameter
>> of mq_open(2) is NULL. If it exceed msgsize_max, the default
>> value is initialized msgsize_max.
>>
>> *We have these sysctls writable in VZ7 CT.
>
> What about upstream kernel? Are these writable for it as well? If yes, how
> has it happened that vzkernel DIDN'T have them as such at some point?
These sysctls also are writable in upstream net-namespace.
Sorry, but, I don't get the last question in VZ6 they are writable too:
[root at docker ~]# vzctl exec 131 "cat
/proc/sys/net/ipv4/icmp_echo_ignore_all"0
[root at docker ~]# vzctl exec 131 "echo 1 >
/proc/sys/net/ipv4/icmp_echo_ignore_all"
[root at docker ~]# vzctl exec 131 "cat
/proc/sys/net/ipv4/icmp_echo_ignore_all"1
>
>> https://jira.sw.ru/browse/PSBM-48397
>>
>> v2: remove check if kernel has sysctls as we do not support such an
>> old kernel(v3.5)
>>
>> Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
>> ---
>> criu/ipc_ns.c | 7 ++++++-
>> images/ipc-var.proto | 2 ++
>> 2 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/criu/ipc_ns.c b/criu/ipc_ns.c
>> index 19dfb72..02fb9a0 100644
>> --- a/criu/ipc_ns.c
>> +++ b/criu/ipc_ns.c
>> @@ -309,6 +309,8 @@ static int ipc_sysctl_req(IpcVarEntry *e, int op)
>> { "fs/mqueue/queues_max", &e->mq_queues_max, CTL_U32 },
>> { "fs/mqueue/msg_max", &e->mq_msg_max, CTL_U32 },
>> { "fs/mqueue/msgsize_max", &e->mq_msgsize_max, CTL_U32 },
>> + { "fs/mqueue/msg_default", &e->mq_msg_default, CTL_U32 },
>> + { "fs/mqueue/msgsize_default", &e->mq_msgsize_default, CTL_U32 },
>> };
>>
>> int ret;
>> @@ -322,7 +324,8 @@ static int ipc_sysctl_req(IpcVarEntry *e, int op)
>> return 0;
>> }
>>
>> - return sysctl_op(req_mq, ARRAY_SIZE(req_mq), op, CLONE_NEWIPC);
>> + return sysctl_op(req_mq, ARRAY_SIZE(req_mq) - (e->has_mq_msg_default ? 0 : 2),
>> + op, CLONE_NEWIPC);
>> }
>>
>> /*
>> @@ -416,6 +419,8 @@ static int dump_ipc_var(struct cr_img *img)
>> var.sem_ctls = xmalloc(pb_repeated_size(&var, sem_ctls));
>> if (!var.sem_ctls)
>> goto err;
>> + var.has_mq_msg_default = true;
>> + var.has_mq_msgsize_default = true;
>>
>> ret = ipc_sysctl_req(&var, CTL_READ);
>> if (ret < 0) {
>> diff --git a/images/ipc-var.proto b/images/ipc-var.proto
>> index 4acda69..153b167 100644
>> --- a/images/ipc-var.proto
>> +++ b/images/ipc-var.proto
>> @@ -11,4 +11,6 @@ message ipc_var_entry {
>> required uint32 mq_queues_max = 10;
>> required uint32 mq_msg_max = 11;
>> required uint32 mq_msgsize_max = 12;
>> + optional uint32 mq_msg_default = 13;
>> + optional uint32 mq_msgsize_default = 14;
>> }
>>
>
--
Best regards, Tikhomirov Pavel
Software Developer, Virtuozzo.
More information about the CRIU
mailing list