Ashish Sangwan has uploaded this change for review.

View Change

MDCACHE - Fix race between lru functions for the chunk and the parent
of the chunk getting freed and reused.

The LRU functions which acts on the chunk, chunk_lru_run_lane and
lru_reap_chunk_impl both of them takes ref on the chunk and dropa
the qlane lock before calling mdcache_lru_unref_chunk to drop
the ref taken earlier. The extra ref prevents the chunk from getting
freed but it can't stop the chunk's parent from getting freed and reused.
We are hitting a hang when trying to acquire content lock on
the freed parent.
These LRU functions doesn't actually need ref and holding the qlane
lock is enough to prevent the chunk from being freed.

Signed-off-by: Ashish Sangwan <ashishsangwan2@gmail.com>
Change-Id: I3cb5f09fa4894c121545a47182116e77d94f0643
---
M src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_avl.c
M src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_helpers.c
M src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_lru.c
M src/FSAL/Stackable_FSALs/FSAL_MDCACHE/mdcache_lru.h
4 files changed, 25 insertions(+), 56 deletions(-)

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

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

Gerrit-Project: ffilz/nfs-ganesha
Gerrit-Branch: next
Gerrit-Change-Id: I3cb5f09fa4894c121545a47182116e77d94f0643
Gerrit-Change-Number: 451673
Gerrit-PatchSet: 1
Gerrit-Owner: Ashish Sangwan <ashishsangwan2@gmail.com>
Gerrit-MessageType: newchange