On Mon 16-11-09 16:27:30, Eric Sandeen wrote: > ext3_xattr_set_handle() was zeroing out an inode outside > of journaling constraints; this is one of the accesses that > was causing the crc errors in journal replay as seen in > kernel.org bugzilla #14354. > > Although ext3 doesn't have the crc issue, modifications > out of journal control are a Bad Thing. > > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> > --- Thanks. Looks good. Queue up. Honza > > diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c > index 545e37c..387d92d 100644 > --- a/fs/ext3/xattr.c > +++ b/fs/ext3/xattr.c > @@ -960,6 +960,10 @@ ext3_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, > if (error) > goto cleanup; > > + error = ext3_journal_get_write_access(handle, is.iloc.bh); > + if (error) > + goto cleanup; > + > if (EXT3_I(inode)->i_state & EXT3_STATE_NEW) { > struct ext3_inode *raw_inode = ext3_raw_inode(&is.iloc); > memset(raw_inode, 0, EXT3_SB(inode->i_sb)->s_inode_size); > @@ -985,9 +989,6 @@ ext3_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, > if (flags & XATTR_CREATE) > goto cleanup; > } > - error = ext3_journal_get_write_access(handle, is.iloc.bh); > - if (error) > - goto cleanup; > if (!value) { > if (!is.s.not_found) > error = ext3_xattr_ibody_set(handle, inode, &i, &is); > -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- 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