> On 02/23/2017 08:00 PM, Frank Filz wrote:
> >> 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.
> 
> I don't think we should ultimately keep both cache types.  For now, while
> we're testing, it's fine, but I think we should remove the old cache once
we
> have confidence in the chunked cache.

Yea, that has been my thought. The only advantage to old cache would be for
a filesystem that could not support seekdir and thus HAD to enumerate and
cache an entire directory, especially if it could not provide a cookie
Ganesha could use.

Currently we don't have such a filesystem...

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
[email protected]
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

Reply via email to