On Thu, Aug 11, 2011 at 03:41:59PM -0600, Andreas Dilger wrote: > 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> Hm.... any thoughts, Ted? Will this be picked up for 3.1/3.2? --D > > > 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 -- 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