diff options
author | Yehuda Sadeh <yehuda@hq.newdream.net> | 2010-04-06 18:14:15 -0400 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-10-20 18:37:28 -0400 |
commit | 3d14c5d2b6e15c21d8e5467dc62d33127c23a644 (patch) | |
tree | 7d123c47847df9d1e865b6b78dc7da3fe739b704 /fs/ceph/ceph_fs.c | |
parent | ae1533b62b3369e6ae32338f4a77d64d0e88f676 (diff) |
ceph: factor out libceph from Ceph file system
This factors out protocol and low-level storage parts of ceph into a
separate libceph module living in net/ceph and include/linux/ceph. This
is mostly a matter of moving files around. However, a few key pieces
of the interface change as well:
- ceph_client becomes ceph_fs_client and ceph_client, where the latter
captures the mon and osd clients, and the fs_client gets the mds client
and file system specific pieces.
- Mount option parsing and debugfs setup is correspondingly broken into
two pieces.
- The mon client gets a generic handler callback for otherwise unknown
messages (mds map, in this case).
- The basic supported/required feature bits can be expanded (and are by
ceph_fs_client).
No functional change, aside from some subtle error handling cases that got
cleaned up in the refactoring process.
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/ceph_fs.c')
-rw-r--r-- | fs/ceph/ceph_fs.c | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/fs/ceph/ceph_fs.c b/fs/ceph/ceph_fs.c deleted file mode 100644 index 3ac6cc7c1156..000000000000 --- a/fs/ceph/ceph_fs.c +++ /dev/null | |||
@@ -1,72 +0,0 @@ | |||
1 | /* | ||
2 | * Some non-inline ceph helpers | ||
3 | */ | ||
4 | #include "types.h" | ||
5 | |||
6 | /* | ||
7 | * return true if @layout appears to be valid | ||
8 | */ | ||
9 | int ceph_file_layout_is_valid(const struct ceph_file_layout *layout) | ||
10 | { | ||
11 | __u32 su = le32_to_cpu(layout->fl_stripe_unit); | ||
12 | __u32 sc = le32_to_cpu(layout->fl_stripe_count); | ||
13 | __u32 os = le32_to_cpu(layout->fl_object_size); | ||
14 | |||
15 | /* stripe unit, object size must be non-zero, 64k increment */ | ||
16 | if (!su || (su & (CEPH_MIN_STRIPE_UNIT-1))) | ||
17 | return 0; | ||
18 | if (!os || (os & (CEPH_MIN_STRIPE_UNIT-1))) | ||
19 | return 0; | ||
20 | /* object size must be a multiple of stripe unit */ | ||
21 | if (os < su || os % su) | ||
22 | return 0; | ||
23 | /* stripe count must be non-zero */ | ||
24 | if (!sc) | ||
25 | return 0; | ||
26 | return 1; | ||
27 | } | ||
28 | |||
29 | |||
30 | int ceph_flags_to_mode(int flags) | ||
31 | { | ||
32 | int mode; | ||
33 | |||
34 | #ifdef O_DIRECTORY /* fixme */ | ||
35 | if ((flags & O_DIRECTORY) == O_DIRECTORY) | ||
36 | return CEPH_FILE_MODE_PIN; | ||
37 | #endif | ||
38 | if ((flags & O_APPEND) == O_APPEND) | ||
39 | flags |= O_WRONLY; | ||
40 | |||
41 | if ((flags & O_ACCMODE) == O_RDWR) | ||
42 | mode = CEPH_FILE_MODE_RDWR; | ||
43 | else if ((flags & O_ACCMODE) == O_WRONLY) | ||
44 | mode = CEPH_FILE_MODE_WR; | ||
45 | else | ||
46 | mode = CEPH_FILE_MODE_RD; | ||
47 | |||
48 | #ifdef O_LAZY | ||
49 | if (flags & O_LAZY) | ||
50 | mode |= CEPH_FILE_MODE_LAZY; | ||
51 | #endif | ||
52 | |||
53 | return mode; | ||
54 | } | ||
55 | |||
56 | int ceph_caps_for_mode(int mode) | ||
57 | { | ||
58 | int caps = CEPH_CAP_PIN; | ||
59 | |||
60 | if (mode & CEPH_FILE_MODE_RD) | ||
61 | caps |= CEPH_CAP_FILE_SHARED | | ||
62 | CEPH_CAP_FILE_RD | CEPH_CAP_FILE_CACHE; | ||
63 | if (mode & CEPH_FILE_MODE_WR) | ||
64 | caps |= CEPH_CAP_FILE_EXCL | | ||
65 | CEPH_CAP_FILE_WR | CEPH_CAP_FILE_BUFFER | | ||
66 | CEPH_CAP_AUTH_SHARED | CEPH_CAP_AUTH_EXCL | | ||
67 | CEPH_CAP_XATTR_SHARED | CEPH_CAP_XATTR_EXCL; | ||
68 | if (mode & CEPH_FILE_MODE_LAZY) | ||
69 | caps |= CEPH_CAP_FILE_LAZYIO; | ||
70 | |||
71 | return caps; | ||
72 | } | ||