Шо там робить додаток справа десята. Коли ти ініціюєш файли через fallocate(), то ця функція не ініціалізує екстенти, а просто помічає кінець файла. Файлосистема далі сама займається ініціалізацією кожного екстента при першій спробі запису. Ініціалізація екстенту це забивання нулями в тому числі якщо що, і твоєму додатку все одно доведеться чекати увесь той час, просто не одним махом, а шматками на кожний екстент.nazar-pc: ↑ 23.08.2025 21:40Додаток не читає нічого того, що попередньо не записав, і пише дані максимально оптимальним для SSD чином. Тому ніякого запису нулями не відбувається на скільки-небудь суттєвому масштабі.
Щоб забивання нулями не відбувалось, людь вигадав опцію FALLOC_FL_NO_HIDE_STALE з приблизно тими ж побічними ефектами що і SetFileValidData.
Ось тут наприклад хтось скаржиться на те ж саме що і ти, тільки з іншої сторони
https://www.quora.com/How-can-one-pre-a ... ile-system
Відправлено через 7 хвилин 10 секунд:
А FALLOC_FL_NO_HIDE_STALE ставить всі екстенти в стан "ініціалізовано", але нулями не забиває. Таким чином додаток може почати читати попередньозаписані дані на диск. Власне, точно так само як і SetFileValidData. Ну не вигадали ще способу миттєво і без тих чи інших приколів створити на ФС пустий файл на терабайт. Всюди будуть свої "але".
Відправлено через 37 хвилин 56 секунд:
А щодо додатку, то ти впевнений що чекати ініціалізації в процесі роботи кращий варіант ніж разово ініціалізувати файл нормально? Це не надто позитивно пливає на швидкодію.