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

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Mon Jul 4 01:08:53 PDT 2016


resent those patches with two more

On 06/28/2016 06:14 PM, 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.
> 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