OSDN Git Service

orangefs: posix open permission checking...
authorMike Marshall <hubcap@omnibond.com>
Tue, 26 Nov 2019 17:39:37 +0000 (12:39 -0500)
committerMike Marshall <hubcap@omnibond.com>
Wed, 4 Dec 2019 13:52:55 +0000 (08:52 -0500)
commitf9bbb68233aa5bd5ef238bd3532fddf92fa1b53c
tree4aeb26c8576aba66f2e479766a4c00806cb3f5f1
parenta99d8080aaf358d5d23581244e5da23b35e340b9
orangefs: posix open permission checking...

Orangefs has no open, and orangefs checks file permissions
on each file access. Posix requires that file permissions
be checked on open and nowhere else. Orangefs-through-the-kernel
needs to seem posix compliant.

The VFS opens files, even if the filesystem provides no
method. We can see if a file was successfully opened for
read and or for write by looking at file->f_mode.

When writes are flowing from the page cache, file is no
longer available. We can trust the VFS to have checked
file->f_mode before writing to the page cache.

The mode of a file might change between when it is opened
and IO commences, or it might be created with an arbitrary mode.

We'll make sure we don't hit EACCES during the IO stage by
using UID 0. Some of the time we have access without changing
to UID 0 - how to check?

Signed-off-by: Mike Marshall <hubcap@omnibond.com>
fs/orangefs/file.c
fs/orangefs/inode.c
fs/orangefs/orangefs-kernel.h