Re: I can't get no readdir satisfaction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 23 Aug 2016, at 15:36, J. Bruce Fields wrote:

On Tue, Aug 23, 2016 at 11:09:37AM -0400, Benjamin Coddington wrote:
Hi linux-nfs,

311324ad1713 ("NFS: Be more aggressive in using readdirplus for 'ls -l'
situations") changed when nfs_readdir() decides to revalidate the
directory's mapping, which contains all the entries. In addition to just checking if the attribute cache has expired, it includes a check to see if
NFS_INO_INVALID_DATA is set on the directory.

Well, customers that have directories with very many dentries and that same directory's attributes are frequently updated are now grouchy that `ls -l` takes so long since any update of the directory causes the mapping to be invalidated and we have to start over filling the directory's mapping.

Apologies, I don't understand the client's readdir implementation.  So
it really zeroes out the cookie every time it invalidates the directory
cache?

Yes, it zeros the cookieverf, so as I understand it we have to start over.
But, maybe for a given open() of a directory we can just keep the same
cookieverf, even if we invalidate the mapping we can continue to return
entries where the last nfs_readdir() left off..

I don't fully understand the client's readdir implementation either..

I also seem to remember it makes up its own cookies to return to users
instead of returning the server's.  Is the cookie invalidation a
consequence of that?  I don't think it should have to be.  And as long
as these two things (cache and cookie validity) are tied together, I
can't see how we're going to guarantee readdir progress.

For users, it looks like a "position" is used, which is like an index into the entries. After READDIR, each entry's cookie is stored in the pagecache in
an array indexed by this position.  So in order to resume reading the
directory at a position, we need retrieve all the prior entries from the
server to determine what cookie to start from.

.. that made sense to me.  I hope I am understanding this correctly.

Ben
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux