The cthon04 tests ended up failing, which was caused by a glitch in handling end of directory.
This has been fixed, as well as an issue where we didn't properly NOT enumerate deleted entries. I have removed the WIP designation, I feel this is ready for testing. It is available in this github branch: https://github.com/ffilz/nfs-ganesha/commits/readdir Or you can check it out of gerrithub: git fetch https://ff...@review.gerrithub.io/a/ffilz/nfs-ganesha refs/changes/81/350081/3 && git checkout FETCH_HEAD -b readdir Frank > > 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 --- 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