[OpenAFS-devel] Patch to prepare the client for addition protocols

Felix Frank Felix.Frank@Desy.de
Wed, 15 Jul 2009 16:17:22 +0200


I have thought this through. Here's what I think now:

>>>> +rxfs_storeInit(struct vcache *avc, struct storeOps **ops, char **rock)
>>> As far as I can see callers to this function expect that the third 
>>> parameter will always be a struct rxfs_storeVariables, so why not 

That's true, but...

>>> just return that, rather than an anoymous pointer? My earlier comment 
>>> about rocks applies here, too.

...afs_CacheStoreProc will later call several "storeOps" according to 
protocol, and does not care what that protocol is. It knows at the one 
time at which it chooses what xxx_fetchInit() function to call, but it 
doesn't care afterwards. So it will have to store the resulting rock as 
a void* anyway, so as to pass it to the anonymous fetchOps. Typing it 
here would imply a cast of the void** argument passed by 
afs_CacheStoreProc to rxfs_storeVariables**, which strikes me as a 
rather dull thing to do.

I hope this wasn't too convoluted.

  - Felix