On Wed, 16 May 2007 02:06:31 +0200, Jörn Engel wrote: > > > > + > > > + if (dest) { > > > + /* symlink */ > > > + ret = logfs_inode_write(inode, dest, destlen, 0); > > > + } else { > > > + /* creat/mkdir/mknod */ > > > + ret = __logfs_write_inode(inode); > > > + } > > > + super->s_victim_ino = 0; > > > + if (ret) { > > > + if (!dest) > > > + li->li_flags |= LOGFS_IF_STILLBORN; > > > + /* FIXME: truncate symlink */ > > > + inode->i_nlink--; > > > + iput(inode); > > > + goto out; > > > + } > > > + > > > + if (inode->i_mode & S_IFDIR) > > > + dir->i_nlink++; > > > > You have helper functions for i_nlink++, which remember to do > > mark_inode_dirty()? > > I do. Looks like I should use them here and in at least one other > place. Will recheck them all. Actually, this code was correct. New inodes get written immediatly to ensure catching -ENOSPC at a place where errors can get returned. After leaving this function, the inode is not dirty. Either it has been written or it is marked LOGFS_IF_STILLBORN never will be. Your intuition was still good. Link() did need the change you indicated. Jörn -- Joern's library part 14: http://www.sandpile.org/ - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html