Show
Ignore:
Timestamp:
03/09/10 11:16:04 (3 years ago)
Author:
elaine
Message:

*** empty log message ***

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/Orange-Elaine-Distr-Dir-Branch/src/proto/pvfs2-attr.h

    r7968 r8255  
    5656#define PVFS_ATTR_DIR_DIRENT_COUNT         (1 << 19) 
    5757#define PVFS_ATTR_DIR_HINT                  (1 << 20) 
     58#define PVFS_ATTR_DIR_DIRENT_FILES         (1 << 21) 
    5859#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) 
    6061 
    6162/* attributes that do not change once set */ 
     
    183184struct PVFS_directory_attr_s 
    184185{ 
     186    /* list of files to hold directory entries */ 
     187    PVFS_handle *dirent_file_array; 
     188    uint32_t dirent_file_count; 
    185189    PVFS_size dirent_count; 
    186190    PVFS_directory_hint hint; 
     
    190194#ifdef __PINT_REQPROTO_ENCODE_FUNCS_C 
    191195#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]);\ 
    192201    encode_PVFS_size(pptr, &(x)->dirent_count);\ 
    193202    encode_PVFS_directory_hint(pptr, &(x)->hint);\ 
    194203} while(0) 
    195204#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    } \ 
    196214    decode_PVFS_size(pptr, &(x)->dirent_count);\ 
    197215    decode_PVFS_directory_hint(pptr, &(x)->hint);\ 
    198216} while(0) 
    199217#endif 
     218 
    200219 
    201220/* attributes specific to symlinks */ 
     
    261280        encode_PVFS_symlink_attr(pptr, &(x)->u.sym); \ 
    262281    if (((x)->mask & PVFS_ATTR_DIR_DIRENT_COUNT) || \ 
     282        ((x)->mask & PVFS_ATTR_DIR_DIRENT_FILES) || \ 
    263283        ((x)->mask & PVFS_ATTR_DIR_HINT)) \ 
    264284        encode_PVFS_directory_attr(pptr, &(x)->u.dir); \ 
     
    291311        decode_PVFS_symlink_attr(pptr, &(x)->u.sym); \ 
    292312    if (((x)->mask & PVFS_ATTR_DIR_DIRENT_COUNT) || \ 
     313        ((x)->mask & PVFS_ATTR_DIR_DIRENT_FILES) || \ 
    293314        ((x)->mask & PVFS_ATTR_DIR_HINT)) \ 
    294315        decode_PVFS_directory_attr(pptr, &(x)->u.dir); \ 
     
    300321*/ 
    301322#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 */ 
    303327 
    304328/* room for distribution, stuffed_size, dfile array, and mirror_dfile_array */