diff options
Diffstat (limited to 'fs/exofs/common.h')
| -rw-r--r-- | fs/exofs/common.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/fs/exofs/common.h b/fs/exofs/common.h index b1b178e61718..f0d520312d8b 100644 --- a/fs/exofs/common.h +++ b/fs/exofs/common.h | |||
| @@ -55,6 +55,8 @@ | |||
| 55 | /* exofs Application specific page/attribute */ | 55 | /* exofs Application specific page/attribute */ |
| 56 | # define EXOFS_APAGE_FS_DATA (OSD_APAGE_APP_DEFINED_FIRST + 3) | 56 | # define EXOFS_APAGE_FS_DATA (OSD_APAGE_APP_DEFINED_FIRST + 3) |
| 57 | # define EXOFS_ATTR_INODE_DATA 1 | 57 | # define EXOFS_ATTR_INODE_DATA 1 |
| 58 | # define EXOFS_ATTR_INODE_FILE_LAYOUT 2 | ||
| 59 | # define EXOFS_ATTR_INODE_DIR_LAYOUT 3 | ||
| 58 | 60 | ||
| 59 | /* | 61 | /* |
| 60 | * The maximum number of files we can have is limited by the size of the | 62 | * The maximum number of files we can have is limited by the size of the |
| @@ -206,4 +208,41 @@ enum { | |||
| 206 | (((name_len) + offsetof(struct exofs_dir_entry, name) + \ | 208 | (((name_len) + offsetof(struct exofs_dir_entry, name) + \ |
| 207 | EXOFS_DIR_ROUND) & ~EXOFS_DIR_ROUND) | 209 | EXOFS_DIR_ROUND) & ~EXOFS_DIR_ROUND) |
| 208 | 210 | ||
| 211 | /* | ||
| 212 | * The on-disk (optional) layout structure. | ||
| 213 | * sits in an EXOFS_ATTR_INODE_FILE_LAYOUT or EXOFS_ATTR_INODE_DIR_LAYOUT | ||
| 214 | * attribute, attached to any inode, usually to a directory. | ||
| 215 | */ | ||
| 216 | |||
| 217 | enum exofs_inode_layout_gen_functions { | ||
| 218 | LAYOUT_MOVING_WINDOW = 0, | ||
| 219 | LAYOUT_IMPLICT = 1, | ||
| 220 | }; | ||
| 221 | |||
| 222 | struct exofs_on_disk_inode_layout { | ||
| 223 | __le16 gen_func; /* One of enum exofs_inode_layout_gen_functions */ | ||
| 224 | __le16 pad; | ||
| 225 | union { | ||
| 226 | /* gen_func == LAYOUT_MOVING_WINDOW (default) */ | ||
| 227 | struct exofs_layout_sliding_window { | ||
| 228 | __le32 num_devices; /* first n devices in global-table*/ | ||
| 229 | } sliding_window __packed; | ||
| 230 | |||
| 231 | /* gen_func == LAYOUT_IMPLICT */ | ||
| 232 | struct exofs_layout_implict_list { | ||
| 233 | struct exofs_dt_data_map data_map; | ||
| 234 | /* Variable array of size data_map.cb_num_comps. These | ||
| 235 | * are device indexes of the devices in the global table | ||
| 236 | */ | ||
| 237 | __le32 dev_indexes[]; | ||
| 238 | } implict __packed; | ||
| 239 | }; | ||
| 240 | } __packed; | ||
| 241 | |||
| 242 | static inline size_t exofs_on_disk_inode_layout_size(unsigned max_devs) | ||
| 243 | { | ||
| 244 | return sizeof(struct exofs_on_disk_inode_layout) + | ||
| 245 | max_devs * sizeof(__le32); | ||
| 246 | } | ||
| 247 | |||
| 209 | #endif /*ifndef __EXOFS_COM_H__*/ | 248 | #endif /*ifndef __EXOFS_COM_H__*/ |
