[Pvfs2-developers] a little help?

Walter B. Ligon III walt at clemson.edu
Wed Oct 25 13:47:12 EDT 2006


Uh, what?  what do you mean by "copy the results to the downcall"?
Your post indicated that if the was_handled_inline member was set that 
was all that was needed.  Is something else needed?  I don't know what a 
downcall is or how to copy results there.

Walt

Murali Vilayannur wrote:
> Hi Walt,
> 
>> Maybe it would be simpler to modify the code as shown:
>>
>> >>     /*
>> >>       check if we need to repost the operation (in case of failure or
>> >>       inlined handling/completion)
>> >>     */
>> >>     switch(ret)
>> >>     {
>>             case SM_ACTION_TERMINATE:
>>                 vfs->request->was_handled_inline = 1;
> 
> 
> 
> 
> Ok, that works too :)
> Just remember to copy the results to the downcall (calling the
> write_inlined_device_response should do the trick)
> before reposting the op.
> thanks,
> Murali
> 
>>                 /* this code falls through to the next case */
>> >>         case 0:
>> >>         {
>> >>             /*
>> >>               if we've already completed the operation, just repost
>> >>               the unexp request
>> >>             */
>> >>             if (vfs_request->was_handled_inline)
>> >>             {
>> >>                 ret = repost_unexp_vfs_request(
>> >>                     vfs_request, "inlined completion");
>> >>             }
>> >>             else
>> >>             {
>> >
>> >
>> > What we could do to retain this part of the code is to set the
>> > ->was_handled_inline member variable in all the post_*_request()
>> functions
>> > if the PVFS_isys_*() function indicated that the posted operation
>> finished
>> > immediately.
>> > If we do that, then we could retain this code as is without adding any
>> > more cases. Great catch!
>> > thanks,
>> > Murali
>> >
>> >
>> >>                 /*
>> >>                   otherwise, we've just properly posted a non-blocking
>> >>                   op; mark it as no longer a dev unexp msg and add it
>> >>                   to the ops in progress table
>> >>                 */
>> >>                 vfs_request->is_dev_unexp = 0;
>> >>                 ret = add_op_to_op_in_progress_table(vfs_request);
>> >>#if 0
>> >>                 assert(is_op_in_progress(vfs_request));
>> >>#endif
>> >>             }
>> >>         }
>> >>         break;
>> >>         case REMOUNT_PENDING:
>> >>             ret = repost_unexp_vfs_request(
>> >>                 vfs_request, "mount pending");
>> >>             break;
>> >>         case OP_IN_PROGRESS:
>> >>             ret = repost_unexp_vfs_request(
>> >>                 vfs_request, "op already in progress");
>> >>             break;
>> >>         default:
>> >>             PVFS_perror_gossip("Operation failed", ret);
>> >>             ret = repost_unexp_vfs_request(
>> >>                 vfs_request, "failure");
>> >>             break;
>> >>     }
>> >>     return ret;
>> >>}

-- 
Dr. Walter B. Ligon III
Associate Professor
ECE Department
Clemson University


More information about the Pvfs2-developers mailing list