[Pvfs2-developers] (no subject)

Sam Lang slang at mcs.anl.gov
Thu Apr 26 13:35:55 EDT 2007


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


More information about the Pvfs2-developers mailing list