Tejun Heo
5df3603229
cgroup: treat cgroup_dummy_root as an equivalent hierarchy during rebinding
...
Currently, while rebinding, cgroup_dummy_root serves as the anchor
point. In addition to the target root, rebind_subsystems() takes
@added_mask and @removed_mask. The subsystems specified in the former
are expected to be on the dummy root and then moved to the target
root. The ones in the latter are moved from non-dummy root to dummy.
Now that the dummy root is a fully functional one and we're planning
to use it for the default unified hierarchy, this level of distinction
between dummy and non-dummy roots is quite awkward.
This patch updates rebind_subsystems() to take the target root and one
subsystem mask and move the specified subsystmes to the target root
which may or may not be the dummy root. IOW, unbinding now becomes
moving the subsystems to the dummy root and binding to non-dummy root.
This makes the dummy root mostly equivalent to other hierarchies in
terms of the mechanism of moving subsystems around; however, we still
retain all the semantical restrictions so that this patch doesn't
introduce any visible behavior differences. Another noteworthy detail
is that rebind_subsystems() guarantees that moving a subsystem to the
dummy root never fails so that valid unmounting attempts always
succeed.
This unifies binding and unbinding of subsystems. The invocation
points of ->bind() were inconsistent between the two and now moved
after whole rebinding is complete. This doesn't break the current
users and generally makes more sense.
All rebind_subsystems() users are converted accordingly. Note that
cgroup_remount() now makes two calls to rebind_subsystems() to bind
and then unbind the requested subsystems.
This will allow repurposing of the dummy hierarchy as the default
unified hierarchy and shouldn't make any userland visible behavior
difference.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
2014-03-19 10:23:54 -04:00
..
cpu
sched/preempt: Fix up missed PREEMPT_NEED_RESCHED folding
2014-01-13 17:38:55 +01:00
debug
kgdb/kdb: Fix no KDB config problem
2014-01-25 08:55:09 +01:00
events
cgroup: drop @skip_css from cgroup_taskset_for_each()
2014-02-13 06:58:41 -05:00
gcov
gcov: reuse kbasename helper
2013-11-13 12:09:34 +09:00
irq
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-12-02 10:15:39 -08:00
locking
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-01-20 10:42:08 -08:00
power
arm, pm, vmpressure: add missing slab.h includes
2014-02-03 13:24:01 -05:00
printk
printk: flush conflicting continuation line
2014-01-23 16:36:56 -08:00
rcu
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-01-28 08:38:04 -08:00
sched
cgroup: drop @skip_css from cgroup_taskset_for_each()
2014-02-13 06:58:41 -05:00
time
Merge branch 'timers/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks into timers/urgent
2014-01-25 08:27:26 +01:00
trace
Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block
2014-01-30 11:19:05 -08:00
.gitignore
Ignore generated file kernel/x509_certificate_list
2013-12-10 18:21:34 +00:00
acct.c
async.c
audit.c
audit: fix location of __net_initdata for audit_net_ops
2014-01-17 17:14:32 -05:00
audit.h
audit: Convert int limit uses to u32
2014-01-14 14:54:00 -05:00
audit_tree.c
fsnotify: remove pointless NULL initializers
2014-01-21 16:19:41 -08:00
audit_watch.c
fsnotify: remove pointless NULL initializers
2014-01-21 16:19:41 -08:00
auditfilter.c
audit: log on errors from filter user rules
2014-01-13 22:32:31 -05:00
auditsc.c
audit: fix dangling keywords in audit_log_set_loginuid() output
2014-01-13 22:32:38 -05:00
backtracetest.c
bounds.c
mm: do not allocate page->ptl dynamically, if spinlock_t fits to long
2013-12-20 12:25:45 -08:00
capability.c
audit: Simplify and correct audit_log_capset
2014-01-13 22:26:48 -05:00
cgroup.c
cgroup: treat cgroup_dummy_root as an equivalent hierarchy during rebinding
2014-03-19 10:23:54 -04:00
cgroup_freezer.c
cgroup_freezer: document freezer_fork() subtleties
2014-02-25 10:04:40 -05:00
compat.c
configs.c
context_tracking.c
context_tracking: Wrap static key check into more intuitive function name
2013-12-02 20:43:14 +01:00
cpu.c
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-11-14 16:55:11 +09:00
cpu_pm.c
cpuset.c
cpuset: use rcu_read_lock() to protect task_cs()
2014-03-03 17:28:36 -05:00
crash_dump.c
cred.c
delayacct.c
kernel/delayacct.c: remove redundant checking in __delayacct_add_tsk()
2013-11-13 12:09:12 +09:00
dma.c
elfcore.c
switch elf_core_write_extra_phdrs() to dump_emit()
2013-11-09 00:16:23 -05:00
exec_domain.c
exit.c
introduce for_each_thread() to replace the buggy while_each_thread()
2014-01-21 16:19:46 -08:00
extable.c
kernel/extable: fix address-checks for core_kernel and init areas
2013-11-28 09:49:41 -08:00
fork.c
exec: kill task_struct->did_exec
2014-01-23 16:37:02 -08:00
freezer.c
libata, freezer: avoid block device removal while system is frozen
2013-12-19 13:50:32 -05:00
futex.c
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-01-20 10:42:08 -08:00
futex_compat.c
groups.c
userns: Kill nsown_capable it makes the wrong thing easy
2013-08-30 23:44:11 -07:00
hrtimer.c
sched/deadline: Add SCHED_DEADLINE structures & implementation
2014-01-13 13:41:06 +01:00
hung_task.c
hung_task: Display every hung task warning
2014-01-25 12:13:33 +01:00
irq_work.c
itimer.c
jump_label.c
static_key: WARN on usage before jump_label_init was called
2013-10-19 19:45:35 -04:00
kallsyms.c
kcmp.c
Kconfig.freezer
Kconfig.hz
kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS
2013-11-15 09:32:22 +09:00
Kconfig.locks
Kconfig.preempt
kexec.c
kernel/kexec.c: use vscnprintf() instead of vsnprintf() in vmcoreinfo_append_str()
2014-01-27 21:02:40 -08:00
kmod.c
kernel/kmod.c: check for NULL in call_usermodehelper_exec()
2013-09-30 14:31:02 -07:00
kprobes.c
kprobes: use KSYM_NAME_LEN to size identifier buffers
2013-11-13 12:09:26 +09:00
ksysfs.c
kdump: fix exported size of vmcoreinfo note
2014-01-23 16:37:03 -08:00
kthread.c
kthread: make kthread_create() killable
2013-11-13 12:08:59 +09:00
latencytop.c
Makefile
KEYS: Remove files generated when SYSTEM_TRUSTED_KEYRING=y
2013-12-13 15:59:11 +00:00
module-internal.h
KEYS: Separate the kernel signature checking keyring from module signing
2013-09-25 17:17:01 +01:00
module.c
module: Add missing newline in printk call.
2014-01-21 09:59:16 +10:30
module_signing.c
keys: change asymmetric keys to use common hash definitions
2013-10-25 17:15:18 -04:00
notifier.c
nsproxy.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2013-09-07 14:35:32 -07:00
padata.c
padata: Fix wrong usage of rcu_dereference()
2013-12-05 21:28:42 +08:00
panic.c
panic: Make panic_timeout configurable
2013-11-26 12:12:26 +01:00
params.c
params: improve standard definitions
2013-12-04 14:09:46 +10:30
pid.c
pidns: fix free_pid() to handle the first fork failure
2013-09-30 14:31:03 -07:00
pid_namespace.c
pid_namespace: make freeing struct pid_namespace rcu-delayed
2013-10-24 23:43:29 -04:00
posix-cpu-timers.c
posix-timers: Convert abuses of BUG_ON to WARN_ON
2013-12-09 16:56:29 +01:00
posix-timers.c
profile.c
kernel: delete __cpuinit usage from all core kernel files
2013-07-14 19:36:59 -04:00
ptrace.c
exec/ptrace: fix get_dumpable() incorrect tests
2013-11-13 12:09:33 +09:00
range.c
reboot.c
kexec: migrate to reboot cpu
2013-12-18 19:04:50 -08:00
relay.c
kernel: delete __cpuinit usage from all core kernel files
2013-07-14 19:36:59 -04:00
res_counter.c
memcg: reduce function dereference
2013-09-12 15:38:02 -07:00
resource.c
seccomp.c
signal.c
kernel/signal.c: change do_signal_stop/do_sigaction to use while_each_thread()
2014-01-23 16:37:02 -08:00
smp.c
kernel/smp.c: remove cpumask_ipi
2014-01-30 16:56:54 -08:00
smpboot.c
kernel: delete __cpuinit usage from all core kernel files
2013-07-14 19:36:59 -04:00
smpboot.h
softirq.c
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-01-31 09:02:51 -08:00
stacktrace.c
stop_machine.c
stop_machine: Fix race between stop_two_cpus() and stop_cpus()
2013-11-11 12:43:38 +01:00
sys.c
kernel/sys.c: k_getrusage() can use while_each_thread()
2014-01-23 16:37:02 -08:00
sys_ni.c
sysctl.c
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-01-31 08:59:46 -08:00
sysctl_binary.c
kernel/sysctl_binary.c: use scnprintf() instead of snprintf()
2013-11-13 12:09:33 +09:00
system_certificates.S
KEYS: correct alignment of system_certificate_list content in assembly file
2013-12-10 18:25:28 +00:00
system_keyring.c
KEYS: correct alignment of system_certificate_list content in assembly file
2013-12-10 18:25:28 +00:00
task_work.c
task_work: documentation
2013-09-11 15:58:27 -07:00
taskstats.c
genetlink: only pass array to genl_register_family_with_ops()
2013-11-19 16:39:05 -05:00
test_kprobes.c
time.c
timeconst.bc
timer.c
timer: Convert kmalloc_node(...GFP_ZERO...) to kzalloc_node(...)
2013-11-19 14:59:50 +01:00
tracepoint.c
tsacct.c
uid16.c
userns: Kill nsown_capable it makes the wrong thing easy
2013-08-30 23:44:11 -07:00
up.c
kernel: provide a __smp_call_function_single stub for !CONFIG_SMP
2013-11-15 09:32:22 +09:00
user-return-notifier.c
user.c
KEYS: fix uninitialized persistent_keyring_register_sem
2013-12-13 15:59:11 +00:00
user_namespace.c
KEYS: Add per-user_namespace registers for persistent per-UID kerberos caches
2013-09-24 10:35:19 +01:00
utsname.c
userns: Kill nsown_capable it makes the wrong thing easy
2013-08-30 23:44:11 -07:00
utsname_sysctl.c
watchdog.c
watchdog: update watchdog_thresh properly
2013-09-24 17:00:25 -07:00
workqueue.c
Merge branch 'for-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
2014-01-21 17:46:31 -08:00
workqueue_internal.h