From Daniel Gryniewicz <dang@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@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@redhat.com>