Skip to content

Commit

Permalink
Merge branch 'cgroup-rmdir-updates' into cgroup/for-3.8
Browse files Browse the repository at this point in the history
Pull rmdir updates into for-3.8 so that further callback updates can
be put on top.  This pull created a trivial conflict between the
following two commits.

  8c7f6ed ("cgroup: mark subsystems with broken hierarchy support and whine if cgroups are nested for them")
  ed95779 ("cgroup: kill cgroup_subsys->__DEPRECATED_clear_css_refs")

The former added a field to cgroup_subsys and the latter removed one
from it.  They happen to be colocated causing the conflict.  Keeping
what's added and removing what's removed resolves the conflict.

Signed-off-by: Tejun Heo <[email protected]>
  • Loading branch information
htejun committed Nov 5, 2012
2 parents 5d8f72b + bcf6de1 commit 1db1e31
Show file tree
Hide file tree
Showing 5 changed files with 156 additions and 336 deletions.
3 changes: 1 addition & 2 deletions block/blk-cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -600,7 +600,7 @@ struct cftype blkcg_files[] = {
*
* This is the blkcg counterpart of ioc_release_fn().
*/
static int blkcg_pre_destroy(struct cgroup *cgroup)
static void blkcg_pre_destroy(struct cgroup *cgroup)
{
struct blkcg *blkcg = cgroup_to_blkcg(cgroup);

Expand All @@ -622,7 +622,6 @@ static int blkcg_pre_destroy(struct cgroup *cgroup)
}

spin_unlock_irq(&blkcg->lock);
return 0;
}

static void blkcg_destroy(struct cgroup *cgroup)
Expand Down
41 changes: 1 addition & 40 deletions include/linux/cgroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,6 @@ struct cgroup_subsys_state {
/* bits in struct cgroup_subsys_state flags field */
enum {
CSS_ROOT, /* This CSS is the root of the subsystem */
CSS_REMOVED, /* This CSS is dead */
CSS_CLEAR_CSS_REFS, /* @ss->__DEPRECATED_clear_css_refs */
};

/* Caller must verify that the css is not for root cgroup */
Expand All @@ -105,11 +103,6 @@ static inline void css_get(struct cgroup_subsys_state *css)
__css_get(css, 1);
}

static inline bool css_is_removed(struct cgroup_subsys_state *css)
{
return test_bit(CSS_REMOVED, &css->flags);
}

/*
* Call css_tryget() to take a reference on a css if your existing
* (known-valid) reference isn't already ref-counted. Returns false if
Expand Down Expand Up @@ -147,10 +140,6 @@ enum {
CGRP_RELEASABLE,
/* Control Group requires release notifications to userspace */
CGRP_NOTIFY_ON_RELEASE,
/*
* A thread in rmdir() is wating for this cgroup.
*/
CGRP_WAIT_ON_RMDIR,
/*
* Clone cgroup values when creating a new child cgroup
*/
Expand Down Expand Up @@ -420,23 +409,6 @@ int cgroup_task_count(const struct cgroup *cgrp);
/* Return true if cgrp is a descendant of the task's cgroup */
int cgroup_is_descendant(const struct cgroup *cgrp, struct task_struct *task);

/*
* When the subsys has to access css and may add permanent refcnt to css,
* it should take care of racy conditions with rmdir(). Following set of
* functions, is for stop/restart rmdir if necessary.
* Because these will call css_get/put, "css" should be alive css.
*
* cgroup_exclude_rmdir();
* ...do some jobs which may access arbitrary empty cgroup
* cgroup_release_and_wakeup_rmdir();
*
* When someone removes a cgroup while cgroup_exclude_rmdir() holds it,
* it sleeps and cgroup_release_and_wakeup_rmdir() will wake him up.
*/

void cgroup_exclude_rmdir(struct cgroup_subsys_state *css);
void cgroup_release_and_wakeup_rmdir(struct cgroup_subsys_state *css);

/*
* Control Group taskset, used to pass around set of tasks to cgroup_subsys
* methods.
Expand Down Expand Up @@ -466,7 +438,7 @@ int cgroup_taskset_size(struct cgroup_taskset *tset);

struct cgroup_subsys {
struct cgroup_subsys_state *(*create)(struct cgroup *cgrp);
int (*pre_destroy)(struct cgroup *cgrp);
void (*pre_destroy)(struct cgroup *cgrp);
void (*destroy)(struct cgroup *cgrp);
int (*can_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
void (*cancel_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
Expand All @@ -487,17 +459,6 @@ struct cgroup_subsys {
*/
bool use_id;

/*
* If %true, cgroup removal will try to clear css refs by retrying
* ss->pre_destroy() until there's no css ref left. This behavior
* is strictly for backward compatibility and will be removed as
* soon as the current user (memcg) is updated.
*
* If %false, ss->pre_destroy() can't fail and cgroup removal won't
* wait for css refs to drop to zero before proceeding.
*/
bool __DEPRECATED_clear_css_refs;

/*
* If %false, this subsystem is properly hierarchical -
* configuration, resource accounting and restriction on a parent
Expand Down
Loading

0 comments on commit 1db1e31

Please sign in to comment.