Файл NFS CREATE (перезаписать) = нулевой размер? - PullRequest
0 голосов
/ 19 сентября 2009

Я реализую NFS и almoste, но в разделе RFC 3.3.8 говорится об этом в описании:

Режим Один из непроверенных, охраняемых и эксклюзивных. UNCHECKED означает, что файл должен быть создан без проверки на наличие дубликата файла в том же каталог. В этом случае how.obj_attributes является sattr3 описание начальных атрибутов для файла. GUARDED указывает, что сервер должен проверять наличие дубликата файла перед выполнением создания и должен выполнить запрос с NFS3ERR_EXIST, если дубликат файла существует. Если файл не существует, Запрос выполняется, как описано для UNCHECKED. EXCLUSIVE указывает, что сервер должен следовать семантика эксклюзивного создания с использованием верификатора обеспечить эксклюзивное создание цели. Нет атрибутов может быть предоставлено в этом случае, так как сервер может использовать метаданные целевого файла для хранения createverf3 верификатор.

поэтому вопрос, если UNCHECKED - это режим, должен ли я просто установить длину файла в ноль или я должен оставить файл таким, какой он есть? и если это каталог, я должен удалить все содержимое?

1 Ответ

3 голосов
/ 19 сентября 2009

Я считаю, что идея CREATE с UNCHECKED состоит в том, чтобы применить семантику старого доброго системного вызова Unix creat, поэтому подразумевается усечение существующего содержимого файла (если оно есть). Однако я не могу найти все это четко в документах (!).

Попытка CREATE существующего каталога в любом случае является ошибкой - для этого есть отдельный MKDIR (в NFS 3 то же самое относится к специальным файлам, с MKNOD - - CREATE теперь для обычных, обычных, старых добрых файлов * только для 1013 *! -)

...