[lustre-devel] RFC: [PATCH 0/6] lustre: Improve locking in lu_object.s

James Simmons jsimmons at infradead.org
Tue May 15 08:42:00 PDT 2018


> This is a followup to the patches that James recently posted
> which addressed some locking issues in lu_object.c.
> I said at the time that I thought the locking could be
> improved further.  Here is the result of that thought.
> 
> The lu_keys_guard lock is now gone, replaced by a spin lock, an rwsem,
> and some lockless code.
> The lu_context_exit() function, which appears to have been a
> performance problem at one point, is now completely lockless.
> 
> This is an RFC at this stage: I haven't included Greg on the email and
> don't expect this to go upstream without some review - and maybe even
> some testing.

So I managed to mostly port it to the Intel branch. For testing on RHEL7
I had to add:

#ifndef smp_store_mb
#define smp_store_mb(var, value)       set_mb(var, value)
#endif

#ifndef wake_up_var
#define wake_up_var(atom)              wake_up_atomic_t(atom)
#endif

I'm still working out how to support wait_var_event on older kernels.
Another than that I have it ported so people will look at it. DDN was
very interested in this but they wouldn't work with the upstream client 
:-( Any suggestions to help speed up the process.

>       staging: lustre: make key_set_version an atomic_t
>       staging: lustre: use an rwsem instead of lu_key_initing_cnt.
>       staging: lustre: remove locking from lu_context_exit()
>       staging: lustre: use wait_event_var() in lu_context_key_degister()
>       staging: lustre: remove lock from key register/degister
>       staging: lustre: rename lu_keys_guard to lu_context_remembered_guard
> 
> 
>  drivers/staging/lustre/lustre/include/lu_object.h  |    1 
>  drivers/staging/lustre/lustre/obdclass/lu_object.c |  187 ++++++++------------
>  2 files changed, 78 insertions(+), 110 deletions(-)
> 
> --
> Signature
> 
> 


More information about the lustre-devel mailing list