On 2011-08-11, at 3:15 PM, Darrick J. Wong wrote: > ext4_dx_add_entry manipulates bh2 and frames[0].bh, which are two buffer_heads > that point to directory blocks assigned to the directory inode. However, the > function calls ext4_handle_dirty_metadata with the inode of the file that's > being added to the directory, not the directory inode itself. Therefore, > correct the code to dirty the directory buffers with the directory inode, not > the file inode. Interesting. For journaled filesystems this is purely cosmetic, since "handle" is valid and "inode" is unused in that case. For non-journal filesystems it actually affects the correctness, since this buffer may not be sync'd to disk even when the directory is marked "dirsync". You can add my: Reviewed-by: Andreas Dilger <adilger@xxxxxxxxx> > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > > fs/ext4/namei.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c > index b754b77..79ddc43 100644 > --- a/fs/ext4/namei.c > +++ b/fs/ext4/namei.c > @@ -1589,7 +1589,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry, > dxtrace(dx_show_index("node", frames[1].entries)); > dxtrace(dx_show_index("node", > ((struct dx_node *) bh2->b_data)->entries)); > - err = ext4_handle_dirty_metadata(handle, inode, bh2); > + err = ext4_handle_dirty_metadata(handle, dir, bh2); > if (err) > goto journal_error; > brelse (bh2); > @@ -1615,7 +1615,7 @@ static int ext4_dx_add_entry(handle_t *handle, struct dentry *dentry, > if (err) > goto journal_error; > } > - err = ext4_handle_dirty_metadata(handle, inode, frames[0].bh); > + err = ext4_handle_dirty_metadata(handle, dir, frames[0].bh); > if (err) { > ext4_std_error(inode->i_sb, err); > goto cleanup; > -- > 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 Cheers, Andreas -- 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