I got it! Thanks, Yongqiang. On Fri, Sep 28, 2012 at 11:08 AM, Yongqiang Yang <xiaoqiangnk@xxxxxxxxx> wrote: > Hi Curt, > > In journal mode, IMHO the case you described also happens. Could you > shed light on journal mode case? > > Thanks, > Yongqiang. > > On Tue, Jun 1, 2010 at 8:03 PM, Theodore Ts'o <tytso@xxxxxxx> wrote: >> From: Curt Wohlgemuth <curtw@xxxxxxxxxx> >> >> commit 8b472d739b2ddd8ab7fb278874f696cd95b25a5e upstream (as of v2.6.34-rc6) >> >> In the no-journal case, ext4_write_inode() will fetch the bh and call >> sync_dirty_buffer() on it. However, if the bh has already been >> written and the bh reclaimed for some other purpose, AND if the inode >> is the only one in the inode table block in use, then >> ext4_get_inode_loc() will not read the inode table block from disk, >> but as an optimization, fill the block with zero's assuming that its >> caller will copy in the on-disk version of the inode. This is not >> done by ext4_write_inode(), so the contents of the inode can simply >> get lost. The fix is to use __ext4_get_inode_loc() with in_mem set to >> 0, instead of ext4_get_inode_loc(). Long term the API needs to be >> fixed so it's obvious why latter is not safe. >> >> Addresses-Google-Bug: #2526446 >> >> Signed-off-by: Curt Wohlgemuth <curtw@xxxxxxxxxx> >> Signed-off-by: "Theodore Ts'o" <tytso@xxxxxxx> >> --- >> fs/ext4/inode.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c >> index ff04c74..28152f8 100644 >> --- a/fs/ext4/inode.c >> +++ b/fs/ext4/inode.c >> @@ -5204,7 +5204,7 @@ int ext4_write_inode(struct inode *inode, int wait) >> } else { >> struct ext4_iloc iloc; >> >> - err = ext4_get_inode_loc(inode, &iloc); >> + err = __ext4_get_inode_loc(inode, &iloc, 0); >> if (err) >> return err; >> if (wait) >> -- >> 1.6.6.1.1.g974db.dirty >> >> -- >> 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 > > > > -- > Best Wishes > Yongqiang Yang -- Best Wishes Yongqiang Yang -- 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