21.06.2023 15:35, Jeff Layton пишет:
I don't think we can change this at this point. The bottom line (again) is that OFD locks are owned by the file descriptor (much like with flock()), and since file descriptors can be shared across multiple process it's impossible to say that some single process owns it.
What's the problem with 2 owners? Can't you get one of them, rather than meaningless -1? Compare this situation with read locks. They can overlap, so when you get an info about a read lock (except for the new F_UNLCK case), you get the info about *some* of the locks in that range. In the case of multiple owners, you likewise get the info about about some owner. If you iteratively send them a "please release this lock" message (eg in a form of SIGKILL), then you traverse all, and end up with the lock-free area. Is there really any problem here?