On Fri, Feb 03, 2012 at 01:47:19PM -0800, Tejun Heo wrote:> On Fri, Feb 03, 2012 at 04:44:35PM -0500, Vivek Goyal wrote:> > 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.> > I think it gotta become something per-queue, not global, and if we> make it per-queue, it should be able to live inside queue_lock.

Hmm... then blkiocg_reset_stats() will run into lock ordering issue. Can'thold queue lock inside blkcg lock. I guess you will do some kind oflocking trick again as you did for io context logic.