[devel] q: installer: Killing all remaining processes (forever)

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Сб Апр 5 05:22:03 MSD 2008


On Sat, Apr 05, 2008 at 05:04:50AM +0400, Evgeny Sinelnikov wrote:
[...]
> Кстати, тут 's/skip/seek/'

Там и есть seek.

> >  Идея была в том, чтобы создать файл-дырку /mnt/altlinst в точности
> >  того же размера, что и исходный файл /image/altinst.
> 
> Довольно-таки странно сначала копировать файл, а потом поверх него
> делать файл дырку.

Разве поверх него?
Там копируется один файл, а потом создаётся другой файл-дырка.

> Я предположил, что порядок должен быть обратным -
> перед копирование создаётся файл дырка нужного размера, для гарантии
> непонятно чего (места на рамдиске?).... Иначе мы получали losetup-move
> на файл с только что обнулённым куском в конце. Причём, если везде по
> коду указывается $fs/altinst, то этот самый создатель файла-дырки
> использует /mnt/altlinst. Такое ощущение, что его просто оставили во
> время ручного мёрджинга.

Идея была именно сделать файл-дырку, на который потом в самом конце будет
loop_change_fd.  Именно это код make_sparse() и делает, если вызвать его
до создания файла /mnt/altinst.

> >  > После этого оно
> >  > иногда падает, особенно когда мы вызываем loop_change_fd("/dev/loop0",
> >  > "/mnt/altinst"), если ядро память почистило для своих нужно...
> >
> >  Непонятно, почему оно может падать, если, по идее, оно больше не должно
> >  использоваться в тот момент, когда вызывается завершающий loop_change_fd.
> 
> Ну, это вот кстати, довольно просто... Оно же в памяти остаётся, чтобы
> уметь сменить диск и добавить другой, с новыми пакетами. И нужно на
> протяжении всего времени работы в stage2. Когда же мы делаем
> losetup-move на один и от же вроде файл, у которого затёрты последние
> 512 байт может произойти глюк... Ядро на такой покоцаной файловой
> системе в памяти просто падает.

Зануляется не тот файл, с которым работает процесс на stage2, а тот файл,
на который происходит loop_change_fd в самом конце install2-init.
В этот момент уже не должно остаться никаких процессов, использующих
файловую систему с этого образа -- их ведь уже убили с помощью
kill(-1, SIGKILL).

> Кстати, доводы относительно loop_change_fd() в многодисковой
> установке, на последнем этапе работы установщика в stage2 несколько
> меня смущают. Это могло быть сделано для корректного eject, но его не
> делают... Может добавим?

О чём речь?

> >  > >  > 2) После вызова reboot(), в случае появленения сигнала ECHILD, init не
> >  > >  > дожидался момента завершения и падал из-за чего появлялся:
> >  > >  > Kernel panic - not syncing: Attempted to kill init!
> >  > >
> >  > >  А вот это совершенно верно, коммит
> >  > >  fe761e03fcc44afc58687810844a1efc1a013e82
> >  > >  исправляет сразу две ошибки.
> >  > >
> >  > >  > Исправленный вариант installer можно найти здесь:
> >  > >  > http://git.etersoft.ru/people/sin/packages/installer.git/
> >  > >  >
> >  > >  > Единственное, что осталось непонятным - это отмонтирование
> >  > >  > /mnt/destination, в котором оказываются занятыми /mnt/destination/dev
> >  > >  > и, при наличии, /mnt/destination/home... Комментарий по поводу
> >  > >  > MNT_DETACH вероятно стоит раскомментировать... Есть ещё какие-нибудь
> >  > >  > по этому поводу предложения?
> >  > >
> >  > >  Нет, MNT_DETACH был убран специально, иначе не все ресурсы оказываются
> >  > >  полностью отмонтированными: после "поверхностного" отмонтирования
> >  > >  расположенные глубже ресурсы оказываются недоступными для отмонтирования.
> >  >
> >  > Ну, тут всё вообще очень мутно.... Почему init, который init_stage2,
> >  > оказывается занял что-то /mnt/destination/dev?
> >
> >  Кажется, это последствия работы evms.
> 
> Ужасно.... Получается, что новые ФС на разделе сразу требуют поверки
> сразу после установки...

Вся эта морока с перетаскиванием init на tmpfs и была затеяна для того,
чтобы отмонтировать свежесозданные разделы.
Тот код, который вы сейчас видите в install2-init.c, это, наверное, самый
простой способ решить эту задачу.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20080405/d0f5b430/attachment-0002.bin>


Подробная информация о списке рассылки Devel