On 04/10/2017 11:57 AM, Frank Filz wrote: >> Hi All, there is usually a 1:1 relationship (ignoring handles across > architectures >> and versions) between nfs handle and object handle. One thing that is not >> clear is the "key" which is used for hashing the objects > (mdcache_entry_t). >> Ganesha 2.5 has handle_to_key() method to take unique bits from the >> handle for acching purpose. How did this work in ganesha 2.3? Ganesha 2.3 >> comments say that extract_handle method is used to get the key, but this >> eventually results in losing the actual handle. >> >> >> Also comment at mdcache_create_handle() indicates that it takes "key" >> but the actual argument "struct gsh_buffdesc *hdl_desc" is written as >> "Buffer descriptor for the "wire" handle". Is this wire handle or key? >> If this is not the "key", then we will be looking for an incorrect object, > right? > > Looking over the code, I THINK everything is right... > > There is still a handle_digest method, and for GPFS it uses > gpfs_sizeof_handle to determine the size to copy, so that may well copy the > full handle. > > The code is definitely very confusing... > > There IS a handle_cmp method... > > I suggest we consider re-writing and clarifying all of this handle > processing code. > > I think everywhere, the handle digest should be whatever the FSAL wants > encapsulated. > > The handle_to_key function should be used to extract the key to be hashed by > anything that wants to hash things, and since we will be using that for > hashing, we should drop the handle_cmp method (or have a default version > that just calls handle_to_key on the two handles it will compare, and then > compare memory using the buffer descriptors returned by handle_to_key).
This is, in fact, what it does. > > FSALs having a custom handle_cmp isn't useful because they can't pick and > choose fields in the handle to compare (since a hash of such a discontinuous > handles would hash bytes that aren't part of the comparison, generating > different hashes for handles that are the same key). But it may be able to do this comparison faster, and avoiding copying things around. > > I THINK this really only affects GPFS which puts extra stuff into some of > it's handles that may be different at different times for the same object. > > Part of why this was never really clear is the folks who did all the stuff > really didn't understand GPFS handles (I remember lots of confusion before > we got it right). > > Frank > > Daniel ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Nfs-ganesha-devel mailing list Nfs-ganesha-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel