Details
-
Bug
-
Resolution: Fixed
-
Minor
-
None
-
None
-
3
-
9223372036854775807
Description
When the range lock was added to Lustre, inode mutex in the DIO path was removed. This was replaced with range lock usage, but then the entire area of code was accidentally replaced with a backport from the Linux kernel staging tree. This backport still had the inode mutex usage, which is unnecessary.
It looks like this was added back by mistake (sigh) when James Simmons backported some patches from the upstream kernel.
Quoting from https://review.whamcloud.com/#/c/32416/26 :
The history is basically this - When the range lock was added, this was removed. I then added the range lock for DIO reads because two DIO reads can't safely operate on the same pages. Then, around when I added the range lock for DIO reads, James back ported some older patches which still had the pre-range lock locking.
Here's the history.
Introduction of the range lock, removing the inode mutex here: http://review.whamcloud.com/6672 LU-1660
Adding range lock for DIO reads (because LU-1660 caused crashes ): http://review.whamcloud.com/14385 LU-6227
James' backport, which used older code w/the inode mutex: http://review.whamcloud.com/14665 LU-6260
It looks like my "add range lock" and James' backport were in flight at the same time.
I'm pretty sure this lock can be removed. I'll push a quick patch.