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