On Sat 2015-06-13 18:22:22, Tejun Heo wrote: > > I try to better understand why freezer is considered to be a blunt > > tool. Is it because it is a generic API, try_to_freeze() is put on > > "random" locations, so that it does not define the safe point > > precisely enough? > > Not that. I don't know how to explain it better. Hmmm... okay, let's > say there's a shared queue Q and N users o fit. If you wanna make Q > empty and keep it that way for a while, the right thing to do is > blocking new queueing and then wait till Q drains - you choke the > entity that you wanna control. > > Instead of that, freezer is trying to block the "N" users part. In > majority of cases, it blocks enough but it's pretty difficult to be > sure whether you actually got all N of them (as some of them may not > involve kthreads at all or unfreezable kthreads might end up doing > those operations too on corner cases) and it's also not that clear > whether blocking the N users actually make Q empty. Maybe there are > things which can be in flight asynchronously on Q even all its N users > are blocked. This is inherently finicky. I feel convinced that it does not make sense to make kthreads freezable by default and that we should not use it when not necessary. Thanks a lot for patience and so detailed explanation. Best Regards, Petr -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html