mdbx: workaround for encryptfs's copy_file_range() bug(s) (backport).

Выяснилось что утилита `mdbx_copy` и функции `mdbx_env_copy()` могут
создавать ПРОБЛЕМЫ если целевой файл расположен в encryptfs (такая
файловая система в Linux).

При этом может быть четыре исхода в зависимости от версии ядра и
положения звезд на небе:
 - всё хорошо;
 - плохие данные в копии без возврата ошибок;
 - ошибка EINVAL(22) при копировании;
 - oops или зависание ядра, отвал смонтированной encryptfs и т.п.

В текущем понимании, причина обусловлена ошибой в коде fs, которая
проявляется при использовании системного вызова `copy_file_range`.
This commit is contained in:
Леонид Юрьев (Leonid Yuriev)
2022-10-22 01:55:19 +03:00
parent 1bd0eb35bc
commit 471e854551
2 changed files with 9 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ Fixes:
- Fixed builds with older `stdatomic.h` versions,
where the `ATOMIC_*_LOCK_FREE` macros mistakenly redefined using functions (backport).
- Added workaround for `mremap()` defect to avoid assertion failure (backport).
- Workaround for `encryptfs` bug(s) in the `copy_file_range` implementation.
## v0.11.12 (Эребуни) at 2022-10-12