2013/1/18 Stephen Rothwell sfr@canb.auug.org.au:
Hi Pavel,
On Thu, 17 Jan 2013 20:52:09 +0400 Pavel Shilovsky piastry@etersoft.ru wrote:
This patchset adds support of O_DENY* flags for Linux fs layer. These flags can be used by any application that needs share reservations to organize a file access. VFS already has some sort of this capability - now it's done through flock/LOCK_MAND mechanis, but that approach is non-atomic. This patchset build new capabilities on top of the existing one but doesn't bring any changes into the flock call semantic.
This has probably been discussed, but is Linux's leases implementation not sufficient? Just wondering.
As I understand it, leases play different role: they allow to cache a data for the particular open and then flush it when a lease break comes. But we need to protect opens from being done if their access/share mode is not suitable for previously done opens. E.g. if we have already opened a file with O_RDONLY | O_DENYWRITE we can't open it again with any of O_WRONLY, O_RDWR and O_DENYREAD flags (of course all these things should only work if O_DENYMAND is specified for the first and the second opens).