Обход каталога NFS: короткий READDIR-ответ не означает конец списка
Фотография конкретного исполнения не приложена.
Большой каталог читается несколькими READDIR-обменами. Для продолжения используются серверные cookie и verifier. Их нельзя заменять порядковым номером строки из локального списка: это другая модель идентификации позиции.
Первый запрос начинает с нулевого cookie, а последующие используют значения из прежнего ответа. Cookieverf связывает продолжение с соответствующим состоянием каталога. Если verifier больше не допустим, предусмотрена ошибка. Простая повторная отправка старой позиции после изменения серверного состояния не гарантирует корректного продолжения.
Сервер вправе вернуть меньше данных, чем позволяет maxcount. Завершение определяется eof, а не только размером порции. Если каталог меняется между запросами, нужно учитывать правила согласованности и валидации кэша. Один сетевой обход сам по себе не создаёт произвольный атомарный архив меняющейся директории.
В приёмке проверяют каталог больше одного ответа, небольшие порции и изменения во время обхода. Выявляют пропуски, повторы и корректную реакцию на verifier. Для резервирования определяют, как приложение получает требуемую согласованность. Успешное чтение последней полученной порции ещё не доказывает полноту списка без явного завершения и проверки выбранного сценария.
Основание — Numbered RFC8881 NFSv4.1, RFC7862 NFSv4.2, RFC8276 xattrs and RFC9289 RPC-with-TLS; applicability scoped per task, разделы RFC8881 18.23 READDIR; 10.8.2 Directory Caching. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — указанные номерные RFC NFS/RPC. Возможности NFSv4.1, NFSv4.2 и дополнительных расширений разделены; их фактическая поддержка сервером и клиентом не подтверждалась. Монтирование, чтение рабочих файлов, запись и восстановление состояния не выполнялись.
Запросы отправляются на наш e-mail из вашей почтовой программы.
