REVIEW: http://review.gluster.org/9576 (cluster/afr: serialize inode locks) posted (#1) for review on release-3.6 by Pranith Kumar Karampuri (pkarampu)
afr part of the fix is sent for review. Dht patch also needs to be sent out for the complete fix. Assigning to Raghavendra G for now.
COMMIT: http://review.gluster.org/9576 committed in release-3.6 by Raghavendra Bhat (raghavendra) ------ commit 73835a06e87f685354816fb6c2ca4a9918f5e314 Author: Pranith Kumar K <pkarampu> Date: Wed Dec 31 15:15:53 2014 +0530 cluster/afr: serialize inode locks Backport of http://review.gluster.org/9372 Problem: Afr winds inodelk calls without any order, so blocking inodelks from two different mounts can lead to dead lock when mount1 gets the lock on brick-1 and blocked on brick-2 where as mount2 gets lock on brick-2 and blocked on brick-1 Fix: Serialize the inodelks whether they are blocking inodelks or non-blocking inodelks. Non-blocking locks also need to be serialized. Otherwise there is a chance that both the mounts which issued same non-blocking inodelk may endup not acquiring the lock on any-brick. Ex: Mount1 and Mount2 request for full length lock on file f1. Mount1 afr may acquire the partial lock on brick-1 and may not acquire the lock on brick-2 because Mount2 already got the lock on brick-2, vice versa. Since both the mounts only got partial locks, afr treats them as failure in gaining the locks and unwinds with EAGAIN errno. BUG: 1189023 Change-Id: If5dd502d9d25d12425749a8efcf08a1423b29255 Signed-off-by: Pranith Kumar K <pkarampu> Reviewed-on: http://review.gluster.org/9576 Reviewed-by: Krutika Dhananjay <kdhananj> Tested-by: Gluster Build System <jenkins.com> Reviewed-by: Raghavendra Bhat <raghavendra>
v3.6.7 has the fix