Hello, Vivek. On Thu, Sep 20, 2012 at 03:32:27PM -0400, Vivek Goyal wrote: > > Yeah, I incorrectly assumed that bio based drivers would call > > blk_init_allocated_queue(). I think we need to move the initial > > bypass_end call to blk_register_queue(). Like the following. Not > > completely sure yet tho. > > Hmm.., I am just trying to remember the details hence thinking loud. > > So issue was that we did not want to call synchronize_rcu() in queue exit > path (ex. cfq_exit_queue()) because some driver could call create/destroy > queues very frequently during device/disk discovery. > > So we started queue in bypass mode so that if it is destroyed early, it > will be destroyed in bypass mode and we shall never have to call > synchronize_rcu(). Yeah, that and it's desirable to ensure that all the fancy stuff is skipped until initialization is complete. > So assumption here is that blk_register_queue() will be called by > add_disk() and hopefully add_disk() will be called by driver only if > it is not planning to tear down the queue soon. If this assumption is > right, then this patch should work, I think. I'm wondering whether there's any use case where a queue is used without being registered and still require elevator and all other stuff. I can't think of any valid use case but am not completely sure either. Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html