From: Andreas Dilger Subject: Re: [PATCH 1/2] ext4: journal all modifications in ext4_xattr_set_handle Date: Fri, 06 Nov 2009 17:22:51 -0700 Message-ID: <55C0D494-12AD-4EF7-8C35-411B2B5151EF@sun.com> References: <4AF4A334.1000304@redhat.com> <4AF4A49F.8030005@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; CHARSET=US-ASCII; delsp=yes; format=flowed Content-Transfer-Encoding: 7BIT Cc: ext4 development To: Eric Sandeen Return-path: Received: from sca-es-mail-2.Sun.COM ([192.18.43.133]:59602 "EHLO sca-es-mail-2.sun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752380AbZKGAWs (ORCPT ); Fri, 6 Nov 2009 19:22:48 -0500 Received: from fe-sfbay-10.sun.com ([192.18.43.129]) by sca-es-mail-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id nA70MrMU026875 for ; Fri, 6 Nov 2009 16:22:53 -0800 (PST) Received: from conversion-daemon.fe-sfbay-10.sun.com by fe-sfbay-10.sun.com (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul 2 2009)) id <0KSP00B00Q9PZ200@fe-sfbay-10.sun.com> for linux-ext4@vger.kernel.org; Fri, 06 Nov 2009 16:22:53 -0800 (PST) In-reply-to: <4AF4A49F.8030005@redhat.com> Sender: linux-ext4-owner@vger.kernel.org List-ID: On 2009-11-06, at 15:35, Eric Sandeen wrote: > Eric Sandeen wrote: >> ext4_xattr_set_handle() was modifying s_inode_size 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. > > Oh, and for those who haven't been following the bug, big > thanks to Chris Mason for helping to look into this and coming > up with the debugging patch that made it obvious... It would be great, IMHO, to have this debugging patch submitted to the kernel also, and enabled under a CONFIG option. Having a description of the side effects (i.e. page fault when a read-only page is accessed) in the Kconfig description would be needed, but at least if it is in the code it can be used by anyone trying to track down the problem, rather than the perennial "where are AKPM's buffer-head tracing patches, and how much work needs to be done to update them for the current kernel". I'd also be interested to see the "write shadow buffer to journal" one-line patch that was discussed in the bug. >> Signed-off-by: Eric Sandeen >> --- >> diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c >> index fed5b01..0257019 100644 >> --- a/fs/ext4/xattr.c >> +++ b/fs/ext4/xattr.c >> @@ -988,6 +988,10 @@ ext4_xattr_set_handle(handle_t *handle, struct >> inode *inode, int name_index, >> if (error) >> goto cleanup; >> + error = ext4_journal_get_write_access(handle, is.iloc.bh); >> + if (error) >> + goto cleanup; >> + >> if (EXT4_I(inode)->i_state & EXT4_STATE_NEW) { >> struct ext4_inode *raw_inode = ext4_raw_inode(&is.iloc); >> memset(raw_inode, 0, EXT4_SB(inode->i_sb)->s_inode_size); >> @@ -1013,9 +1017,6 @@ ext4_xattr_set_handle(handle_t *handle, >> struct inode *inode, int name_index, >> if (flags & XATTR_CREATE) >> goto cleanup; >> } >> - error = ext4_journal_get_write_access(handle, is.iloc.bh); >> - if (error) >> - goto cleanup; >> if (!value) { >> if (!is.s.not_found) >> error = ext4_xattr_ibody_set(handle, inode, &i, &is); >> -- >> To unsubscribe from this list: send the line "unsubscribe linux- >> ext4" in >> the body of a message to majordomo@vger.kernel.org >> 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@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html Cheers, Andreas -- Andreas Dilger Sr. Staff Engineer, Lustre Group Sun Microsystems of Canada, Inc.