> I have a first pass that works and passes pynfs! It isn't quite correct in that a > rename into a directory or a create doesn't invalidate the dirent cache and > thus a readdir might not show the new file. > > Unlink and rename out of a directory need not invalidate and should work > properly. > > Also left to do is memory management to constrain the total number of > dirents. > > The inode cache LRU reclaims the least recently used entry, however that > would cause problems for dirents since to reclaim one, we must hold the > content lock on the containing directory, but we also hold the content lock on > the directory that needs another dirent. If the two directories happen to be > involved in a rename from one directory to another, the order could be > reversed and create a deadlock. > > Another option is to have the LRU thread dispose of dirents from the least > recently used directories the same way it disposes of open global file > descriptors. That combined with logic that switched to uncached mode if we > couldn't get a free dirent would allow a reasonable mechanism. > > Anyway, I encourage folks who are interested to take a look at the WIP code > and play with it.
And now directory invalidation is enabled for create, link, and rename. I think this is pretty close to complete. Please have at it, we will torture it at Connectathon next week. If we can gain a reasonable confidence, we can merge it this week, though that doesn't give people much time to review... It can be disabled by setting Dir_Chunk to 0 in the CacheInode config block. Still to be decided is how to interact with disabling dirent cache. Currently, with chunking enabled, we will never skip caching. Also, do we want to keep the legacy dirent cache? One proposal is to dump the legacy cache, and if Dir_Chunk is 0 then don't cache. Another thought is to look at the nlinks in the directory and decide to cache or chunk. Thanks Frank --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus ------------------------------------------------------------------------------ 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