I started making the changes to the distribution code and
PVFS_sys_dist_setparam call that I described here:
http://www.beowulf-underground.org/pipermail/pvfs2-developers/2007-
March/003223.html
But remembered that we had talked about getting this interface right
in the first place back in October of 2006. There was a long thread
about distributions and server mappings and interfaces:
http://www.beowulf-underground.org/pipermail/pvfs2-developers/2006-
October/002715.html
I think we came to some conclusions and consensus, but nothing ever
happened with it.
I'll try to summarize:
* Heidelberg has a need to be able to specify the exact IO servers in
a distribution (for migration IIRC). As I understand it, they are
currently doing this with hints, but Julian can correct me. They
would prefer a hint structure that is essentially a string blob in a
well known format.
* Most (all?) of us agree that adding a hint parameter to the system
interfaces is a good idea, but the distribution should continue to
remain separate, since invalid dist parameter values can't just be
ignored.
* Specific server lists should be allowed to be set on a distribution
as a parameter. Distributions can choose to accept or reject the
parameter, but the name of the parameter should be consistent over
all distributions. This conflicts with that more recent thread
where I suggested the setparam key/value arguments be replaced with a
big setparams void pointer that takes the struct of parameters for
that specific distribution. So essentially, instead of:
uint64_t strip_size;
PVFS_dist_server_map server_map;
server_map.length = 4;
server_map.servers = ...;
PVFS_sys_dist_setparam(dist, "io-server-mapping", &server_map);
strip_size = 1024;
PVFS_sys_dist_setparam(dist, "strip_size", &strip_size);
we would have:
struct PVFS_simple_stripe_params_s ss_params;
PVFS_sys_dist_getparam(dist, &ss_params);
ss_params.server_map.length = 4;
ss_params.server_map.servers = ....;
ss_params.strip_size = 1024;
PVFS_sys_dist_setparam(dist, &ss_params);
The problem I see here is that we were beginning to define
distribution parameters that were generic over all distributions, and
the same code that set the param for different distributions would
just happened to work because of our run-time reflection. We remove
the laziness with this new interface, since the specific distribution
param struct must be declared and its fields accessed. Does that
matter to anyone?
Thoughts on this?
-sam
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers