7dc73bb
Path: news.gmane.org!not-for-mail
7dc73bb
From: Eric Sandeen <sandeen@redhat.com>
7dc73bb
Newsgroups: gmane.comp.file-systems.ext4
7dc73bb
Subject: [PATCH] jbd2: clear BH_Delay & BH_Unwritten in journal_unmap_buffer
7dc73bb
Date: Tue, 07 Feb 2012 16:07:20 -0600
7dc73bb
Lines: 42
7dc73bb
Approved: news@gmane.org
7dc73bb
Message-ID: <4F31A098.4050601@redhat.com>
7dc73bb
NNTP-Posting-Host: plane.gmane.org
7dc73bb
Mime-Version: 1.0
7dc73bb
Content-Type: text/plain; charset=ISO-8859-1
7dc73bb
Content-Transfer-Encoding: 7bit
7dc73bb
X-Trace: dough.gmane.org 1328656072 12026 80.91.229.3 (7 Feb 2012 23:07:52 GMT)
7dc73bb
X-Complaints-To: usenet@dough.gmane.org
7dc73bb
NNTP-Posting-Date: Tue, 7 Feb 2012 23:07:52 +0000 (UTC)
7dc73bb
To: ext4 development <linux-ext4@vger.kernel.org>
7dc73bb
Original-X-From: linux-ext4-owner@vger.kernel.org Wed Feb 08 00:07:52 2012
7dc73bb
Return-path: <linux-ext4-owner@vger.kernel.org>
7dc73bb
Envelope-to: gcfe-linux-ext4@plane.gmane.org
7dc73bb
Original-Received: from vger.kernel.org ([209.132.180.67])
7dc73bb
	by plane.gmane.org with esmtp (Exim 4.69)
7dc73bb
	(envelope-from <linux-ext4-owner@vger.kernel.org>)
7dc73bb
	id 1Ruu8d-0000lK-5P
7dc73bb
	for gcfe-linux-ext4@plane.gmane.org; Wed, 08 Feb 2012 00:07:51 +0100
7dc73bb
Original-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
7dc73bb
	id S1756187Ab2BGXHt (ORCPT <rfc822;gcfe-linux-ext4@m.gmane.org>);
7dc73bb
	Tue, 7 Feb 2012 18:07:49 -0500
7dc73bb
Original-Received: from mx1.redhat.com ([209.132.183.28]:19432 "EHLO mx1.redhat.com"
7dc73bb
	rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP
7dc73bb
	id S1753992Ab2BGXHs (ORCPT <rfc822;linux-ext4@vger.kernel.org>);
7dc73bb
	Tue, 7 Feb 2012 18:07:48 -0500
7dc73bb
Original-Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])
7dc73bb
	by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q17N7dj0027622
7dc73bb
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
7dc73bb
	for <linux-ext4@vger.kernel.org>; Tue, 7 Feb 2012 18:07:48 -0500
7dc73bb
Original-Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1])
7dc73bb
	by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q17M7Kgt001990
7dc73bb
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
7dc73bb
	for <linux-ext4@vger.kernel.org>; Tue, 7 Feb 2012 17:07:21 -0500
7dc73bb
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0) Gecko/20120129 Thunderbird/10.0
7dc73bb
X-Enigmail-Version: 1.3.5
7dc73bb
X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11
7dc73bb
Original-Sender: linux-ext4-owner@vger.kernel.org
7dc73bb
Precedence: bulk
7dc73bb
List-ID: <linux-ext4.vger.kernel.org>
7dc73bb
X-Mailing-List: linux-ext4@vger.kernel.org
7dc73bb
Xref: news.gmane.org gmane.comp.file-systems.ext4:30623
7dc73bb
Archived-At: <http://permalink.gmane.org/gmane.comp.file-systems.ext4/30623>
7dc73bb
7dc73bb
journal_unmap_buffer()'s zap_buffer: code clears a lot of buffer head
7dc73bb
state ala discard_buffer(), but does not touch _Delay or _Unwritten
7dc73bb
as discard_buffer() does.
7dc73bb
7dc73bb
This can be problematic in some areas of the ext4 code which assume
7dc73bb
that if they have found a buffer marked unwritten or delay, then it's
7dc73bb
a live one.  Perhaps those spots should check whether it is mapped
7dc73bb
as well, but if jbd2 is going to tear down a buffer, let's really
7dc73bb
tear it down completely.
7dc73bb
7dc73bb
Without this I get some fsx failures on sub-page-block filesystems
7dc73bb
up until v3.2, at which point 4e96b2dbbf1d7e81f22047a50f862555a6cb87cb
7dc73bb
and 189e868fa8fdca702eb9db9d8afc46b5cb9144c9 make the failures go
7dc73bb
away, because buried within that large change is some more flag
7dc73bb
clearing.  I still think it's worth doing in jbd2, since
7dc73bb
->invalidatepage leads here directly, and it's the right place
7dc73bb
to clear away these flags.
7dc73bb
7dc73bb
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
7dc73bb
Cc: stable@vger.kernel.org
7dc73bb
---
7dc73bb
7dc73bb
diff --git a/fs/jbd2/transaction.c b/fs/jbd2/transaction.c
7dc73bb
index 35ae096..52653306 100644
7dc73bb
--- a/fs/jbd2/transaction.c
7dc73bb
+++ b/fs/jbd2/transaction.c
7dc73bb
@@ -1949,6 +1949,8 @@ zap_buffer_unlocked:
7dc73bb
 	clear_buffer_mapped(bh);
7dc73bb
 	clear_buffer_req(bh);
7dc73bb
 	clear_buffer_new(bh);
7dc73bb
+	clear_buffer_delay(bh);
7dc73bb
+	clear_buffer_unwritten(bh);
7dc73bb
 	bh->b_bdev = NULL;
7dc73bb
 	return may_free;
7dc73bb
 }
7dc73bb
7dc73bb
7dc73bb
--
7dc73bb
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
7dc73bb
the body of a message to majordomo@vger.kernel.org
7dc73bb
More majordomo info at  http://vger.kernel.org/majordomo-info.html
7dc73bb