Hi all,

We've been getting a number of collaborators (you know who you are :-)) wanting to specify which server gets the first stripe (or the only stripe if num_dfiles = 1). We could push this to this distribution stuff I think. A bunch of the distribution callbacks take a PINT_request_file_data:

typedef struct PINT_request_file_data_s {
PVFS_size fsize; /* actual size of local storage object */ uint32_t server_nr; /* ordinal number of THIS server for this file */
    uint32_t     server_ct;     /* number of servers for this file */
    struct PINT_dist_s *dist;   /* dist struct for the file */
PVFS_boolean extend_flag; /* if zero, file will not be extended */
} PINT_request_file_data;

So I think we could add something similar to get_num_dfiles:

int (*get_dfile_mapping)(void *params, PINT_request_file_data *fd, int num_available, int * indices);

This essentially takes a number of servers available, and returns an array of indices. The indices in the array can be in order starting at some non-zero index (the random round-robin scheme we have now), or completely random, etc.

Right now the randomized first stripe code is in PINT_cached_config_get_next_io. It would use the new get_dfile_mapping function to get the indices and map the servers to those indices to figure out the next server.

(We might also wanting to consider using this for meta data servers as well..)

Julian, how would this stuff fit in with your migration/hints stuff?

I can add these bits to the code and the distributions if they seem reasonable.

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

Reply via email to