Messages in this thread | | | Date | Fri, 3 Feb 2012 16:44:35 -0500 | From | Vivek Goyal <> | Subject | Re: [PATCH UPDATED 11/11] blkcg: unify blkg's for blkcg policies |
| |
On Fri, Feb 03, 2012 at 12:59:10PM -0800, Tejun Heo wrote: > > > [..] > > > @@ -776,43 +786,49 @@ blkiocg_reset_stats(struct cgroup *cgrou > > > #endif > > > > > > blkcg = cgroup_to_blkio_cgroup(cgroup); > > > + spin_lock(&blkio_list_lock); > > > spin_lock_irq(&blkcg->lock); > > > > Isn't blkcg lock enough to protect against policy registration/deregistration. > > A policy can not add/delete a group to cgroup list without blkcg list. > > But pol list can change regardless of that, no?
Ok, looks like now it is needed because blkcg lock will just gurantee that blkg is around but blkg->pd[plid] can disappear if you are not holding blkio_list lock (update_root_blkgs).
I am wondering if we should take blkcg->lock if blkg is on blkcg list and is being modified in place. That way, once we are switching elevator, we should be able to shoot down the policy data without taking blkio_list lock.
Thanks Vivek
| |