Messages in this thread | | | Date | Fri, 20 Feb 2004 18:00:43 +0000 | From | viro@parcelfa ... | Subject | Re: [patch] explicit dcache <-> user-space cache coherency, sys_mark_dir_clean(), O_CLEAN |
| |
On Fri, Feb 20, 2004 at 02:23:52PM +0100, Ingo Molnar wrote:
> i've also attached dir-cache.c, a simple testcode for the new > functionality. It marks the current directory clean and tries to open > the "./1" file via O_CLEAN with 1 second delay. Start this in one shell > and do VFS-namespace modifying ops in another window (eg. "rm -f 2; > touch 2") and see the dir-cache code react to it - the 'clean' bit is > lost, and the file open-create does not succeed if the directory is not > clean. > > there's a new dentry flag that is maintained under the directory's i_sem > semaphore. (It would be simpler to have the flag on the inode level, > that way the invalidation could be done as a simple filter to the > dnotify function.)
IMO putting that in dentry (let alone inode) is fundamentally broken. Basically, your flag says "somebody in userland knows the contents of directory". So your create-if-clean is inherently racy - if we get
task A task B task C had learnt the contents marked clean changed the contents had learnt the contents marked clean did create-if-clean, assuming its knowledge to be accurate
then A will succeed just fine. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |