[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] docs: document file-posix locking protocol
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
Re: [PATCH v2] docs: document file-posix locking protocol |
Date: |
Thu, 15 Jul 2021 23:00:51 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
03.07.2021 16:50, Vladimir Sementsov-Ogievskiy wrote:
+Permission bytes. If permission byte is rd-locked, it means that some process
+uses corresponding permission on that file.
+
+Byte Operation
+100 read
+ Lock holder can read
+101 write
+ Lock holder can write
+102 write-unchanged
+ Lock holder can write same data if it sure, that this write doesn't
+ break concurrent readers. This is mostly used internally in Qemu
+ and it wouldn't be good idea to exploit it somehow.
Let's make it more strict:
New software should never lock this byte and interpret this byte locked by
other process like write permission (same as 101).
+103 resize
+ Lock holder can resize the file. "write" permission is also required
+ for resizing, so lock byte 103 only if you also lock byte 101.
+104 graph-mod
+ Undefined. QEMU may sometimes locks this byte, but external programs
+ should not. QEMU will stop locking this byte in future
+
+Unshare bytes. If permission byte is rd-locked, it means that some process
+does not allow the others use corresponding options on that file.
+
+Byte Operation
+200 read
+ Lock holder don't allow read operation to other processes.
+201 write
+ Lock holder don't allow write operation to other processes. This
+ still allows others to do write-uncahnged operations. Better not
+ exploit outside of Qemu.
+202 write-unchanged
+ Lock holder don't allow write-unchanged operation to other processes.
And here, correspondingly:
New software should never lock this byte and interpret this byte locked by
other process like write permission unshared (same as 201).
+203 resize
+ Lock holder don't allow resizing the file by other processes.
+204 graph-mod
+ Undefined. QEMU may sometimes locks this byte, but external programs
+ should not. QEMU will stop locking this byte in future
+
+Handling the permissions works as follows: assume we want to open the file to
do
+some operations and in the same time want to disallow some operation to other
+processes. So, we want to lock some of the bytes described above. We operate as
+follows:
+
--
Best regards,
Vladimir