diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/ceph/ceph_fs.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/net/ceph/ceph_fs.c b/net/ceph/ceph_fs.c index a3a3a31d3c37..41466ccb972a 100644 --- a/net/ceph/ceph_fs.c +++ b/net/ceph/ceph_fs.c | |||
| @@ -36,16 +36,19 @@ int ceph_flags_to_mode(int flags) | |||
| 36 | if ((flags & O_DIRECTORY) == O_DIRECTORY) | 36 | if ((flags & O_DIRECTORY) == O_DIRECTORY) |
| 37 | return CEPH_FILE_MODE_PIN; | 37 | return CEPH_FILE_MODE_PIN; |
| 38 | #endif | 38 | #endif |
| 39 | if ((flags & O_APPEND) == O_APPEND) | ||
| 40 | flags |= O_WRONLY; | ||
| 41 | 39 | ||
| 42 | if ((flags & O_ACCMODE) == O_RDWR) | 40 | switch (flags & O_ACCMODE) { |
| 43 | mode = CEPH_FILE_MODE_RDWR; | 41 | case O_WRONLY: |
| 44 | else if ((flags & O_ACCMODE) == O_WRONLY) | ||
| 45 | mode = CEPH_FILE_MODE_WR; | 42 | mode = CEPH_FILE_MODE_WR; |
| 46 | else | 43 | break; |
| 44 | case O_RDONLY: | ||
| 47 | mode = CEPH_FILE_MODE_RD; | 45 | mode = CEPH_FILE_MODE_RD; |
| 48 | 46 | break; | |
| 47 | case O_RDWR: | ||
| 48 | case O_ACCMODE: /* this is what the VFS does */ | ||
| 49 | mode = CEPH_FILE_MODE_RDWR; | ||
| 50 | break; | ||
| 51 | } | ||
| 49 | #ifdef O_LAZY | 52 | #ifdef O_LAZY |
| 50 | if (flags & O_LAZY) | 53 | if (flags & O_LAZY) |
| 51 | mode |= CEPH_FILE_MODE_LAZY; | 54 | mode |= CEPH_FILE_MODE_LAZY; |
