Daniel Gryniewicz has uploaded this change for review.

View Change

MDCACHE - Fix dirent chunk linking

We can't depend on the order of the chunk list for finding a previous
chunk. This is for several reasons. 1. chunks are reaped out of the
middle of the list. 2. A readdir can start on a missing chunk, meaning
there's no way to find the previous chunk, even if it exists.

Remove the ordered aspect of the list, since we can't depend on it, and
keep a prev_chunk pointer in the state. This allows us to set next_ck
going forward from whatever chunk we start with. There will be fewer
cases when next_ck is set correctly, but we won't end up with cycles
where next_ck points further back into the directory.

Change-Id: I9d48c2937f2deaf3dd3614da6b9e1df1fd5e67e3
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
2 files changed, 65 insertions(+), 121 deletions(-)

git pull ssh://review.gerrithub.io:29418/ffilz/nfs-ganesha refs/changes/88/444688/1

To view, visit change 444688. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: ffilz/nfs-ganesha
Gerrit-Branch: next
Gerrit-Change-Id: I9d48c2937f2deaf3dd3614da6b9e1df1fd5e67e3
Gerrit-Change-Number: 444688
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Gryniewicz <dang@redhat.com>
Gerrit-MessageType: newchange