|
During inspection of LU-2869 I was asked to file a ticket to track this problem in the future.
The issue is that client-side LDLM does not have support for atomic match_or_enqueue operations. This may cause several lock enqueue requests being issued in parallel by a single client causing lock ping-pongs.
It looks like different parts of Lustre code either ignore this problem or solve it in a specific way. For example, ll_layout_refresh() implements the atomic operation by serializing requests with lli_layout_mutex. The extended attribute cache patch uses the same technique with lli_xattrs_enq_lock().
|