а вот то, чему делают вакеап, то там сначла без проверки мутекса чекают arc_adjust_needed по результатам проверки дергают калбак и в нем сначла деалают всякое, потом уже опять берут arc_adjust_lock и еще раз вычисляют по свои правилам arc_adjust_needed
т.е. вакеап внутри мутексов вроде получше, но бладж, тебе никто не гарантирует что шедулер отшедулит всю проверку до того, как она завершиться и пойдет в колбек при все еще твоем стоящем мутексе.
т.е. есть неплохие шансы на это на относительно незагруженной многоядерной машине. и тогда типа почти наверняка твой вакеап сгоношит колбек. но ведь можно и не разложиться