On 10/17/24 11:05 AM, Christoph Hellwig wrote:
On Wed, Oct 16, 2024 at 10:23:14AM -0400, Waiman Long wrote:
Another alternative that I have been thinking about is a down_read() variant
with intention to upgrade later. This will ensure that only one active
reader is allowed to upgrade later. With this, upgrade_read() will always
succeed, maybe with some sleeping, as long as the correct down_read() is
used.
At least for the XFS use case where direct I/O takes a share lock
that needs to be replaced with an exclusive one for certain kinds of
I/O would be useless. But then again we've survived without this
operation for a long time, despite the initial port bringing one over
from IRIX.
That means XFS only needs to upgrade to a write lock in certain cases
only, not all of them. Right? In that case, read_try_upgrade() that
attempts to upgrade to a write lock will be useful.
Cheers,
Longman