On Wed, Jul 27, 2011 at 02:15:54AM +0100, Al Viro wrote: > On Tue, Jul 26, 2011 at 09:13:12PM -0400, Theodore Ts'o wrote: > > + inode = igrab(inode); > > + while (ext4_test_inode_state(inode, EXT4_STATE_NEWENTRY)) { > > ext4_clear_inode_state(inode, EXT4_STATE_NEWENTRY); > > - dentry = list_entry(inode->i_dentry.next, > > - struct dentry, d_alias); > > - if (!dentry || !dentry->d_parent || !dentry->d_parent->d_inode) > > + dentry = list_first_entry(&inode->i_dentry, > > + struct dentry, d_alias); > > ... and what if you don't have a dentry for that inode anymore? I thought you were complaining that dentry could never be NULL earlier? We earlier checked for NULL, but I figured you knew something I didn't.... > > + next = igrab(dentry->d_parent->d_inode); > > what protects you against rename() (OK, d_mode()) here? Does it matter? We'll get either the old or the new parent directory, but either way it will be a valid inode, right? Or am I missing something? - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html