Skip to content
Snippets Groups Projects
Commit a56ee6e3 authored by Yury Umanets's avatar Yury Umanets
Browse files

b=13595,13608

r=nathan,adilger,shadow,green

- separates client and server namespaces. Each "side" has own list and own lock;
- separate pool shrinker to client and server shrinkers which work each with own list. This is needed to avoid mixing up server and client pool cached resources which are too different. Client's locks may be canceled in sync manner and we can return to VM number of still cached resources. And server resources (locks) are not removed in sync way,  we just change SLV and expect that client will cancel something. To VM we return 0 as number of canceled locks;

- in ldlm_pools_shrink() use down_trylock() to avoid locking ns sem when it is already locked. This fixes hang up in test 116 if memory pressure comes. This issue is due to deadlock bewteen shrinker and pool thread if client and server run on same host;

- move lru add stuff into separate func;
- change l_last_used and move lock to tail of lru for case of FL_TEST_LOCK to make sure that it will still hang for some time in lru afer that. So that, if we looked for look even with FL_TEST_LOCK this means that we may need its resourse yet some time and better to stay lock in cache.
parent 2c7e0471
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment