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=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1793043708; x=1793648508; darn=lists.altlinux.org; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to:content-type; bh=tklW71mKwR8zkSgE70PNdc6K0l0iFDLeYpTCY61/LPA=; b=GgCdex9FTbImOWrmJPNU4bJBk0C7At6/a9Q3D6jQYFchsPXXG9oDPNfESF7s9DTn/u hiHw9D2t0ej+/Va3y5IVmmHarV6GdYXtkG/p+zszYVTu/7Dhv9XA6/AFpnMQatlyxYri vae6NGBQbekzRtF2I53wAmE9CR/+4DTK1onQjT0ll2M1pSVKTQUKr5KKkY/Kem4aid/0 /UvdkMGNKG2OS+ZCOHgisA927QQ5hfqJ06vRYSks60hNUujxTwLyZbkPeAs78lNu3B/1 YJAmG5SbCsFslr38z5L0wx3qUbFPh4ikXXHD3BO0WE2wwgtXRfciZmppBsCBSVRPGG6H 0B2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793043708; x=1793648508; h=content-transfer-encoding:content-type:in-reply-to:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tklW71mKwR8zkSgE70PNdc6K0l0iFDLeYpTCY61/LPA=; b=HZzpXyLkKa4kC+TUPTkBOVA6IqBkmQHv4datMpzEaDUX8rocu/tYdVAuFCIuXxwGkt JDowDaNooGypiQ1JW2dK0ATw7GWVNSXFZZ3QKlWCHr0fjfp8SFhOaeA2zySTiStnVNvo dVKkaSjABaGVkcpwFRed+VoEcpY3oY4skpb1OcXUcQoWuW7JX9pb0x3qSGoVksFZLc+X xDuf8C1lykbm0fLEj0QpYJ79ush88YLYp7I8D2BQq9qoFBVaR0NgYEcNcd+QE1Fx3Is7 G5QS5GQAMX0q5Me8j0xYYepPFu6n0jzdlY5PbWlxh9AwFtYtjsoGiGU4PBToSsqX8WG5 R46Q== X-Gm-Message-State: AFq9FYJsLiE6B3Z7arYU4iO5mTtycnyvs/SdAhQGz0+1+RVT1cNHrZGK HNOHP6em0TmOMU4QKxaBdCY5QTSYw0/ZQJT3hcr7jaKB36tsSwvz9E32htwbSA== X-Gm-Gg: AYBFou0JfmWfgLlyHUvLnCYB6X0H7JFdL1/uHvItLogBRzq0wh0qgMrFuctg+Fs9nKY H3i19N8Q300MDToN5NfxJaI4sQFWJ67M7eY0oy82wbxgjUPTv7WyQIIBawjCvMeVsrnU+1Knzkv rlxhF276MV2gL+vE9Nvk7BTaHSmcVDB0p1IwuJTwtPcPm8plpWRYko/WTwpFE8KsmnaJjN8YxKL JPfe86V8TwB+vG4llfBicbRdtMR99R5hT/xc+EUjszUVf4QBZ3/qTYBzRs/RdMc5/R60jDfT6JJ Y92dESNDAlwRVvBmIF2ykDbqD/oQ2osIE6s+RHbPtKseL2OXkae1bSWTrkjKDmU30zsWjuLuqf3 JGoUrR2DeeD+z4TZBn13r6kJgJ6dhuNdRnmmAkUg5rhK79tIhYM7wxbr0nHv9tMcqmqcY/TcVXR fBqvKPKMlFfgunxNjpeCMnmaM3NJXIc2UH/pdIhb8HJ8rDWKLkpnqaevNv8/yFxI7C9zNLe9yPR zOA91vO7XMTvaw7cTgUe8CZRdAWBOu2T+q3XGHufLPWvHClp/NONBUFBjWDRCyWG5NVx03l2w== X-Received: by 2002:a05:6820:221a:b0:702:f7c2:1937 with SMTP id 006d021491bc7-70ba0f65b01mr4158769eaf.83.1793043707979; Mon, 26 Oct 2026 12:41:47 -0700 (PDT) Message-ID: Date: Mon, 26 Oct 2026 22:41:46 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: make-initrd@lists.altlinux.org References: <6827d282-5d15-4a4c-b144-2da3e3580cda@gmail.com> <603c67ce-5fc5-434b-9f6f-83afb99fcc83@gmail.com> <268f3abf-44ff-4d3d-99d2-e7498cfe5e48@gmail.com> <80b1a55a-056d-45b6-8aae-d2d2db9bf218@gmail.com> Content-Language: ru, en-US From: Leonid Krivoshein In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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: Mon, 26 Oct 2026 19:41:52 -0000 Archived-At: List-Archive: 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, и, если для их нормальной работы нужно будет в какой-то момент дождаться освобождения блокировки консоли, а шаг моей цепочки будет ожидать результата работы этой фичи, получится взаимная блокировка, к тому же весьма плохо диагностируемая. Поэтому мне идея блокировать консоль на всё время работы цепочки не нравится. >> Отдельная ручка для управления этими сообщениями прям очень нужна. > > Пока для меня это не очевидно. Ты приводишь какие-то надуманные с моей > точки зрения аргументы. > Вариант с атомарным созданием и удалением каталога мне нравится тем, что он крайне прост в реализации и исключает возможность взаимной блокировки. >> Демон rootdelayd мог бы создавать при запуске каталог >> /.initrd/rootdelay/show-wait-msg или что-то вроде того, и выводить это >> сообщение только пока данный каталог существует. Если его нет, то просто не >> выводить. Тогда bootchain, pipeline, kickstart и другие, кому нужно долго >> работать с *РАЗНЫМИ* диалогами, при этом продолжать учитывать время >> загрузки, могли бы на время своей работы данный каталог удалять, а по >> окончании работы восстанавливать. >> >> Сейчас же приходится оборачивать всю цепочку в rootdelay_pause() / >> rootdelay_unpause() только из-за этих сообщений. > > Я пока не очень понимаю зачем твоей интерактивной программе на базе initrd > вообще запущенный rootdelayd, который нужен в первую очередь для > отслеживания параметра ROOTDELAY. Тебе он вообще не нужен. > Учёт таймаута нужен для всего процесса загрузки, за исключением тех участков, про которые время ожидания заранее нельзя предсказать: диалоги, загрузка или проверка больших файлов, проверка или форматирование разделов. Правильно отключать отслеживание только на время выполнения таких участков. Демон rootdelayd мне нужен для выполнения в фоне только одной из его задач -- отслеживанию таймаута, когда это разрешено. Но rootdelayd по ходу выполняет и вторую задачу. Он сам занимается интерактивным выводом в консоль, периодически напоминая пользователю, что ожидается корень, который до сих пор не найден. И вот эта его итеративность идёт вразрез с моей интерактивностью. Сейчас стало понятно, как ещё можно обойти проблему: написать собственный аналог rootdelayd, который будет приостанавливать твой rootdelayd на время своей работы. Но это сложнее, чем сделать каталог-ручку для управления выводом сообщений от rootdelayd. -- WBR, Leonid Krivoshein.