diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-20 01:10:28 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-20 01:10:28 -0400 |
| commit | e6625fa48e6580a74b7e700efd7e6463e282810b (patch) | |
| tree | fdb12c5ca073bd444d9d64dee3f8e34b323aebda | |
| parent | 47126d807ab1ef24e0f02dcca20883e275198fe2 (diff) | |
| parent | 38be7a79f7c99dd01425f19ef6cf744878b6a94b (diff) | |
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
| -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; |
