From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793184801; bh=lrumOgNPjxV1OxCcdfvePlq8ITPy5exEArIwEw4ebWY=; h=Date:From:To:Subject:References:In-Reply-To; b=BNpDUZLJET89OXkfd/Bbwo5pNayNZ352rT8bYk3/zrkeCCpx4lcJajiGiSqUAn/wF LjHXP2heKMS9wn4/kdxCVvbD2ns5qwMPI3aw79sV6mKdwFc09WI61T5ekV4Tc8x6lK XRntgzS1V6mJG/0gmqPYwp4g2ntgIqNFgnoUaBfdubeMaO1lmUYfrHNSkkqSlAaqq1 eyc7EPtdQlAjT2e0HMjYg4zqSv4rOucBn81vQasAXznFcwdTr0e3IY8GpcHgvPAt+9 2GNbsB90QzhqLaCgK+8coz0aotYG9U0v/sUaXQuQUaNgatDpHMbPBheVK+p08IIk/j +LEJJF2oma8CA== Date: Wed, 28 Oct 2026 11:53:17 +0100 From: Alexey Gladkov To: make-initrd@lists.altlinux.org Message-ID: References: <603c67ce-5fc5-434b-9f6f-83afb99fcc83@gmail.com> <268f3abf-44ff-4d3d-99d2-e7498cfe5e48@gmail.com> <80b1a55a-056d-45b6-8aae-d2d2db9bf218@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Subject: Re: [make-initrd] [PATCH v2 00/11] Improve support for atomic actions X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Oct 2026 10:53:26 -0000 Archived-At: List-Archive: On Mon, Oct 26, 2026 at 10:41:46PM +0300, Leonid Krivoshein wrote: > > > On 10/26/26 8:15 PM, Alexey Gladkov wrote: > > On Mon, Oct 26, 2026 at 07:47:04PM +0300, Leonid Krivoshein wrote: > > > > > К сожалению, поздно вспомнил, что перетаскивание rootdelay_pause в коде было > > > > > связано ни с одной, а с двумя проблемами. Первую проблему обсудили и решили > > > > > выше. А вторая проблема была связана с периодическим выводом сообщений от > > > > > этого демона, что он ожидает корня. Когда мы работаем с диалогами на TTY2, > > > > > вперемешку с интерфейсом dialog иногда вылазили эти сообщения. Поэтому и > > > > > отключали этого демона на всё время работы интерактивщины. > > > > > > > > > > В идеале нужно: > > > > > > > > > > 1. Отключать учёт времени истечения загрузки только на определённые моменты: > > > > > это уже сделано. > > > > > 2. Отключать или перенаправлять сообщения от демона rootdelayd: этого пока > > > > > нет. > > > > > > > > > > Это две разные проблемы. Не совсем верно решать первым способом вторую > > > > > проблему, но сейчас у меня другого варианта просто нет. Возможно, я не прав > > > > > в том смысле, что в initrd, помимо rootdelayd, могут быть другие процессы, > > > > > которые могут что-то писать в активный TTY, просто мне таких пока не > > > > > попадалось. > > > > > > > > Новый код в rootdelayd теперь показывает это сообщение под блокировкой: > > > > > > > > run_console_locked show_waiting_message > > > > > > > > так что если твой диалог на время работы будет брать блокировку, то > > > > сообщение показано не будет. > > > > > > > > > > С новой реализацией ещё не проверялось, но было видно, что сообщения > > > проскакивают между диалогами, хотя на время их вывода используется > > > rootdelay_pause. > > > > Я не знаю как ты ставишь паузу, но если пауза стоит, то rootdelayd не > > может ничего выводить. > > > > https://github.com/osboot/make-initrd/blob/master/features/runtime/data/sbin/rootdelayd#L13-L16 > > > > Верно, не может. Если вызывать roodelay_pause() на время одного диалога, то > пока с ним работаем, сообщений нет. Чтобы не было мелькания на экране при > переходе от шага к шагу, экран не очищается, отработанный диалог остаётся на > экране (TTY2) и в этот момент крайне редко между диалогами сообщение может > проскочить, так как к этому моменту уже отработал rootdelay_unpause(). О чём > я и говорю выше: сообщения иногда проскакивают *МЕЖДУ* диалогами, но > результат виден на экране как артефакт. > > > > > Запускать всю цепочку в интерактивном режиме под блокировкой консоли > > > кажется сомнительной идеей, потому как может привести к взаимным > > > блокировкам. > > > > Я не считаю, это сомнительной идеей. Твои диалоги занимают консоль. > > Блокировка как раз делается, чтобы разделить доступ к ней. > > > > > Например, я жду настройки сети, а фича network ждёт консоли. > > > > Фича network не ждёт console. > > > > Мой пример с network может и неудачный, но фичи могут использовать API > make-initrd, и, если для их нормальной работы нужно будет в какой-то момент > дождаться освобождения блокировки консоли, а шаг моей цепочки будет ожидать > результата работы этой фичи, получится взаимная блокировка, к тому же весьма > плохо диагностируемая. Поэтому мне идея блокировать консоль на всё время > работы цепочки не нравится. > > > > > Отдельная ручка для управления этими сообщениями прям очень нужна. > > > > Пока для меня это не очевидно. Ты приводишь какие-то надуманные с моей > > точки зрения аргументы. > > > > Вариант с атомарным созданием и удалением каталога мне нравится тем, что он > крайне прост в реализации и исключает возможность взаимной блокировки. А завтра ты вернёшься и попросишь точечно заблокировать ещё какое-нибудь сообщение. Мне очень не нравится такой подход. Это вбивание костылей. Твой код не находится в составе в make-initrd. Я никогда не смогу поддерживать такие костыли и не сломать твой. Тебе нужно искать другой подход. Подход, который бы мог работать по общим правилам как у тебя, так и у меня. > > > Демон rootdelayd мог бы создавать при запуске каталог > > > /.initrd/rootdelay/show-wait-msg или что-то вроде того, и выводить это > > > сообщение только пока данный каталог существует. Если его нет, то просто не > > > выводить. Тогда bootchain, pipeline, kickstart и другие, кому нужно долго > > > работать с *РАЗНЫМИ* диалогами, при этом продолжать учитывать время > > > загрузки, могли бы на время своей работы данный каталог удалять, а по > > > окончании работы восстанавливать. > > > > > > Сейчас же приходится оборачивать всю цепочку в rootdelay_pause() / > > > rootdelay_unpause() только из-за этих сообщений. > > > > Я пока не очень понимаю зачем твоей интерактивной программе на базе initrd > > вообще запущенный rootdelayd, который нужен в первую очередь для > > отслеживания параметра ROOTDELAY. Тебе он вообще не нужен. > > > > Учёт таймаута нужен для всего процесса загрузки, за исключением тех > участков, про которые время ожидания заранее нельзя предсказать: диалоги, > загрузка или проверка больших файлов, проверка или форматирование разделов. > Правильно отключать отслеживание только на время выполнения таких участков. > > Демон rootdelayd мне нужен для выполнения в фоне только одной из его задач > -- отслеживанию таймаута, когда это разрешено. Но rootdelayd по ходу > выполняет и вторую задачу. Он сам занимается интерактивным выводом в > консоль, периодически напоминая пользователю, что ожидается корень, который > до сих пор не найден. И вот эта его итеративность идёт вразрез с моей > интерактивностью. > > Сейчас стало понятно, как ещё можно обойти проблему: написать собственный > аналог rootdelayd, который будет приостанавливать твой rootdelayd на время > своей работы. Но это сложнее, чем сделать каталог-ручку для управления > выводом сообщений от rootdelayd. Да, этот подход я тоже хотел тебе предложить. Раз у тебя уже отдельная система, то можно идти дальше. -- Rgrds, legion