diff options
| -rw-r--r-- | fs/ceph/ceph_fs.h | 50 | ||||
| -rw-r--r-- | fs/ceph/ceph_strings.c | 23 | ||||
| -rw-r--r-- | fs/ceph/messenger.c | 12 | ||||
| -rw-r--r-- | fs/ceph/messenger.h | 4 | ||||
| -rw-r--r-- | fs/ceph/msgr.h | 1 | ||||
| -rw-r--r-- | fs/ceph/rados.h | 23 |
6 files changed, 91 insertions, 22 deletions
diff --git a/fs/ceph/ceph_fs.h b/fs/ceph/ceph_fs.h index 8b194c6ef7d3..715e39ce517a 100644 --- a/fs/ceph/ceph_fs.h +++ b/fs/ceph/ceph_fs.h | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | * Ceph release version | 19 | * Ceph release version |
| 20 | */ | 20 | */ |
| 21 | #define CEPH_VERSION_MAJOR 0 | 21 | #define CEPH_VERSION_MAJOR 0 |
| 22 | #define CEPH_VERSION_MINOR 19 | 22 | #define CEPH_VERSION_MINOR 20 |
| 23 | #define CEPH_VERSION_PATCH 0 | 23 | #define CEPH_VERSION_PATCH 0 |
| 24 | 24 | ||
| 25 | #define _CEPH_STRINGIFY(x) #x | 25 | #define _CEPH_STRINGIFY(x) #x |
| @@ -36,7 +36,7 @@ | |||
| 36 | * client-facing protocol. | 36 | * client-facing protocol. |
| 37 | */ | 37 | */ |
| 38 | #define CEPH_OSD_PROTOCOL 8 /* cluster internal */ | 38 | #define CEPH_OSD_PROTOCOL 8 /* cluster internal */ |
| 39 | #define CEPH_MDS_PROTOCOL 9 /* cluster internal */ | 39 | #define CEPH_MDS_PROTOCOL 12 /* cluster internal */ |
| 40 | #define CEPH_MON_PROTOCOL 5 /* cluster internal */ | 40 | #define CEPH_MON_PROTOCOL 5 /* cluster internal */ |
| 41 | #define CEPH_OSDC_PROTOCOL 24 /* server/client */ | 41 | #define CEPH_OSDC_PROTOCOL 24 /* server/client */ |
| 42 | #define CEPH_MDSC_PROTOCOL 32 /* server/client */ | 42 | #define CEPH_MDSC_PROTOCOL 32 /* server/client */ |
| @@ -55,10 +55,11 @@ | |||
| 55 | */ | 55 | */ |
| 56 | #define CEPH_FEATURE_UID 1 | 56 | #define CEPH_FEATURE_UID 1 |
| 57 | #define CEPH_FEATURE_NOSRCADDR 2 | 57 | #define CEPH_FEATURE_NOSRCADDR 2 |
| 58 | #define CEPH_FEATURE_FLOCK 4 | ||
| 58 | 59 | ||
| 59 | #define CEPH_FEATURE_SUPPORTED_MON CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR | 60 | #define CEPH_FEATURE_SUPPORTED_MON CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR |
| 60 | #define CEPH_FEATURE_REQUIRED_MON CEPH_FEATURE_UID | 61 | #define CEPH_FEATURE_REQUIRED_MON CEPH_FEATURE_UID |
| 61 | #define CEPH_FEATURE_SUPPORTED_MDS CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR | 62 | #define CEPH_FEATURE_SUPPORTED_MDS CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR|CEPH_FEATURE_FLOCK |
| 62 | #define CEPH_FEATURE_REQUIRED_MDS CEPH_FEATURE_UID | 63 | #define CEPH_FEATURE_REQUIRED_MDS CEPH_FEATURE_UID |
| 63 | #define CEPH_FEATURE_SUPPORTED_OSD CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR | 64 | #define CEPH_FEATURE_SUPPORTED_OSD CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR |
| 64 | #define CEPH_FEATURE_REQUIRED_OSD CEPH_FEATURE_UID | 65 | #define CEPH_FEATURE_REQUIRED_OSD CEPH_FEATURE_UID |
| @@ -100,6 +101,8 @@ int ceph_file_layout_is_valid(const struct ceph_file_layout *layout); | |||
| 100 | #define CEPH_AUTH_NONE 0x1 | 101 | #define CEPH_AUTH_NONE 0x1 |
| 101 | #define CEPH_AUTH_CEPHX 0x2 | 102 | #define CEPH_AUTH_CEPHX 0x2 |
| 102 | 103 | ||
| 104 | #define CEPH_AUTH_UID_DEFAULT ((__u64) -1) | ||
| 105 | |||
| 103 | 106 | ||
| 104 | /********************************************* | 107 | /********************************************* |
| 105 | * message layer | 108 | * message layer |
| @@ -137,11 +140,27 @@ int ceph_file_layout_is_valid(const struct ceph_file_layout *layout); | |||
| 137 | #define CEPH_MSG_CLIENT_SNAP 0x312 | 140 | #define CEPH_MSG_CLIENT_SNAP 0x312 |
| 138 | #define CEPH_MSG_CLIENT_CAPRELEASE 0x313 | 141 | #define CEPH_MSG_CLIENT_CAPRELEASE 0x313 |
| 139 | 142 | ||
| 143 | /* pool ops */ | ||
| 144 | #define CEPH_MSG_POOLOP_REPLY 48 | ||
| 145 | #define CEPH_MSG_POOLOP 49 | ||
| 146 | |||
| 147 | |||
| 140 | /* osd */ | 148 | /* osd */ |
| 141 | #define CEPH_MSG_OSD_MAP 41 | 149 | #define CEPH_MSG_OSD_MAP 41 |
| 142 | #define CEPH_MSG_OSD_OP 42 | 150 | #define CEPH_MSG_OSD_OP 42 |
| 143 | #define CEPH_MSG_OSD_OPREPLY 43 | 151 | #define CEPH_MSG_OSD_OPREPLY 43 |
| 144 | 152 | ||
| 153 | /* pool operations */ | ||
| 154 | enum { | ||
| 155 | POOL_OP_CREATE = 0x01, | ||
| 156 | POOL_OP_DELETE = 0x02, | ||
| 157 | POOL_OP_AUID_CHANGE = 0x03, | ||
| 158 | POOL_OP_CREATE_SNAP = 0x11, | ||
| 159 | POOL_OP_DELETE_SNAP = 0x12, | ||
| 160 | POOL_OP_CREATE_UNMANAGED_SNAP = 0x21, | ||
| 161 | POOL_OP_DELETE_UNMANAGED_SNAP = 0x22, | ||
| 162 | }; | ||
| 163 | |||
| 145 | struct ceph_mon_request_header { | 164 | struct ceph_mon_request_header { |
| 146 | __le64 have_version; | 165 | __le64 have_version; |
| 147 | __le16 session_mon; | 166 | __le16 session_mon; |
| @@ -164,6 +183,31 @@ struct ceph_mon_statfs_reply { | |||
| 164 | struct ceph_statfs st; | 183 | struct ceph_statfs st; |
| 165 | } __attribute__ ((packed)); | 184 | } __attribute__ ((packed)); |
| 166 | 185 | ||
| 186 | const char *ceph_pool_op_name(int op); | ||
| 187 | |||
| 188 | struct ceph_mon_poolop { | ||
| 189 | struct ceph_mon_request_header monhdr; | ||
| 190 | struct ceph_fsid fsid; | ||
| 191 | __le32 pool; | ||
| 192 | __le32 op; | ||
| 193 | __le64 auid; | ||
| 194 | __le64 snapid; | ||
| 195 | __le32 name_len; | ||
| 196 | } __attribute__ ((packed)); | ||
| 197 | |||
| 198 | struct ceph_mon_poolop_reply { | ||
| 199 | struct ceph_mon_request_header monhdr; | ||
| 200 | struct ceph_fsid fsid; | ||
| 201 | __le32 reply_code; | ||
| 202 | __le32 epoch; | ||
| 203 | char has_data; | ||
| 204 | char data[0]; | ||
| 205 | } __attribute__ ((packed)); | ||
| 206 | |||
| 207 | struct ceph_mon_unmanaged_snap { | ||
| 208 | __le64 snapid; | ||
| 209 | } __attribute__ ((packed)); | ||
| 210 | |||
| 167 | struct ceph_osd_getmap { | 211 | struct ceph_osd_getmap { |
| 168 | struct ceph_mon_request_header monhdr; | 212 | struct ceph_mon_request_header monhdr; |
| 169 | struct ceph_fsid fsid; | 213 | struct ceph_fsid fsid; |
diff --git a/fs/ceph/ceph_strings.c b/fs/ceph/ceph_strings.c index 8e4be6a80c62..78908301ff17 100644 --- a/fs/ceph/ceph_strings.c +++ b/fs/ceph/ceph_strings.c | |||
| @@ -10,7 +10,6 @@ const char *ceph_entity_type_name(int type) | |||
| 10 | case CEPH_ENTITY_TYPE_OSD: return "osd"; | 10 | case CEPH_ENTITY_TYPE_OSD: return "osd"; |
| 11 | case CEPH_ENTITY_TYPE_MON: return "mon"; | 11 | case CEPH_ENTITY_TYPE_MON: return "mon"; |
| 12 | case CEPH_ENTITY_TYPE_CLIENT: return "client"; | 12 | case CEPH_ENTITY_TYPE_CLIENT: return "client"; |
| 13 | case CEPH_ENTITY_TYPE_ADMIN: return "admin"; | ||
| 14 | case CEPH_ENTITY_TYPE_AUTH: return "auth"; | 13 | case CEPH_ENTITY_TYPE_AUTH: return "auth"; |
| 15 | default: return "unknown"; | 14 | default: return "unknown"; |
| 16 | } | 15 | } |
| @@ -45,6 +44,7 @@ const char *ceph_osd_op_name(int op) | |||
| 45 | case CEPH_OSD_OP_SETXATTRS: return "setxattrs"; | 44 | case CEPH_OSD_OP_SETXATTRS: return "setxattrs"; |
| 46 | case CEPH_OSD_OP_RESETXATTRS: return "resetxattrs"; | 45 | case CEPH_OSD_OP_RESETXATTRS: return "resetxattrs"; |
| 47 | case CEPH_OSD_OP_RMXATTR: return "rmxattr"; | 46 | case CEPH_OSD_OP_RMXATTR: return "rmxattr"; |
| 47 | case CEPH_OSD_OP_CMPXATTR: return "cmpxattr"; | ||
| 48 | 48 | ||
| 49 | case CEPH_OSD_OP_PULL: return "pull"; | 49 | case CEPH_OSD_OP_PULL: return "pull"; |
| 50 | case CEPH_OSD_OP_PUSH: return "push"; | 50 | case CEPH_OSD_OP_PUSH: return "push"; |
| @@ -174,3 +174,24 @@ const char *ceph_snap_op_name(int o) | |||
| 174 | } | 174 | } |
| 175 | return "???"; | 175 | return "???"; |
| 176 | } | 176 | } |
| 177 | |||
| 178 | const char *ceph_pool_op_name(int op) { | ||
| 179 | switch (op) { | ||
| 180 | case POOL_OP_CREATE: | ||
| 181 | return "create pool"; | ||
| 182 | case POOL_OP_DELETE: | ||
| 183 | return "delete pool"; | ||
| 184 | case POOL_OP_AUID_CHANGE: | ||
| 185 | return "change auid"; | ||
| 186 | case POOL_OP_CREATE_SNAP: | ||
| 187 | return "create snap"; | ||
| 188 | case POOL_OP_DELETE_SNAP: | ||
| 189 | return "delete snap"; | ||
| 190 | case POOL_OP_CREATE_UNMANAGED_SNAP: | ||
| 191 | return "create unmanaged snap"; | ||
| 192 | case POOL_OP_DELETE_UNMANAGED_SNAP: | ||
| 193 | return "delete unmanaged snap"; | ||
| 194 | default: | ||
| 195 | return "unknown"; | ||
| 196 | } | ||
| 197 | } | ||
diff --git a/fs/ceph/messenger.c b/fs/ceph/messenger.c index fe75ec7d8402..d18a544490f6 100644 --- a/fs/ceph/messenger.c +++ b/fs/ceph/messenger.c | |||
| @@ -39,18 +39,6 @@ static void queue_con(struct ceph_connection *con); | |||
| 39 | static void con_work(struct work_struct *); | 39 | static void con_work(struct work_struct *); |
| 40 | static void ceph_fault(struct ceph_connection *con); | 40 | static void ceph_fault(struct ceph_connection *con); |
| 41 | 41 | ||
| 42 | const char *ceph_name_type_str(int t) | ||
| 43 | { | ||
| 44 | switch (t) { | ||
| 45 | case CEPH_ENTITY_TYPE_MON: return "mon"; | ||
| 46 | case CEPH_ENTITY_TYPE_MDS: return "mds"; | ||
| 47 | case CEPH_ENTITY_TYPE_OSD: return "osd"; | ||
| 48 | case CEPH_ENTITY_TYPE_CLIENT: return "client"; | ||
| 49 | case CEPH_ENTITY_TYPE_ADMIN: return "admin"; | ||
| 50 | default: return "???"; | ||
| 51 | } | ||
| 52 | } | ||
| 53 | |||
| 54 | /* | 42 | /* |
| 55 | * nicely render a sockaddr as a string. | 43 | * nicely render a sockaddr as a string. |
| 56 | */ | 44 | */ |
diff --git a/fs/ceph/messenger.h b/fs/ceph/messenger.h index e56564f7e71c..4e5764c7fbc2 100644 --- a/fs/ceph/messenger.h +++ b/fs/ceph/messenger.h | |||
| @@ -49,10 +49,8 @@ struct ceph_connection_operations { | |||
| 49 | int *skip); | 49 | int *skip); |
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | extern const char *ceph_name_type_str(int t); | ||
| 53 | |||
| 54 | /* use format string %s%d */ | 52 | /* use format string %s%d */ |
| 55 | #define ENTITY_NAME(n) ceph_name_type_str((n).type), le64_to_cpu((n).num) | 53 | #define ENTITY_NAME(n) ceph_entity_type_name((n).type), le64_to_cpu((n).num) |
| 56 | 54 | ||
| 57 | struct ceph_messenger { | 55 | struct ceph_messenger { |
| 58 | struct ceph_entity_inst inst; /* my name+address */ | 56 | struct ceph_entity_inst inst; /* my name+address */ |
diff --git a/fs/ceph/msgr.h b/fs/ceph/msgr.h index 6baa8e4f8e7f..892a0298dfdf 100644 --- a/fs/ceph/msgr.h +++ b/fs/ceph/msgr.h | |||
| @@ -50,7 +50,6 @@ struct ceph_entity_name { | |||
| 50 | #define CEPH_ENTITY_TYPE_MDS 0x02 | 50 | #define CEPH_ENTITY_TYPE_MDS 0x02 |
| 51 | #define CEPH_ENTITY_TYPE_OSD 0x04 | 51 | #define CEPH_ENTITY_TYPE_OSD 0x04 |
| 52 | #define CEPH_ENTITY_TYPE_CLIENT 0x08 | 52 | #define CEPH_ENTITY_TYPE_CLIENT 0x08 |
| 53 | #define CEPH_ENTITY_TYPE_ADMIN 0x10 | ||
| 54 | #define CEPH_ENTITY_TYPE_AUTH 0x20 | 53 | #define CEPH_ENTITY_TYPE_AUTH 0x20 |
| 55 | 54 | ||
| 56 | #define CEPH_ENTITY_TYPE_ANY 0xFF | 55 | #define CEPH_ENTITY_TYPE_ANY 0xFF |
diff --git a/fs/ceph/rados.h b/fs/ceph/rados.h index fd56451a871f..8fcc023056c7 100644 --- a/fs/ceph/rados.h +++ b/fs/ceph/rados.h | |||
| @@ -101,8 +101,8 @@ struct ceph_pg_pool { | |||
| 101 | __le64 snap_seq; /* seq for per-pool snapshot */ | 101 | __le64 snap_seq; /* seq for per-pool snapshot */ |
| 102 | __le32 snap_epoch; /* epoch of last snap */ | 102 | __le32 snap_epoch; /* epoch of last snap */ |
| 103 | __le32 num_snaps; | 103 | __le32 num_snaps; |
| 104 | __le32 num_removed_snap_intervals; | 104 | __le32 num_removed_snap_intervals; /* if non-empty, NO per-pool snaps */ |
| 105 | __le64 uid; | 105 | __le64 auid; /* who owns the pg */ |
| 106 | } __attribute__ ((packed)); | 106 | } __attribute__ ((packed)); |
| 107 | 107 | ||
| 108 | /* | 108 | /* |
| @@ -208,6 +208,7 @@ enum { | |||
| 208 | /* read */ | 208 | /* read */ |
| 209 | CEPH_OSD_OP_GETXATTR = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_ATTR | 1, | 209 | CEPH_OSD_OP_GETXATTR = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_ATTR | 1, |
| 210 | CEPH_OSD_OP_GETXATTRS = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_ATTR | 2, | 210 | CEPH_OSD_OP_GETXATTRS = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_ATTR | 2, |
| 211 | CEPH_OSD_OP_CMPXATTR = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_ATTR | 3, | ||
| 211 | 212 | ||
| 212 | /* write */ | 213 | /* write */ |
| 213 | CEPH_OSD_OP_SETXATTR = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_ATTR | 1, | 214 | CEPH_OSD_OP_SETXATTR = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_ATTR | 1, |
| @@ -305,6 +306,22 @@ enum { | |||
| 305 | #define EOLDSNAPC ERESTART /* ORDERSNAP flag set; writer has old snapc*/ | 306 | #define EOLDSNAPC ERESTART /* ORDERSNAP flag set; writer has old snapc*/ |
| 306 | #define EBLACKLISTED ESHUTDOWN /* blacklisted */ | 307 | #define EBLACKLISTED ESHUTDOWN /* blacklisted */ |
| 307 | 308 | ||
| 309 | /* xattr comparison */ | ||
| 310 | enum { | ||
| 311 | CEPH_OSD_CMPXATTR_OP_NOP = 0, | ||
| 312 | CEPH_OSD_CMPXATTR_OP_EQ = 1, | ||
| 313 | CEPH_OSD_CMPXATTR_OP_NE = 2, | ||
| 314 | CEPH_OSD_CMPXATTR_OP_GT = 3, | ||
| 315 | CEPH_OSD_CMPXATTR_OP_GTE = 4, | ||
| 316 | CEPH_OSD_CMPXATTR_OP_LT = 5, | ||
| 317 | CEPH_OSD_CMPXATTR_OP_LTE = 6 | ||
| 318 | }; | ||
| 319 | |||
| 320 | enum { | ||
| 321 | CEPH_OSD_CMPXATTR_MODE_STRING = 1, | ||
| 322 | CEPH_OSD_CMPXATTR_MODE_U64 = 2 | ||
| 323 | }; | ||
| 324 | |||
| 308 | /* | 325 | /* |
| 309 | * an individual object operation. each may be accompanied by some data | 326 | * an individual object operation. each may be accompanied by some data |
| 310 | * payload | 327 | * payload |
| @@ -321,6 +338,8 @@ struct ceph_osd_op { | |||
| 321 | struct { | 338 | struct { |
| 322 | __le32 name_len; | 339 | __le32 name_len; |
| 323 | __le32 value_len; | 340 | __le32 value_len; |
| 341 | __u8 cmp_op; /* CEPH_OSD_CMPXATTR_OP_* */ | ||
| 342 | __u8 cmp_mode; /* CEPH_OSD_CMPXATTR_MODE_* */ | ||
| 324 | } __attribute__ ((packed)) xattr; | 343 | } __attribute__ ((packed)) xattr; |
| 325 | struct { | 344 | struct { |
| 326 | __u8 class_len; | 345 | __u8 class_len; |
