Что вы там такое наворотили?! У меня в меньше 500 строк,
инициализация, поиск блока по своему тегу, контрольные суммы. Нужна
структура - присваиваем тег, по нему и ищем при случае. Не файл
целиком, а блок данных/параметров. Есть тонкости типа ограничения
размера и другого, но всё поправимо. При чтении тега ищем последнее
валидное вхождение. Использует SPL. В чём не уверен -
что при заполнении сектора все теги перенесутся в новый сектор, если тегов несколько.
eemem_.zip
Ещё в сторону lfs(The little filesystem) посмотрите.
Для сущности (файла, структуры, блока параметров), есть две операции: чтение, запись. Сущность нужно идентифицировать, отличать одну от другой; для привычных файлов - имя, путь+имя. При чтении параметров, если не найдена - грузим "по умолчанию". При записи - пишем на свободное место. Проверяем заполненность накопителя, при необходимости переносим в новый сектор для освобождения предыдущего и его стирания.