From 211ff0c67ea6737853cf932313cf4e27cc15f55c Mon Sep 17 00:00:00 2001 From: rtm Date: Sun, 13 Aug 2006 12:22:44 +0000 Subject: namei returns locked parent dir inode for create / unlink don't hold fd table lock across idecref() (latter does block i/o) idecref calls iput() in case last ref -> freeing inode dir size is 512 * # blocks, so readi/writei &c work unlink deletes dirent even if ip->nlink > 0 --- Notes | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Notes') diff --git a/Notes b/Notes index 386bc2f..4bb9552 100644 --- a/Notes +++ b/Notes @@ -365,3 +365,18 @@ two bugs in unlink: don't just return if nlink > 0, and search for name, not inum is there a create/create race for same file name? resulting in two entries w/ same name in directory? + +namei + return just inode + return offset in dir where found, w/ dir locked, for unlink + return dir locked, for mknod + +is the offset alone useful? how do I read/write it? + +test: one process unlinks a file while another links to it +test: simultaneous create of same file +test: one process opens a file while another deletes it + +oy, mkfs wants dir size to be last written entry, but i + want it to be nblocks*512 + maybe fix kernel code to handle former -- cgit v1.2.3