- Timestamp:
- 03/09/10 11:16:04 (3 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/Orange-Elaine-Distr-Dir-Branch/src/proto/pvfs2-attr.h
r7968 r8255 56 56 #define PVFS_ATTR_DIR_DIRENT_COUNT (1 << 19) 57 57 #define PVFS_ATTR_DIR_HINT (1 << 20) 58 #define PVFS_ATTR_DIR_DIRENT_FILES (1 << 21) 58 59 #define PVFS_ATTR_DIR_ALL \ 59 (PVFS_ATTR_DIR_DIRENT_COUNT | PVFS_ATTR_DIR_HINT )60 (PVFS_ATTR_DIR_DIRENT_COUNT | PVFS_ATTR_DIR_HINT | PVFS_ATTR_DIR_DIRENT_FILES) 60 61 61 62 /* attributes that do not change once set */ … … 183 184 struct PVFS_directory_attr_s 184 185 { 186 /* list of files to hold directory entries */ 187 PVFS_handle *dirent_file_array; 188 uint32_t dirent_file_count; 185 189 PVFS_size dirent_count; 186 190 PVFS_directory_hint hint; … … 190 194 #ifdef __PINT_REQPROTO_ENCODE_FUNCS_C 191 195 #define encode_PVFS_directory_attr(pptr, x) do { \ 196 int dirent_files_i;\ 197 encode_uint32_t(pptr, &(x)->dirent_file_count);\ 198 encode_skip4(pptr,);\ 199 for (dirent_files_i=0; dirent_files_i<(x)->dirent_file_count; dirent_files_i++)\ 200 encode_PVFS_handle(pptr, &(x)->dirent_file_array[dirent_files_i]);\ 192 201 encode_PVFS_size(pptr, &(x)->dirent_count);\ 193 202 encode_PVFS_directory_hint(pptr, &(x)->hint);\ 194 203 } while(0) 195 204 #define decode_PVFS_directory_attr(pptr, x) do { \ 205 int dirent_files_i;\ 206 decode_uint32_t(pptr, &(x)->dirent_file_count);\ 207 decode_skip4(pptr,);\ 208 (x)->dirent_file_array = decode_malloc((x)->dirent_file_count \ 209 * sizeof(*(x)->dirent_file_array));\ 210 for (dirent_files_i=0; dirent_files_i<(x)->dirent_file_count; dirent_files_i++)\ 211 { \ 212 decode_PVFS_handle(pptr, &(x)->dirent_file_array[dirent_files_i]);\ 213 } \ 196 214 decode_PVFS_size(pptr, &(x)->dirent_count);\ 197 215 decode_PVFS_directory_hint(pptr, &(x)->hint);\ 198 216 } while(0) 199 217 #endif 218 200 219 201 220 /* attributes specific to symlinks */ … … 261 280 encode_PVFS_symlink_attr(pptr, &(x)->u.sym); \ 262 281 if (((x)->mask & PVFS_ATTR_DIR_DIRENT_COUNT) || \ 282 ((x)->mask & PVFS_ATTR_DIR_DIRENT_FILES) || \ 263 283 ((x)->mask & PVFS_ATTR_DIR_HINT)) \ 264 284 encode_PVFS_directory_attr(pptr, &(x)->u.dir); \ … … 291 311 decode_PVFS_symlink_attr(pptr, &(x)->u.sym); \ 292 312 if (((x)->mask & PVFS_ATTR_DIR_DIRENT_COUNT) || \ 313 ((x)->mask & PVFS_ATTR_DIR_DIRENT_FILES) || \ 293 314 ((x)->mask & PVFS_ATTR_DIR_HINT)) \ 294 315 decode_PVFS_directory_attr(pptr, &(x)->u.dir); \ … … 300 321 */ 301 322 #define extra_size_PVFS_object_attr_dir (PVFS_REQ_LIMIT_DIST_BYTES + \ 302 PVFS_REQ_LIMIT_DIST_NAME + roundup8(sizeof(PVFS_directory_attr))) 323 PVFS_REQ_LIMIT_DIST_NAME + roundup8(sizeof(PVFS_directory_attr)) + \ 324 PVFS_REQ_LIMIT_HANDLES_COUNT * sizeof(PVFS_handle)) 325 /*TODO: PVFS_REQ_LIMIT_HANDLES_COUNT really needs to change to something 326 indicating the max number of servers */ 303 327 304 328 /* room for distribution, stuffed_size, dfile array, and mirror_dfile_array */
