Bug 50497

Summary: Conversion does not work on a union FS
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: usrmerge-hier-convertAssignee: Arseny Maslennikov <arseny>
Status: NEW --- QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P5 CC: arseny, glebfm, ldv, placeholder
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Vitaly Lipatov 2024-05-29 23:30:11 MSK
При попытке обновить систему, запущенную в контейнере:

filesystem-3.1-alt1: Starting usrmerge-hier-convert...
usr-m: Conversion does not work on a union FS.
     : Your image will have to be rebuilt from a new FS tree, sorry.
     : Exiting.
ошибка: lua script

Что непреодолимого не может union FS, что потребовалось отдельно выделять этот момент? Ссылки не создаёт?
Comment 1 Arseny Maslennikov 2024-05-29 23:41:48 MSK
Два соображения:
1) Нет никакого смысла проводить такое обновление в контейнере; его можно перегенерировать — по крайней мере, я исходил из именно такого опыта подготовки и эксплуатации контейнеров.
2) Если у кого-либо достаточно свободного времени отлаживать процедуру на union FS и ответственно её поддерживать в отчуждаемом от автора виде — patches welcome.
Comment 2 Arseny Maslennikov 2024-05-29 23:43:18 MSK
Как минимум, например, на каскадной ФС в общем случае должно быть нельзя сделать `mv --exchange`, если один из аргументов не на верхнем слое.

(В p11 и текущем сизифе mv не умеет в эту опцию, мы используем отдельную маленькую C-программу.)
Comment 3 Vitaly Lipatov 2024-05-30 00:10:24 MSK
(Ответ для Arseny Maslennikov на комментарий #1)
> Два соображения:
> 1) Нет никакого смысла проводить такое обновление в контейнере; его можно
> перегенерировать — по крайней мере, я исходил из именно такого опыта
> подготовки и эксплуатации контейнеров.
Почему-то вы решили, что контейнеры можно перегенерировать. Это из обширного опыта использования контейнеров?

2) Если у кого-либо достаточно свободного времени отлаживать процедуру на union FS и ответственно её поддерживать в отчуждаемом от автора виде — patches welcome.
Не понимаю, что такое «в отчуждаемом от автора виде».

> Как минимум, например, на каскадной ФС в общем случае должно быть нельзя сделать `mv --exchange`, если один из аргументов не на верхнем слое.
Это хорошее соображение, но надеюсь, что это не просто предположение.

Жаль, что мне сломали возможность обновить десятки систем с p10.
Comment 4 Arseny Maslennikov 2024-05-31 00:45:16 MSK
(In reply to Vitaly Lipatov from comment #3)
> (Ответ для Arseny Maslennikov на комментарий #1)
> > Два соображения:
> > 1) Нет никакого смысла проводить такое обновление в контейнере; его можно
> > перегенерировать — по крайней мере, я исходил из именно такого опыта
> > подготовки и эксплуатации контейнеров.
> Почему-то вы решили, что контейнеры можно перегенерировать. Это из обширного
> опыта использования контейнеров?

Ваша реплика заставила меня задуматься, о чём мы именно говорим. :) Слово "контейнер" я встречал в 3 смыслах:
* VZ-виртуалка без своего ядра;
* mainline-namespaces-окружение без своего ядра, которым пользуются как stateful недовиртуалкой, ставят туда пакеты, etc. Правда, там overlayfs обычно нет;
* системы на генерируемых образах, в которых обычно применяется overlayfs.

Вот последние обычно по построению можно свободно перегенерировать; по крайней мере, нижний их слой с системой. Это следует из того, что ОС свободная. А зачем они иначе нужны вообще?
Comment 5 Arseny Maslennikov 2024-05-31 00:46:18 MSK
(In reply to Vitaly Lipatov from comment #3)
> (Ответ для Arseny Maslennikov на комментарий #1)
> > 2) Если у кого-либо достаточно свободного времени отлаживать процедуру на
> > union FS и ответственно её поддерживать в отчуждаемом от автора виде —
> > patches welcome.
> Не понимаю, что такое «в отчуждаемом от автора виде».

Бывает такое ПО, которое хорошо и надёжно работает только у своего автора или в его непосредственном присутствии, а иначе начинает ломаться и кривляться. Вот его применение фактически не отчуждаемо от автора (как бы там ни было юридически).

Любой программный продукт (абстрактно) отличается от не-продукта в т. ч. тем, что его можно использовать без присутствия автора.
Comment 6 Arseny Maslennikov 2024-05-31 00:48:38 MSK
> > Как минимум, например, на каскадной ФС в общем случае должно быть нельзя сделать `mv --exchange`, если один из аргументов не на верхнем слое.
> Это хорошее соображение, но надеюсь, что это не просто предположение.
> 
> Жаль, что мне сломали возможность обновить десятки систем с p10.

Какой-то алгоритм апгрейда для каскадных ФС, вероятно, возможен; там не будет mv --exchange, и, очевидно, значительно повысятся требования к месту на диске (и надо будет хорошо обрабатывать ENOSPC). Не берусь судить, насколько он совпадёт с алгоритмом для R/W FS, или сработает ли наивное `cp -Tax`, или можно ли наживую в верхнем слое заменить dentry с каталогом на совсем другую dentry. Как обычно: если это для вас ценно, то вы можете исследовать тему и его реализовать (или найти кого-то, кто это сделает). Возражать против этого не буду :)