|author||Seebs <email@example.com>||2018-03-01 10:56:31 -0600|
|committer||Seebs <firstname.lastname@example.org>||2018-03-01 10:56:31 -0600|
Don't delete things and not create them.
When OP_CREAT comes in, if there's an existing entry with the same inode, we nuke that entry because CREAT implies a new file got that inode, and if there's an existing entry with the same path, we don't create a link, because there's already something there. So if there's a single entry with the same path and inode, it gets deleted and not recreated. Oops. Now distinguishing between a single exact match of both path and inode, and distinct matches by path and by inode. This addresses a use case where parallel creations could in theory cause pseudo to mistakenly drop database entries, potentially. (I could only trigger it by doing this to files which had existing entries, and then deleting the files outside of pseudo, though.) Signed-off-by: seebs <email@example.com>
Diffstat (limited to 'ChangeLog.txt')
1 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 169e707..e0783fb 100644
@@ -1,3 +1,9 @@
+ * (seebs) If you get a CREAT for an existing file, and it matches
+ both path and inode, don't delete the entry because the inode
+ matched and then not create it because the path used to match
+ before you delete it.
* (seebs) implement mkstemps, mkostemp, and mkostemps. Actually,
move implementation all to mkostemps, then implement the others