Linux Container Development
 help / color / mirror / Atom feed
  • [parent not found: <1351712650-23709-5-git-send-email-tj@kernel.org>]
  • [parent not found: <1351712650-23709-9-git-send-email-tj@kernel.org>]
  • [parent not found: <1351712650-23709-3-git-send-email-tj@kernel.org>]
  • [parent not found: <20121105173024.GA19354@mtj.dyndns.org>]
  • * [PATCHSET v2] cgroup: simplify cgroup removal path
    @ 2012-10-31 18:16 Tejun Heo
           [not found] ` <1351707391-22287-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
      0 siblings, 1 reply; 46+ messages in thread
    From: Tejun Heo @ 2012-10-31 18:16 UTC (permalink / raw)
      To: lizefan-hv44wF8Li93QT0dZR+AlfA, hannes-druUgvl0LCNAfugRpC6u6w,
    	mhocko-AlSwsSmVLrQ, bsingharora-Re5JQEeQqe8AvxtiuMwx3w,
    	kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A
      Cc: cgroups-u79uwXL29TY76Z2rM5mHXA,
    	containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
    	linux-kernel-u79uwXL29TY76Z2rM5mHXA
    
    Hello, guys.
    
    Changes from the last posting[L] are,
    
    * cgroup_call_pre_destroy() removal moved from 0001 to 0004 per
      Michal.
    
    * Comment and commit message updates per Glauber and Michal.
    
    Original head message follows.
    
    cgroup removal path is quite ugly.  A lot of the ugliness comes from
    the weird design which allows ->pre_destroy() to fail and the feature
    to drain existing CSS reference counts before committing to removal.
    Both mean that it should be possible to roll-back cgroup destruction
    after some or all ->pre_destroy() invocations.
    
    This weird design has never really worked.  To list a couple examples.
    
     * Some ->pre_destroy() implementations aren't side-effect free.
       Roll-back happens after a lot of state is already lost.
    
     * Some ->pre_destroy() implementations (naturally) assume that the
       cgroup being destroyed would stay quiescent between successful
       ->pre_destroy() and its destruction.  Unfortunately, any operation
       can happen inbetween and the cgroup could be in a very different
       state by the time it actually gets destroyed.
    
    It's just such an unusual design which unnecessarily contains weird
    code path combinations which are tricky to hit, reproduce and expect.
    Moreover, the design's deficiencies attracts kludges on top as
    workarounds and we end up with stuff like cgroup_exclude_rmdir() and
    cgroup_release_and_wakeup_rmdir() which really make me want to cry.
    
    Now that memcg has moved away from failable ->pre_destroy(), we can do
    away with all these.  I tested some basic operations and some corner
    cases but am still a bit scared.  Would love to get acks from Li and
    memcg people.
    
    This patchset contains the following eight patches.
    
     0001-cgroup-kill-cgroup_subsys-__DEPRECATED_clear_css_ref.patch
     0002-cgroup-kill-CSS_REMOVED.patch
     0003-cgroup-use-cgroup_lock_live_group-parent-in-cgroup_c.patch
     0004-cgroup-deactivate-CSS-s-and-mark-cgroup-dead-before-.patch
     0005-cgroup-remove-CGRP_WAIT_ON_RMDIR-cgroup_exclude_rmdi.patch
     0006-memcg-make-mem_cgroup_reparent_charges-non-failing.patch
     0007-hugetlb-do-not-fail-in-hugetlb_cgroup_pre_destroy.patch
     0008-cgroup-make-pre_destroy-return-void.patch
    
    0001-0002 remove now unused ->pre_destroy() failure handling and do
    follow-up simplification.
    
    0003-0004 update removal path such that each ->pre_destroy() is
    guaranteed to be invoked once per removal and the cgroup being
    destroyed stays quiescent until destruction is complete.
    
    0005 removes the scary CGRP_WAIT_ON_RMDIR mechanism.
    
    0006-0008 are follow-up clean-ups.  0006 and 0007 are from Michal's
    patchset[1].
    
    This patchset is on top of
    
      v3.6 (a0d271cbfe)
    + [1] the first three patches of
          "memcg/cgroup: do not fail fail on pre_destroy callbacks" patchset
    
    and available in the following git branch.
    
     git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-cgroup-rmdir-updates
    
    Thanks.
    
     block/blk-cgroup.c     |    3 
     include/linux/cgroup.h |   41 -------
     kernel/cgroup.c        |  256 +++++++++++--------------------------------------
     mm/hugetlb_cgroup.c    |   11 --
     mm/memcontrol.c        |   51 +--------
     5 files changed, 75 insertions(+), 287 deletions(-)
    
    --
    tejun
    
    [L] http://www.spinics.net/lists/linux-containers/msg26157.html
    [1] http://thread.gmane.org/gmane.linux.kernel.cgroups/4757
    
    ^ permalink raw reply	[flat|nested] 46+ messages in thread
    [parent not found: <1351657365-25055-1-git-send-email-tj@kernel.org>]

    end of thread, other threads:[~2012-11-05 18:39 UTC | newest]
    
    Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <1351712650-23709-1-git-send-email-tj@kernel.org>
         [not found] ` <1351712650-23709-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31 19:44   ` [PATCH 1/8] cgroup: kill cgroup_subsys->__DEPRECATED_clear_css_refs Tejun Heo
         [not found]     ` <1351712650-23709-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31 20:08       ` Michal Hocko
         [not found]         ` <20121031200859.GE1271-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
    2012-10-31 20:11           ` Tejun Heo
         [not found]             ` <CAOS58YPbYoMJ1+3uRfK_ZERyZoaby=FPW7uTpp8dVOSgYC8Mrw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2012-10-31 20:14               ` Michal Hocko
         [not found]                 ` <20121031201415.GG1271-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
    2012-10-31 20:24                   ` Tejun Heo
         [not found]                     ` <20121031202400.GT2945-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
    2012-10-31 20:49                       ` Michal Hocko
    2012-11-02 10:01                       ` Kamezawa Hiroyuki
    2012-10-31 20:12       ` Michal Hocko
         [not found]         ` <20121031201227.GF1271-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
    2012-10-31 20:14           ` Tejun Heo
         [not found]         ` <CAOS58YOHjLyKFeah+h+qOrAWvfi1O5eL7m-AMbqAdcP=EOFb6g@mail.gmail.com>
         [not found]           ` <CAOS58YOHjLyKFeah+h+qOrAWvfi1O5eL7m-AMbqAdcP=EOFb6g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
    2012-10-31 21:23             ` Michal Hocko
    2012-11-05  5:34       ` Li Zefan
    2012-10-31 19:44   ` [PATCH 2/8] cgroup: kill CSS_REMOVED Tejun Heo
    2012-10-31 19:44   ` [PATCH 3/8] cgroup: use cgroup_lock_live_group(parent) in cgroup_create() Tejun Heo
         [not found]     ` <1351712650-23709-4-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-11-02 10:03       ` Kamezawa Hiroyuki
    2012-11-05  5:36       ` Li Zefan
    2012-10-31 19:44   ` [PATCH 4/8] cgroup: deactivate CSS's and mark cgroup dead before invoking ->pre_destroy() Tejun Heo
    2012-10-31 19:44   ` [PATCH 5/8] cgroup: remove CGRP_WAIT_ON_RMDIR, cgroup_exclude_rmdir() and cgroup_release_and_wakeup_rmdir() Tejun Heo
         [not found]     ` <1351712650-23709-6-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-11-02 10:20       ` Kamezawa Hiroyuki
    2012-11-05  5:40       ` Li Zefan
    2012-10-31 19:44   ` [PATCH 6/8] memcg: make mem_cgroup_reparent_charges non failing Tejun Heo
         [not found]     ` <1351712650-23709-7-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-11-02 10:21       ` Kamezawa Hiroyuki
    2012-10-31 19:44   ` [PATCH 7/8] hugetlb: do not fail in hugetlb_cgroup_pre_destroy Tejun Heo
         [not found]     ` <1351712650-23709-8-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-11-02 10:23       ` Kamezawa Hiroyuki
    2012-10-31 19:44   ` [PATCH 8/8] cgroup: make ->pre_destroy() return void Tejun Heo
    2012-11-05 17:30   ` [PATCHSET RESEND v2] cgroup: simplify cgroup removal path Tejun Heo
         [not found] ` <1351712650-23709-5-git-send-email-tj@kernel.org>
         [not found]   ` <1351712650-23709-5-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31 21:23     ` [PATCH 4/8] cgroup: deactivate CSS's and mark cgroup dead before invoking ->pre_destroy() Michal Hocko
         [not found]       ` <20121031212359.GC5286-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
    2012-10-31 21:27         ` Tejun Heo
         [not found]           ` <20121031212725.GA2945-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
    2012-11-01  8:58             ` Michal Hocko
    2012-11-02 10:05     ` Kamezawa Hiroyuki
    2012-11-05  5:37     ` Li Zefan
         [not found] ` <1351712650-23709-9-git-send-email-tj@kernel.org>
         [not found]   ` <1351712650-23709-9-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31 21:23     ` [PATCH 8/8] cgroup: make ->pre_destroy() return void Michal Hocko
    2012-11-02 10:24     ` Kamezawa Hiroyuki
    2012-11-05  5:41     ` Li Zefan
         [not found] ` <1351712650-23709-3-git-send-email-tj@kernel.org>
         [not found]   ` <1351712650-23709-3-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-11-02 10:02     ` [PATCH 2/8] cgroup: kill CSS_REMOVED Kamezawa Hiroyuki
    2012-11-05  5:33     ` Li Zefan
         [not found] ` <20121105173024.GA19354@mtj.dyndns.org>
         [not found]   ` <20121105173024.GA19354-9pTldWuhBndy/B6EtB590w@public.gmane.org>
    2012-11-05 18:39     ` [PATCHSET RESEND v2] cgroup: simplify cgroup removal path Michal Hocko
    2012-10-31 18:16 [PATCHSET " Tejun Heo
         [not found] ` <1351707391-22287-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31 18:16   ` [PATCH 1/8] cgroup: kill cgroup_subsys->__DEPRECATED_clear_css_refs Tejun Heo
         [not found]     ` <1351707391-22287-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31 19:02       ` Michal Hocko
         [not found] <1351657365-25055-1-git-send-email-tj@kernel.org>
         [not found] ` <1351657365-25055-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31  4:22   ` Tejun Heo
         [not found]     ` <1351657365-25055-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
    2012-10-31 13:21       ` Glauber Costa
    2012-10-31 14:37       ` Michal Hocko
    2012-11-02  9:23       ` Kamezawa Hiroyuki
         [not found]     ` <509125D9.8070100@parallels.com>
         [not found]       ` <509125D9.8070100-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
    2012-10-31 16:38         ` Tejun Heo
         [not found]     ` <20121031143751.GA22809@dhcp22.suse.cz>
         [not found]       ` <20121031143751.GA22809-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
    2012-10-31 16:41         ` Tejun Heo
         [not found]       ` <20121031164123.GD2945@htj.dyndns.org>
         [not found]         ` <20121031164123.GD2945-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
    2012-10-31 16:48           ` Michal Hocko
         [not found]             ` <20121031164855.GI22809-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
    2012-10-31 17:22               ` Tejun Heo
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox