On Sep 15, 2007, at 9:56 AM, Julian Martin Kunkel wrote:

Hi Sam,
cool that you made the modifications ;-)

I think the overall changes look good. There are only a few (minor) comments
you might consider if you like..
I would rather avoid to store the encode & decode functions explicitly in the PVFS_hint_s struct, because it is contained in the PINT_hint_info struct as
well. I add some comments and modifications directly to the structure:

Agreed.  I'll make that change.

typedef struct PVFS_hint_s
{
    struct PINT_hint_info * type; /* link with the specific type */
char* unknown_type_name; /* used only if the type is unknown otherwise the * name is available in the type array*/
    char* value;
    int32_t length;

    int flags;
    struct PVFS_hint_s *next;
    /* int count; where and how do you use this value ? */

Its probably just left-over from wanting to keep track of transferrable hints instead of having to compute the number at encode time. I can remove it.


} PINT_hint;

Therefore just add a dummy type for unknown hints in the PINT_hint_info struct
to cover for the encode functions:
static const struct PINT_hint_info hint_types[] = {

    {PINT_HINT_UNKNOWN
     PINT_HINT_TRANSFER,
     PVFS_HINT_UNKNOWN,
     encode_func_string,
     decode_func_string,
0, /* value gets automatically filled depending on the length of the hint
*/
...
}

Maybe it would be neat to have another function:
int PVFS_hint_add_internal(
    PVFS_hint *hint,
    int type, /*instead of string */
    int length,
    void *value)
That one could be used internally for instance as follows:
In the function decode_PINT_hint the function PVFS_hint_add is used. I like this idea to support unknown hints (from the clients view) to work on servers understanding the hint. However, for known hints this extra computation could be avoided by using the available hint type directly. This would avoid to
look up the hint's type by the server again.
Yep, that's fine.  I'll add that.
-sam

Also if the server might want to add a hint directly (for further inter server communication) it could do so by using the PVFS_hint_add_internal function itself. (I used something like this to tag special migration I/O's between
the servers)...

With your scheme (with or without the modifications I propose) adding new hints seems unproblematic. If the server does not understand the hint it is ignored, the client encodes it as a string. A problem is only if the client
has a different order of the hints as the server.
That is fine with me ;-)

Best regards,
Julian


_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to