[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