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
_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to