"отсутствует блок данных" при преобразовании ext4 в btrfs

  1. Переменная progressизмеряет стоимость операций, выполняемых под блокировками, и позволяет не удерживать эти блокировки слишком долго. Максимум через каждые 32 вызова pte_noneили 4 вызова copy_one_pte(, что дорого ), или их комбинацию, функция проверяет, требуется ли перепланирование или запрашиваются ли блокировки в другом месте; если это так, он освобождает блокировки и разрешает изменение расписания. Функция продолжает работу с того места, где остановилась, благодаря переходу на again.

  2. Вызов unmap не отменяет отображение исходного PTE в исходном процессе, он отменяет действие строки src_pte = pte_offset_map(src_pmd, addr);в начале функции.

4
09.07.2020, 16:16
2 ответа

Это была ошибка

Now we have pinned down the bug, it's a bit overflow for multiplying unsigned int.

См. также:

В качестве обходного пути вы можете перед преобразованием изменить размер файловой системы на что-то меньшее или большее.

4
18.03.2021, 23:20

Ошибка присутствует в btrfs -progs версии 5.7 (по умолчанию, например. Ubuntu 20.10 )и встречается и в других размерах (здесь у меня есть диск 457,26 ГиБ ). Обновление до более поздних версий btrfs -progs (, например, 5.10, из Ubuntu 21.04 )устраняет проблему.

РЕДАКТИРОВАТЬ :Это не рекомендуется в качестве производственного решения (kernel/btrfs -несоответствие версии progs ), но это может помочь вам выйти из сложной ситуации. Лучше использовать систему восстановления, в которой уже есть новая версия.

0
07.05.2021, 09:28

Теги

Похожие вопросы