lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 23 Jan 2012 10:36:48 -0500
From:	Vivek Goyal <vgoyal@...hat.com>
To:	Tejun Heo <tj@...nel.org>
Cc:	axboe@...nel.dk, ctalbott@...gle.com, rni@...gle.com,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH 08/17] blkcg: shoot down blkio_groups on elevator switch

On Mon, Jan 23, 2012 at 10:20:55AM -0500, Vivek Goyal wrote:
> On Sat, Jan 21, 2012 at 07:25:16PM -0800, Tejun Heo wrote:
> 
> [..]
> > diff --git a/block/elevator.c b/block/elevator.c
> > index 078a491..5e371e4 100644
> > --- a/block/elevator.c
> > +++ b/block/elevator.c
> > @@ -38,6 +38,7 @@
> >  #include <trace/events/block.h>
> >  
> >  #include "blk.h"
> > +#include "blk-cgroup.h"
> >  
> >  static DEFINE_SPINLOCK(elv_list_lock);
> >  static LIST_HEAD(elv_list);
> > @@ -939,6 +940,7 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e)
> >  
> >  	spin_lock_irq(q->queue_lock);
> >  	ioc_clear_queue(q);
> > +	blkcg_clear_queue(q);
> 
> What happens to per device rules (per device weight and per device
> throttling rules)? IIUC, in new scheme of things, upon elevator switch
> these rules will be gone.
> 
> I can understand per device weight rules disappearing but what about 
> throttling rules. They are independent of IO scheduler and change of
> io scheduler should not cause per device throttling rules to get lost.
> 
> This just gets worse if elevator switch fails and we fall back to old
> elevator. But now we have lost of the rules as rules were part of
> blkg.conf and old groups are gone.

IIUC, above is racy w.r.t cgroup removal and elevator switch. Assume that
elevator swtich is taking place and we have queue lock held and we try to
clear the groups on the queue. Parallely somebody is trying to delete a
cgroup and has been partially successful in doing so by taking off the
group from blkcg list (blkiocg_destroy()). 

Now clear_queue() will complete with one or more groups possibly still
left on cfqd list because of cgroup deletion race and that can cause
problmes.

Thanks
Vivek
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ