Логика name_to_handle_at () - PullRequest
       3

Логика name_to_handle_at ()

1 голос
/ 03 апреля 2012

Я не получаю много информации о новых системных вызовах name_to_handle_at () и open_to_handle_at (). Может ли кто-нибудь помочь мне здесь.

Спасибо

Правка. У меня просто есть

http://comments.gmane.org/gmane.linux.man/2158

Ответы [ 2 ]

2 голосов
/ 21 октября 2013

Эти функции полезны для записи серверов пространства пользователя.

Например, при реализации протокола NFS, который не имеет концепции «open» или дескриптора файла, но вместо этого полагается на постоянный идентификатор файла, функция name_to_handle_at может использоваться для генерации этого постоянного дескриптора в портативном устройстве. способ.

Затем он отправляется клиенту, который позже вернет его на сервер. Затем сервер может использовать open_to_handle_at для выполнения операции.

Можно спросить, как это лучше, чем просто отправить полное имя пути между клиентом и сервером. Количество опций:

  • Файловая система может использовать внутренние (более компактные) представления вместо имени файла (например, на основе inode).
  • При переходе от дескриптора к дескриптору файла, возможно, меньше работа должна быть сделана. (больше нет обхода пути)
  • В приведенном выше сценарии потребление ресурсов на сервере снижается (нет необходимости отслеживать дескрипторы открытых файлов на стороне сервера)
0 голосов
/ 03 апреля 2012

Я был бы склонен предположить, что эти функции необходимы для поддержки некоторых или всех функций *at(), добавленных в POSIX 2008, таких как openat():

#include <fcntl.h>

int openat(int fd, const char *path, int oflag, ...);

Функция openat() должна быть эквивалентна функции open(), за исключением случая, когда путь указывает относительный путь. В этом случае открываемый файл определяется относительно каталога, связанного с дескриптором файла fd вместо текущего рабочего каталога. Если дескриптор файла был открыт без O_SEARCH, функция должна проверить, разрешен ли поиск в каталоге, используя текущие разрешения каталога, лежащего в основе дескриптора файла. Если дескриптор файла был открыт с помощью O_SEARCH, функция не должна выполнять проверку.

Связанные функции включают в себя:

...