From patchwork Tue Nov 15 08:07:53 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yongqiang Yang X-Patchwork-Id: 125726 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id EA283B6F68 for ; Tue, 15 Nov 2011 21:32:39 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754831Ab1KOKci (ORCPT ); Tue, 15 Nov 2011 05:32:38 -0500 Received: from mail-gx0-f174.google.com ([209.85.161.174]:51970 "EHLO mail-gx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754574Ab1KOKch (ORCPT ); Tue, 15 Nov 2011 05:32:37 -0500 Received: by ggnb2 with SMTP id b2so7263520ggn.19 for ; Tue, 15 Nov 2011 02:32:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=nc/mqnh1tpxatnOnam9bJj9F2/JWPgU0R77CelLIVu8=; b=x+y3NI+Myfi+s9L1OMUPDz5etx16BaFhtodOiK+0F+cDcZ3bYRdTsnrBGfYYKMn05K 5rxLuQ9Pv4vGfR81mbtnBtPXJFrzODYe/gTqGK77EyniaDfipd3g8uen3yGDu/tpE4yy zJxlG7TR9FwVhZa0afEk84cP/0lnAtYvpaVEc= Received: by 10.50.10.226 with SMTP id l2mr7910117igb.17.1321353157142; Tue, 15 Nov 2011 02:32:37 -0800 (PST) Received: from localhost.localdomain ([159.226.43.42]) by mx.google.com with ESMTPS id pa4sm18996623igc.1.2011.11.15.02.32.35 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 15 Nov 2011 02:32:36 -0800 (PST) From: Yongqiang Yang To: tytso@mit.edu Cc: linux-ext4@vger.kernel.org, Yongqiang Yang Subject: [PATCH 4/5] ext4: flush journal when switching from journal data mode Date: Tue, 15 Nov 2011 16:07:53 +0800 Message-Id: <1321344474-14707-4-git-send-email-xiaoqiangnk@gmail.com> X-Mailer: git-send-email 1.7.5.1 In-Reply-To: <1321344474-14707-1-git-send-email-xiaoqiangnk@gmail.com> References: <1321344474-14707-1-git-send-email-xiaoqiangnk@gmail.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org When switching from journal data mode, the data blocks in journal will have no revoke record. Thus, data could be corrupted during replay. However, there is no such problem in switching to journal data mode. So we flush journal only in the case that swithes from journal data mode. Signed-off-by: Yongqiang Yang Signed-off-by: Yongqiang Yang Signed-off-by: "Theodore Ts'o" --- fs/ext4/inode.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 384f8a7..755f6c7 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4689,7 +4689,6 @@ int ext4_change_inode_journal_flag(struct inode *inode, int val) } jbd2_journal_lock_updates(journal); - jbd2_journal_flush(journal); /* * OK, there are no updates running now, and all cached data is @@ -4699,10 +4698,12 @@ int ext4_change_inode_journal_flag(struct inode *inode, int val) * the inode's in-core data-journaling state flag now. */ - if (val) + if (val) { ext4_set_inode_flag(inode, EXT4_INODE_JOURNAL_DATA); - else + } else { + jbd2_journal_flush(journal); ext4_clear_inode_flag(inode, EXT4_INODE_JOURNAL_DATA); + } ext4_set_aops(inode); jbd2_journal_unlock_updates(journal);