Changeset 8462

Show
Ignore:
Timestamp:
07/30/10 13:59:40 (3 years ago)
Author:
wligon
Message:

*** empty log message ***

Location:
branches/Orange-Migrate-Tools/src
Files:
1 added
12 modified

Legend:

Unmodified
Added
Removed
  • branches/Orange-Migrate-Tools/src/client/sysint/client-state-machine.h

    r8372 r8462  
    148148struct PINT_client_migrate_sm 
    149149{ 
    150      char *dist_server; 
     150     char *dest_server; 
    151151}; 
    152152 
  • branches/Orange-Migrate-Tools/src/client/sysint/mgmt-migrate.sm

    r8388 r8462  
    1818#include "PINT-reqproto-encode.h" 
    1919#include "pvfs2-internal.h" 
    20  
     20#include "bmi.h" 
    2121 
    2222extern job_context_id pint_client_sm_context; 
     
    2727%% 
    2828 
    29 machine pvfs2_client_mgmt_migrate_sm{ 
    30          
    31         state init{ 
     29machine pvfs2_client_mgmt_migrate_sm 
     30{ 
     31         
     32        state init 
     33        { 
    3234                run mgmt_migrate_init; 
    3335                default => migrate_setup_msgpair; 
    3436        } 
    3537         
    36         state migrate_setup_msgpair{ 
     38        state migrate_setup_msgpair 
     39        { 
    3740                run mgmt_migrate_setup_msgpair; 
    3841                success => migrate_xfer_msgpair; 
     
    4043        } 
    4144         
    42         state migrate_xfer_msgpair{ 
     45        state migrate_xfer_msgpair 
     46        { 
    4347                jump pvfs2_msgpairarray_sm; 
    4448                default => cleanup; 
    4549        } 
    4650                                 
    47         state cleanup{ 
     51        state cleanup 
     52        { 
    4853                run mgmt_migrate_cleanup; 
    4954                default => terminate; 
     
    5964                const PVFS_credentials *credentials, 
    6065                PVFS_sys_op_id *op_id, 
    61                 char *dist_ser, 
     66                char *dest_ser, 
    6267                PVFS_hint hints, 
    6368                void *user_ptr) 
     
    9499     
    95100    /* fill in stuff in the union */ 
    96     sm_p->u.migrate.dist_server = dist_ser; 
     101    sm_p->u.migrate.dest_server = dest_ser; 
    97102    sm_p->error_code = 0; 
    98103    sm_p->object_ref = ref; 
     
    107112                PVFS_object_ref ref, 
    108113                const PVFS_credentials *credentials, 
    109                 char *dist_server, 
     114                char *dest_server, 
    110115                PVFS_hint hints) 
    111116{ 
    112         PVFS_error ret = -PVFS_EINVAL, error = 0; 
     117    PVFS_error ret = -PVFS_EINVAL, error = 0; 
    113118    PVFS_sys_op_id op_id; 
    114119 
    115120    gossip_debug(GOSSIP_CLIENT_DEBUG, "PVFS_mgmt_migrate entered\n");            
    116121                         
    117         ret = PVFS_imgmt_migrate(ref, credentials, &op_id, dist_server, hints, NULL); 
     122        ret = PVFS_imgmt_migrate(ref, credentials, &op_id, dest_server, hints, NULL); 
    118123        if(ret) 
    119124        { 
    120125                PVFS_perror_gossip("PVFS_imgmt_migrate call", ret); 
    121         error = ret;                     
     126                error = ret;                     
    122127        } 
    123128        else 
     
    164169        int ret = -PVFS_EINVAL; 
    165170        PINT_sm_msgpair_state *msg_p = NULL; 
     171       
     172 
    166173         
    167174        js_p->error_code = 0; 
     
    169176        PINT_msgpair_init(&sm_p->msgarray_op); 
    170177        msg_p = &sm_p->msgarray_op.msgpair; 
     178         
     179         
     180    fprintf(stderr,"I made it here\n"); 
     181 
     182    fprintf(stderr,"%s\n", sm_p->u.migrate.dest_server); 
     183 
     184         
    171185         
    172186        PINT_SERVREQ_MGMT_MIGRATE_FILL(  
     
    175189            sm_p->object_ref.fs_id, 
    176190            sm_p->object_ref.handle, 
    177             sm_p->u.migrate.dist_server, 
    178             sm_p->hints); 
     191        sm_p->u.migrate.dest_server, 
     192        sm_p->hints); 
    179193     
    180194    /*stuff here as well */ 
    181         msg_p->fs_id = sm_p->object_ref.fs_id; 
    182         msg_p->handle = sm_p->object_ref.handle; 
    183         msg_p->retry_flag = PVFS_MSGPAIR_NO_RETRY;  
     195    msg_p->fs_id = sm_p->object_ref.fs_id; 
     196    msg_p->handle = sm_p->object_ref.handle; 
     197    msg_p->retry_flag = PVFS_MSGPAIR_RETRY;  
    184198        msg_p->comp_fn = mgmt_migrate_comp_fn; 
    185                  
     199        fprintf(stderr,"fs_id %d\n",msg_p->fs_id); 
     200        fprintf(stderr,"handle %llu\n",llu(msg_p->handle));      
     201                         
    186202        ret = PINT_cached_config_map_to_server( 
    187203        &msg_p->svr_addr, msg_p->handle, msg_p->fs_id); 
    188          
     204                fprintf(stderr,"server = %lld\n", lld(msg_p->svr_addr)); 
    189205        if(ret) 
    190206        { 
     
    192208                js_p->error_code = ret; 
    193209        } 
    194          
     210     
     211         
    195212        PINT_sm_push_frame(smcb, 0, &sm_p->msgarray_op); 
    196213         
     
    208225                 
    209226        sm_p->error_code = js_p->error_code;     
    210                  
     227         
     228       fprintf(stderr,"I made it to client cleanup\n"); 
     229         
    211230        /*do something involving cache or free allocated stuff*/         
    212231                 
     
    223242 * 
    224243 * vim: ft=c ts=8 sts=4 sw=4 expandtab 
    225 */ 
     244 */  
     245 
  • branches/Orange-Migrate-Tools/src/proto/PINT-le-bytefield.c

    r8367 r8462  
    280280                break; 
    281281            case PVFS_SERV_MGMT_MIGRATE: 
    282                 /*nothing special */ 
     282                req.u.mgmt_migrate.dest_server = tmp_name; 
     283                reqsize = extra_size_PVFS_servreq_migrate; 
     284                break; 
     285            case PVFS_SERV_MIGRATE_CREATE: 
     286                /*nothin special for now*/ 
    283287                break; 
    284288            case PVFS_SERV_NUM_OPS:  /* sentinel, should not hit */ 
     
    452456        CASE(PVFS_SERV_LISTATTR,  listattr); 
    453457        CASE(PVFS_SERV_MGMT_MIGRATE, mgmt_migrate); 
     458        CASE(PVFS_SERV_MIGRATE_CREATE, migrate_create); 
    454459 
    455460        case PVFS_SERV_GETCONFIG: 
     
    550555        CASE(PVFS_SERV_LISTATTR, listattr); 
    551556        CASE(PVFS_SERV_TREE_GET_FILE_SIZE, tree_get_file_size); 
     557        CASE(PVFS_SERV_MIGRATE_CREATE, migrate_create); 
    552558 
    553559        case PVFS_SERV_REMOVE: 
     
    666672        CASE(PVFS_SERV_LISTATTR, listattr); 
    667673        CASE(PVFS_SERV_MGMT_MIGRATE, mgmt_migrate); 
     674        CASE(PVFS_SERV_MIGRATE_CREATE, migrate_create); 
    668675 
    669676        case PVFS_SERV_GETCONFIG: 
     
    754761        CASE(PVFS_SERV_LISTATTR, listattr); 
    755762        CASE(PVFS_SERV_TREE_GET_FILE_SIZE, tree_get_file_size); 
     763        CASE(PVFS_SERV_MIGRATE_CREATE, migrate_create); 
    756764 
    757765        case PVFS_SERV_REMOVE: 
     
    922930            case PVFS_SERV_MGMT_EVENT_MON: 
    923931            case PVFS_SERV_MGMT_MIGRATE:  //migrate 
     932            case PVFS_SERV_MIGRATE_CREATE: 
    924933 
    925934            case PVFS_SERV_DELEATTR: 
     
    10851094                case PVFS_SERV_TREE_REMOVE: 
    10861095                case PVFS_SERV_MGMT_MIGRATE: 
     1096                case PVFS_SERV_MIGRATE_CREATE: 
    10871097                  /*nothing to free */ 
    10881098                   break; 
  • branches/Orange-Migrate-Tools/src/proto/pvfs2-req-proto.h

    r8372 r8462  
    8585    PVFS_SERV_TREE_GET_FILE_SIZE = 42, 
    8686    PVFS_SERV_MGMT_MIGRATE = 43, 
     87    PVFS_SERV_MIGRATE_CREATE = 44, 
    8788    /* leave this entry last */ 
    8889    PVFS_SERV_NUM_OPS 
     
    19081909 
    19091910struct PVFS_servreq_mgmt_migrate{ 
     1911    char *dest_server; 
    19101912    PVFS_handle handle; 
    19111913    PVFS_fs_id fs_id; 
    1912     char *dist_server; 
    19131914}; 
    19141915 
    19151916endecode_fields_3_struct( 
    19161917     PVFS_servreq_mgmt_migrate, 
     1918     string, dest_server, 
    19171919     PVFS_handle, handle, 
    1918      PVFS_fs_id, fs_id, 
    1919      string , dist_server ); 
     1920     PVFS_fs_id, fs_id); 
     1921 
     1922#define extra_size_PVFS_servreq_migrate \ 
     1923    roundup8(PVFS_REQ_LIMIT_SEGMENT_BYTES+1) 
    19201924 
    19211925#define PINT_SERVREQ_MGMT_MIGRATE_FILL(__req,        \ 
     
    19231927                                     __fsid,         \ 
    19241928                                     __handle,       \ 
    1925                                      __dist_ser,     \ 
     1929                                     __dest_server,  \ 
    19261930                                     __hints)        \ 
    19271931do{                                                  \ 
     
    19321936    (__req).u.mgmt_migrate.handle = (__handle);      \ 
    19331937    (__req).u.mgmt_migrate.fs_id = (__fsid);         \ 
    1934     (__req).u.mgmt_migrate.dist_server = (__dist_ser); \ 
    1935 } while(0); 
    1936  
    1937   
    1938                                          
     1938    (__req).u.mgmt_migrate.dest_server = __dest_server; \ 
     1939} while(0) 
     1940 
     1941/**************************************************************************/ 
     1942/*migrate-create*/ 
     1943 
     1944struct PVFS_servreq_migrate_create 
     1945{ 
     1946    int32_t mask; 
     1947    PVFS_ds_keyval *val; 
     1948    PVFS_ds_keyval *key; 
     1949    int32_t nkey; 
     1950    PVFS_fs_id fs_id; 
     1951    PVFS_handle handle; 
     1952    PVFS_object_attr attr; 
     1953}; 
     1954 
     1955endecode_fields_4aa_struct( 
     1956    PVFS_servreq_migrate_create, 
     1957    PVFS_handle, handle, 
     1958    PVFS_fs_id, fs_id, 
     1959    int32_t, mask, 
     1960    PVFS_object_attr, attr, 
     1961    int32_t, nkey, 
     1962    PVFS_ds_keyval, key, 
     1963    PVFS_ds_keyval, val); 
     1964 
     1965#define extra_size_PVFS_servreq_migrate_create \ 
     1966        ((PVFS_REQ_LIMIT_KEY_LEN + PVFS_REQ_LIMIT_VAL_LEN) \ 
     1967        * PVFS_REQ_LIMIT_KEYVAL_LIST) 
     1968 
     1969#define PINT_SERVREQ_MIGRATE_CREATE_FILL(__req,     \ 
     1970                                         __creds,   \ 
     1971                                         __fs_id,   \ 
     1972                                         __handle,  \ 
     1973                                         __mask,    \ 
     1974                                         __attr,    \ 
     1975                                         __key,     \ 
     1976                                         __val,     \ 
     1977                                         __nkey,    \ 
     1978                                         __hints)   \ 
     1979do{                                                 \ 
     1980    memset(&(__req), 0, sizeof(__req));             \ 
     1981    (__req).op = PVFS_SERV_MIGRATE_CREATE;          \ 
     1982    (__req).credentials = (__creds);                \ 
     1983    (__req).hints = (__hints);                      \ 
     1984    (__req).u.migrate_create.fs_id = (__fs_id);     \ 
     1985    (__req).u.migrate_create.handle = (__handle);   \ 
     1986    (__req).u.migrate_create.attr = (__attr);       \ 
     1987    (__req).u.migrate_create.nkey = (__nkey);       \ 
     1988    (__req).u.migrate_create.mask = (__mask);       \ 
     1989    (__req).u.migrate_create.key = (__key);         \ 
     1990    (__req).u.migrate_create.val = (__val);         \ 
     1991}while(0) 
     1992 
     1993 
     1994     
     1995/* Types for mask used for migrate_create.sm */    
     1996#define MIGRATE_CREATE (1 << 0) 
     1997#define MIGRATE_STORE  (1 << 1) 
     1998 
     1999                                      
     2000struct PVFS_servresp_migrate_create 
     2001{ 
     2002    PVFS_handle new_handle; 
     2003}; 
     2004 
     2005endecode_fields_1_struct( 
     2006    PVFS_servresp_migrate_create, 
     2007    PVFS_handle, new_handle); 
     2008 
     2009 
     2010/****************************************************************/ 
    19392011 
    19402012 
     
    19852057        struct PVFS_servreq_tree_get_file_size tree_get_file_size; 
    19862058        struct PVFS_servreq_mgmt_migrate mgmt_migrate; 
     2059        struct PVFS_servreq_migrate_create migrate_create; 
    19872060    } u; 
    19882061}; 
     
    20402113        struct PVFS_servresp_listattr listattr; 
    20412114        struct PVFS_servresp_tree_get_file_size tree_get_file_size; 
     2115        struct PVFS_servresp_migrate_create migrate_create; 
    20422116    } u; 
    20432117}; 
  • branches/Orange-Migrate-Tools/src/server/get-attr.sm

    r8251 r8462  
    331331            gossip_debug(GOSSIP_GETATTR_DEBUG, 
    332332                         "  Req handle %llu refers to a metafile\n", 
    333                          llu(s_op->u.getattr.handle)); 
    334  
    335             if (s_op->u.getattr.attrmask & PVFS_ATTR_META_DFILES) 
     333                         llu(s_op->req->u.getattr.handle)); 
     334 
     335            if (s_op->req->u.getattr.attrmask & PVFS_ATTR_META_DFILES) 
    336336            { 
    337337                gossip_debug(GOSSIP_GETATTR_DEBUG, 
     
    347347            } 
    348348 
    349             if (s_op->u.getattr.attrmask & PVFS_ATTR_META_DIST) 
     349            if (s_op->req->u.getattr.attrmask & PVFS_ATTR_META_DIST) 
    350350            { 
    351351                gossip_debug(GOSSIP_GETATTR_DEBUG, 
     
    363363            } 
    364364 
    365             if (s_op->u.getattr.attrmask & PVFS_ATTR_META_MIRROR_DFILES) 
     365            if (s_op->req->u.getattr.attrmask & PVFS_ATTR_META_MIRROR_DFILES) 
    366366            { 
    367367               gossip_debug(GOSSIP_GETATTR_DEBUG,"client wants mirrored " 
     
    393393            gossip_debug(GOSSIP_GETATTR_DEBUG, "  handle %llu refers to " 
    394394                         "a datafile (size = %lld).\n", 
    395                          llu(s_op->u.getattr.handle), 
     395                         llu(s_op->req->u.getattr.handle), 
    396396                         lld(resp_attr->u.data.size)); 
    397397            break; 
    398398        case PVFS_TYPE_DIRECTORY: 
    399399            PINT_ACCESS_DEBUG(s_op, GOSSIP_ACCESS_DEBUG, "type: directory\n"); 
    400             if (s_op->u.getattr.attrmask & PVFS_ATTR_DIR_DIRENT_COUNT) 
     400            if (s_op->req->u.getattr.attrmask & PVFS_ATTR_DIR_DIRENT_COUNT) 
    401401            { 
    402402                gossip_debug(GOSSIP_GETATTR_DEBUG, 
     
    413413                assert(resp_attr->mask & PVFS_ATTR_COMMON_ALL); 
    414414            } 
    415             if (s_op->u.getattr.attrmask & PVFS_ATTR_DIR_HINT) 
     415            if (s_op->req->u.getattr.attrmask & PVFS_ATTR_DIR_HINT) 
    416416            { 
    417417                gossip_debug(GOSSIP_GETATTR_DEBUG, 
     
    433433                GOSSIP_GETATTR_DEBUG, "  handle %llu refers to " 
    434434                "a dirdata object. doing nothing special\n", 
    435                 llu(s_op->u.getattr.handle)); 
     435                llu(s_op->req->u.getattr.handle)); 
    436436            assert(resp_attr->mask & PVFS_ATTR_COMMON_ALL); 
    437437            break; 
     
    440440            gossip_debug( 
    441441                GOSSIP_GETATTR_DEBUG, "  handle %llu refers to a symlink.\n", 
    442                 llu(s_op->u.getattr.handle)); 
     442                llu(s_op->req->u.getattr.handle)); 
    443443 
    444444            /* 
     
    460460                "Error: got unknown type when verifying attributes for " 
    461461                "handle %llu.\n",  
    462                 llu(s_op->u.getattr.handle)); 
     462                llu(s_op->req->u.getattr.handle)); 
    463463            js_p->error_code = -PVFS_ENXIO; 
    464464            break; 
     
    476476 
    477477    /* if we don't need to fill in the symlink target, skip it */ 
    478     if (!(s_op->u.getattr.attrmask & PVFS_ATTR_SYMLNK_TARGET)) 
     478    if (!(s_op->req->u.getattr.attrmask & PVFS_ATTR_SYMLNK_TARGET)) 
    479479    { 
    480480        gossip_debug(GOSSIP_GETATTR_DEBUG, "skipping symlink target read\n"); 
     
    511511 
    512512    ret = job_trove_keyval_read( 
    513         s_op->u.getattr.fs_id, s_op->u.getattr.handle, 
     513        s_op->req->u.getattr.fs_id, s_op->req->u.getattr.handle, 
    514514        &s_op->key, &s_op->val, 
    515515        0, 
     
    599599                 "  reading metafile hint (coll_id = %d, " 
    600600                 "handle = %llu, key = %s (%d), val_buf = %p (%d))\n", 
    601                  s_op->u.getattr.fs_id, 
    602                  llu(s_op->u.getattr.handle), (char *)s_op->key.buffer, 
     601                 s_op->req->u.getattr.fs_id, 
     602                 llu(s_op->req->u.getattr.handle), (char *)s_op->key.buffer, 
    603603                 s_op->key.buffer_sz, s_op->val.buffer, 
    604604                 s_op->val.buffer_sz); 
    605605 
    606606    ret = job_trove_keyval_read( 
    607         s_op->u.getattr.fs_id, s_op->u.getattr.handle, 
     607        s_op->req->u.getattr.fs_id, s_op->req->u.getattr.handle, 
    608608        &s_op->key, &s_op->val,  
    609609        0,  
     
    627627 
    628628    /* if we don't need to fill in the dfiles, skip them */ 
    629     if (!(s_op->u.getattr.attrmask & PVFS_ATTR_META_DFILES)) 
     629    if (!(s_op->req->u.getattr.attrmask & PVFS_ATTR_META_DFILES)) 
    630630    { 
    631631        gossip_debug(GOSSIP_GETATTR_DEBUG, "skipping data handle read\n"); 
     
    660660 
    661661        gossip_err("handle: %llu (%llx), fsid: %d.\n", 
    662             llu(s_op->u.getattr.handle), llu(s_op->u.getattr.handle), 
    663             (int)s_op->u.getattr.fs_id); 
     662            llu(s_op->req->u.getattr.handle), llu(s_op->req->u.getattr.handle), 
     663            (int)s_op->req->u.getattr.fs_id); 
    664664 
    665665        /*If we hit an error the DIST & DFILES are no longer valid*/ 
     
    700700                 "  reading %d datafile handles (coll_id = %d, " 
    701701                 "handle = %llu, key = %s (%d), val_buf = %p (%d))\n", 
    702                  dfile_count, s_op->u.getattr.fs_id, 
    703                  llu(s_op->u.getattr.handle), (char *)s_op->key.buffer, 
     702                 dfile_count, s_op->req->u.getattr.fs_id, 
     703                 llu(s_op->req->u.getattr.handle), (char *)s_op->key.buffer, 
    704704                 s_op->key.buffer_sz, s_op->val.buffer, 
    705705                 s_op->val.buffer_sz); 
    706706 
    707707    ret = job_trove_keyval_read( 
    708         s_op->u.getattr.fs_id 
    709        ,s_op->u.getattr.handle 
     708        s_op->req->u.getattr.fs_id 
     709       ,s_op->req->u.getattr.handle 
    710710       ,&s_op->key 
    711711       ,&s_op->val 
     
    739739        gossip_debug(GOSSIP_MIRROR_DEBUG,"\tMirroring is NOT turned on " 
    740740                                         "for this handle(%llu)..\n" 
    741                                         ,llu(s_op->u.getattr.handle)); 
     741                                        ,llu(s_op->req->u.getattr.handle)); 
    742742        js_p->error_code = SKIP_NEXT_STATE; 
    743743 
     
    747747    gossip_debug(GOSSIP_MIRROR_DEBUG,"\tMirroring IS turned on for this " 
    748748                                     "handle(%llu)...\n" 
    749                                     ,llu(s_op->u.getattr.handle)); 
     749                                    ,llu(s_op->req->u.getattr.handle)); 
    750750 
    751751    js_p->error_code = 0; 
     
    772772    /* submit job to read the value */ 
    773773    ret = job_trove_keyval_read( 
    774         s_op->u.getattr.fs_id 
    775        ,s_op->u.getattr.handle 
     774        s_op->req->u.getattr.fs_id 
     775       ,s_op->req->u.getattr.handle 
    776776       ,&s_op->key 
    777777       ,&s_op->val 
     
    942942   /* call job to retrieve the key/val pairs */ 
    943943   ret = job_trove_keyval_read_list( 
    944           s_op->u.getattr.fs_id 
    945          ,s_op->u.getattr.handle 
     944          s_op->req->u.getattr.fs_id 
     945         ,s_op->req->u.getattr.handle 
    946946         ,s_op->key_a 
    947947         ,s_op->val_a 
     
    11191119 
    11201120    /* if we don't need to fill in the distribution, skip it */ 
    1121     if (!(s_op->u.getattr.attrmask & PVFS_ATTR_META_DIST)) 
     1121    if (!(s_op->req->u.getattr.attrmask & PVFS_ATTR_META_DIST)) 
    11221122    { 
    11231123        gossip_debug(GOSSIP_GETATTR_DEBUG, "skipping data handle " 
     
    11371137    { 
    11381138        gossip_err("Cannot Read Dist!  Got an invalid dist size for " 
    1139                    "handle %llu,%d\n",llu(s_op->u.getattr.handle), 
    1140                    s_op->u.getattr.fs_id); 
     1139                   "handle %llu,%d\n",llu(s_op->req->u.getattr.handle), 
     1140                   s_op->req->u.getattr.fs_id); 
    11411141        js_p->error_code = -PVFS_EINVAL; 
    11421142        return SM_ACTION_COMPLETE; 
     
    11631163 
    11641164    ret = job_trove_keyval_read( 
    1165         s_op->u.getattr.fs_id, s_op->u.getattr.handle, 
     1165        s_op->req->u.getattr.fs_id, s_op->req->u.getattr.handle, 
    11661166        &(s_op->key), &(s_op->val), 
    11671167        0, 
     
    12051205 
    12061206    return(job_trove_dspace_getattr( 
    1207         s_op->u.getattr.fs_id, 
     1207        s_op->req->u.getattr.fs_id, 
    12081208        s_op->resp.u.getattr.attr.u.meta.dfile_array[0], 
    12091209        smcb, 
     
    12491249    } 
    12501250 
    1251     if(s_op->u.getattr.attrmask & PVFS_ATTR_META_DIST) 
     1251    if(s_op->req->u.getattr.attrmask & PVFS_ATTR_META_DIST) 
    12521252    { 
    12531253        /* successfully read dist key; make sure we got something valid */ 
     
    12741274        if(resp_attr->u.meta.dist == 0) { 
    12751275            gossip_err("Found dist of 0 for handle %llu,%d\n", 
    1276                     llu(s_op->u.getattr.handle), s_op->u.getattr.fs_id); 
     1276                    llu(s_op->req->u.getattr.handle), s_op->req->u.getattr.fs_id); 
    12771277            PVFS_perror("Metafile getattr_setup_resp",js_p->error_code); 
    12781278            js_p->error_code = -PVFS_EIO; 
     
    13721372        { 
    13731373            gossip_err("Failed to retrieve symlink target path for " 
    1374                        "handle %llu,%d\n",llu(s_op->u.getattr.handle), 
    1375                        s_op->u.getattr.fs_id); 
     1374                       "handle %llu,%d\n",llu(s_op->req->u.getattr.handle), 
     1375                       s_op->req->u.getattr.fs_id); 
    13761376            PVFS_perror("Symlink retrieval failure",js_p->error_code); 
    13771377 
     
    14751475        struct PINT_smcb *smcb, job_status_s *js_p) 
    14761476{ 
    1477     struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
    1478     s_op->u.getattr.handle = s_op->req->u.getattr.handle; 
    1479     s_op->u.getattr.fs_id = s_op->req->u.getattr.fs_id; 
    1480     s_op->u.getattr.attrmask = s_op->req->u.getattr.attrmask; 
    1481  
    14821477    js_p->error_code = 0; 
    14831478    return SM_ACTION_COMPLETE; 
     
    14901485 
    14911486    if((js_p->error_code == 0) && 
    1492         (s_op->u.getattr.attrmask & PVFS_ATTR_META_DFILES)) 
     1487        (s_op->req->u.getattr.attrmask & PVFS_ATTR_META_DFILES)) 
    14931488    { 
    14941489        /* successfully read datafile key; make sure we got something valid */ 
     
    15351530 
    15361531    ret = job_trove_keyval_read( 
    1537         s_op->u.getattr.fs_id, s_op->u.getattr.handle, 
     1532        s_op->req->u.getattr.fs_id, s_op->req->u.getattr.handle, 
    15381533        &s_op->key, &s_op->val, 
    15391534        0, 
     
    15551550    job_id_t tmp_id; 
    15561551 
    1557     if (!(s_op->u.getattr.attrmask & PVFS_ATTR_DIR_DIRENT_COUNT)) 
     1552    if (!(s_op->req->u.getattr.attrmask & PVFS_ATTR_DIR_DIRENT_COUNT)) 
    15581553    { 
    15591554         /* the caller didn't really want the dirent count; skip to get 
     
    15641559    } 
    15651560    ret = job_trove_keyval_get_handle_info( 
    1566         s_op->u.getattr.fs_id, 
     1561        s_op->req->u.getattr.fs_id, 
    15671562        s_op->u.getattr.dirent_handle, 
    15681563        TROVE_KEYVAL_HANDLE_COUNT | 
     
    16131608     */ 
    16141609    
    1615     if (!(s_op->u.getattr.attrmask & PVFS_ATTR_DIR_HINT)) 
     1610    if (!(s_op->req->u.getattr.attrmask & PVFS_ATTR_DIR_HINT)) 
    16161611    { 
    16171612        /* the caller didn't really want the dir hints; skip 
     
    16271622                 Trove_Special_Keys[DIST_PARAMS_KEY].key,  
    16281623                 Trove_Special_Keys[NUM_DFILES_KEY].key, 
    1629                  s_op->u.getattr.fs_id, llu(s_op->u.getattr.handle)); 
     1624                 s_op->req->u.getattr.fs_id, llu(s_op->req->u.getattr.handle)); 
    16301625 
    16311626    s_op->resp.u.getattr.attr.u.dir.hint.dist_params =  
     
    17041699    js_p->error_code = 0; 
    17051700    ret = job_trove_keyval_read_list( 
    1706         s_op->u.getattr.fs_id,  
    1707         s_op->u.getattr.handle, 
     1701        s_op->req->u.getattr.fs_id,  
     1702        s_op->req->u.getattr.handle, 
    17081703        s_op->key_a, s_op->val_a, s_op->u.getattr.err_array, NUM_SPECIAL_KEYS, 
    17091704        0, NULL, smcb, 0, js_p, &tmp_id, 
     
    18261821 
    18271822    return(job_trove_keyval_read( 
    1828         s_op->u.getattr.fs_id,  
    1829         s_op->u.getattr.handle, 
     1823        s_op->req->u.getattr.fs_id,  
     1824        s_op->req->u.getattr.handle, 
    18301825        &(s_op->key),  
    18311826        &(s_op->val),  
  • branches/Orange-Migrate-Tools/src/server/list-attr.sm

    r7471 r8462  
    142142            continue; 
    143143        } 
    144  
    145         getattr_op = malloc(sizeof(*getattr_op)); 
    146         if(!getattr_op) 
    147         { 
    148             s_op->u.listattr.errors[i] = -PVFS_ENOMEM; 
    149             gossip_debug(GOSSIP_SERVER_DEBUG,  
    150                 "listattr: failed to setup nested sm for handle: %llu\n",  
    151                 llu(s_op->req->u.listattr.handles[i])); 
    152             continue; 
    153         } 
    154         memset(getattr_op, 0, sizeof(*getattr_op)); 
    155  
     144         
     145        PINT_SETUP_LOCAL_FRAME(getattr_op); 
     146        PINT_SERVREQ_GETATTR_FILL(*getattr_op->req, 
     147                        s_op->req->credentials, 
     148                        s_op->req->u.listattr.fs_id, 
     149                        s_op->req->u.listattr.handles[i], 
     150                        s_op->req->u.listattr.attrmask, 
     151                        s_op->req->hints); 
    156152        /* TODO: need a way to explicitly set the right inputs to the 
    157153         * getattr nested sm.  This code block is very fragile. 
     
    166162         * logging  
    167163         */ 
    168         getattr_op->req = s_op->req; 
     164         
    169165        /* need to fill in the input parameters to the getattr nested machine */ 
    170         getattr_op->u.getattr.fs_id = s_op->req->u.listattr.fs_id; 
    171         getattr_op->u.getattr.handle = s_op->req->u.listattr.handles[i]; 
    172         getattr_op->u.getattr.attrmask = s_op->req->u.listattr.attrmask; 
     166         
    173167 
    174168        ret = PINT_sm_push_frame(smcb, 0, getattr_op); 
     
    233227        for(j=0; j<s_op->req->u.listattr.nhandles; j++) 
    234228        { 
    235             if(s_op->req->u.listattr.handles[j] == getattr_op->u.getattr.handle) 
     229            if(s_op->req->u.listattr.handles[j] == getattr_op->req->u.getattr.handle) 
    236230            { 
    237231                s_op->u.listattr.attr_a[j] = getattr_op->resp.u.getattr.attr; 
  • branches/Orange-Migrate-Tools/src/server/migrate.sm

    r8388 r8462  
    1010#include "pvfs2-server.h" 
    1111#include "pvfs2-internal.h" 
     12#include "pvfs2-attr.h" 
     13#include "pvfs2-util.h" 
     14#include "pint-util.h" 
     15#include "pint-cached-config.h" 
     16#include "pvfs2-dist-basic.h" 
     17 
     18 
     19static int migrate_create_msg_comp_fn( 
     20                        void *v_p, struct PVFS_server_resp *resp, int i); 
     21 
    1222 
    1323 
     
    1929        { 
    2030                jump pvfs2_prelude_sm; 
    21                 success => test_stuff; 
    22                 /*success => get_new_handle;*/ 
    23                 default => final_response; 
    24         } 
    25  
    26         state test_stuff 
    27         { 
    28                 run test_stuff; 
    29                 default => final_response; 
    30         } 
    31          
    32         state get_new_handle 
    33         { 
    34                 run migrate_get_new_handle; 
    35                 default => final_response; 
    36         } 
    37          
     31                success => test_stuff; 
     32                default => final_response; 
     33                 
     34        } 
     35         
     36    state test_stuff 
     37    { 
     38        run test_stuff; 
     39        success => get_dest_server; 
     40        default => final_response; 
     41    }  
     42       
     43    state get_dest_server 
     44    { 
     45        run migrate_get_dest_server; 
     46        success => setup_get_attr; 
     47        default => final_response; 
     48    }    
     49                 
     50        state setup_get_attr 
     51        { 
     52                run migrate_setup_get_attr; 
     53                success => get_attr_work; 
     54                default => final_response; 
     55        } 
     56        state get_attr_work 
     57        { 
     58                jump pvfs2_get_attr_work_sm; 
     59                default => interpret_get_attr; 
     60        }        
     61         
     62        state interpret_get_attr 
     63        { 
     64                run migrate_interpret_get_attr; 
     65        success => setup_migrate_create_msgpair; 
     66                default => final_response; 
     67        }        
     68         
     69        state setup_migrate_create_msgpair 
     70        { 
     71                run migrate_setup_migrate_create_msgpair; 
     72                success => xfer_msgpair; 
     73                default => final_response; 
     74        }        
     75         
     76        state xfer_msgpair 
     77        { 
     78                jump pvfs2_msgpairarray_sm; 
     79                default => final_response; 
     80        }        
     81                 
     82 
    3883        state final_response 
    3984        { 
     
    4489        state cleanup 
    4590        { 
    46                         run migrate_cleanup; 
    47                         default => terminate; 
     91                run migrate_cleanup; 
     92                default => terminate; 
    4893        } 
    4994         
     
    55100                struct PINT_smcb *smcb, job_status_s *js_p) 
    56101{ 
     102    gossip_debug(GOSSIP_SERVER_DEBUG,"test stuff in server migrate sm\n"); 
    57103    struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
    58     PVFS_handle *handle = s_op->u.mgmt_migrate.metahandle; 
    59     PVFS_fs_id fs_id = s_op->u.mgmt_migrate.fs_id; 
    60     int64_t dist_server = s_op->u.mgmt_migrate.dist_server; 
    61      
    62     printf("dist server: %ll\n", dist_server); 
    63     printf("data handle: %llu\n", llu(handle)); 
    64     printf("file system ID: %d\n", fs_id); 
     104    PVFS_handle handle = s_op->req->u.mgmt_migrate.handle; 
     105    PVFS_fs_id fs_id = s_op->req->u.mgmt_migrate.fs_id; 
     106    char *dest_server = s_op->req->u.mgmt_migrate.dest_server; 
     107    gossip_debug(GOSSIP_SERVER_DEBUG,"made it to teststuff\n"); 
     108    gossip_debug(GOSSIP_SERVER_DEBUG,"dest server: %s\n", dest_server); 
     109    gossip_debug(GOSSIP_SERVER_DEBUG,"data handle: %llu\n", llu(handle)); 
     110    gossip_debug(GOSSIP_SERVER_DEBUG,"file system ID: %d\n", fs_id); 
    65111 
    66112    return SM_ACTION_COMPLETE; 
    67113} 
    68114 
    69 static PINT_sm_action migrate_get_new_handle( 
    70                 struct PINT_smcb *smcb, job_status_s *js_p) 
    71 { 
    72          
    73  
    74         return SM_ACTION_COMPLETE;       
    75 } 
    76  
     115static PINT_sm_action migrate_get_dest_server( 
     116                struct PINT_smcb *smcb, job_status_s *js_p) 
     117{ 
     118        gossip_debug(GOSSIP_SERVER_DEBUG,"Entered migrate_get_dest_server\n"); 
     119        struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     120        char *dest_server; 
     121        struct server_configuration_s *config_s = get_server_config_struct(); 
     122                 
     123        dest_server = PINT_config_get_host_addr_ptr(  
     124                                                config_s, s_op->req->u.mgmt_migrate.dest_server); 
     125                                         
     126        gossip_debug(GOSSIP_SERVER_DEBUG,"dest_server: %s\n", dest_server); 
     127        s_op->u.mgmt_migrate.dest_server = dest_server;                                          
     128        if(!dest_server) 
     129        { 
     130                gossip_debug(GOSSIP_SERVER_DEBUG,"Bad server alias\n"); 
     131                return SM_ACTION_COMPLETE;                                               
     132        }        
     133                                                 
     134        return SM_ACTION_COMPLETE; 
     135}        
     136         
     137                 
    77138 
    78139static PINT_sm_action migrate_cleanup( 
    79                 struct PINT_smcb *smcb, job_status_s *jp_p) 
    80 { 
    81          
    82          
    83          
     140                struct PINT_smcb *smcb, job_status_s *js_p) 
     141{        
     142        //struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     143        gossip_debug(GOSSIP_SERVER_DEBUG,"Entered migrate_cleanup\n"); 
    84144        return(server_state_machine_complete(smcb)); 
    85145} 
    86146 
    87147 
    88 /* need to know what some of these things are/mean!!!!!!!! */ 
     148/*****************************************************************************/ 
     149/*Get attr half of migratation*/ 
     150 
     151static PINT_sm_action migrate_setup_get_attr( 
     152                struct PINT_smcb *smcb, job_status_s *js_p) 
     153{ 
     154         
     155        gossip_debug(GOSSIP_SERVER_DEBUG,"Entered migrate_setup_get_attr\n"); 
     156        struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     157        struct PINT_server_op *getattr_op; 
     158        int ret; 
     159         
     160        js_p->error_code = 0; 
     161                 
     162        /*setup op for local server call to getattr*/ 
     163        PINT_SETUP_LOCAL_FRAME(getattr_op); 
     164        PINT_SERVREQ_GETATTR_FILL( *getattr_op->req, 
     165                                                                s_op->req->credentials, 
     166                                                                s_op->req->u.mgmt_migrate.fs_id, 
     167                                                                s_op->req->u.mgmt_migrate.handle, 
     168                                                                PVFS_ATTR_COMMON_ALL, 
     169                                                                s_op->req->hints); 
     170         
     171         
     172        getattr_op->attr = s_op->attr; 
     173         
     174        ret = PINT_sm_push_frame(smcb, 0, getattr_op); 
     175        if(ret < 0) 
     176        { 
     177                        js_p->error_code = ret; 
     178        } 
     179        return SM_ACTION_COMPLETE; 
     180}        
     181 
     182 
     183 
     184static PINT_sm_action migrate_interpret_get_attr( 
     185                struct PINT_smcb *smcb, job_status_s *js_p) 
     186{ 
     187        gossip_debug(GOSSIP_SERVER_DEBUG,"Entered migrate_interpret_get_attr \n"); 
     188        struct PINT_server_op *getattr_op; 
     189        struct PINT_server_op *s_op; 
     190        int task_id; 
     191        int remaining; 
     192         
     193        getattr_op = PINT_sm_pop_frame( smcb, &task_id, &js_p->error_code, 
     194                                 &remaining); 
     195        s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     196         
     197        if(js_p->error_code) 
     198        { 
     199                gossip_debug(GOSSIP_SERVER_DEBUG,"Migrate failed to retrieve attrs\n"); 
     200                return(SM_ACTION_COMPLETE); 
     201        } 
     202         
     203        s_op->u.mgmt_migrate.attr = getattr_op->resp.u.getattr.attr; 
     204         
     205        free(getattr_op); 
     206         
     207        gossip_debug(GOSSIP_SERVER_DEBUG,"Should have gotten migrated file attr\n");                                     
     208         
     209        return SM_ACTION_COMPLETE; 
     210}                
     211 
     212 
     213 
     214static PINT_sm_action migrate_setup_migrate_create_msgpair( 
     215                struct PINT_smcb *smcb, job_status_s *js_p) 
     216{ 
     217        struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     218        int ret = -PVFS_EINVAL; 
     219        PINT_sm_msgpair_state *msg_p = NULL; 
     220         
     221        js_p->error_code = 0; 
     222         
     223        PVFS_object_attr *a_p = NULL; 
     224         
     225        a_p = &s_op->u.mgmt_migrate.attr; 
     226         
     227        gossip_debug(GOSSIP_SERVER_DEBUG,"Entered migrate_setup_migrate_create_msgpair\n");  
     228        PINT_msgpair_init(&s_op->msgarray_op); 
     229        msg_p = &s_op->msgarray_op.msgpair; 
     230                                 
     231        PINT_SERVREQ_MIGRATE_CREATE_FILL( 
     232                msg_p->req, 
     233                s_op->req->credentials, 
     234                s_op->req->u.mgmt_migrate.fs_id, 
     235                PVFS_HANDLE_NULL, 
     236                MIGRATE_CREATE, 
     237                s_op->u.mgmt_migrate.attr, 
     238                NULL, 
     239                NULL, 
     240                0, 
     241                s_op->req->hints); 
     242         
     243         
     244        gossip_debug(GOSSIP_SERVER_DEBUG, "  attrs read from request:\n\t" 
     245                    "[owner = %d, group = %d, perms = %o, type = %d]\n", 
     246                   (a_p->mask & PVFS_ATTR_COMMON_UID)  ? a_p->owner : -1, 
     247                   (a_p->mask & PVFS_ATTR_COMMON_GID)  ? a_p->group : -1,   
     248                   (a_p->mask & PVFS_ATTR_COMMON_PERM) ? a_p->perms : -1, 
     249                   (a_p->mask & PVFS_ATTR_COMMON_TYPE) ? a_p->objtype : -1); 
     250         
     251         
     252                         
     253        msg_p->fs_id = s_op->req->u.mgmt_migrate.fs_id; 
     254        msg_p->retry_flag = PVFS_MSGPAIR_RETRY; 
     255        msg_p->comp_fn = migrate_create_msg_comp_fn;                     
     256         
     257        ret = BMI_addr_lookup(&msg_p->svr_addr, s_op->u.mgmt_migrate.dest_server); 
     258                 
     259        if(ret) 
     260        { 
     261                gossip_err("Failed to loop up meta server address\n"); 
     262                js_p->error_code = ret; 
     263        } 
     264         
     265                         
     266        PINT_sm_push_frame(smcb, 0 ,&s_op->msgarray_op);         
     267        return SM_ACTION_COMPLETE; 
     268}                                                
     269                 
     270 
     271/*******************************************************************/ 
     272 
     273 
     274static int migrate_create_msg_comp_fn( 
     275                        void *v_p, struct PVFS_server_resp *resp_p, int i) 
     276{ 
     277                PINT_smcb *smcb = v_p; 
     278                struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_MSGPAIR_PARENT_SM); 
     279         
     280                gossip_debug(GOSSIP_SERVER_DEBUG,"migrate_create_msg_comp_fn\n"); 
     281                gossip_debug( GOSSIP_SERVER_DEBUG, "Metafile handle created: %llu\n", llu(resp_p->u.migrate_create.new_handle)); 
     282                assert(resp_p->op == PVFS_SERV_MIGRATE_CREATE); 
     283                 
     284                if(resp_p->status != 0) 
     285                { 
     286                        return resp_p->status; 
     287                } 
     288                 
     289                resp_p->u.migrate_create.new_handle = s_op->u.mgmt_migrate.dest_handle; 
     290                 
     291                return 0; 
     292}                                        
     293 
     294 
     295static inline int PINT_get_object_ref_migrate(struct PVFS_server_req *req, 
     296                                                PVFS_fs_id *fs_id, 
     297                                                PVFS_handle *handle) 
     298{ 
     299    *fs_id = req->u.mgmt_migrate.fs_id; 
     300    *handle = req->u.mgmt_migrate.handle; 
     301    return 0; 
     302} 
     303 
     304/* need to know what some of these things are/mean*/ 
    89305struct PINT_server_req_params pvfs2_mgmt_migrate_params = 
    90306{ 
    91307        .string_name = "migrate", 
    92308        .perm = PINT_SERVER_CHECK_NONE, 
     309    .access_type = PINT_server_req_modify, 
     310    .sched_policy = PINT_SERVER_REQ_SCHEDULE, 
     311    .get_object_ref = PINT_get_object_ref_migrate, 
    93312        .state_machine = &pvfs2_mgmt_migrate_sm 
    94313};       
    95  
    96314 
    97315/* 
  • branches/Orange-Migrate-Tools/src/server/module.mk.in

    r8317 r8462  
    4747                $(DIR)/precreate-pool-refiller.c \ 
    4848                $(DIR)/unstuff.c \ 
    49                 $(DIR)/tree-communicate.c 
     49                $(DIR)/tree-communicate.c \ 
     50                $(DIR)/migrate.c \ 
     51                $(DIR)/migrate-create.c 
    5052 
    5153        # c files that should be added to server library 
  • branches/Orange-Migrate-Tools/src/server/prelude.sm

    r8317 r8462  
    9090    int ret; 
    9191    struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
    92  
    9392    ret = PINT_server_req_get_object_ref( 
    9493        s_op->req, &s_op->target_fs_id, &s_op->target_handle); 
  • branches/Orange-Migrate-Tools/src/server/pvfs2-server-req.c

    r8098 r8462  
    5252extern struct PINT_server_req_params pvfs2_tree_remove_params; 
    5353extern struct PINT_server_req_params pvfs2_tree_get_file_size_params; 
     54extern struct PINT_server_req_params pvfs2_mgmt_migrate_params; 
     55extern struct PINT_server_req_params pvfs2_migrate_create_params; 
    5456 
    5557/* table of incoming request types and associated parameters */ 
     
    99101    /* 41 */ {PVFS_SERV_TREE_REMOVE, &pvfs2_tree_remove_params}, 
    100102    /* 42 */ {PVFS_SERV_TREE_GET_FILE_SIZE, &pvfs2_tree_get_file_size_params}, 
     103    /* 43 */ {PVFS_SERV_MGMT_MIGRATE, &pvfs2_mgmt_migrate_params}, 
     104    /* 44 */ {PVFS_SERV_MIGRATE_CREATE, &pvfs2_migrate_create_params}, 
    101105}; 
    102106 
  • branches/Orange-Migrate-Tools/src/server/pvfs2-server.h

    r8388 r8462  
    530530}; 
    531531 
     532 
     533/*This macro is used for other server operations to make a local call to get-attr*/ 
     534 
     535#define PINT_SETUP_LOCAL_FRAME(__s_op) \ 
     536    do{ \ 
     537        __s_op = malloc(sizeof(struct PINT_server_op)); \ 
     538        if(!__s_op){js_p->error_code = -PVFS_ENOMEM; return SM_ACTION_COMPLETE;} \ 
     539        memset(__s_op, 0, sizeof(struct PINT_server_op)); \ 
     540        __s_op->req = &__s_op->decoded.stub_dec.req; \ 
     541    }while(0) 
     542 
     543 
     544 
    532545struct PINT_server_getattr_op 
    533546{ 
     
    579592struct PINT_server_mgmt_migrate_op 
    580593{ 
    581    PVFS_handle *metahandle; 
    582    PVFS_fs_id fs_id; 
    583    int64_t dist_server; 
    584    /*need dest server address */ 
     594   char *dest_server; 
     595   PVFS_object_attr attr; 
     596   PVFS_handle dest_handle; 
    585597};     
    586598 
     599 
     600struct PINT_server_migrate_create_op 
     601{ 
     602    PVFS_handle new_handle; 
     603    PVFS_ds_attributes *ds_attr; 
     604}; 
    587605 
    588606 
     
    679697        struct PINT_server_tree_communicate_op tree_communicate; 
    680698        struct PINT_server_mgmt_migrate_op mgmt_migrate; 
     699        struct PINT_server_migrate_create_op migrate_create; 
    681700    } u; 
    682701 
     
    745764extern struct PINT_state_machine_s pvfs2_tree_remove_work_sm; 
    746765extern struct PINT_state_machine_s pvfs2_tree_get_file_size_work_sm; 
    747 extern struct PINT_state_machine_s pvfs2_mgmt_migrate_sm; 
     766extern struct PINT_state_machine_s pvfs2_migrate_create_create_sm; 
    748767 
    749768/* Exported Prototypes */ 
  • branches/Orange-Migrate-Tools/src/server/unstuff.sm

    r8317 r8462  
    403403    js_p->error_code = 0; 
    404404 
    405     getattr_op = malloc(sizeof(*getattr_op)); 
    406     if(!getattr_op) 
    407     { 
    408         js_p->error_code = -PVFS_ENOMEM; 
    409         return SM_ACTION_COMPLETE; 
    410     } 
    411     memset(getattr_op, 0, sizeof(*getattr_op)); 
     405    PINT_SETUP_LOCAL_FRAME(getattr_op); 
     406    PINT_SERVREQ_GETATTR_FILL(*getattr_op->req, 
     407                s_op->req->credentials, 
     408                s_op->req->u.unstuff.fs_id, 
     409                s_op->req->u.unstuff.handle, 
     410                s_op->req->u.unstuff.attrmask, 
     411                s_op->req->hints); 
    412412 
    413413    /* TODO: can we come up with a way to clean up and nail down what has  
     
    417417    /* need attrs that the prelude read already */ 
    418418    getattr_op->attr = s_op->attr; 
    419     /* need a valid request structure for some generic features like access 
    420      * logging  
    421      */ 
    422     getattr_op->req = s_op->req; 
    423     /* need to fill in the input parameters to the getattr nested machine */ 
    424     getattr_op->u.getattr.fs_id = s_op->req->u.unstuff.fs_id; 
    425     getattr_op->u.getattr.handle = s_op->req->u.unstuff.handle; 
    426     getattr_op->u.getattr.attrmask = s_op->req->u.unstuff.attrmask; 
     419     
    427420 
    428421    ret = PINT_sm_push_frame(smcb, 0, getattr_op);