From Daniel Gryniewicz <dang(a)redhat.com>:
Daniel Gryniewicz has uploaded this change for review. (
https://review.gerrithub.io/420078
Change subject: MDCACHE - Allow readdir_plus to reload entire chunks
......................................................................
MDCACHE - Allow readdir_plus to reload entire chunks
When the handle cache is full, there may be dirents (even a lot of them)
that are cached that have no corresponding entry in the handle cache.
When a readdir() hits a chunk of these, it must to a lookup() and a
getattrs() on each one, causing many round-trips to the cluster, raising
latency of readdir() considerably.
However, if a FSAL has readdir_plus, it can get multiple dirents and
their associated entries and attributes in one (or a few) round-trips to
the cluster. If this is the case, remove the empty chunk, and reload
it from the FSAL.
In addition, to make sure that entries in a chunk are not reaped while
that chunk is being used for readdir(), take a ref on each entry until
it's passed up to the caller.
Change-Id: Ibefd1ca782c7d616efde8cdf7335881df5a95c6e
Signed-off-by: Daniel Gryniewicz <dang(a)redhat.com>
---
M src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_helpers.c
M src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_int.h
M src/include/gsh_lttng/mdcache.h
3 files changed, 98 insertions(+), 19 deletions(-)
git pull ssh://review.gerrithub.io:29418/ffilz/nfs-ganesha refs/changes/78/420078/1
--
To view, visit
https://review.gerrithub.io/420078
To unsubscribe, or for help writing mail filters, visit
https://review.gerrithub.io/settings
Gerrit-Project: ffilz/nfs-ganesha
Gerrit-Branch: next
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibefd1ca782c7d616efde8cdf7335881df5a95c6e
Gerrit-Change-Number: 420078
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Gryniewicz <dang(a)redhat.com>