Концепт режима сохранения в модуль

В WHDELL сначала командой load сначала нахожу тень потом командой rm удаляю этоту тень
А в dropfilter не пробовал.

Это я понял. Я предлагаю обойтись вообще без WHDELL. Сделать все только с toxzm. Достаточно ли будет этого? Или есть кейс который возможности toxzm не перекрывают?

Основной код то всего ничего

WHDELL() {
find $SRC -name ‘.wh.*’ | while read WHF
do
F=$(echo $WHF | sed s/.wh.//g)
FS=$( find “$F” -print 2>/dev/null )
if [ -n “$FS” ] ; then
rm -rf $WHF
fi
done
}

Остальное вывод логов
При удалении теней с образа aufs удалять надо два раза
Сначала появятся тени теней. После второго удаления тени исчезают

Но монтирование ведь надо менять

Мы с вами на разных языках похоже. Весь ваш WHDELL нужен вам только потому, что вы монтируете так

А без этого в mount модулях нет теней. Нет проблемы и ничего менять не нужно.
Тени есть в copy модулях и это решает проблему их отсутствия в моунт модулях. Есть ли хоть какой-то кейс который получится обойти с вашим монтированием и WHDELL, но нельзя обойти с toxzm? До тех пор пока Вы такой кейс не предложите я не буду менять способ монтирования, потому, что я такого кейса пока не вижу.

У меня проблем с чистым mount нет. Просто сейчас вот никаких нет
Не вижу смысла в его замене
Ну так и закончим наверно обсуждение.

То есть нет такого кейса?

Извините за бестолковость но что то о кейсе не понял.

Вот ваше монтирование

mount -t aufs -o br:$SRC=rw:${AUFS}-bundle=ro+wh aufs $AUFS

Конфиги модулей

XZM0=mac-dc0ea1fbbb19.xzm
MODE0=‘mount’
REBUILD0=‘yes’

XZM1=wh.xzm
MODE1=‘copy’
REBUILD1=‘yes’
ADDFILTER1=’.wh.’

А тени то откуда будут копироваться в модуль XZM1
Первая запись с /memory/changes и там тени есть

Вторая запись вероятно с $AUFS
А там уже теней нет
И запись ${AUFS}-bundle=ro+wh вроде как не помогает

Тени в ${AUFS} есть когда монтирование

mount -t aufs -o shwh,br:$SRC=rw:${AUFS}-bundle=ro aufs $AUFS

Или тени в XZM1 и во второй и далее записей будут копироваться с /memory/changes ?

Так мне тени в ауфс и не нужны. Первый модуль собирается из ауфс собранной из старого модуля и /memory/changes. В него тени не попадают, потому что не позволяют параметры монтирования.
А второй модуль в режиме copy и он собирается не из aufs, а из /memory/changes напрямую и в него попадают все тени которые есть в /memory/chanages на момент сборки. Но не попадают другие файлы, потому что не подходят под фильтр ‘.wh.’. Я из /memory/changes не удаляю ничего и сколько бы секций не собиралось им всем достанется нетронутый /memory/changes.

То есть еще раз, если модуль был смонтирован при старте, то он пересобирается из ауфс, а если скопирован то из changes. Ауфс всегда новая, для каждого пересобираемого модуля. /memory/changes всегда неизменный для каждого пересобираемого модуля.

Другими словами существует ли в природе такая ситуация когда с вашим вариантом будет работать корректно, а с toxzm - нет.

Однако я нашел автора вашей тенеудалялки :slight_smile:
http://forum.puppyrus.org/index.php?topic=16558.msg165016#msg165016

Тут вероятно вопрос сможет ли toxzm блокировать тени в XZM0 через DROPFILTER0
Но зачем тогда тени в $AUFS когда их надо будет потом блокировать ???
Вроде действительно бессмыслица какая то. И ничего хорошего тут вероятно не будет.
Т к вас все же как бы комбинированный режим то назвать его допустим mount-copy
У меня же чистый mount. И назвать его проcто mount
И для каждого режима свой вариант монтирования
Так можно сделать ?

Не нужно этого делать в XZM0 не будет теней, так как их нет в точке монтирования ауфс, которая и пакуется. Или вы тут про свой вариант монтирования?

Думаю нет. После вашего WHDELL уже нет чистого /memory/changes.

Но /memory/changes WHDELL не чистит. Это проверено отсутствием логов при первом запуске
В первом варианте WHDELL чистила /memory/changes
В последнем я это исправил

То есть /memory/changes это ro слой, а поверх есть еще rw?

Запускаю его из стр 146 из shutdown-uird.sh

	if [ -f "$SAVETOMODULENAME" -a "$MODE" = "mount" ]; then
		echolog "Old module exists, we have to concatenate it"
		AUFS=/tmp/aufs
		mkdir -p $AUFS ${AUFS}-bundle
		mount -o loop "$SAVETOMODULENAME" ${AUFS}-bundle
		mount -t aufs -o shwh,br:$SRC=rw:${AUFS}-bundle=ro aufs $AUFS 
		[ $? == 0 ] && SRC=$AUFS
                    WHDELL
                    WHDELL
	fi

Ну обозвать режим допустим mount2, тогда первая строка будет

if [ -f “$SAVETOMODULENAME” -a “$MODE” = “mount2” ]; then

А “$MODE” = “mount” это уже будет ваше монтирования

Особого смысла так и не вижу, но и мешать по идее не должно если сделать отдельный MODE под это дело. Например MODE0=mount+wh.
Нужно только удостовериться, что не портит /memory/changes иначе остальное сломает.

Если работает WHDELL то пишутся логи в /memory/layer-base/0/optional/whtoxzm.log
При таком запуске логов не было
Так что точно не чистит /memory/changes. Т к там зависших теней и быть не должно и чистить нечего

Как это доказывает что WHDELL удаляя тени из AUFS не удаляет их из /memory/changes. Нужно менять строку монтирования, так чтоб /memory/changes был ro, поверх него пустая папка rw, которая и будет аккумулировать изменения в aufs. Как-то так.

$AUFS это образ от /memory/changes и прежний файл сохранения
Особо не разбирался.
А где здесь /memory/changes

mount -t aufs -o shwh,br:$SRC=rw:${AUFS}-bundle=ro aufs $AUFS

Вот он.