Changeset 8770

Show
Ignore:
Timestamp:
03/21/11 16:54:45 (2 years ago)
Author:
bligon
Message:

Correct dbpf_open_cache_remove bug.

Location:
branches/OB-DBPF-OPEN-CACHE-REMOVE/src/server
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/OB-DBPF-OPEN-CACHE-REMOVE/src/server/pjmp-machines.sm

    r8591 r8770  
    9292    state pjmp_remove_work_initialize 
    9393    { 
    94         run pjmp_initialize; 
    95         default => pjmp_call_remove_work_sm; 
     94        run pjmp_remove_work_schedule_job; 
     95        success => pjmp_call_remove_work_sm; 
     96        default => pjmp_remove_work_execute_terminate; 
    9697    } 
    9798 
     
    99100    { 
    100101        jump pvfs2_remove_work_sm; 
     102        default => pjmp_remove_work_release_job; 
     103    } 
     104 
     105    state pjmp_remove_work_release_job 
     106    { 
     107        run pjmp_remove_work_release_job; 
    101108        default => pjmp_remove_work_execute_terminate; 
    102109    } 
    103  
    104110    state pjmp_remove_work_execute_terminate 
    105111    { 
    106         run pjmp_execute_terminate; 
     112        run pjmp_remove_work_execute_terminate; 
    107113        default => terminate; 
    108114    } 
     
    233239}/*end action cleanup_msgpairarray*/ 
    234240 
     241static PINT_sm_action pjmp_remove_work_schedule_job(struct PINT_smcb *smcb, job_status_s *js_p) 
     242{ 
     243   int ret; 
     244   struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     245 
     246   ret = PINT_server_req_get_object_ref(s_op->req 
     247                                       ,&s_op->target_fs_id 
     248                                       ,&s_op->target_handle); 
     249   s_op->access_type = PINT_server_req_get_access_type(s_op->req); 
     250   s_op->sched_policy = PINT_server_req_get_sched_policy(s_op->req); 
     251 
     252   gossip_err("pjmp_remove_work_schedule_job: s_op->target_fs_id:%llu   s_op->target_handle:%llu\n" 
     253              ,llu(s_op->target_fs_id) 
     254              ,llu(s_op->target_handle)); 
     255 
     256   js_p->error_code = 0; 
     257   ret = job_req_sched_post( s_op->op 
     258                            ,s_op->target_fs_id 
     259                            ,s_op->target_handle 
     260                            ,s_op->access_type 
     261                            ,s_op->sched_policy 
     262                            ,smcb 
     263                            ,0 
     264                            ,js_p 
     265                            ,&(s_op->scheduled_id) 
     266                            ,server_job_context); 
     267   return ret; 
     268}/*end pjmp_remove_work_schedule_job*/ 
     269 
     270 
     271static PINT_sm_action pjmp_remove_work_release_job(struct PINT_smcb *smcb, job_status_s *js_p) 
     272{ 
     273   int ret = -1; 
     274   job_id_t tmp_id; 
     275   struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     276 
     277   /* save the error-code returned from the previous step */ 
     278   s_op->u.remove.saved_error_code = js_p->error_code; 
     279 
     280   ret = job_req_sched_release( s_op->scheduled_id 
     281                               ,smcb 
     282                               ,0 
     283                               ,js_p 
     284                               ,&tmp_id 
     285                               ,server_job_context); 
     286  
     287   return ret;   
     288}/*end pjmp_remove_work_release_job*/ 
     289 
     290static PINT_sm_action pjmp_remove_work_execute_terminate(struct PINT_smcb *smcb, job_status_s *js_p) 
     291{ 
     292   struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT); 
     293 
     294   js_p->error_code = s_op->u.remove.saved_error_code; 
     295 
     296   return SM_ACTION_TERMINATE; 
     297}/*end pjmp_remove_execute_terminate */ 
     298 
    235299 
    236300/* 
  • branches/OB-DBPF-OPEN-CACHE-REMOVE/src/server/pvfs2-server.h

    r8666 r8770  
    458458    int index; 
    459459    int remove_keyvals_state; 
     460    int saved_error_code; /* holds error_code from previous state. */ 
    460461}; 
    461462