O_DIRECTORY is not part of any Hurd RPC protocol. The implementation in __hurd_file_name_lookup is the only place that's intended to grok it. The problem seems to be in the server dir_lookup code that is skipping leading slashes. I really don't know why that is there at all. If it serves some valid purpose, then at least it should be:
while (path[0] == '/' && path[1] != '\0') ++path; Thanks, Roland