[CRIU] [PATCH v2 resent 1/4] ipc/sysctl: c/r fs.mqueue.msg_default fs.mqueue.msgsize_default

Pavel Emelyanov xemul at virtuozzo.com
Wed Jul 13 05:52:34 PDT 2016


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?

> 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;
>  }
> 



More information about the CRIU mailing list