Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: ceph: fix file mode calculation
This commit is contained in:
commit
e6625fa48e
|
@ -36,16 +36,19 @@ int ceph_flags_to_mode(int flags)
|
||||||
if ((flags & O_DIRECTORY) == O_DIRECTORY)
|
if ((flags & O_DIRECTORY) == O_DIRECTORY)
|
||||||
return CEPH_FILE_MODE_PIN;
|
return CEPH_FILE_MODE_PIN;
|
||||||
#endif
|
#endif
|
||||||
if ((flags & O_APPEND) == O_APPEND)
|
|
||||||
flags |= O_WRONLY;
|
|
||||||
|
|
||||||
if ((flags & O_ACCMODE) == O_RDWR)
|
switch (flags & O_ACCMODE) {
|
||||||
mode = CEPH_FILE_MODE_RDWR;
|
case O_WRONLY:
|
||||||
else if ((flags & O_ACCMODE) == O_WRONLY)
|
|
||||||
mode = CEPH_FILE_MODE_WR;
|
mode = CEPH_FILE_MODE_WR;
|
||||||
else
|
break;
|
||||||
|
case O_RDONLY:
|
||||||
mode = CEPH_FILE_MODE_RD;
|
mode = CEPH_FILE_MODE_RD;
|
||||||
|
break;
|
||||||
|
case O_RDWR:
|
||||||
|
case O_ACCMODE: /* this is what the VFS does */
|
||||||
|
mode = CEPH_FILE_MODE_RDWR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
#ifdef O_LAZY
|
#ifdef O_LAZY
|
||||||
if (flags & O_LAZY)
|
if (flags & O_LAZY)
|
||||||
mode |= CEPH_FILE_MODE_LAZY;
|
mode |= CEPH_FILE_MODE_LAZY;
|
||||||
|
|
Loading…
Reference in New Issue