lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 04 Nov 2009 10:23:16 -0500
From:	Jeff Moyer <jmoyer@...hat.com>
To:	Vivek Goyal <vgoyal@...hat.com>
Cc:	linux-kernel@...r.kernel.org, jens.axboe@...cle.com,
	nauman@...gle.com, dpshah@...gle.com, lizf@...fujitsu.com,
	ryov@...inux.co.jp, fernando@....ntt.co.jp, s-uchida@...jp.nec.com,
	taka@...inux.co.jp, guijianfeng@...fujitsu.com,
	balbir@...ux.vnet.ibm.com, righi.andrea@...il.com,
	m-ikeda@...jp.nec.com, akpm@...ux-foundation.org, riel@...hat.com,
	kamezawa.hiroyu@...fujitsu.com
Subject: Re: [PATCH 06/20] blkio: Introduce cgroup interface

Vivek Goyal <vgoyal@...hat.com> writes:

> +void blkiocg_add_blkio_group(struct blkio_cgroup *blkcg,
> +				struct blkio_group *blkg, void *key)
> +{
> +	unsigned long flags;
> +
> +	spin_lock_irqsave(&blkcg->lock, flags);
> +	rcu_assign_pointer(blkg->key, key);
> +	hlist_add_head_rcu(&blkg->blkcg_node, &blkcg->blkg_list);
> +	spin_unlock_irqrestore(&blkcg->lock, flags);
> +}

I took a look at the rcu stuff, and it seems to be in order.

> +/*
> + * We cannot support shared io contexts, as we have no mean to support
> + * two tasks with the same ioc in two different groups without major rework
> + * of the main cic data structures.  For now we allow a task to change
> + * its cgroup only if it's the only owner of its ioc.
> + */

Interesting.  So is there no way at all to set the cgroup for a set of
processes that are cloned using CLONE_IO?

> +static int blkiocg_can_attach(struct cgroup_subsys *subsys,
> +				struct cgroup *cgroup, struct task_struct *tsk,
> +				bool threadgroup)
> +{
> +	struct io_context *ioc;
> +	int ret = 0;
> +
> +	/* task_lock() is needed to avoid races with exit_io_context() */
> +	task_lock(tsk);
> +	ioc = tsk->io_context;
> +	if (ioc && atomic_read(&ioc->nr_tasks) > 1)
> +		ret = -EINVAL;
> +	task_unlock(tsk);
> +
> +	return ret;
> +}

This function's name implies that it returns a boolean.

Cheers,
Jeff
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ