В 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 - нет.
Однако я нашел автора вашей тенеудалялки
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
Вот он.