Hi, We're noticing a rare race here with open() in tail(1), where this happens:
tail --follow=name "file" /* "file" is unlinked() by another process */ read(IN_ATTRIB from inotify); /* for st_nlink-- */ open("file") /* Done to check if deleted, but this succeeds! */ The open() succeeding is surprising. Is that allowed? The summary of the sequence in the kernel is: vfs_unlink() { mutex_lock(&(dentry->d_inode->i_mutex)); security_inode_unlink(dir, dentry); try_break_deleg(target, delegated_inode); dir->i_op->unlink(dir, dentry); dont_mount(dentry); detach_mounts(dentry); mutex_unlock(&(dentry->d_inode->i_mutex)); fsnotify_link_count(target) d_delete(dentry); } thanks, Pádraig. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/